顾名思义,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语句
最新推荐文章于 2024-04-26 11:47:52 发布