当前位置首页 > 建筑/施工 > 施工组织
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

VERILOG 学习 第11章完稿

文档格式:DOC| 14 页|大小 145KB|积分 10|2022-04-01 发布|文档ID:68165488
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 14
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 第十一章 开关级建模-----------------------------------------------------------------------------在本书第一部分中,我们在逻辑门级、数据流级和行为级等较高抽象层次上解释了数字逻辑的设计和仿真然而在少数情况下,设计者可能会选择用晶体管作为设计的底层模块,即叶级(leaf-level)模块Verilog语言具有对MOS晶体管级进行设计的能力随着电路复杂性的增加(上百万的晶体管)及先进CAD工具的出现,以开关级为基础进行的设计正在逐渐萎缩Verilog HDL目前仅提供用逻辑值0、1、x、z和与它们相关的驱动强度进行数字设计的能力,没有模拟设计能力因此在Verilog HDL中,晶体管也仅被当作导通或者截止的开关在本章中,我们讨论开关级建模的基本原理大多数设计者只需知道基本知识就足够了附录A,即强度建模和高级线网类型定义,给出了信号强度和高级线网类型定义的详细内容关于开关级建模的全部详细内容请参考有关IEEE Verilog硬件描述语言标准 的文档学习目标l 能够描述基本MOS开关:nmos、pmos和cmosl 理解双向传输开关,电源 和地 的建模方法。

    l 识别阻抗MOS开关l 解释在基本MOS开关 和双向传输开关上说明延迟的方法l 在Verilog中,用所提供的开关建立基本开关级电路11.1 开关级建模元件Verilog提供了各种语言结构可以为开关级电路建立模型,MOS晶体管级数字电路可以用这些最基本的电路模型元件(elements)[注1] 来描述[注1]: 可以用实例组(即多个并列的实例引用)来定义开关组在5.1.3中对实例组进行了描述11.1.1 MOS开关可以用关键字nmos和pmos定义两种类型的MOS开关//定义MOS开关的关键字nmos pmos关键字nmos用于NMOS晶体管建模;关键字pmos用于PMOS晶体管建模NMOS和PMOS开关符号如图11-1所示dataoutcontrolNMOSdataoutcontrolPMOS图11-1 NMOS和PMOS开关在Verilog语言里,调用(实例引用)nmos和pmos开关,见例11-1所示[例11-1] nmos和pmos开关的实例引用nmos n1 (out, data, ncontrol ); //调用(实例引用)一个nmos开关; pmos p1 (out, data, ncontrol ); //调用(实例引用)一个pmos开关; 因为开关是用Verilog原语定义的,类似于逻辑门,实例名称是可选项,所以调用(实例引用)开关时可以不给实例命名。

    nmos (out, data, ncontrol ) ; //调用一个nmos开关;无实例名称pmos (out, data, ncontrol ) ; //调用一个pmos开关;无实例名称信号out的值由信号data和control的值确定 out的逻辑值如表11-1所示信号data和control不同的组合导致这两个开关输出1、0 或者z、x 逻辑值 (如果不能确定输出为1或0,就有可能输出z、x值)符号L代表0或者z,H代表1或者z表11-1 NMOS和PMOS逻辑表pmoscontrol01xzdata00zLL11zHHxxzxxzzzzznmoscontrol01xzdata0z0LL1z1HHxzxxxzzzzz因此,nmos开关在control信号为1时导通如果control信号是0,则输出为高阻态值与此类似,如果control信号是0则pmos开关导通11.1.2 CMOS开关CMOS开关用关键字cmos声明可以用nmos和pmos器件来建立cmos器件的模型cmos开关的符号如图11-2所示dataoutpcontrolncontrolCMOS图11-2 CMOS开关cmos开关的应用如例11-2所示[例11-2] cmos开关的实例引用cmos c1 (out, data, ncontrol, pcontrol); // 调用(实例引用)一个cmos开关cmos (out, data, ncontrol, pcontrol); // 没有指定实例名 信号ncontrol和pcontrol通常是互补的。

    当信号ncontrol为1且pcontrol信号为0时,开关导通如果信号ncontrol为0且pcontrol为1,则开关的输出为高阻值cmos门本质上是两个开关:nmos和pmos的组合体因此上述cmos的实例等价于:nmos (out, data, ncontrol); // 调用(实例引用)一个nmos开关pmos (out, data, ncontrol); // 调用(实例引用)一个pmos开关因为cmos开关由nmos和pmos开关派生出来,所以给定data、ncontrol和pcontrol的信号值就可以根据表11-1推断出cmos的输出值11.1.3 双向开关NMOS、PMOS和CMOS门都是从漏极向源极导通,是单向的在数字电路中,双向导通的器件很重要对双向导通的器件而言,其两边的信号都可以是驱动信号通过设计双向开关就可以实现双向导通的器件三个关键字用来定义双向开关:tran、tranif0和tranif1tran tranif0 tranif1这些开关符号如下图11-3所示inout1inout2inout1inout2inout1inout2controlcontroltrantranif0tranif1图11-3 双向开关tran开关作为两个信号inout1和inout2之间的缓存。

    inout1或inout2都可以是驱动信号仅当control信号是逻辑0时tranif0开关连接inout1和inout2两个信号如果control信号是逻辑1,则没有驱动源的信号取高阻态值z有驱动源的信号仍然从驱动源取值如果control信号是逻辑1则tranif1开关导通这些开关的使用如例11-3所示[例11-3] 双向开关的实例引用tran t1 ( inout1, inout2 ); //实例名t1 是可选项tranif0 ( inout1, inout2, control ); //没有指定实例名tranif1 ( inout1, inout2, control ); //没有指定实例名双向开关经常用来在总线或信号之间提供隔离11.1.4 电源和地设计晶体管级电路时需要电源(Vdd,逻辑1)和地(Vss,逻辑0)两极电源和地极用关键字supply1和supply0来定义源极类型supply1相当于电路中的Vdd且把逻辑1放在网表中源极类型supply0相当于ground或Vss并将逻辑0放在网表中在整个模拟过程中,supply1和supply0始终为网表提供逻辑1值和逻辑0值。

    源supply1和supply0如下所示supply1 vdd; supply0 gnd;assign a = vdd ; // 连接到电源电压vddassign b = gnd ; // 连接到地11.1.5 阻抗开关前面所讨论的MOS、CMOS和双向开关可以用相应的阻抗器件建模阻抗开关比一般的开关具有更高的源极到漏极的阻抗,且在通过它们传输时减少了信号强度在相应的一般开关关键字前加带r前缀的关键字声明阻抗开关阻抗开关与一般开关语法类似rnmos rpmos // 阻抗性nmos 和pmos 开关rcmos // 阻抗性cmos 开关rtran rtranif0 rtranif1 // 阻抗性双向开关在一般开关和阻抗开关之间有两个主要区别:源极到漏极的阻抗和传输信号强度的方式关于Verilog中强度级别参看附录A,强度建模和高级线网类型定义l 阻抗器件具有较高的源极到漏极阻抗一般开关源极到漏极阻抗较低l 阻抗开关在传递信号时减少了它们的强度变化如下所示一般开关从输入到输出一直保持强度级别不变。

    有一点例外,如果输入supply强度,则输出strong强度表11-2显示出由于阻抗开关导致的强度缩减表11-2 阻抗开关的强度缩减输入强度输出强度supplystrong [译者注]strongpullpullweakweakmediumlargemediummediumsmallsmallsmallhighhigh---------------------------------------------------------------------------------------------------------------------[译者注]: 原文中此处输出强度为pull,与上文中解释不符合,翻译者认为改为strong比较合适上文中好像讲的是一般开关通常不改变强度级别,只是在输入为supply时,输出慰strong并不是针对阻抗开关讲的 ------------------------------------------------------------------------------------------------------------------------------------------11.1.6 开关中的延迟说明MOS和CMOS开关可以为通过这些开关级元件的信号指定延迟。

    延迟是可选项,它只能紧跟在开关关键字之后延迟说明类似于5.2.1节中讨论的Rise、Fall和Turn-off 延迟可以为开关指定零个、一个、两个或者三个延迟,参考表11-3表11-3 MOS和CMOS开关的延迟说明开关元件延迟说明举例pmos, nmos, rpmosrnmos0个说明(没有延迟)pmos p1(out,data,control);1个说明 (所有暂态过程相同)pmos # (1 ) p1(out,data,control);2个说明 (上升、下降)nmos # (1,2 ) p2(out,data,control);3个说明(上升、下降、关断)nmos # (1,2,3 ) p2 (out,data,control);cmos, rcmos0、1、2、3个延迟说明与上面相同cmos # (5 ) c2 ( out,data,nctrl,pctrl );cmos # (1,2 ) c1 (out,data,nctrl, pctrl );双向传输开关双向传输开关的延迟说明需要稍作区别解释这种开关在传输信号时没有延迟但是,当开关值切换时有开(turn-on)和关(turn-off)延迟。

    可以给双向开关指定零个、一个或者两个延迟,如表11-4所示表11-4 双向开关的延迟说明开关元件延迟说明举例tran , rtran不允许指定延迟说明 tranif1, rtranif1tranif0, rtranif00个延迟说明rtranif0 rt1( inout1, inout2, control );1个延迟说明tranif0 # (3) T (inout1, inout2, control );2个延迟说明tranif0 # (1,2 ) t1 (inout1, inout2, control );Specify块也可以给用开关设计的模块指定路径延迟(引脚到引脚延迟)及时序检查用specify块描述路径延迟在第10章时序和延迟中详细讨论了路径延迟说明,它在开关级模型中也完全适用11.2 举例本节我们讨论如何用开关级建模元件建立实际的数字电路11.2.1 CMOS或非门(nor)虽然Verilog有nor门原语,我们在这里尝试用CMOS开关设计自己的或非门或非门和或非门的开关级电路图如图11-4所示aboutVddpwroutgndabcmy_normy_nor图11-4 或非门门级 / 开关级的电路图表示使用11.1节中讨论的开关原语,开关建模元件,电路的Verilog描述如下例11-4所示。

    [例11-4] 或非门的开关级Verilog描述//定义自己的或非们,my_normodule my_nor(out, a, b);output out;input a, b;wire c;//定义电源和地supply1 pwr; //pwr连接到Vddsupply0 gnd; //gnd连接到Vss(地)//实例引用pmos开关pmos (c, pwr, b); pmos (out, c, a);//实例引用nmos开关nmos (out, gnd, a);nmos (out, gnd, b);endmodule我们可以用下列激励来测试我们的或非门//测试该或非门的激励module stimulus;reg A, B;wire OUT;//实例引用模块my_normy_nor n1(OUT, A, B); //产生激励initialbegin //测试所有可能的输入信号组合 A = 1'b0; B = 1'b0; #5 A = 1'b0; B = 1'b1; #5 A = 1'b1; B = 1'b0; #5 A = 1'b1; B = 1'b1;end//检查测试结果initial $monitor($time, " OUT = %b, A = %b, B = %b", OUT, A, B);endmodule仿真输出如下所示。

    0 out = 1, A = 0, B = 05 out = 0, A = 0, B = 110 out = 0, A = 1, B = 015 out = 0, A = 1, B = 1这样我们就设计出了自己的或非门如果设计者要定制某个库模块,可以采用开关级建模11.2.2 二选一多路选择器可以用CMOS开关定义二选一多路选择器我们将用11.2.1节中声明的my_nor门,一个CMOS或非门来实现非(not)逻辑功能多路选择器电路图如下图11-5所示图11-5 用开关表示的二选一多路器SbarOUT二选一多路器Si0i1二选一多路器Si0i1OUT二选一多路选择器在S=0时将输入I0传到输出OUT,在S=0时把I1传到OUT二选一多路选择器的开关级描述如例11-5所示[例11-5] 二选一多路选择器的开关级Verilog描述//用开关定义二选一多路选择器 module my_mux (out, s, i0, i1);output out;input s, i0, i1;//内部连线 wire sbar; // s的反 // 生成s的反 my_nor nt(sbar, s, s); //相当于1个非门 // 调用(实例引用)cmos 开关cmos (out, i0, sbar, s);cmos (out, i1, s, sbar);endmodule二选一多路选择器可以用一个小激励进行测试。

    激励留作读者练习11.2.3 简单的CMOS锁存器我们在前面的例子中设计了组合逻辑器件现在我们来定义一种可以存储值的存储元件电平敏感CMOS锁存器电路图如图11-6所示FFqqbardclockC1C2dclkqbarq图11-6 CMOS锁存器e开关C1和C2是11.1.2节,CMOS开关中讨论的CMOS开关如果clk=1则C1开关关闭,如果clk=0则C2开关关闭clk的相反值被送给C2的ncontrol输入端可以用MOS开关定义CMOS反相器,如图11-7所示inoutmy_notVddpwroutgndinmy_not图11-7 CMOS反向器现在已经准备好给CMOS锁存器写Verilog描述首先要用开关设计自己的反相器my_not可以根据图11-7的开关级电路图来写CMOS反相器的Verilog模块描述反相器的Verilog描述如例11-6所示[例11-6] CMOS反相器// 用 MOS 开关定义反相器module my_not (out, in);output out;input in;//定义电源和地 supply1 pwr;supply0 gnd;//调用(实例引用)nmos 和 pmos 开关pmos (out, pwr, in);nmos (out, gnd, in);endmodule现在,CMOS锁存器可以用CMOS开关和my_not反相器来定义。

    CMOS锁存器的Verilog描述如例11-7所示[例11-7] CMOS触发器//定义CMOS 触发器module cff ( q, qbar, d, clk);output q, qbar;input d, clk;//内部连线wire e;wire nclk; // 时钟信号 clock的反相// 调用(实例引用)反相器 my_not nt(nclk, clk);//调用(实例引用) CMOS 开关cmos (e, d, clk, nclk); //switch C1; e = d when clk = 1.cmos (e, q, nclk, clk); //switch C2; e = q when clk = 0.//调用(实例引用)反相器 my_not nt1(qbar, e);my_not nt2(q, qbar);endmodule这里给读者留一个练习,写一个小激励模块来测试这个设计,验证这个锁存器的存取特性11.3 总结本章讨论了Verilog的下面几方面内容:l 开关级建模处于很低的设计抽象层次只在很少的情况下,比如在设计者需要定制自己的叶级元件(即最基本的元件)时,才使用开关级建模。

    随着电路复杂度的增加,这个级别的Verilog设计越来越少见;l MOS、CMOS、双向开关和supply1、supply0源可用于设计任意的开关级电路CMOS开关是MOS开关的一种组合;l 延迟对开关元件来说是可选的对不同的双向器件,有不同的延迟解释11.4 练习1. 使用nmos和pmos开关为异或门(xor)画电路图写出它的Verilog描述使用激励测试这个设计2. 使用nmos和pmos开关为与门(and)和或门(or)画电路图写出它们的Verilog描述使用激励测试这两个设计3. 使用1和2中设计的异或门(xor)、与门(and)和或门(or)设计下图所示的一位全加器使用激励测试这个设计asumc_inbc_outs1c1s2练习3图 一位全加器4. 设计一个四位的双向总线开关,其中一侧有两个总线BusA和BusB,另一侧有一个总线BUS一个一位的control信号用作开关当control=1时,BusA和BUS连接在一起当control=0时,BusB和BUS连接在一起提示:使用开关tranif0和tranif1使用激励测试这个设计总线开关BusABusBBUScontrol5. 以下面的延迟值调用开关。

    使用自己的输入和输出端口名称a. rise = 2、fall = 3的pmos开关b. rise = 4、fall = 6、turn-off = 5的nmos开关c. delay = 6的cmos开关d. turn-on = 5、turn-off = 6的tranif1开关e. delay = 3的tranif0开关。

    点击阅读更多内容
    卖家[上传人]:无极剑圣
    资质:实名认证