| |||
always @(posedge clk or negedge rstn)
begin
为什么上电复位阶段复位信号没有下降沿,时钟也无上升沿,依旧能够产生复位?
(1) negedge rst_n 和 if (!rstn),只是语法约定,告诉综合工具我需要一个能即时在下降沿就开始响应,且在低电平时保持复位状态的信号,这样综合工具才能正确识别出这是一个低电平有效的异步复位信号。
(2) 从底层实际硬件来看,异步复位触发器的复位端输入,低电平电压直接作用在mos管栅极,强制电路进入复位状态,无所谓上升沿,下降沿,也与时钟无关。
(3) 从仿真器角度来看:
1. t=0时刻,rstn被设置为0(testbench的通常做法);
2. 仿真器开始执行,所有的always快都会被初始化并执行一次,这是仿真器的行为,用于建立初始状态,不严格遵循必须由边沿触发的规则;
3. 虽然 always @(posedge clk or negedge rstn) 中rstn并没有发生1到0的跳变,但是if(!rstn)在第一次执行时就会进行逻辑判断,触发复位。
/2