「Verilog HDL」自学计划|数据流建模

「Verilog HDL」自学计划|002|数据流建模

「显式连续赋值语句」

在数字电路中,输入信号经过组合逻辑电路传到输出时类似于数据流动,而不会在其中存储。可以通过连续赋值语句对这种特性进行建模,这种建模方式通常被称为数据流建模

显示连续赋值语句的语法格式如下:

<net_declaration><range><name>;
//net_declaration(连线型变量类型)可以是除了trireg类型外的任何一种连线型数据类型,range(变量位宽)指明了变量数据类型的宽度,格式为[msb:lab],缺省时为1位
assign #<delay><name> = Assignment expression;
//delay(延时量)也是可选的,它指定了赋值表达式内信号发生变化时刻到连线型变量取值被更新时刻之间的延时时间量。其语法格式如下:
//#(delay1, delay2, delay3)
//其中,delay1、delay2、delay3都是一个数值,"delay1"指明了连线型变量转移到"1"状态时的延时值(上升延迟);"delay2"指明了连线型变量转移到"0"状态时的延时值(下降延时);"delay3"指明了连线型变量转移到"高阻Z"状态的延时值。

「显式连续赋值语句示例」

module example1_assignment(a, b, m, n, c, y);
	input[3:0] a, b, m, n;
	output[3:0] c, y;
	wire[3:0] a, b, m, n, c, y;
	assign y = m|n;
	assign #(3, 2, 4) c = a&b;  //上升延时3个时间单位,下降延时2个时间单位,关闭延时4个时间单位
endmodule

硬件设计中用显式连续赋值语句。

「连续赋值语句使用中的注意事项」

(1) 赋值目标只能是线网类型(wire)
(2) 在连续赋值中,只要赋值语句右边表达式任何一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号(若没有定义延时量)。连续赋值语句是对于组合电路的一个基本描述。
(3) 连续赋值语句不能出现在过程块中。
(4) 多个连续赋值语句之间是并行关系,因此与位置顺序无关。
(5) 连续赋值语句中的延时具有硬件电路中惯性延时的特性,任何小于其延时量的信号变化脉冲都将被滤除掉,不会出现在输出端口。惯性延时小于干扰(毛刺),干扰就会起作用;惯性延时大于干扰,干扰就不会起作用。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值