FIFO异步实现问题
陆羽泡的柠檬茶
这个作者很懒,什么都没留下…
展开
-
关于昨天异步fifo最后交换时钟问题
首先增加两个标志位来表明,正在写和正在读:wr_running和rd_running。目的是可以清楚观察读写效率。下面为读时钟20MHz,写时钟为10MHz:读数据和写数据都不+1 上图可知,读写依然交替进行。都+1操作:读写都在进行,不会出现写满状态,写一直进行。写数据+1操作,读数据不+1:读数据+1,写数据不+1:所以昨天猜想慢时钟+1操作,增加效率的想法使作物的。原因应该是忽略了数据需要先写入才可以读取。...原创 2020-07-25 14:05:59 · 175 阅读 · 0 评论 -
关于这两天写的异步fifo代码是否遗漏数据问题
wr_fifo中:rd_fifo中:这两个地方是否有+1操作:如果只有写数据有+1,读数据不+1,会出现数据漏写问题,读数据正常图中画圈数据被漏掉。如果都不+1,则运作正常,只是当状态计数器从2’d1状态转到2’d0状态后(即fifo满/空时),要一直等到fifo空/满之后才会再开始工作,稳定在读写交替的状态。如下图:读写使能完全不重叠。如果都进行+1操作:还是会出现漏写数据的问题。读数据正常如果只有读数据+1,写数据不+1:读写正常,而且读写操作有重叠部分,所以效率高一点。上.原创 2020-07-24 22:47:28 · 748 阅读 · 0 评论 -
格雷码详细解读
https://www.cnblogs.com/zhuruibi/p/8988044.html转载 2020-07-23 11:28:09 · 324 阅读 · 0 评论 -
关于异步FIFO的时钟同步问题分析
1.时钟同步原理通过增加两个寄存器来实现时钟同步对于fifo来说,无论是写地址在读时钟下同步,还是读地址在写时钟下同步,被同步地址都会是延迟两个时钟周期之前的地址,所以在进行比较判断的时刻,参与判断的同步地址总是小于等于当前时刻的真实地址。那么,对于判断满信号full,由于满信号判断条件为写地址是否追上读地址,即rd_addr - wr_addr == 0, 在判断条件中,rd_addr 应该是领先的一方,否则将会出现超前写数据的情况,所以应该将读地址同步到写时钟下。同步后的判断条件则变为:rd原创 2020-07-23 11:00:16 · 1905 阅读 · 0 评论