时钟的同步处理
时钟是数字电路中所有信号的参考,没有时钟或者时钟信号处理不得当,都会影响系统的性能甚至功能时钟同步,所以在一般情况下,我们在同一个设计中使用同一个时钟源,当系统中有多个时钟时,需要根据不同情况选择不同的处理方法时钟同步,将所有的时钟进行同步处理,下面分几种情况介绍时钟的同步处理方法。
壹
当有多个时钟在同一个数字电路中,且有一个时钟(假设为)的速率大于其它时钟两倍以上。
这种情况最为简单,我们在接口部分就必须要对其他时钟进行同步化处理,将其处理为与同步的时钟信号。这样处理的好处是:
一般的时钟同步化方法如下图所示。
实质上,时钟采样的同步处理方法就是上升沿提取电路,经过上升沿提取输出信息中,带有了系统时钟的信息,所以有利于保障电路的可靠性和可移植性。
贰
当系统中所有时钟没有一个时钟速率达到其他时钟频率的两倍的情况,也就是系统中多个时钟速率差不多的情况
这个时候无法满足采样定理,所以在接口部分就必须对其他时钟和数据通过FIFO进行隔离,并将其他时钟信息转换为和系统时钟同步的允许信号。比如在高速的数据采集系统当中,AD的采集时钟往往比较高,大于系统时钟的一半以上,这时候采用同步化处理无法满足时序设计。
叁
系统中多个时钟之间存在数据互相采样
如下图所示的情况。clk1和clk2来自不同的时钟源,该电路即可能出现在同一芯片里,也可能出现在不同的芯片里,但是都存在同样的危险性。由于时钟源不同,对于寄存器reg2和reg3来说,在同一时刻,极有可能一个认为reg1输出为“1”,另一个认为是“0”,必然导致电路结果的错误。
对于这种电路,我们必须在reg1之后再添加一个触发器,用clk2的时钟沿进行采样,然后用该触发器的输出经过组合逻辑输出到reg2和reg3当中,如下图所示。
肆
多级时钟或多级时钟网络处理
由于时钟建立-保持时间的限制,FPGA设计中应尽量避免采用多时钟网络,或者尽量减少时钟的个数,所以在FPGA对ASIC芯片进行验证的时候,我们必须要将时钟网络进行简化,因为FPGA内部时钟资源不像ASIC一样具有很强的穿透性和灵活性。下图为一个含有危险的多级时钟的例子,多路选择器的输入是clk和clk的2分频,时钟由SEL引脚控制的多路选择器输出,在这两个时钟均为逻辑“1”时,当SEL的状态改变时,存在静态冒险竞争现象。
所以为了确保电路的正常工作,需要进行修改,修改之后的电路如下图所示
加入微信群
1、仅限FPGA技术交流
2、先加群主验证后邀请加入
3、需注明单位+研究方向
FPGA技术联盟
最专业的FPGA以及数字设计公众号
限时特惠:本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情
站长微信:Jiucxh