Verilog HDL 中提供两种过程赋值语句initial 和always 语句,用这两种语句来实现行为的建模。这两种语句之间的执行是并行的,若与语句块(begin ....end)相结合,则语句块中的执行是按顺序执行的。
简介Verilog HDL中提供两种过程赋值语句initial和always语句,用这两种语句来实现行为的建模。这两种语句之间的执行是并行的,即语句的执行与位置顺序无关。这两种语句通常与语句块(begin ....end)相结合,则语句块中的执行是按顺序执行的。
initial语句initial语句只执行一次,即在设计被开始模拟执行时开始(0时刻)。通常只用在对设计进行仿真的测试文件中,用于对一些信号进行初始化和产生特定的信号波形。
语法如下:
initial
[timing_control] procedural_statement
procedural_statement是下列语句之一:
procedural_assignment (blocking or non-blocking ) / /阻塞或非阻塞性过程赋值语句/ /
procedural_continuous_assignment
conditional_statement
case_statement
loop_statement
wait_statement
disable_statement
event_trigger
task_enable (user or system)
事例如上产生一个信号波形:
initial
begin
#2 Stream = 1;
#5 Stream = 0;
#3 Stream = 1;
#4 Stream = 0;
#2 Stream = 1;
#5 Stream = 0;
end1
always语句always语句与initial语句相反,是被重复执行,执行机制是通过对一个称为敏感变量表的事件驱动来实现的。always语句可实现组合逻辑或时序逻辑的建模。
方波initial
Clk = 0;
always
#5 Clk = ~Clk;
因为always语句是重复执行的,因此,Clk是初始值为0的,周期为10的方波。
D触发器always @ ( posedge Clk or posedge Rst )
begin
if Rst
Q