Verilog HDL 数据流建模 --连续赋值语句
发布时间:2008/5/28 0:00:00 访问次数:1515
6 数据流建模
在3.3.2 节中,我们已经初步了解到数据流描述方式,本节对数据流的建模方式进一步讨论,
主要讲述连续赋值语句、阻塞赋值语句、非阻塞赋值语句,并针对一个系统设计频率计数器的实
例进行讲解。
6.1 连续赋值语句
数据流的描述是采用连续赋值语句(assign )语句来实现的。语法如下:
assign net_type = 表达式;
连续赋值语句用于组合逻辑的建模。等式左边是wire 类型的变量。等式右边可以是常量、由
运算符如逻辑运算符、算术运算符参与的表达。如下几个实例:
wire [3:0] z, preset, clear; //线网说明
assign z = preset & clear; //连续赋值语句
wire cout, c i n ;
wire [3:0] sum, a, b;
. . .
assign {cout, sum} = a + b + cin;
assign mux = (s = = 3)? d : 'bz;
注意如下几个方面:
1、连续赋值语句的执行是:只要右边表达式任一个变量有变化,表达式立即被计算,计算的
结果立即赋给左边信号。
2、连续赋值语句之间是并行语句,因此与位置顺序无关。
6 数据流建模
在3.3.2 节中,我们已经初步了解到数据流描述方式,本节对数据流的建模方式进一步讨论,
主要讲述连续赋值语句、阻塞赋值语句、非阻塞赋值语句,并针对一个系统设计频率计数器的实
例进行讲解。
6.1 连续赋值语句
数据流的描述是采用连续赋值语句(assign )语句来实现的。语法如下:
assign net_type = 表达式;
连续赋值语句用于组合逻辑的建模。等式左边是wire 类型的变量。等式右边可以是常量、由
运算符如逻辑运算符、算术运算符参与的表达。如下几个实例:
wire [3:0] z, preset, clear; //线网说明
assign z = preset & clear; //连续赋值语句
wire cout, c i n ;
wire [3:0] sum, a, b;
. . .
assign {cout, sum} = a + b + cin;
assign mux = (s = = 3)? d : 'bz;
注意如下几个方面:
1、连续赋值语句的执行是:只要右边表达式任一个变量有变化,表达式立即被计算,计算的
结果立即赋给左边信号。
2、连续赋值语句之间是并行语句,因此与位置顺序无关。