EETOP 创芯网论坛 (原名:电子顶级开发网)

标题: 同步寄存器需要复位吗? [打印本页]

作者: Wade_    时间: 2023-11-30 18:04
标题: 同步寄存器需要复位吗?
打两拍的同步寄存器是否需要复位?
带复位:




   

        

                
  1. always@(posedge clk or negedge rstn) beign
  2.     if(!rstn) begin
  3.         vld_d1 <= 1'b0;
  4.         vld_d2 <= 1'b0;
  5.     end else begin
  6.         vld_d1 <= vld;
            

   

    复制代码
不带复位:


   

        

                

  1. always@(posedge clk ) beign
  2.          vld_d1 <= vld;
  3.          vld_d2 <= vld_d1;
  4. end
            

   

    复制代码
我的问题是,有什么差别吗? 从面积上考虑肯定是不带复位的会小一点,但如果没有复位的话,会不会出现其他问题?


作者: 西西在冰城    时间: 2023-11-30 18:48
本帖最后由 西西在冰城 于 2023-12-1 15:15 编辑

https://bbs.eetop.cn/thread-311606-1-1.html


作者: Wade_    时间: 2023-12-1 10:04


   
西西在冰城 发表于 2023-11-30 18:48
https://bbs.eetop.cn/thread-311606-1-1.html

我个人理解是带复位的实现中,两个寄存器的初始值是确定的 ...



                               
登录/注册后可看大图


我画了一下时序图,上面是有复位的, 下面是没有复位的。 我感觉实际反馈出来的效果应该是一样的。对于X态的问题,我的理解是,只是在仿真的时候没法确定当前状态是0还是1,但在电路实际的运行过程中,0还是1就是已经确定的(个人理解有点像薛定谔的猫),只要不在X态的时间里去采样就不会导致电路进入未知的状态。 而对于打拍的问题,肯定是在两拍甚至三拍稳定之后,才去采样了。

作者: 拾冠    时间: 2023-12-1 10:26
不需要复位。如果没有必要,尽量减少复位的使用,像这种只去复位vld就可以。一般只复位状态机状态,信号输入都不一定要复位。
作者: Wade_    时间: 2023-12-1 11:25


   
西西在冰城 发表于 2023-11-30 18:48
https://bbs.eetop.cn/thread-311606-1-1.html

我个人理解是带复位的实现中,两个寄存器的初始值是确定的 ...



                               
登录/注册后可看大图


我画了一下时序图,上面是带复位的,下面是不带复位的。我感觉没有什么差别。对于X态的问题,我认为可以理解成薛定谔定律,在仿真的时候确实会引入X态,但在实际电路运行的过程中,它就已经是确定的0或者1。同步的问题,我认为只要不在不确定的状态下采样就应该没有问题,同步有时候我会打三拍,在同步之后再去采样,应该不会有问题。

作者: Wade_    时间: 2023-12-1 11:26


   
拾冠 发表于 2023-12-1 10:26
不需要复位。如果没有必要,尽量减少复位的使用,像这种只去复位vld就可以。一般只复位状态机状态,信号输 ...


我认为也是不需要的,但是由于项目经验不多,所以对于这个还是有点疑问。

作者: iyama    时间: 2023-12-4 10:59
加上复位比较好。
你这同步逻辑应该很少,面积增加可以忽略。
没有复位,scan都没法插。




欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.5