在 设计 avalon MM slave的 IP 时, 我在网络上看了一个资料,以为read_n 信号不是必须的,以为只要chipselect有效就可以将寄存器的值读到readdata端口上:
但是对比writedata,需要在write_n信号有效的情况下才能将writedata的数据写入IP寄存器。
我有些疑惑,于是我去翻阅了Avalon 的手册:
从avalon手册可以 看到如果read_n存在且被置位,则会存在一个读数据的动作。就会用到readdata。但是还是看不出是否必须。
然后再去查看了PIO 控制器的一些.v文件(比如 某个工程里面 Qsys产生的 synthesis\submodules 路径 )
发现这些都没有read_n 信号,然后跟我们工程师讨论了下,他表示IO控制器里面的寄存器读和写 是分开的,地址是不相同的,所以可以不用read_n 信号。也就是当读地址和写地址不相同的情况下, 读使能信号和写使能信号不是必须的。