快时钟域到慢时钟域的数据传输
时间:10-02
整理:3721RD
点击:
快时钟域1的脉冲信号IN,IN的宽度远远小于快时钟域1的宽度,要想把IN传输到慢时钟域2,怎么办啊?思想肯定是展宽,但是这个怎么展宽啊,他的宽度小于快时钟域1的宽度,怎么破?
快的信号在自己的快的时钟下,遇到脉冲就翻转下行不,只要快的信号别切的太快就行。
前提是脉冲再自己快时钟域内,它比脉冲时钟宽度小,这个如果用快时钟边沿去采不一定能采到这个脉冲。当然了如果脉冲宽度大于快时钟周期这是能采到的,但是这个情况怎么解决啊?
用锁存器(Latch)
把IN作为同步set信号set一个寄存器(IN_level),把IN_level过渡到时钟域2,在时钟域2取上升沿后,把上升沿过渡回时钟域1,再取上升沿后作为IN_level的同步clear信号。
有图有真相
IN的宽度小于时钟域1的周期,同步的话可能采不到
好吧,理解错你的题意了,当我没说。
不过我觉得你的题目是不是搞错了。IN的宽度远远小于时钟宽度的话,没什么意义啊。一般同步电路也不会允许这样的情况出现。
只是无意间看到过,我也觉得没有什么意义,但是看见了,就想钻这个牛角尖,谢谢分享
有很多中方法实现,最简单的一种就是用脉冲作为复位信号给慢时钟域寄存器,再将寄存数据打一拍就可以了。
这个想法不错
解决方法:1.若传输的是数据,使用一个异步FIFO,快时钟进行写操作,慢时钟进行读操作。
2.若是一些参数的配置宽,可以使用握手信号。
仅供参考,如果只是clk2时钟域,应该可以简化很多。
感谢赐教,我去验证一下下
你这个代码风格,看着好难啊。
我一直以为这种写法才是HDL,而不是编程。
这个逻辑中,clk1与clk2频率是没有要求的,谁快都可以工作的。
