Verilog HDL数字集成电路设计原理与应用 作者 蔡觉平_ 第3章.pptVIP

  • 75
  • 0
  • 约2.9万字
  • 约 188页
  • 2015-12-12 发布于广东
  • 举报

Verilog HDL数字集成电路设计原理与应用 作者 蔡觉平_ 第3章.ppt

        在数字电路中,输入信号经过组合逻辑电路传到输出时类似于数据流动,而不会在其中存储。可以通过连续赋值语句这种特性进行建模,这种建模方式通常被称为数据流建模。   Verilog HDL语言中的数据流建模方式是比较简单的行为建模,它只有一种描述方式,即通过连续赋值语句进行逻辑描述。最基本的语句是由assign关键词引导的。   对于连续赋值语句,只要输入端操作数的值发生变化,该语句就重新计算并刷新赋值结果,通常可以使用连续赋值语句来描述组合逻辑电路,而不需要用门电路和互连线。连续赋值的目标类型主要是标量线网和向量线网两种,标量线网如“wire a,b;”,向量线网如“wire [3:0]a,b;”。   连续赋值语句只能用来对连线型变量进行驱动,而不能对寄存器型变量进行赋值,它可以采取显式连续赋值语句和隐式连续赋值语句两种赋值方式。   1. 显式连续赋值语句   显式连续赋值语句的语法格式如下:   net_declarationrangename;   assign #delayname= Assignment expression;   这种格式的连续赋值语句包含两条语句:第一条语句是对连线型变量进行类型说明的语句;第二条语句是对这个连线型变量进行连续赋值的赋值语句。赋值语句是由关键词assign引导的,它能够用来驱动连线型变量,而且只能对连线型变量进行赋值,主要用于对wire型变量的赋值。   2. 隐式连续赋值语句   隐式连续赋值语句的语法格式如下:   net_declarationdrive_strength range#delayname= assignment expression;   这种格式的连续赋值语句把连线型变量的说明语句以及对该连线型变量进行连续赋值的语句结合到同一条语句内。利用它可以在对连线型变量进行类型说明的同时实现连续赋值。   上述两种格式中:   ● “net_declaration(连线型变量类型)”可以是除了trireg类型外的任何一种连线型数据   类型。   ● “range(变量位宽)”指明了变量数据类型的宽度,格式为[msb:lab],缺省时为1位。   ● “drive_strength(赋值驱动强度)”是可选的,它只能在“隐式连续赋值语句”格式中指定。它用来对连线型变量受到的驱动强度进行指定。它是由“对1驱动强度”和“对0驱动强度”两项组成的,驱动强度的概念在上一章的数据类型中已经说明,比如语句“wire(weak0,strong1)out=in1in2;”内的“(weak0,strong1)”就表示该语句指定的连续赋值对连线型变量“out”的驱动强度是:赋“0”值时的驱动强度为“弱(weak)”,而赋“1”值时的驱动强度为“强(strong)”。如果在格式中缺省了“赋值驱动强度”这一项,则驱动强度默认为(strong1,strong0)。   ● “delay(延时量)”项也是可选的,它指定了赋值表达式内信号发生变化时刻到连线型变量取值被更新时刻之间的延时时间量。其语法格式如下:   #(delay1,delay2,delay3)   其中,delay1、delay2、delay3都是一个数值,其中的“delay1”指明了连线型变量转移到“1”状态时的延时值(称为上升延时);“delay2”指明了连线型变量转移到“0”状态时的延时值(称为下降延时);“delay3”指明了连线型变量转移到“高阻Z”状态时的延时值(称为关闭延时)。   例3.1-1 显式连续赋值语句举例。   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=ab;   endmodule   该例中包含了两个显式赋值语句,分别用来实现组合逻辑中的“或”和“与”逻辑,其赋值目标是连线型变量c和y,它们的位宽都为4位。连续赋值语句指定用表达式“m|n”和“ab”的取值分别对连线型变量y和c进行连续驱动。   其中,“assign y=m|n;”没有指定延时量;而“assign #(3,2,4)?c=ab;”指定的延时量为“(3,2,4)”,它指明了从信号a或b发生变化时刻到变量c被更新时刻之间的延时时间量,即上升延时为3个时间单位,下降延时为2个时间单位,关闭延时为4个时间单位。   由于是显式赋值语句,因此并未出现“驱动强度”这一项,所以连线型变量y和c受到的驱动强度默认都是“(strong1,strong0)”。   例3.1-2 隐式连续赋值语句

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档