我用VHDL设计了一个非同步的非对称fifo,constructs.It是以深度和prog_full为参数的通用fifo。它有32位的16位输出数据宽度.您可以找到fifo设计链接这里。
顶层非对称 fifo (fifo_wrapper.vhd)是建立在32位异步 fifo(async_fifo.vhd)之上的.这个内部fifo (async_fifo)是使用开放核上的通用FIFO (fifos)逻辑构建的。我增加了一个简单的测试平台来尝试这个fifo设计。
但是这个设计有一些问题,我无法弄清楚。当我对fifo进行仿真时,它的工作原理非常好,但是当我将它与硬件上的其他设计一起运行时,有时会得到一些错误的数据。可能有一些角落的情况,我不能模拟,或者是其他什么东西?
这就是为什么我希望任何需要这个设计的人尝试它,如果他/她在模拟或合成之后遇到任何问题,请告诉我。谢谢
请让我知道,如果有其他论坛,我可以把我的设计供公众使用。谢谢
发布于 2013-07-15 05:15:24
基于写读时钟完全异步的假设,这种异步FIFO设计需要指出许多问题。
发布于 2013-07-18 23:54:16
我无法访问您的代码(防火墙),所以我将只提到设计它们的一般要点,这可能对您和其他人都有帮助。
这个结构是一个双缓冲寄存器。
采用类似的方法将读指针传输到写域。可以看出,虽然这种方法会导致写/读端的写指针与读/写端的读指针之间的延迟,但这种延迟永远不会导致溢出。相反,它会导致写入端的过早填充,而在读取端则导致过早的空,这将在下一个指针交换后最终解决。
这种方法是唯一一个不依赖于时钟速度先验知识的fifo的完全时钟安全设计。根本不需要灰色编码。
另外要注意的是,寻址/空/满等的逻辑需要在每个时钟域中重复。
https://stackoverflow.com/questions/17654349
复制相似问题