赞
踩
传输信号分为控制信号和数据信号
慢到快:由于快时钟域的可以采集到慢时钟域的信号,所以两级同步器直接 同步即可,即电平信号同步
快到慢:此时,快时钟域的信号相对于慢时钟域而言为一个脉冲信号,所以采用脉冲信号同步。首先通过握手机制将脉冲信号展宽,然后在进行打两拍。如果要在快时钟域输出一个脉冲信号,即输出信号持续一个时钟周期,就可以在后面再加一个边沿检测同步器。
握手机制:
(1)快时钟域对脉冲信号进行采样,采样为高电平时输出高电平信号pulse_fast_r,此时不要急于将信号拉低,先保持输出信号为高电平状态。
(2)慢时钟域对快时钟域的pulse_fast_r进行延迟打拍采样,因为pulse_fast_r被快时钟域保持拉高状态,所以肯定会采集到该信号。
(3)慢时钟域确认采样得到高电平信号pulse_fast2s_r后,再反馈给快时钟域。
(4)快时钟域对反馈信号pulse_fast2s_r进行延迟打拍采样,此时拉低快时钟域的pulse_fast_r信号。
边沿检测器
可以通过异步FIFO和握手来实现多bit数据跨时钟传输。
当数据量少的时候用握手来实现,用FIFO的话有点浪费资源。
数据量大的时候建议用异步FIFO。
异步FIFO涉及知识点汇总:
(1)空满同步及标志的产生
(2)虚空和虚满
对于空标志位来说,将写指针同步到读时钟域至少需要花费2个时钟,而在同步这段时间内有可能还会写入新的数据,因此同步后的写指针一定小于或等于(当且仅有同步时间内没有新数据写入的情况下才会等于)当前的写指针,所以此时判断不一定是真空;
同理,对于满标志位来说,将读指针同步到读时钟域至少需要花费2个时钟,而在同步这段时间内有可能还会读出新的数据,因此同步后的读指针一定小于或等于当前读指针,所以此时判断并不一定是真满。
(3)异步FIFO的深度只能为2^n?
(4)深度不为2^n时,如何挑选格雷码保证地址相邻数只有1bit不同,包括绕回 https://blog.csdn.net/weixin_44101336/article/details/124263370
(5)FIFO深度计算
要确定FIFO的深度,关键在于计算出在突发读写这段时间内有多少个数据没有被读走。也就是说FIFO的最小深度就等于没有被读走的数据个数。
FIFO深度计算
异步FIFO_小小verifier的博客
备战秋招[六]-FIFO深度计算
(6)异步FIFO的端口信号,模块框架图及代码
(7)二进制和格雷码相互转换方法及代码
二进制和格雷码相互转换
https://blog.csdn.net/sinat_25326461/article/details/52384968
(8)异步FIFO测试点
(9)画出同步FIFO和异步FIFO地电路结构框图
(10)异步FIFO的Verilog代码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。