当前位置:   article > 正文

典型跨时钟域(CDC)信号处理_cdc跨时钟域

cdc跨时钟域
本篇主要是针对单bit信号的分析,关于多bit数据的CDC处理可参考异步fifo异步FIFO常用知识总结-CSDN博客

1.异步复位,同步释放 

        原理:复位信号同其他信号一样也有建立时间和维持时间的时序要求,称之为移除时间恢复时间recovery time(恢复时间)描述的是非复位信号在时钟上升沿到来前需要保持的最小时间;removal time(移除时间)描述的是复位信号在上升沿到来之后需要保持的最小时间。

        由此可知,当复位信号不在时钟有效边沿变化时,可以保证电路的复位和恢复信号能被准确采样到。在实际设计中,有的模块先复位再给模块供应时钟,保证了复位信号与时钟错开,避免出现recovery 和removal违例的问题。

Q:为什么需要异步复位同步释放

        异步复位信号可以直接作为管脚引出,节约资源,时延缩短。在对于复位精度有高要求的电路,异步复位信号往往是需要的。当异步复位信号释放(即撤销复位),则有可能发生在时钟边沿附近,容易使寄存器输出出现亚稳态,因此必须对释放信号进行打拍同步处理。

  1. module syn(
  2. input clk,
  3. input rstn,
  4. output syn_rstn
  5. );
  6. reg rstn_r,rstn_rr; //寄存一拍和两拍
  7. always@(posedge clk or negedge rstn) begin
  8. if(!rstn) begin
  9. rstn_r<=0;
  10. rstn_rr<=0;
  11. end
  12. else begin
  13. rstn_r<=rstn;
  14. rstn_rr<=rstn_r;
  15. end
  16. assign syn_rstn = rstn_rr;
  17. endmodule

Q:为什么是打两拍?

        因为若出现亚稳态,打一拍过后仍然有输出亚稳态的风险,但在两拍过后,这种可能性非常低,也很少有需要打三拍的情况,因此打两拍处理是最常用的。

优点缺点
同步复位利于仿真;利于时序分析;不会有复位毛刺占用资源;在输入输出端口插入组合逻辑
异步复位异步复位端口节约资源;时延低

异步逻辑易出现亚稳态;增加静态时序分析困难

2.门控时钟

        在应用中,可能出现一段时间我们并不需要时钟,因此可以通过门控的方式将时钟信号置0,等待需要时再拉高,这能在很大程度上降低整体电路的功耗,节省资源。

        时钟出现斩断/毛刺的原因:在时钟的高电平期间使能信号拉低,造成了斩断,如果下级电路对毛刺敏感,比如异步复位,就会影响电路工作的稳定性、可靠性,严重时会导致整个数字系统的逻辑紊乱。因此我们需要保证使能信号的跳变出现在时钟的低电平范围内,同理,需要对时钟的使能信号进行同步处理。

        解决办法:加入下降沿敏感的触发器对使能信号同步。为什么是下降沿敏感呢?正如前面说的,我们要保证使能信号的跳变出现在时钟的低电平处,这样无论使能信号怎么变化,时钟的高电平处不会受到破坏。这样,电路的处理也很简单,在使能信号EN与clk相与之前,先让EN通过一个触发器同步到clk时域,再经过一个下降沿敏感的触发器后再和clk相与。这样就获得了一个尽可能消除亚稳态并且沿clk下降沿变化的EN信号,我们的门控时钟可靠性也得到了提高。

  1. module steadyclk(
  2. input clk,
  3. input rstn,
  4. input en,
  5. output clko
  6. );
  7. reg en_r,en_rr;
  8. always@(posedge clk or negedge rstn)
  9. if(!rstn)
  10. begin
  11. en_r = 0;
  12. en_rr = 0;
  13. clko=0;
  14. end
  15. else
  16. en_r = en;
  17. end
  18. always@(negedge clk or negedge rstn)
  19. if(!rstn)
  20. begin
  21. en_rr = 0;
  22. clko = 0;
  23. end
  24. else
  25. en_rr = en_r;
  26. end
  27. assign clko=clk&en_rr;
  28. endmodule

Q:能不能第一个DFF也设计成下降沿敏感呢?

        可以,EN同步的关键在于第二个DFF一定要是下降沿敏感的,第一个DFF的作用是将EN先拉到clk时域,所以不管是上升沿还是下降沿都可以。

3.无毛刺时钟切换

        有了之前的分析后,无毛刺时钟切换的方法也跃然纸上:让选择信号SEL通过两个寄存器同步(其中后一个是下降沿敏感)后再与对应clk相与,对应电路如下:

        注意:clk0和clk1是不同频的信号,同步时我们至多只能让它同步到其中一个时钟域。并且因为同步打拍延时的引入,当时钟选择切换后,也不是马上跳转为高电平。

Q:为什么第二级DFF的Q非需要接入输入?

        Q非以负反馈的形式接回了输入,取与逻辑构建起clk0和clk1的关系,代表时钟切换前需要等一阵子,避免毛刺。

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

闽ICP备14008679号