有想法把最近看到关于FPGA相关的(名词)概念做个总结,解释内容主要来自其他博客,我只加部分个人理解,做个拾荒者,捡其重点,作为摘录,文末罗列参考资料。
一、异步复位、同步释放
1.1.解释
同步复位:需要时钟参与,一般只有时钟上升沿到来复位信号才有效;
异步复位:不需要时钟参与,只要复位信号一有效就立即进行复位操作;
1.2.优缺点
同步复位:防止复位信号的毛刺引起误复位操作,利于静态时序分析;较异步复位更消耗逻辑资源,复位信号脉冲宽度必须大于时钟周期,同步复位依赖于时钟;
异步复位:无需额外的逻辑资源,复位信号不依赖于时钟;容易受毛刺影响,如果复位释放恰好在时钟有效沿附近容易使寄存器输出亚稳态;
1.3.CODE
同步复位:
always @(posedge clk) begin if (!rst_n) q <= 1'b0; else q <= d; end
异步复位(代码中使用较多):
always @(posedge clk or negedge rst_n) begin if (!rst_n) q <= 1'b0; else q <= d; end
异步复位同步释放(Synchronized Asynchronous Reset):
always @ (posedge clk) begin rst_nr <= rst_n; //将异步复位信号用同步时钟打一拍 end always @ (posedge clk or negedge rst_nr) begin if(!rst_nr) q <= 1'b0; else q <= d; end
二、触发器与锁存器
2.1.解释
触发器Flip-Flop:收到输入脉冲,触发器输出根据赋值规则作出改变,保持此状态知道下一个触发。。。对时钟边沿敏感,其状态只在时钟的上升沿或者下降沿的瞬间改变;
锁存器Latch:两输入,EN和DATA_IN,当电平EN有效时,锁存器处于使能状态,输出数据Q随输入数据DATA_IN变化,否则数据被锁存;
2.2.区别
latch跟它所有的输入信号有关,当输入信号变化时,latch就变化,没有时钟触发;flip_flop受时钟控制,只有时钟沿触发时才采样当前输入,产生输出。
1)latch由电平触发,非同步控制。在使能信号有效时latch等效于通路,使能信号无效时latch保持输出状态;flip_flop由时钟沿触发,同步控制;
2)latch对输入电平敏感,受布线延迟影响较大,很难保证输出没有毛刺产生;flip_flop不易产生毛刺;
3)latch消耗的门资源比flip_flop少,但是其静态时序分析更为复杂;
参考Reference:
1.https://blog.csdn.net/kobesdu/article/details/16356997