![a3d23ac5f7ebf439b1369a48db6e9c77.png](https://i-blog.csdnimg.cn/blog_migrate/0811bb795b3abf9d48de0c177f26374d.jpeg)
这是一个很基础的问题,我这两天初学看别人程序总不是很清晰,网络上解释这个的也很少,所以特意拿出来记录一下。
我们先来看一小段程序:
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
....
end
关键在于理解if()的意义:如果()里逻辑值为1,则怎么怎么样。
所以如果写成if(rstn)意思就是:如果rst_n为逻辑1则进行复位。因此为了满足低电平才复位的要求,要在rst_n前加个!号(!号表示对信号电平取反),也就是if(!rst_n),表示如果!rst_n为逻辑1(即如果rst_n为低电平),则进行复位。
这段程序的意义是rst_n为低电平时进行异步复位。顺便这里也看到有网友提到了一个有趣的细节:敏感列表中要求是在rst_n的下降沿执行下面的动作,但是在rst_n的下降沿的时刻,rst_n并不是低电平。
这里先引用一个其他网友的回答:
两个方向看。
综合角度,是一种综合出DFF的固定写法,