《硬件架构的艺术》学习笔记(3.1)---跨时钟域设计
作者:互联网
多时钟设计
在进行一个含有多个时钟的设计时,在仿真和综合过程中遵循一定的准则将会带来巨大的好处。
信号命名法
系统时钟:sys_clk; (system )
发送时钟:tx_clk; (transmit )
接受时钟:rx_clk; (receive )
源信号:src_sig; (sorce )
目标信号:dest_sig; (destination)
跨时钟域
对于跨时钟域的信号传输问题,从信号的性质方面考虑分为两方面:1)控制信号的传输;2)数据信号的传输。从信号的宽度方面考虑又分为以下两方面:1)单bit信号传输;2)多bit信号的传输。{单比特信号一般指单比特控制信号} {多比特信号一般指多比特数据信号}
单比特(控制)信号跨时钟域传输
对于慢时钟域到快时钟域传输
1. 双锁存器同步法
双锁存器同步法的波形图如下图。
在上面的波形图中分析出,对于sig_nsyn信号的变化间隔有要求,最好大于{clk_nsyn + 2clk},以确保变化的信号被clk全部采样到。
2. 边沿检测电路法
边沿检测电路法的波形图如下图。
边沿检测电路中第一级触发器用于同步信号,第二级触发器用于消除亚稳态,第三级触发器用于产生一个周期的脉冲信号。倘若在同步设计当中我们只需第三级触发器即可。当我们将A/B信号调换顺序便可以检测下降沿。
边沿检测电路的注意事项:相邻的上升沿之间同步不能相隔太近,否则会采样不到边沿,造成错误。
边沿检测电路应用:对于消抖电路的实现过程中,我们可以同时采用上升沿和下降沿检测电路。
对于快时钟域到慢时钟域传输
1. 脉冲展宽技术
单比特数据传输时,在快时钟域到慢时钟域我们应该注意数据的采样遗漏丢失问题。这时源数据应该至少保持一个目标时钟周期不变。
此外我们也可以在脉冲展宽电路后加上一级边沿检测级,用于产生一个目标时钟周期的脉冲。
多比特(数据)信号跨时钟域传输
一般我们说多比特信号传输时,都会默认为数据信号的传输。倘若某个模块内同时需要两条单比特控制信号,那么我们需要考虑两条单比特可能存在skew,会对结果造成影响。为了解决这个问题,我们可以先对这两条控制信号在源时钟域进行打包处理,然后再多比特信号传输或者双锁存器同步法传输。
数据信号的特点:具有连续性,需要较快的传输速度。采用上述同步法都会出现传输数据不连贯的问题,这里会采用FIFO或者加入握手信号。
标签:边沿,比特,---,传输,电路,信号,3.1,时钟 来源: https://blog.csdn.net/hak22/article/details/116422779