Verilog基础语法(10)之赋值语句

文章详细介绍了Verilog编程语言中的三种赋值方式:过程性赋值、连续赋值和过程连续赋值。过程性赋值常用于always和initial块,变量的值会保持不变直到下次赋值;连续赋值用于组合逻辑,当右值改变时立即更新线网;过程连续赋值包括assign...deassign和force...release,用于临时覆盖变量或线网的赋值。

赋值语句将值放到线网或者变量上,它有三种基本形式:

  • 过程性赋值
  • 连续赋值
  • 过程连续赋值

赋值要求

一个赋值语句有两个部分–右值(RHS)和左值(LHS),中间有一个相等的符号(=)或一个小于相等的符号(<=)。
=为阻塞赋值,<=为非阻塞赋值。
在过程性赋值中,合理的左值应该是:

  • 变量(矢量/标量)
  • 向量reg、integer或time变量的位选择或部分选择。
  • 存储器(Memory word)
  • 上述任何一项的合并

过程赋值通常发生在块语句中,例如initial块,always块,还有task以及function中。

在连续性赋值中,合理的左值应该是:

  • 线网(矢量/标量)
  • 矢量线网的位选择或部分选择。
  • 位选择和部分选择的合并

连续性赋值通常发生在assign中。

在过程连续性赋值中,合理的左值应该是:

  • 线网或者变量(向量/标量)
  • 线网向量的位选择或者部分选择

RHS可以包含任何计算为最终值的表达式,而LHS表示一个线网或一个变量,RHS中的值被赋值给它。
例如:

module tb;
	reg clk;
	reg a, b, c, d, e;
	wire f, y;
	reg  z;

	// clk is on the LHS and the not of clk forms RHS
	always #10 clk = ~clk;

	// y is the LHS and the constant 1 is RHS
	assign y = 1;

	// f is the LHS, and the expression of a,b,d,e forms the RHS
	assign f = (a | b) ^ (d 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值