Verilog HDL行为建模--- 过程赋值语句

时间:2007-04-29

7.3 过程赋值语句
Verilog HDL 中提供两种过程赋值语句 initial 和 always 语句,用这两种语句来实现行为的建
模。这两种语句之间的执行是并行的,即语句的执行与位置顺序无关。这两种语句通常与语句块
(begin ....end)相结合,则语句块中的执行是按顺序执行的。

1. 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;


end

2004-08-16 第36页,共41页
版权所有,侵权必究


绝密
Verilog HDL 入门教程请输入文档编号

2. always 语句
always 语句与initial 语句相反,是被重复执行,执行机制是通过对一个称为敏感变量表的事件
驱动来实现的,下面会具体讲到。always 语句可实现组合逻辑或时序逻辑的建模。

例[1]:

initial

Clk = 0 ;

always
#5 Clk = ~Clk;
因为always 语句是重复执行的,因此,Clk 是初始值为0 的,周期为10 的方波。


例[2] D 触发器

always @ ( posedge Clk or posedge Rst )

begin

if Rst

Q <= ‘ b 0;

else

Q <= D;

上面括号内的内容称为敏感变量,即整个always 语句当敏感变量有变化时被执行,否则不执
行。因此,当Rst 为1 时,Q被复位,在时钟上升沿时,D被采样到Q。有@ 的用来描述一个时序器
件。

例[3] 2 选一的分配器
always @( sel ,a ,b)
C = sel ? a :b;
这里的sel ,a,b 同样称为敏感变量,当三者之一有变化时,always 被执行,当sel 为 1 ,C被
赋值为a ,否则为b 。描述的是一个组合逻辑 mux 器件。

注意以下几点:

1、对组合逻辑的always 语句,敏感变量必须写全,敏感变量是指等式右边出现的所有标识符
如上的a,b和条件表达式中出现的所以标识符如上例3的sel。

2、对组合逻辑器件的赋值采用阻塞赋值“=”

3、时序逻辑器件的赋值语句采用非阻塞赋值“<=”,如上的 Q 〈= D;



  来源:零八我的爱
上一篇:Verilog HDL行为建模具体实例
下一篇:Verilog HDL行为建模--- 顺序语句块

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料