当前位置:首页 科普知识 连续赋值

连续赋值

发布时间:2023-09-15 15:19:35

连续赋值

连续赋值语句用于组合逻辑的建模。等式左边是wire类型的变量。等式右边可以是常量、由运算符如逻辑运算符、算术运算符参与的表达。在initial或always外的assign赋值语句称为连续赋值语句,一般在描述纯组合电路时使用。

连续赋值简介

在initial或always外的assign赋值语句称为连续赋值语句,一般在描述纯组合电路时使用。

数据流的描述是采用连续赋值语句(assign )语句来实现的。语法如下:

assign net_type =表达式;

连续赋值语句用于组合逻辑的建模。等式左边是wire类型的变量。等式右边可以是常量、由运算符如逻辑运算符、算术运算符参与的表达。

连续赋值数据流建模

Verilog模型可以是实际电路不同级别的抽象,因此有多种不同的建模方法。其中最常用的建模方法有以下三种:

1)门级结构建模

2)行为描述建模

3)数据流建模

数据流的建模方式就是通过对数据流在设计中的具体行为的描述的来建模。最基本的机制就是用连续赋值语句。在连续赋值语句中,某个值被赋给某个线网变量(信号),语法如下:

assign net_name = expression;

如:assign #2 A = B;

在数据流描述方式中,还必须借助于HDL提供的一些运算符,如按位逻辑运算符:逻辑与(&),逻辑或(|)等。对数据流的建模方式主要有连续赋值语句、阻塞赋值语句、非阻塞赋值语句等。

连续赋值实例

wire Z, Preset, Clear; //线网说明

assign Z = Preset & Clear; //连续赋值语句

wire Cout, C i n ;

wire Sum, A, B;

. . .

assign {Cout, Sum} = A + B + Cin;

assign Mux = (S = = 3)? D : 'bz;

连续赋值特点

    连续赋值语句的执行是:只要右边表达式任一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号。

    连续赋值语句之间是并行语句,因此与位置顺序无关。

    语法上,有关键词“assign”来标识;

    左侧被赋值的数据类型必须是线网型数据(wire);

    连续赋值语句不能出现在过程块中(initial/always);

    连续赋值语句主要用来对组合逻辑进行建模以及线网数据间进行描述;

    连续赋值语句产生作用后,赋值表达式中信号的任何变化都将立即被反映到赋值线网型数据的取值上;

连续赋值与过程赋值区别

过程赋值

连续赋值

assign

无assign(过程性连续赋值除外)

有assign

符号

使用“=”或“《=”

只使用“=”

位置

在always语句或initial语句中均可出现

不可出现于always语句和initial语句

执行条件

与周围其他语句有关

等号右端操作数的值发生变化时

用途

驱动寄存器

驱动线网

●连续赋值用于数据流行为建模,多用于组合逻辑电路,过程赋值用于顺序行为建模,用于顺序行为建模。

●连续赋值等号右边操作数发生变化就需要执行(上电便一直执行),而过程性赋值语句只是执行一次,注意我这里的一次是指:在initial块中,过程性赋值只顺序执行一次,而在always块中,每一次满足always的条件时,都要顺序执行一次该 always块中的语句。连续赋值适用于线网,过程赋值适用于寄存器。

温馨提示:
本文【连续赋值】由作者 百科大全 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6