顾名思义,always翻译成汉语就是总是、一直,永远,和代码中的循环类似。
具体语法结构如下:
always@(*) begin
end
1.首先要有关键字 always,表示一直执行
2.@ 表示等待,等待什么,等待()后面小括号里面的变量
3.()小括号里面放的是敏感变量,具体来说就是只要里面的信号发生变化,就可以叫做敏感变量,只要有任何一个触发always块,都会触发这个always块
4.begin end用来封装,表示一个always块的具体逻辑
reg out1;
always@(*) begin
if(sel == 1'b0)
out1 = a;
else
out1 = b;
end
//这是组合逻辑电路,组合逻辑常用阻塞赋值,=号
首先*表示通配符,这里的敏感变量包括sel,a,b这里,这里直接用*号代表所有的敏感变变量,
当然写成@(sel,a,b)也可以,为了省事可以直接写成*
再次强调,always语句块中=等号左边必须是reg类型!!!
下面给一个时序逻辑电路举例:
reg out1;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
out1 <= 0;
else if(sel == 1'b0)
out1 <= a;
else
out1 <= b;
end
时序逻辑常用非阻塞赋值,也就是<=号;
阻塞赋值和非阻塞赋值的具体区别以后会讲,这个超级无敌重要。。。。。。。。。。。
8.Verilog中的always语句
Verilog中的always块与逻辑电路设计,
最新推荐文章于 2025-10-09 15:51:55 发布
本文介绍了Verilog语言中的always块,用于描述数字逻辑电路的组合逻辑和时序逻辑。always块的关键字是always,@表示事件触发,*作为通配符代表所有敏感变量。在组合逻辑中使用阻塞赋值(=),而在时序逻辑中使用非阻塞赋值(<=).
1万+

被折叠的 条评论
为什么被折叠?



