Chinaopub.com 下载 第5章门电平模型化 本章讲述 Verilog HDL为门级电路建模的能力,包括可以使用的内置基本门和如何使用它 们来进行硬件描述 51内置基本门 erilog hDl中提供下列内置基本门 1)多输入门 and, nand,or, nor,xor, xnor 2)多输出门 buf, not 3)三态门 buffo, bufifl, notify, notifl 4)上拉、下拉电阻: pullup, pulldown cmos, nmos, pmos, remos, nmos, pmos 6)双向开关 tran, tranif0, tranifl, rtran, rtranif0, rtranifl 门级逻辑设计描述中可使用具体的门实例语句。下面是简单的门实例语句的格式。 gate type [ins tance name] (term1, term2 termN 注意, Instance name.是可选的; gate type为前面列出的某种门类型。各term用于表示与 门的输入/输出端口相连的线网或寄存器 同一门类型的多个实例能够在一个结构形式中定义。语法如下 [instance name1] (termiN, term12 termIN [instance name2] (term21, term2 termiN [instance namen] (termMl, termM2 termIN 52多输入门 Input] 内置的多输入门如下 and nand nor or xor xnor 多输入门 这些逻辑门只有单个输出,1个或多个输入。多输入 门实例语句的语法如下 图5-1多输入门 multiple input gate type name](OutputA, Input1, Input 第一个端口是输出,其它端口是输入。如图5-1所示
下载 第5章 门电平模型化 本章讲述Verilog HDL为门级电路建模的能力,包括可以使用的内置基本门和如何使用它 们来进行硬件描述。 5.1 内置基本门 Verilog HDL中提供下列内置基本门: 1) 多输入门: and, nand,or, nor, x o r, x n o r 2) 多输出门: buf, not 3) 三态门: bufif0, bufif1, notif0,notif1 4) 上拉、下拉电阻: pullup, pulldown 5) MOS开关: cmos, nmos, pmos, rcmos, rnmos, rpmos 6) 双向开关: tran,tranif0, tranif1, rtran, rtranif0, rt r a n i f 1 门级逻辑设计描述中可使用具体的门实例语句。下面是简单的门实例语句的格式。 g a t e _ t y p e[i n s t a n c e _ n a m e] (term1, term2, . . . ,termN) ; 注意,i n s t a n c e _ n a m e是可选的;g a t e _ t y p e为前面列出的某种门类型。各 t e r m用于表示与 门的输入/输出端口相连的线网或寄存器。 同一门类型的多个实例能够在一个结构形式中定义。语法如下 : g a t e _ t y p e [i n s t a n c e _ n a m e 1] (term11, term12, . . .,term1N) , [i n s t a n c e _ n a m e 2] (term21, term22, . . .,term2N) , . . . [i n s t a n c e _ n a m e M] (termM1, termM2, . . .,termMN) ; 5.2 多输入门 内置的多输入门如下: and nand nor or xor xnor 这些逻辑门只有单个输出, 1个或多个输入。多输入 门实例语句的语法如下: m u l t i p l e _ i n p u t _ g a t e _ t y p e [i n s t a n c e _ n a m e] (OutputA, Input1, Input2, . . .,InputN ) ; 第一个端口是输出,其它端口是输入。如图5 - 1所示。 图5-1 多输入门 多输入门
40wmD)硬件述语言 China-pub coM 下载 下面是几个具体实例。图5-2为对应的逻辑图 and Al( Outl, Inl, In? and RBX(sty,R⊥b,Bro,Qit,F↓x xor (Bar, Bud[o], Bud[l], Bud [2])r (Car, Cut [o, Cut[1]) (Sar, Sut [2], Sut[l], Sut[o], Sut[3]) but] 2多输入门实例 第一个门实例语句是单元名为A、输出为Oul、并带有两个输入lnl和mn2的两输入与门。 第二个门实例语句是四输入与门,单元名为RBX,输出为Sy,4个输入为Rb、Bmo、Qit和Fx 第三个门实例语句是异或门的具体实例,没有单元名。它的输出是Bar,三个输入分别为 Bud0]、BudI]和Bd2]。同时,这一个实例语句中还有两个相同类型的单元 下面是这些门的真值表。注意在输入端的z与对x的处理方式相同:多输入门的输出决不 能是z。 Xoor
40 Verilog HDL 硬件描述语言 下面是几个具体实例。图5 - 2为对应的逻辑图。 and A 1(Out1, In1, In2) ; a n d R B X (Sty, Rib, Bro, Qit, Fix) ; x o r (Bar, Bud[ 0 ] ,B u d[1], B u d[ 2 ] ) , (Car, Cut[0], C u t[ 1 ] ) , (Sar, Sut[2], S u t[1], S u t[0], S u t[ 3 ] ) ; 图5-2 多输入门实例 第一个门实例语句是单元名为 A 1、输出为O u t 1、并带有两个输入I n 1和I n 2的两输入与门。 第二个门实例语句是四输入与门,单元名为 R B X,输出为S t y,4个输入为R i b、B ro、Q i t和F i x。 第三个门实例语句是异或门的具体实例,没有单元名。它的输出是 B a r,三个输入分别为 B u d[ 0 ]、B u d[ 1 ]和B u d[ 2 ]。同时,这一个实例语句中还有两个相同类型的单元。 下面是这些门的真值表。注意在输入端的 z与对x的处理方式相同;多输入门的输出决不 能是z。 下载
hinapub.com 第章门电平模型41 下载 53多输出门 多输出门有 buf not 这些门都只有单个输入,一个或多个输出。如图5-3所示。这些门的实例语句的基本语法 multiple output gate type 最后的端口是输入端口,其余的所有端口为输出端口。 Out2 Out2 OutN OutN 图5-3多输出门 例如: buf BI (Fan [0], Fan [1], Fan [2], Fan [3], clk) not NI(PhA, PhB, Ready); 在第一个门实例语句中,Ck是缓冲门的输入。门B有4个输出:Fan0]到Fan3]。在第二 个门实例语句中, Ready是非门的唯一输入端口。门N有两个输出:PhA和PhB 这些门的真值表如下 输出)0 54三态门 三态门有 buf⊥f0 buff1not⊥f0 notif1 这些门用于对三态驱动器建模。这些门有一个输出、一个数据输入和一个控制输入。三 态门实例语句的基本语法如下: tristate gate[instance name] (OutputA, Input, Controle 第一个端口 Output是输出端口,第二个端口pwB是数据输入, Controlc是控制输入。 参见图5-4。根据控制输入,输出可被驱动到高阻状态,即值z。对于bufi⑩,若通过控制输入 为1,则输出为z:否则数据被传输至输出端。对于 bufifl,若控制输入为0,则输出为z。对 notify,如果控制输出为1,那么输出为z:否则输入数据值的非传输到输出端。对于 notif1, 若控制输入为0;则输出为z。 例如: bufif1 BFl (Dbus, MemData, strobe) notifo NT2 (Addr, Abus, Prob 当 Strobe为0时,bufi门BFl驱动输出Dbus为高阻:否则 Memdata被传输至Dbus。在第2 个实例语句中,当 Probe为1时,Adr为高阻:否则Abus的非传输到Add
5.3 多输出门 多输出门有: buf not 这些门都只有单个输入,一个或多个输出。如图 5 - 3所示。这些门的实例语句的基本语法 如下: m u l t i p l e _ o u t p u t _ g a t e _ t y p e [i n s t a n c e _ n a m e] (Out1, Out2, . . . OutN ,InputA ) ; 最后的端口是输入端口,其余的所有端口为输出端口。 图5-3 多输出门 例如: b u f B 1 (Fan [ 0 ],Fan [ 1 ],Fan [ 2 ],Fan [ 3 ],C l k); n o t N 1 (P h A,P h B,R e a d y); 在第一个门实例语句中,C l k是缓冲门的输入。门B 1有4个输出:F a n[ 0 ]到F a n[ 3 ]。在第二 个门实例语句中,R e a d y是非门的唯一输入端口。门 N 1有两个输出:P h A和P h B。 这些门的真值表如下: 5.4 三态门 三态门有: bufif0 bufif1 notif0 notif1 这些门用于对三态驱动器建模。这些门有一个输出、一个数据输入和一个控制输入。三 态门实例语句的基本语法如下: t r i s t a t e _ g a t e[i n s t a n c e _ n a m e] (OutputA, InputB,ControlC) ; 第一个端口 O u t p u t A是输出端口,第二个端口 I n p u t B是数据输入, C o n t ro l C是控制输入。 参见图5 - 4。根据控制输入,输出可被驱动到高阻状态,即值 z。对于b u f i f 0,若通过控制输入 为1,则输出为z;否则数据被传输至输出端。对于 b u f i f 1,若控制输入为0,则输出为z。对于 n o t i f 0,如果控制输出为 1,那么输出为 z;否则输入数据值的非传输到输出端。对于 n o t i f 1, 若控制输入为0;则输出为z。 例如: b u f i f 1 BF1 (D b u s,M e m D a t a,S t r o b e); n o t i f 0 N T 2 (Addr, Abus, Probe) ; 当S t ro b e为0时,b u f i f 1门B F 1驱动输出D b u s为高阻;否则M e m D a t a被传输至D b u s。在第2 个实例语句中,当P ro b e为1时,A d d r为高阻;否则A b u s的非传输到A d d r。 第5章 门电平模型化 41 下载 (输出) (输出)
42wiD)硬停述语言 China°Co 下载 Input Cunrui o notify ControlC 图54三态门 下面是这些门的真值表。表中的某些项是可选项。例如,0/表明输出根据数据的信号强 度和控制值既可以为0也可以为z,信号强度在第10章中讨论。 控制 控制 数据 数据1|2z notin 控制 控制 01z1z1 数据 55上拉、下拉电阻 上拉、下拉电阻有 pu1⊥up pulldown 这类门设备没有输入只有输出。上拉电阻将输出置为1。下拉电阻将输出置为0。门实例 语句形式如下 pull gate[instance name] (OutputA 门实例的端口表只包含1个输出。例如 pullup PUP (Pwr) 此上拉电阻实例名为PUP,输出Pwr置为高电平1 56MOS开关 MOS开关有 s nmos Icmos fpmos Inmo
图5-4 三态门 下面是这些门的真值表。表中的某些项是可选项。例如, 0 /z表明输出根据数据的信号强 度和控制值既可以为0也可以为z,信号强度在第1 0章中讨论。 5.5 上拉、下拉电阻 上拉、下拉电阻有: pullup pulldown 这类门设备没有输入只有输出。上拉电阻将输出置为 1。下拉电阻将输出置为 0。门实例 语句形式如下: p u l l _ g a t e[i n s t a n c e _ n a m e] (O u t p u t A) ; 门实例的端口表只包含1个输出。例如: p u l l u p PUP (P w r) ; 此上拉电阻实例名为P U P,输出P w r置为高电平1。 5.6 MOS开关 M O S开关有: cmos pmos nmos rcmos rpmos rnmos 42 Verilog HDL 硬件描述语言 下载 数据 数据 控 制 控 制 控 制 控 制 数据 数据
Chinapub.com 第章门电平模型43 下载 这类门用来为单向开关建模。即数据从输入流向输出,并且可以通过设置合适的控制输 入关闭数据流 pmos(p类型MOS管)、nmos(n类型MOS管), ramos(r代表电阻)和 pmos开关有一个输出 一个输入和一个控制输入。实例的基本语法如下: gate type[instance name] (OutputA, Input, Controle 第一个端口为输出,第二个端口是输入,第三个端口是控制输入端。如果nmos和rmos开 关的控制输入为0,pmos和 rpms开关的控制为1,那么开关关闭,即输出为z;如果控制是1, 输入数据传输至输出:如图5-5所示。与nmos和pmos相比, inmos和 pmos在输入引线和输出 引线之间存在高阻抗(电阻)。因此当数据从输入传输至输出时,对于 rpms和rmos,存在数据 信号强度衰减。信号强度将在第10章进行讲解。 O中putA Output nmos开关 pmos开关 图5-5mmos和pmos开关 例如: pmos P1(BigBus, SmallBus, GateContrpi inmos RNI (ControlBit, Readybit, hold 第一个实例为一个实例名为Pl的pmos开关。开关的输入为 SmallBus,输出为 Big Bus,控 制信号为 Gate Control 这些开关的真值表如下所示。表中的某些项是可选项。例如,1/表明,根据输入和控制 信号的强度,输出既可以为1,也可以为z 控制 nmos 控制 数据 数据 cmos(mos求补)和 Ramose(cmos的高阻态版本)开关有一个数据输出,一个数据输入和两个 控制输入。这两个开关实例语句的语法形式如下: PControl (r)cmos [instance name] (OutputA, Input, NControl, PControl 第一个端口为输出端口,第二个端口为输入端口,第 个端口为n通道控制输入,第四个端口为是P通道控制输 入。cmos( remos)开关行为与带有公共输入、输出的pmos NControl ( rpms)和nmos(mos)开关组合十分相似。参见图5-6。 图5-6( r)cmos开关
这类门用来为单向开关建模。即数据从输入流向输出,并且可以通过设置合适的控制输 入关闭数据流。 p m o s ( p类型M O S管)、n m o s ( n类型M O S管),r n m o s ( r代表电阻)和r p m o s开关有一个输出、 一个输入和一个控制输入。实例的基本语法如下: g a t e _ t y p e[i n s t a n c e _ n a m e] (OutputA, InputB, ControlC) ; 第一个端口为输出,第二个端口是输入,第三个端口是控制输入端。如果 n m o s和r n m o s开 关的控制输入为0,p m o s和r p m o s开关的控制为1,那么开关关闭,即输出为 z;如果控制是1, 输入数据传输至输出;如图 5 - 5所示。与n m o s和p m o s相比,r n m o s和r p m o s在输入引线和输出 引线之间存在高阻抗 (电阻)。因此当数据从输入传输至输出时,对于 r p m o s和r m o s,存在数据 信号强度衰减。信号强度将在第 1 0章进行讲解。 图5-5 nmos和p m o s开关 例如: p m o s P 1 (BigBus, SmallBus, GateControl ) ; r n m o s R N 1 (ControlBit, ReadyBit, Hold) ; 第一个实例为一个实例名为 P 1 的p m o s开关。开关的输入为S m a l l B u s,输出为B i g B u s,控 制信号为G a t e C o n t ro l。 这些开关的真值表如下所示。表中的某些项是可选项。例如, 1 /z表明,根据输入和控制 信号的强度,输出既可以为 1,也可以为z。 c m o s ( m o s求补)和r c m o s ( c m o s的高阻态版本 )开关有一个数据输出,一个数据输入和两个 控制输入。这两个开关实例语句的语法形式如下: (r)cmos [i n s t a n c e _ n a m e] (OutputA, InputB, NControl, PControl); 第一个端口为输出端口,第二个端口为输入端口,第 三个端口为n通道控制输入,第四个端口为是 P通道控制输 入。c m o s ( r c m o s )开关行为与带有公共输入、输出的 p m o s (r p m o s)和n m o s ( r n m o s )开关组合十分相似。参见图 5 - 6。 第5章 门电平模型化 43 下载 开关 开关 控制 数据 数据 控制 图5-6 (r)cmos开关
44 Verilog hdl硬停述语言 China-pub coM 下载 57双向开关 双向开关有: tran rtran tranifo rtranifo tranifl rtranifl 这些开关是双向的,即数据可以双向流动,并且当数据在开关中传播时没有延时。后4个 开关能够通过设置合适的控制信号来关闭。tran和 rtran开关不能被关闭。 tran或 rtran(ran的高阻态版本)开关实例语句的语法如下: (r)tran [instance name](signalA, signaL 端口表只有两个端口,并且无条件地双向流动,即从 Signal4向 Signal,反之亦然 其它双向开关的实例语句的语法如下: gate type[instance name] (signaIA, signal, ContrpRlc 前两个端口是双向端口,即数据从 SignalA流向 SignalS,反之亦然。第三个端口是控 制信号。如果对 tranit0和 trani0, Controlc是1:对 trani1和 tranit1, Controlc是0:那么 禁止双向数据流动。对于 rtran、 tranit和 rtranifl,当信号通过开关传输时,信号强度减 弱 5.8门时延 可以使用门时延定义门从任何输入到其输出的信号传输时延。门时延可以在门自身实例 语句中定义。带有时延定义的门实例语句的语法如下: gate type [delay] [instance name](terminal list)i 时延规定了门时延,即从门的任意输入到输出的传输时延。当没有强调门时延时,缺省 的时延值为0。 门时延由三类时延值组成 1)上升时延 2)下降时延 3)截止时延 门时延定义可以包含0个、1个、2个或3个时延值。下表为不同个数时延值说明条件下, 各种具体的时延取值情形。 无时延 个时延(d) 2个时延(d1,d2) 3个时延(dA,dB,dC) 上升 下降 min①(d1,d2) (dA, dB ①min是 minimun的缩写词 注意转换到x的时延(tox)不但被显式地定义,还可以通过其它定义的值决定 下面是一些具体实例。注意 Verilog hdl模型中的所有时延都以单位时间表示。单位时间 与实际时间的关联可以通过 timescale编译器指令实现。在下面的实例中 ot Ni(obar, o) 因为没有定义时延,门时延为0。下面的门实例中, nand #6( Out, InI
5.7 双向开关 双向开关有: tran rtran tranif0 rtranif0 tranif1 rtranif1 这些开关是双向的,即数据可以双向流动,并且当数据在开关中传播时没有延时。后 4个 开关能够通过设置合适的控制信号来关闭。 t r a n和r t r a n开关不能被关闭。 t r a n或r t r a n ( t r a n 的高阻态版本)开关实例语句的语法如下: ( r ) t r a n [i n s t a n c e _ n a m e] (SignalA, SignalB) ; 端口表只有两个端口,并且无条件地双向流动,即从 S i g n a l A向S i g n a l B,反之亦然。 其它双向开关的实例语句的语法如下: g a t e _ t y p e[i n s t a n c e _ n a m e] (SignalA, SignalB, ControlC ) ; 前两个端口是双向端口,即数据从 S i g n a l A流向S i g n a l B,反之亦然。第三个端口是控 制信号。如果对 t r a n i f 0和t r a n i f 0,C o n t ro l C是1;对t r a n i f 1和r t r a n i f 1,C o n t ro lC是0;那么 禁止双向数据流动。对于 r t r a n、r t r a n i f 0和r t r a n i f 1,当信号通过开关传输时,信号强度减 弱。 5.8 门时延 可以使用门时延定义门从任何输入到其输出的信号传输时延。门时延可以在门自身实例 语句中定义。带有时延定义的门实例语句的语法如下: gate_type [d e l a y] [i n s t a n c e _ n a m e] (t e r m i n a l _ l i s t) ; 时延规定了门时延,即从门的任意输入到输出的传输时延。当没有强调门时延时,缺省 的时延值为0。 门时延由三类时延值组成: 1) 上升时延 2) 下降时延 3) 截止时延 门时延定义可以包含 0个、1个、2个或3个时延值。下表为不同个数时延值说明条件下, 各种具体的时延取值情形。 无时延 1个时延( d ) 2个时延(d1, d2) 3个时延 (dA, dB, dC) 上升 0 d d 1 d A 下降 0 d d 2 d B t o _ x 0 d m i n① (d1, d2) min (dA, dB, dC) 截止 0 d min (d1, d2) d C ① m i n 是m i n i m u m 的缩写词。 注意转换到x的时延( t o _ x )不但被显式地定义,还可以通过其它定义的值决定。 下面是一些具体实例。注意 Verilog HDL模型中的所有时延都以单位时间表示。单位时间 与实际时间的关联可以通过 ` t i m e s c a l e编译器指令实现。在下面的实例中 , n o t N 1 (Qbar, Q) ; 因为没有定义时延,门时延为 0。下面的门实例中, n a n d #6 (Out, In1, In2) ; 44 Verilog HDL 硬件描述语言 下载
第章门电平型化45 下载 所有时延均为6,即上升时延和下降时延都是6。因为输出决不会是高阻态,截止时延不 适用于与非门。转换到x的时延也是6 and #(3, 5)( Out, Inl, In2, In3 在这个实例中,上升时延被定义为3,下降时延为5,转换到x的时延是3和5中间的最小值,即 3。在下面的实例中 notifl #(2,8, 6)( Dout, Dinl, Dinpi 上升时延为2,下降时延为8,截止时延为6,转换到x的时延是2、8和6中的最小值,即2。 对多输入门(例如与门和非门)和多输出门(缓冲门和非门)总共只能够定义2个时延 因为输出决不会是z)。三态门共有3个时延,并且上拉、下拉电阻实例门不能有任何时 min: typ: max时延形式 门延迟也可采用min:typ:max形式定义。形式如下 minimum: typical: max imum 最小值、典型值和最大值必须是常数表达式。下面是在实例中使用这种形式的实例 nand#(2:3:4,5:6:7)Rou 选择使用哪种时延通常作为模拟运行中的一个选项。例如,如果执行最大时延模拟,与 非门单元使用上升时延4和下降时延7。 程序块也能够定义门时延。程序块的定义和说明在第10章中讨论。 59实例数组 当需要重复性的实例时,在实例描述语句中能够有选择地定义范围说明(范围说明也能够 模块实例语句中使用)。这种情况的门描述语句的语法如下 gate type [delay]ins tance name lef bound: righ bound] list of terminal names leftbound和 lightbound值是任意的两个常量表达式。左界不必大于右界,并且左、右界两 者都不必限定为0。示例如下。 wire [3: 0] Out, InA, Ing nand Gang [3:01( Out, InA, InB 带有范围说明的实例语句与下述语句等价: Gang3 (Out[3], InA[3], InB[3]) Gang2 (Out[2], InA[2], InB [2]) GangI(Out[l], InA[l], InB[1]) Gango (Out[o], InA[O], InB[O]); 注意定义实例数组时,实例名称是不可选的 5.10隐式线网 如果在 Verilog HDl模型中一个线网没有被特别说明,那么它被缺省声明为1位线网。但 是 default newtype编译指令能够用于取代缺省线网类型。编译指令格式如下
所有时延均为 6,即上升时延和下降时延都是 6。因为输出决不会是高阻态,截止时延不 适用于与非门。转换到x的时延也是6。 a n d #(3,5) (Out, In1, In2, In3) ; 在这个实例中,上升时延被定义为 3,下降时延为5,转换到x的时延是3和5中间的最小值,即 3。在下面的实例中, n o t i f 1 #(2,8,6) ( Dout, Din1, Din2) ; 上升时延为2,下降时延为8,截止时延为6,转换到x的时延是2、8和6中的最小值,即2。 对多输入门(例如与门和非门)和多输出门 (缓冲门和非门 )总共只能够定义 2个时延 (因为输出决不会是 z)。三态门共有 3个时延,并且上拉、下拉电阻实例门不能有任何时 延。 min:typ:max时延形式 门延迟也可采用m i n : t y p : m a x形式定义。形式如下: minimum: typical: maximum 最小值、典型值和最大值必须是常数表达式。下面是在实例中使用这种形式的实例。 n a n d #(2:3:4, 5:6:7) (Pout, Pin1, Pin2) ; 选择使用哪种时延通常作为模拟运行中的一个选项。例如,如果执行最大时延模拟,与 非门单元使用上升时延4和下降时延7。 程序块也能够定义门时延。程序块的定义和说明在第 1 0章中讨论。 5.9 实例数组 当需要重复性的实例时,在实例描述语句中能够有选择地定义范围说明 (范围说明也能够 在模块实例语句中使用)。这种情况的门描述语句的语法如下: g a t e _ t y p e [d e l a y]instance_name [l e f t b o u n d : r i g h t b o u n d] (l i s t _ o f _ t e r m i n a l _ n a m e s) ; l e f t b o u n d和r i g h t b o u n d值是任意的两个常量表达式。左界不必大于右界,并且左、右界两 者都不必限定为0。示例如下。 w i r e [3:0] Out, InA, InB; . . . n a n d G a n g [3:0] (Out, InA, InB) ; 带有范围说明的实例语句与下述语句等价: n a n d Gang3 (O u t[3], I n A[3], I n B[ 3 ] ) , G a n g 2 (O u t[2], I n A[2], I n B[ 2 ] ) , G a n g 1 (O u t[ 1 ] , I n A[1], I n B[ 1 ] ) , Gang0 (O u t[0], I n A[ 0 ] , I n B[ 0 ] ) ; 注意定义实例数组时,实例名称是不可选的。 5.10 隐式线网 如果在Verilog HDL模型中一个线网没有被特别说明,那么它被缺省声明为 1位线网。但 是` d e f a u l t _ n e t t y p e编译指令能够用于取代缺省线网类型。编译指令格式如下: 第5章 门电平模型化 45 下载
46 Verilog hdl硬停描述语言 Chinaopub.com 下载 default nettype net type 例如: default nettype wand 根据此编译指令,所有后续未说明的线网都是wand类型 default newtype编译指令在模块定义外岀现,并且在下一个相冋编译指令或' resetall编译 指令出现前一直有效。 5.11简单示例 下面是图5-7中4-1多路选择电路的门级描述。注意因为实例名是可选的(除用于实例数组 情况外),在门实例语句中没有指定实例名 module MUX4x1(2, Do, D1, D2, D3, S0,S1) output 4i input Do, DI, D2, D3,s0,SI and (To, Do, sobar, sibar) (TI, DI, sObar, S1) T2, D2, s0, SIbar (T3,D3,S0,S1), ot (sobar, so) (SIbar,S1) ox(2,T0,T1,2,73,); 图5-74-1多路选择电路 如果或门实例由下列的实例代替呢? or2(2,T0,1,2,73);//非法的ver11ogHD康达式 注意实例名还是Z,并且连接到实例输出的线网也是Z。这种情况在 Verilog hdl中是不允 许的。在同一模块中,实例名不能与线网名相同。 5.122-4解码器举例 图5-8中显示的2-4解码器电路的门级描述如下: module DEC2 X4 (A, B, Enable, z) input A, B, Enable output [0: 3]27 not#(1,2) 0(Abar,A) vI(Bbar, B)i nand#(4,3) No (2[3], Enable, A, B N1(Z[O], Enable, Abar, Bbar N2(2[l], Enable, Abar,B N3 (Z[2, Enable, A bbar
` d e f a u l t _ n e t t y p e n e t _ t y p e 例如: `default_nettype wand 根据此编译指令,所有后续未说明的线网都是 w a n d类型。 ` d e f a u l t _ n e t t y p e编译指令在模块定义外出现,并且在下一个相同编译指令或 ` re s e t a l l编译 指令出现前一直有效。 5.11 简单示例 下面是图5 - 7中4 - 1多路选择电路的门级描述。注意因为实例名是可选的 (除用于实例数组 情况外),在门实例语句中没有指定实例名。 m o d u l e M U X 4 x 1 (Z , D 0 , D 1 , D 2 , D 3 , S 0 , S 1) ; o u t p u t Z; i n p u t D 0 , D 1 , D 2 , D 3 , S 0 , S 1; a n d (T 0 , D 0 , S 0 b a r , S 1 b a r) , (T 1 , D 1 , S 0 b a r , S 1) , (T 2 , D 2 , S 0 , S 1 b a r) , (T 3 , D 3 , S 0 , S 1) , n o t (S 0 b a r , S 0) , (S 1 b a r , S 1) ; o r (Z , T 0 , T 1 , T 2 , T 3 ,) ; e n d m o d u l e 如果或门实例由下列的实例代替呢 ? o r Z (Z , T 0 , T 1 , T 2 , T 3); //非法的Verilog HDL表达式。 注意实例名还是Z,并且连接到实例输出的线网也是 Z。这种情况在Verilog HDL中是不允 许的。在同一模块中,实例名不能与线网名相同。 5.12 2-4解码器举例 图5 - 8中显示的2 - 4解码器电路的门级描述如下: m o d u l e D E C 2×4 (A , B , E n a b l e , Z) ; i n p u t A , B , E n a b l e; o u t p u t [0:3] Z ; w i r e Abar, Bbar; n o t # ( 1 , 2 ) V 0 (A b a r , A) , V 1(Bbar, B) ; n a n d # (4,3) N 0 (Z[3], Enable, A,B) , N 1 (Z[0], Enable, Abar,Bbar) , N 2 (Z[1], Enable, Abar,B) , N 3 (Z[2], Enable, A,Bbar) , e n d m o d u l e 46 Verilog HDL 硬件描述语言 下载 图5-7 4-1多路选择电路
chinaopub.com 第章门平型化47 下载 图5-82-4解码器电路 513主从触发器举例 图5-9所示的主从D触发器的门级描述如下 module MSdFF (D,C,o, obar)i input D,C output o , obar NT'I(No tD, D) NT2(NotC, C)r NT3(Not¥,Y) NDI (DI,D, C), ND2(D2, C, NotD) ND3(¥,D1,Ybax) ND4(Ybar, Y, D2) MD5(¥1,¥,MotC) D6(Y2, NotY, Notc) ND7(Q,Qbar,¥1), ND8 (Obar, Y2, 0) 图5-9主从触发器 5.14奇偶电路 图5-10所示的9位奇偶发生器门级模型描述如下: module Parity 9 Bit(D, Even, odd input [0: 8] Di output Even, odd
图5-8 2-4解码器电路 5.13 主从触发器举例 图5 - 9所示的主从D触发器的门级描述如下: m o d u l e M S D F F (D , C , Q , Q b a r) ; i n p u t D , C ; o u t p u t Q , Q b a r ; n o t NT1 (N o t D , D) , NT2 (N o t C , C) , N T 3 (N o t Y , Y) ; n a n d N D 1 (D 1 , D , C) , N D 2 (D 2 , C , N o t D) , N D 3 (Y , D 1 , Y b a r) , N D 4 (Y b a r , Y , D 2) , N D 5 (Y 1 , Y , N o t C) , N D 6 (Y 2 , N o t Y , N o t C) , N D 7 (Q , Q b a r , Y 1) , N D 8 (Q b a r , Y 2 , Q) ; e n d m o d u l e 图5-9 主从触发器 5.14 奇偶电路 图5 - 1 0所示的9位奇偶发生器门级模型描述如下: m o d u l e Parity_9_Bit (D, Even,Odd) ; i n p u t [0:8] D ; o u t p u t Even, Odd; 第5章 门电平模型化 47 下载
48mwmD)硬件述语言 Chinaopub.com 下载 XE0(E0,D[0],D[1]) XE1(E1,D[2],D[3]) E2,D[4],D[5]) XE3(E3,D[6],D[7]), XF0(F0,E0,E1) XF1(F1,E2,E3), XHO (HO, F0, F1) EN (Even, D[8], HO)i not #2 xoDd (Odd, Even) XODD XE3/E3 图5-10奇偶发生器 习题 1.用基本门描述图5-11显示的电路模型。编写一个测试验证程序用于测试电路的输出。 使用所有可能的输入值对电路进行测试 2.使用基本门描述如图5-12所示的优先编码器电路模型。当所有输入为0时,输出ld为 0,否则输出为1。并且为验证优先编码器的模型行为编写测试验证程序 Encode o Data[l] Data[O] 图5-11A不等于B的逻辑 图5-12优先编码器
x o r # ( 5 , 4 ) XE0 (E 0 , D[ 0 ] ,D[ 1 ] ) , XE1 (E 1 , D[ 2 ] ,D[ 3 ] ) , XE2 (E 2 , D[ 4 ] ,D[ 5 ] ) , XE3 (E 3 , D[ 6 ] ,D[ 7 ] ) , XF0 (F 0 , E 0 , E 1) , XF1 (F 1 , E 2 , E 3) , XH0 (H 0 , F 0 , F 1) , X E V E N (Even, D[ 8 ], H0) ; n o t #2 X O D D (Odd, Even) ; e n d m o d u l e 图5-10 奇偶发生器 习题 1. 用基本门描述图 5 - 11显示的电路模型。编写一个测试验证程序用于测试电路的输出。 使用所有可能的输入值对电路进行测试。 2. 使用基本门描述如图 5 - 1 2所示的优先编码器电路模型。当所有输入为 0时,输出Va l i d为 0,否则输出为1。并且为验证优先编码器的模型行为编写测试验证程序。 48 Verilog HDL 硬件描述语言 下载 图5 - 11 A不等于B的逻辑 图5-12 优先编码器