过程语句(initial、always)
在一个模块(module)中 initial语句常用于仿真中的初始化,always可用于仿真和可综合电路 initial过程块中的语句仅执行一次;always块内的语句则是不断重复执行的。 使用initial和always语句的次数是不受限制的。
modulemux4_1(out,in0,in1,in2,in3,sel);
outputout;
inputin0,in1,in2,in3;
input[1:0]sel;
regout;
always @(in0 or in1 or in2 or in3 or sel)
case(sel)
2'b00:out=in0;
2'b01:out=in1;
2'b10:out=in2;
2'b11:out=in3;
default: out=2'bx;
endcase
endmodule
·timescale1ns/1ns
modulemux4_TB;
reg tin0,tin1,tin2,tin3;
reg[1:0] tsel;
initial
begin
tin0=0;
tin1=1;
tin2=0;
tin3=1;
#5tsel=0;
#5tsel=1;
#5tsel=2;
#5tsel=3;
$stop;
end
mux4_1m1(tout,tin0,tin1,tin2,tin3,tsel);
endmodule
always过程语句格式
always @(<敏感信号表达式event-expression>) begin 过程赋值 if-else,case,casex,casez选择语句 while,repeat,for循环 task,function调用 end “always”过程语句通常是带有触发条件的,触发条件写在敏感信号表达式中,只有当触发条件满足时, “begin-end”块语句才能被执行。
文章图片
事件表达式或敏感信号列表
always @(<敏感信号表达式event-expression>) 作用:当表达式中变量的值改变,就会引发块内语句的执行。 列出影响块内取值的所有信号。用“or”、“,”连接; 信号形式要统一(电平信号、边沿信号)。
文章图片
文章图片
例如: always@(a)// 当信号 a 的值发生改变 always @(a, b)// 当信号 a 或信号 b 的值发生改变 always @* 或 @ (* )// 所有驱动信号 always @( posedgeclock)// 当 clock的上升沿到来时 always @( negedgeclock)// 当 clock的下降沿到来时 always @( posedge clk , negedgereset)当 clk 的上升沿到来或 reset 信号的下降沿 到来【算法|Verilog语法学习(1)】 posedge和negedge
对于 时序电路, 事件通常是由 时钟边沿触发 的; 【 例 】 同步置数(高电平)、同步清零(低电平)的模 256 的计数器 。
文章图片
同步/异步、高/低电平有效
时钟 clk 使能信号 reset load always@ ( posedge clk ) //reset 、 load 同步信号 always@ ( posedge clk , posedgereset ) //reset 异步(高), load 同步 always@ ( posedge clk , posedgereset , negedgeload ) reset异步(高)、load异步(低)
出现 在 敏感列表 中的使能信号,都是异步信号, 不出现 是 同步; 异步使能 信号, posedge 对应 高电平 有效, negedge 对应 低电平 有效。
always @(posedge clk)//clk上升沿触发
begin
if(!reset) out=8'h00;
//同步清0,低电平有效
elseif(load) out=data;
//同步预置
elseout=out+1;
//计数
end
always @(posedge clk,posedge load) //clk上升沿触发
begin
if(!reset) out=8'h00;
//同步清0,低电平有效
elseif(load) out=data;
//异步预置,高电平有效
elseout=out+1;
//计数
end
always @(posedge clk,negedge reset) //clk上升沿触发
begin
if(!reset) out=8‘h00;
//异步清0,低电平有效
elseif(load) out=data;
//同步预置
elseout=out+1;
//计数
end
推荐阅读
- 大唐杯学习|大唐杯仿真实验模拟满分操作详解(省级)
- 数据结构与算法学习|数据结构与算法作业8(排序算法的应用)
- JavaSE|【JavaSE】面向对象编程必备技能,你学会了吗(继承、多态、抽象类、接口详解)
- 网络安全|开源世界的第一信息安全系统—OpenSSL
- 搜索专题|搜索中的判重(以BFS为例)
- 蓝桥杯往届真题详解|题目 2599: 蓝桥杯2020年第十一届国赛真题-天干地支
- 洛谷|P1923 【深基9.例4】求第 k 小的数
- Leetcode|Leetcode70-爬楼梯(C语言)
- 剑指offer进阶|剑指offer103(最少的硬币数目)