当前位置:   article > 正文

写自己的双时钟FIFO(DCFIFO)IP核,解决跨时钟域方式之一_通俗易懂篇!

dcfifo

双时钟fifo是遵循先入先出的原则,且读写的数据,在独立的线路上传输,所以连续的bit位传输,可以在不同的时钟下进行,可以有效地解决跨时钟域传输的问题。

双时钟fifo写法简述:

两个时钟,rd_clk,wr_clk.

读命令模块:当有读请求,判断是否读空信号为1,非空则发出读命令。组合逻辑

写命令模块:当有写请求,判断是否写满信号为1,非满则发出写命令。组合逻辑

存储模块:双口ram,当读为1,将读指针,指向的数据发送出去;当写为1,则将数据写入写指针所在的地址位。时序逻辑 q<= mem[rptr;mem[wptr]]<=d;

读指针模块:当有读信号来,读指针+1;输出到存储器模块。时序逻辑rd_clk

写指针模块:当有写信号来,写指针+1;输出到存储器模块。时序逻辑wr_clk

usedword模块: usedword=写指针-读指针+存储器的总容量   

跨时钟,数据传输的处理部分,为空,满信号的输出判断做准备。

bintogray模块:将usedword转变为格雷码。(每一次只有一位不同的特性,降低跨时钟传输的错误率)

将转换好的格雷码转分别换到   rd_clk,wr_clk.的频率上,再分别输出为二进制码。

读、写命令利用同步寄存器解决控制bit位的传输。(同步寄存器链可以解决,单bit控制使能位的跨时钟域问题,降低亚稳态发生概率)

读时钟下的握手模块:输出读时钟下的写满和读空;输出至读控制模块,作为输出读命令的控制条件。

写时钟下的握手模块:输出写时钟下的写满和读空;输出至写控制模块,作为输出写命令的控制条件。

系统闭环循环,相互激励,相互控制。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/206754
推荐阅读
相关标签
  

闽ICP备14008679号