verilog语言中assign怎么用

发布网友 发布时间:2022-04-20 16:40

我来回答

2个回答

热心网友 时间:2023-05-07 12:44

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

例如:

wire A,B,SEL,L;//声明4个线型变量

assign L=(A&~SEL)|(B&SEL);//连续赋值

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

举例2选1的数据选择器:

mole mux2x1_df(A,B,SEL,L);

input A,B,SEL;

output L;

assign L=SEL?A:B;

endmole

扩展资料:

注意事项

assign的功能属于组合逻辑的范畴,应用范围可概括为以下三点:

1、持续赋值;

2、连线;

3、对wire型变量赋值,wire是线网,相当于实际的连接线,如果要用assign直接连接,就用wire型变量。wire型变量的值随时变化。其实以上三点是相通的。

要更好的把握assign的使用,Verilog中有几个要点需要深入理解和掌握:

1、在Verilog mole中的所有过程块(如initial块和always块)、连续赋值语句(如assign语句)和实例引用都是并行的。在同一mole中这三者出现的先后顺序没有关系。

2、只有连续赋值语句assign和实例引用语句可以独立于过程块而存在于mole的功能定义部分。

3、连续赋值assign语句独立于过程块,所以不能在always过程块中使用assign语句。

热心网友 时间:2023-05-07 12:45

Verilog语言使用一个或多个模块对数字电路建模,通常可以用三种方式:
1、结构描述方式:即调用其它已定义好的低层模块或直接调用Verilog内部基本门级元件描述电路结构和功能。
2、数据流描述方式:连续使用赋值语句(assign)对电路的逻辑功能进行描述。
3、行为描述方式:使用过程块语句结构(initial和always语句)和比较抽象的高级程序语句对电路的逻辑功能进行描述。
你问的assign语句就属于第二种。
连续赋值语句用于对wire型变量进行赋值,它由关键字assign开始,后面跟着由操作数和运算符组成的逻辑表达式。例如:
wire A,B,SEL,L;//声明4个线型变量
assign L=(A&~SEL)|(B&SEL);//连续赋值
在assign语句中,左边变量的数据类型必须是wire型。input和output如果不特别声明类型,默认是wire类型。
举例2选1的数据选择器:
mole mux2x1_df(A,B,SEL,L);
input A,B,SEL;
output L;
assign L=SEL?A:B;
endmole
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com