版权归原作者所有,如有侵权,请联系我们

[科普中国]-过程赋值

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

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