您当前位置:设计在线网 >> verilog >> 浏览文章

Verilog赋值运算介绍

分享到:
本文章讲述了Verilog赋值运算介绍.

赋值运

算分为连续赋值和过程赋值两种。

(1)连续赋值

连续赋值语句和过程块一样也是一种行为描述语句,有的文献中将其称为数据流描述形式,但本书将其视为一种行为描述语句。

连续赋值语句只能用来对线网型变量进行赋值,而不能对寄存器变量进行赋值,其基本的语法格式为:

线网型变量类型 [线网型变量位宽] 线网型变量名;

assign #(延时量) 线网型变量名 = 赋值表达式;

例如:

wire a;

assign a = 1'b1;

一个线网型变量一旦被连续赋值语句赋值之后,赋值语句右端赋值表达式的值将持续对被赋值变量产生连续驱动。只要右端表达式任一个操作数的值发生变化,就会立即触发对被赋值变量的更新操作。

在实际使用中,连续赋值语句有下列几种应用:

对标量线网型赋值

wire a, b;

assign a = b;

对矢量线网型赋值

wire [7:0] a, b;

assign a = b;

对矢量线网型中的某一位赋值

wire [7:0] a, b;

assign a[3] = b[1];

对矢量线网型中的某几位赋值

wire [7:0] a, b;

assign a[3:0] = b[3:0];

对任意拼接的线网型赋值

wire a, b;

wire [1:0] c;

assign c ={a ,b};

(2)过程赋值

过程赋值主要用于两种结构化模块(initial模块和always模块)中的赋值语句。在过程块中只能使用过程赋值语句(不能在过程块中出现连续赋值语句),同时过程赋值语句也只能用在过程赋值模块中。

过程赋值语句的基本格式为:

其中,是“=”或“<=”,它分别代表了阻塞赋值和非阻塞赋值类型。3.5.1节对阻塞赋值和非阻塞赋值操作进行了详细解释。

过程赋值语句只能对寄存器类型的变量(reg、integer、real和time)进行操作,经过赋值后,上面这些变量的取值将保持不变,直到另一条赋值语句对变量重新赋值为止。过程赋值操作的具体目标可以是:reg、integer、real和time型变量(矢量和标量);

上述变量的一位或几位;

上述变量用{}操作符所组成的矢量;

存储器类型,只能对指定地址单元的整个字进行赋值,不能对其中某些位单独赋值。

例2-2 给出一个过程赋值的例子。

reg c;

always @(a)

begin

c = 1'b0;

end

推荐阅读:
基于verilog中对inout信号问题的处理
Verilog赋值运算介绍
八位串-并行乘法器设计目的
推荐文章  
赞助商链接  
热门排行  
主题推广  
中国设计在线网 All Rights Reserved. 互联网违法和不良信息举报
信息产业部备案号:湘ICP备09001063号