结构语句
initial和always
initial语句它在模块中只执行一次。
它常用于测试文件的编写,用来产生仿真测试信号(激励信号),
或者用于对存储器变量赋初值。
always语句一直在不断地重复活动。
但是只有和一定的时间控制结合在一起才有作用。
例
//给输入信号初始值
initial begin
sys clk <=1'b0 ;
sys rst n <=1 'b0 ;
touch key <=1'b0;
#20 sys_rstn<=1'b1;
#10touch_key<=1'b1; // 此处的#10是基于上一个语句的延时,下面也是一样的道理
#30touch_ key <= 1' b0;
#110 touch_ key <=1 'b1 ;
#30 touch key< = 1' b0 ;
end
/ /产生50Mhz的时钟,周期为20ns
always #10 sys clk <= ~sys clk ;
沿触发的always块常常描述时序逻辑行为。
电平触发的always块常常描述组合逻辑行为。
@(* )表示对后面语句块中所有输入变量的变化都是敏感的。
所谓阻塞的概念是指,在同一个a lways
块中,后面的赋值语句是在前一句赋值
语句结束后才开始赋值的。
所谓非阻塞的概念是指,在计算非阻塞赋值
的RHS以及更新LHS期间,允许其他的非阻塞
赋值语句同时计算RHS和更新LHS。
非阻塞赋值只能用于对寄存器类型的