|
发表于 2006-12-8 12:56:10
|
显示全部楼层
该文献,有点不妥,希望参考的人不要走弯路
1。"基于Verilog HDL 语言的32X8 FIFO 设计"
需要说明一点的是,双端口的RAM是可以同时进行读写的。
在文中"2 32X8 FIFO 系统结构"中提到:"对基于单体存储器的FIFO ,在读操作的同时不能有任何的写操作,只能在读操作结束后再进行写操作。"
估计作者使用的是单端口的。所以参考的时候注意这一点。
2。"高速异步FIFO 的实现" 文献中 "3.2 异步FIFO 中的其它问题" 中提到:
“异步FIFO 处于两个不同时钟域之间,写地址与读地址是两个不同时钟域的数据,在将它们比较
前要经过同步。以FIFO 判断写满为例,读地址要被同步到写时钟域中去,再与写地址比较判断是否
写满,如果读地址在同步时采用的是二进制,将会产生错误,所以要把它先转换成格雷码。”
这样做,将地址同步到另一时钟域时,会增加2*2*N个flip-flop的开销(N:地址位宽)
实际上可以将waddr/raddr转换成格雷码后,进行比较生成full/empty标志,
然后只需要将full/empry同步到各自的时钟域就可以了。
两篇文献中,都提到的full/empty标志的逻辑不是"新颖"的。
IEEE中有一篇关于AFIFO设计的文章,值得一看(忘了名字了 ) |
|