4、Verilog HDL--数据流建模

1、连续赋值语句

目标类型(1)标量线网,如 wire a,b; (2)向量线网,如 wire[3:0]a,b;

显式连续赋值语句:先定义,再赋值(用的多)。形式如下:

具体示例如下:

4、Verilog HDL--数据流建模_第1张图片

隐式连续赋值语句:直接定义并赋值。形式如下:

具体实例如下:

4、Verilog HDL--数据流建模_第2张图片

其中,assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。具体用法如下例所示:

在assign语句中,左边变量的数据类型必须是wire型。input和output如果不特别声明类型,默认是wire类型。

连续赋值语句需注意以下几点:

(1)赋值目标必须是线网类型(wire),不能是寄存器型。

(2)在赋值时,无延时;在赋值语句间,有延时。当赋值语句间的延时小于延时信号脉冲会被滤除,以及赋值语句不能出现在过程块中。

(3)并行化语句与其所在位置无关。

2、行为级建模

语句块主要包含过程赋值语句、高级程序语句两个部分。其中,过程语句包含initial、always两块,可综合性指可以综合出实际电路。

4、Verilog HDL--数据流建模_第3张图片

电路初始化通常通过复位信号来完成。

(1)initial 语句

作用:主要用于仿真测试中变量初始化,且所有initial语句都是并行的。

4、Verilog HDL--数据流建模_第4张图片

(2)always语句

与initisl语句块的一次执行不同,always语句块的触发状态是一直存在的,只要满足always后面的敏感事件列表即可。示例如下:

4、Verilog HDL--数据流建模_第5张图片

always语句由于其不断重复执行的特性,只有和一定的时序控制结合在一起才有用。如果一个always语句没有时序控制,则这个always语句将会发成一个仿真死锁

(3)过程语句需要注意的问题

在信号定义形式方面,无论是对时序逻辑还是组合逻辑描述,Verilog HDL要求在过程语句(initial和alaways)中,被赋值信号必须定义为“reg”类型。

在敏感事件方面,采用过程对组合电路描述时,作为全部的输入信号需要列入敏感信号列表;采用过程对时序电路进行描述时,需要把时间信号和部分输入信号列入敏感信号列表。应当注意的是,不同的敏感事件列表会产生不同的电路形式。

 

 

你可能感兴趣的:(verilog)