《数字系统设计06》由会员分享,可在线阅读,更多相关《数字系统设计06(49页珍藏版)》请在金锄头文库上搜索。
1、Verilog HDL 数字系统设计 归约操作符 归约操作符在单一操作数的所有位上操作,并产生1位 结果。 n那么: nQreg 2 是8b0000_0001 Verilog HDL 数字系统设计 Verilog HDL中没有指数操作符。但是,移位操作符可用 于支持部分指数操作。例如,如 果要计算ZNumBits的值,可以使用移位操作实现,例如: 32b1 NumBits /NumBits必须小于32。 可使用移位操作为2 - 4解码器建模,如 wire 0:3 DecodeOut=4b1 18; 如果真, Student赋值为Grade_A; 如果Marks =18, Student 赋值为
2、Grade _ C 。 always #5 Ctr = (Ctr!=25) ? (Ctr+1) : 5; 过程赋值中的表达式表明如果Ctr不等于25, 则加1;否则如果Ctr值为25时, 将 Ctr值重新置为5。 Verilog HDL 数字系统设计 连接操作 连接操作是将小表达式合并形成大表达式的操作。形式 如下: expr1,expr2,.,exprN 实例如下所示: wire 7:0 Dbus; wire 11:0 Abus; assign Dbus 7:4 = Dbus0, Dbus1, Dbus2, Dbus3 ; /以反转的顺序将低端4位赋给高端4位。 assign Dbus =D
3、bus 3:0,Dbus7:4 ; /高4位与低4位交换。 Verilog HDL 数字系统设计 不允许连接非定长常数 reg 7:0 Dbus; reg 10:0 A; A = Dbus,5; 非定长常数的长度未知 。 Verilog HDL 数字系统设计 复制操作 n复制通过指定重复次数来执行操作。语 法如下: nrepetition_number expr1, expr2, .,exprN nAbus = 34b1011; / 位向量(12b1011_1011_1011) nAbus = 4Dbus7, Dbus; n31b1 结果为111 n3Ack 结果与Ack, Ack, Ack相
4、同。 Verilog HDL 数字系统设计 表达式种类 常量表达式是在编译时就计算出常数值的表达式 。 常量表达式构成要素: 1) 表示常量文字, 如b10和326或abc。 2) 参数名,如RED的参数表明: parameter RED = 4b1110; 标量表达式是计算结果为1位的表达式。如果希 望产生标量结果, 但是表达式产生的结果为向 量, 则最终结果为向量最右侧的位值。 Verilog HDL 数字系统设计 内置基本门 n1) 多输入门: and, nand,or, nor, xor, xnor n2) 多输出门: buf, not n3) 三态门: bufif0, bufif1,
5、 notif0,notif1 n4) 上拉、下拉电阻: pullup, pulldown n5) MOS开关: cmos, nmos, pmos, rcmos, rnmos, rpmos n6) 双向开关: tran,tranif0, tranif1, rtran, rtranif0, rtranif1 Verilog HDL 数字系统设计 实例语句的格式 ngate_type instance_name (term1, term2, . . . ,termN ) ; Verilog HDL 数字系统设计 语法 n同一门类型的多个实例能够在一个结构形式中定义。 gate_type instan
6、ce_name1 (term11, term12, . . .,term1N ), instance_name2 (term21, term22, . . .,term2N ), . . . instance_nameM (termM1, termM2, . . .,termMN); Verilog HDL 数字系统设计 内置多输入门 nand nand nor or xor xnor n门实例语句的语法如下: nmultiple_input_gate_type instance_name (OutputA, Input1, Input2, . . .,InputN ) ; n第一个端口是输出
7、,其它端口是输入。 Verilog HDL 数字系统设计 and A1(Out1, In1, In2) ; and RBX (Sty, Rib, Bro, Qit, Fix ) ; xor (Bar, Bud0,Bud1,Bud2), (Car,Cut0,Cut1), (Sar, Sut2, Sut1, Sut0, Sut3 ) ; Verilog HDL 数字系统设计 真值表(多输入门的输出决不能是z) Verilog HDL 数字系统设计 内置多输出门 nbuf not n门的实例语句的基本语法如下: nmultiple_output_gate_type instance_name(Out
8、1,Out2, .OutN,InputA ) ; n最后的端口是输入端口,其余的所有端 口为输出端口。 Verilog HDL 数字系统设计 nbuf (Out1, Out2,OutN, InputA); nnot (Out1, Out2,OutN, InputA); Verilog HDL 数字系统设计 真值表 Verilog HDL 数字系统设计 内置三态门 nbufif0 bufif1 notif0 notif1 n这些门用于对三态驱动器建模。这些门 有一个输出、一个数据输入和一个控制 输入。 ntristate_gate instance_name (Output, Input, Co
9、ntrol); Verilog HDL 数字系统设计 内置三态门 n根据控制输入,输出可被驱动到高阻状 态,即值z。 Verilog HDL 数字系统设计 真值表 Verilog HDL 数字系统设计 上拉、下拉电阻 npullup pulldown n这类门设备没有输入只有输出。上拉电 阻将输出置为1。下拉电阻将输出置为0 。门实例 npull_gate instance_name(OutputA) ; n门实例的端口表只包含1个输出。 npullup PUP (Pwr) ; Verilog HDL 数字系统设计 MOS开关 ncmos pmos nmos rcmos rpmos rnmos
10、 n这类门用来为单向开关建模。即数据从 输入流向输出,并且可以通过设置合适 的控制输入关闭数据流。 Verilog HDL 数字系统设计 pmos nmos rpmos rnmos npmos ( p型MOS管)、nmos ( n型MOS管) ,rnmos ( r代表电阻)和rpmos开关有一 个输出、一个输入和一个控制输入。实 例的基本语法如下: ngate_type instance_name (OutputA, InputB, ControlC); Verilog HDL 数字系统设计 n开关关闭时输出为z nrnmos和rpmos在输入引线和输出引线之间存在 高阻抗(电阻)。因此当数据
11、从输入传输至输出 时,对于rpmos和rmos,存在数据信号强度衰 减。 Verilog HDL 数字系统设计 真值表 Verilog HDL 数字系统设计 cmos rcmos n开关有一个数据输出, 一个数据输入和两个控 制输入。这两个开关实 例语句的语法形式如下 : n(r)cmos instance_name (OutputA, InputB, NControl, PControl); Verilog HDL 数字系统设计 双向开关 ntran rtran tranif0 rtranif0 tranif1 rtranif1 n这些开关是双向的,即数据可以双向流 动,并且当数据在开关中传
12、播时没有延 时。后4个开关能够通过设置合适的控制 信号来关闭。 ntran和rtran开关不能被关闭。 Verilog HDL 数字系统设计 tran rtran ntran或rtran (tran 的高阻态版本)开关 实例语句的语法如下: n(r)tran instance_name (SignalA, SignalB); n端口表只有两个端口,并且无条件地双 向流动,即从SignalA向SignalB,反之 亦然。 Verilog HDL 数字系统设计 受控双向开关 ngate_type instance_name (SignalA, SignalB, ControlC ) ; ntran
13、if0和tranif0,ControlC是1; ntranif1和rtranif1,ControlC是0;那 么禁止双向数据流动。 nrtran、rtranif0和rtranif1,信号通过 开关传输时,信号强度减弱。 Verilog HDL 数字系统设计 门时延 n可以使用门时延定义门从任何输入到其 输出的信号传输时延。门时延可以在门 自身实例语句中定义。带有时延定义的 门实例语句的语法如下: ngate_type delay instance_name (terminal_list) ; n缺省的时延值为0。 Verilog HDL 数字系统设计 门时延 门时延由三类时延值组成: 1) 上
14、升时延 2) 下降时延 3) 截止时延 Verilog HDL 数字系统设计 门时延 n门时延定义可以包含0个、1个、2个或3个时延 值。 无时延1个时延(d) 2个时延(d1, d2) 3个时延(dA, dB, dC) 上升 0 d d1 dA 下降 0 d d2 dB 转变为 x 0 d min(d1, d2) min (dA, dB, dC) 截止 0 d min(d1, d2) d C nnot N1 (Qbar, Q) ; nnand #6 (Out, In1, In2) ; nand #(3,5) (Out, In1, In2, In3 ) ; nnotif1 #(2,8,6) (
15、 Dout, Din1, Din2) ; Verilog HDL 数字系统设计 n对多输入门(例如与门和非门)和多输 出门(缓冲门和非门)总共只能够定义2个 时延(因为输出决不会是z)。 n三态门共有3个时延。 n上拉、下拉电阻实例门不能有任何时延 。 Verilog HDL 数字系统设计 min:typ:max时延形式 n最小值、典型值和最大值必须是常数表 达式。 nnand #(2:3:4, 5:6:7) (Pout, Pin1, Pin2) ; n选择使用哪种时延通常作为模拟运行中 的一个选项。 n程序块也能够定义门时延。 Verilog HDL 数字系统设计 实例数组 n当需要重复性的实例时,在实例描述语 句中能够有选择地定义范围说明(范围说 明也能够在模块实例语句中使用)。这种 情况的门描述语句的语法如下: ngate_type delay instance_name leftbound:rightbound (list_of_terminal_names) ; Verilog HDL 数字系