EDA技术实用教程 | 复习三 | 不同类型的赋值语句

一、连续赋值语句

连续赋值语句用于把值赋给线网型变量(不能为寄存器型变量赋值)

连续赋值语句的基本格式如下:

assign  目标变量名 = 驱动表达式;

其中assign是连续赋值命名的关键词。由assign引导的赋值语句的执行方式是,当等号右侧的驱动表达式中的任一信号变量发生变化时,此表达式即被计算一遍,并将获得的数据立即赋给等号左侧的变量名所标示的目标变量。

对于并行语句,无论有多少行语句,都是同时执行的,与语句的前后次序无关。以关键词assign引导的赋值语句实际上属于并行赋值语句,即在模块module_endmodule中所有的由assign引导的语句都是并行运行的。

例如:
module   F A _ D f (A, B, Cin, Sum, Cout ) ;
input    A, B, Cin;
output   Sum, Cout ;
assign   Sum = A ^B ^Cin;
assign   Cout = (A & Cin) | (B & Cin) | (A & B) ;
endmodule

在本例中,有两个连续赋值语句。这些赋值语句是并发的,与其书写的顺序无关。

二、过程赋值语句

用于对reg型变量赋值,有两种方式:阻塞式赋值,非阻塞式赋值。

1、阻塞式赋值

Verilog中,用“=”作为阻塞赋值语句的赋值符号,如y=b。

阻塞式赋值的特点是,一旦执行完当前的赋值语句,赋值目标变量y即刻获得来自等号右侧表达式的计算值。

2、非阻塞式赋值

Verilog中,用“<=”作为非阻塞赋值语句的赋值符号,如y<=b。

非阻塞式赋值的特点是,必须在块语句执行结束时,才整体完成赋值操作。

3、阻塞赋值和非阻塞式赋值主要区别

非阻塞(non-blocking)赋值方式 ( b<= a):
b的值被赋成新值a的操作, 并不是立刻完成的,而是在块结束时才完成;
块内的多条赋值语句在块结束时同时赋值;
硬件有对应的电路。

阻塞(blocking)赋值方式 ( b = a):
b的值立刻被赋成新值a;
完成该赋值语句后才能执行下一句的操作;
硬件没有对应的电路,因而综合结果未知。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值