一般事件控制符号@
- posedge
信号发生边沿正向跳变 - negedge
发生负向边沿跳变 - 未指明跳变方向时:
则 2 种情况的边沿变化都会触发相关事件\
```Verilog
//信号clk只要发生变化,就执行q<=d,双边沿D触发器模型
always @(clk) q <= d ;
//在信号clk上升沿时刻,执行q<=d,正边沿D触发器模型
always @(posedge clk) q <= d ;
//在信号clk下降沿时刻,执行q<=d,负边沿D触发器模型
always @(negedge clk) q <= d ;
//立刻计算d的值,并在clk上升沿时刻赋值给q,不推荐这种写法
q = @(posedge clk) d ;
```
命名事件控制
使用event声明事件变量,触发信号使用->表示
event start_receiving ;
always @(posedge clk_samp) begin
-> start_receiving ;
//采样时钟clk_samp上升沿作为时间触发时刻
end
always @(start_receiving) begin
data_buf = {data_if[0], data_if[1]} ;
//触发时刻,对多维数据整合
end
敏感列表
多个信号或事件中任意一个发生变化都能够触发,使用关键字or来来连接多个事件或信号,这些事件组成了敏感列表。or也可以使用 ,代替。
always @(posedge clk or negedge rstn)
begin
if(! rstn) begin
q <= 1'b;
end
else begin
q <= d;
end
end

发表回复