Verilog HDL数字设计与综合(第二版)习题答案.docx

上传人:李司机 文档编号:7194031 上传时间:2024-06-29 格式:DOCX 页数:18 大小:227.92KB
返回 下载 相关 举报
Verilog HDL数字设计与综合(第二版)习题答案.docx_第1页
第1页 / 共18页
Verilog HDL数字设计与综合(第二版)习题答案.docx_第2页
第2页 / 共18页
Verilog HDL数字设计与综合(第二版)习题答案.docx_第3页
第3页 / 共18页
Verilog HDL数字设计与综合(第二版)习题答案.docx_第4页
第4页 / 共18页
Verilog HDL数字设计与综合(第二版)习题答案.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Verilog HDL数字设计与综合(第二版)习题答案.docx》由会员分享,可在线阅读,更多相关《Verilog HDL数字设计与综合(第二版)习题答案.docx(18页珍藏版)》请在三一办公上搜索。

1、1 .互旌开关is由以下元件Ia成,一个共享存传善(MEM),一个系跳控制暑(SC)和一个数得妙开关(Xbar).a.使用关键字module和endmodule定义模块MEM.SC和Xbar不需要定义模块的内容,并且假设模块没行端I列表,b.使用关健字module和endmodule定义横块is.在IS中网用(实例引用)mem.SC和Xbar模块,井杷它们分别命名为meml,Sd和*barl.不辐要定义模块的内容,并且假设模块没有端口列表。C.使用关健字module和endmodule定义激励块(Top).ToP根块中调用IS模块,将其命名(或称实例化、具体化)Risl.誉tmoduleMEM

2、;endxxlulemoduleSC;CndmodulemoduleXbar;cnd11xiulc11xxiuleIS;MEMmemI;SCscl:XbarxbarkendmodulemoduleTOP:ISisl:endmodule2 .一个四位Ik动进位加法由4个一位全加IMa成a.定义模块FA,不需要定义模块内容和端口列农.b.定义模块RippljAdd,不霜要定义模块内容和缆口列表,在模块中调用4个FA类型的全加器.把它们分别命名为fa,thl白2和仿3。密moduleFA:CndmodulemoduleRippIeSdchFAfa:FAfakFAfa2:ft3:c. ,个名为c。Um

3、的整数:d. 一个名为MK4h3的时间变峡;e. 一个名为dcla的数姐.该数祖中包含20个ir11cgcr类型的元素:f.含有256个字的存储器MEM.每个字的字长为64位:g.,个(ft为512的参数cache.size告I定义如下:a. wire|7:0a_in;b. reg(31address=,d3;c. integercount:d. timesnap_shoi;.integer移也型以bAm3hmrcCioATUft答,模块代码如下:moduleshift_rcg(c)uckfcrcgJn.rcg_ouO;inputclock:input(3:0regjn;output(3r_o

4、ut;CndnlOdUIC4 .定义一个JI层模块stimulus,在其中声明regURECJN(4ft)和C1.KQ位)以及wireUREGX)UT(4位)在其中B用(实例引用)模块shW1.eg,实例名为srl,使用期口连接.答t模块代码如下moduleStimUhIs0;regC1.OCK;reg3:0)REGJN;wire(3:0REG.OUT;/*000wcin(Xder*mn.Shifkrcgsrl(C1.OCK.REGJN.REG.T);eulmodule5 .轿上Ji的口旌按方法改为命名连接.1模块代码如下modulestimulus();regCl,OCK;reg(3:0|R

5、EG.1N;wire(3X)REG_OUT:/*4conncctbynamcShif1.regsrl(.clock(CI.OCK),.reg_in(REGJN),.reg_(MH(REG_Oirr);endnoduk6 .写出REGJN,C1.K和REG.OUT的层次名答3分别是:$limulu$,REGNsiimulus.C1.Kslimulus.REG_0UT7 .写出模块实例旖1及其*cock和仙的层次名答.分别是SSlinWIUSSiistimulusfl.clockStimuIus.Sr1.rcgJnstimulus.rcg.out1.利用双入的nand门,用VBilog一耳自己的双

6、入*的与门、Je门和非门.把它们分别命名为myrmy_and和my_not,并显过激Jft模块IME这些门的功能等,timescale)nsns*:*拳瓢*m,andj*modulemy_and(in1.in2.out):inputinljn2:OUIPIHout;wireOUlI;*5t*拿嘉f!*!*ny*拿嘉f!*!*5t*:/京分*拿京*拿/modulemy.not(in.out);inputin:outputOU1;nandnl(oul.in,in);nandal(out.outl.outl);nania2(oul,inl,i112);euim(Mulecndmcxiulctex/*

7、:*:*:*会*3*4my_(r净%4冬冬号4*24*C号*XC才号*modulemyor(inljn2.out);翻*宾*熊北#*:*:*/module此si;rcga,b;inputinljn2;outputul;WirCOUllQUt2:wirea(xi_c.or_c.iMK_c;initialbeginnandolout,utl,ou2);a三0b=0;nando2(outl.inljnl);nando3(out2.in2.in2):#10a=0;b=l;#10a=l:b=0:#10a=l:b=l:endmoduleWIOSsop;#10=hy=0;#10=lzyg描述,是每个门多只能

8、有四个入写激励模块对其功旗行检查.并对全部的入融合进行试等,在前面的课程中己钱学习过位全加黑的相关知识,位全加密的电路如卜所示:按此电路图,采用门级描述代码如下,IimcscalcJns1InsInodIlICfu)1.add(a.bx_in,um.c_oul);inputa.b.c_in:outputsum,c-out;wire$1,2.*3M,7,*6,s7;nand(s1.a.b);nand(s2,a.sl);nand(s3,b.sl);nand(s4.s2.s3);nand(s5.s4.cjn);上IB两个习题中书作杼用“表示反播他用J表示与黑体。评杼注nand(s6.s4.s5);n

9、and(s7.s5.cjn);nand(sum,s6.s7);nand(c_ou(,s5,sl);CndinodulcInOdUletes(53:rcgi1.bx-,in;wiresum,c-out;ini(ilbegina=0zb=0x-in=0;#10a=O;b=O;c_in=1;#10a=0it=I;c_in=0;#10a=(hb=lxjn=l:#10a=1:b=0;c_in=0;*IOa=I;b=O;c_in=I;H10a=Ix=1;cJn=O;H10a=Ix=1;c_in=1;#1()Ssop:endinitialSmonitor(Stimc.,a=ob.b=%b.cJn=%b.su

10、m=%b.c-out=%b”.a.b.jinsum.JoUU:FuI1.addfiidda,b.c_in,sum.c_oul);cndinodulc输出的数据和波形:# Qa=0.b=O.c-in=0.sum=O.c-out=O# IQa=0.b=O,c_tn=1.sum=Isqut=O# 20a=0,b三l,cjn三O,sum=l,c-out=OM3Q*=0.b=1.cJn=1.sum=O.c-out=1# 40a=l.b=O.cjn=0.sum=1.c-ou(=O# 5Qa=l.b=O.c-,in=l.sum=O,c-out=I# 6Qa=1.b=1,cjn三0,sum=O,c-out=I

11、答:代码如下UnwscdeInsHnsrnudukrny-rs(ree,MM.qbar);inputrcscijct;OlHPIIlq.qtxr;norW(I)nandI(qgel.qbar);norff1)nal2(qbar.sct.q);Cndmodulcmoduletcst54;regset,reset;wireq.qkr;initialbeginSeK=OirescK=I;#10sci=0;rcsct=0:Aloyy=1:ZJieK=0;#)0sct=krcscte,se=%b,nese-%b,q=%b,qbar-%b,.se(jeset,q,qhar);UlMlmodUIe测试输出文

12、件Osel=Ojcsel=lq=x.qbr=NIsci=().rcsc=l.q=0,qbar=x氐I=OJH=1.q=O.qbar=1IQsct=O,rcsct=O,q=O.qbar=I20Sel=1.reset=0,q-O,qba-I21set=I.reset=O.q=O.qbar=O22Sey!.reset=O,q-1,qbar=O30SCl=I.reset=l.q=1.qbar=O31yI=1.resel=I.q=O.qbar=O门b】和b2的廷迟说明如下所示,最小便典出值最大值上升延迟123下降延迟345美断延迟567在设计完成后,写出激励模块对其迸行仿典.答,代码如下*ti11csc

13、alcln!nsmodulemux2l(ou(,in0.in1.$);inpulin.inl;inputs:outputout:bull(O1:2:3.3:4:5.5:6:7)bl(oul.inO,s):bufifl#(1:2:3,3:4:5,5:6:7)b2(ou1.inl.s):endmodukmoduletcst55:reginOJnl;regs;wireout;initialbegininO=OJnl=ks=l;# 100inO=OJnl=ks=O;# 100in=hinl=0s三l;# 1OOin=l;inl=0;s%bjnl=%b,s三%b,out=%bajnjnl.s1ou;cn

14、dmcxiulefi出波形和数据# OifU)=OJnl三hs三1.out=x# 6i110=0tinl=1.s=1.out=I# 100inO=O.inl=1.s=O.out=1# 1(MinO=O.inl=IS=O.out=x# IO6iO=OJnI三IS=O,oUl=O# 30x=0,y=I=I1B=1.D=O# 40x=l.y=0j-=0.B=0.D=1# 50x=l.y=0,z=I.B=0.D=0# 60x=i.y=Iji=0.B=0.D=0# 70x=l.y=Ijj=I1B=1.D=I2.大小比较器的功能是比较两个数之间的关系:大于、小于或等于,一个四位大小比较零的输入是两个四位数

15、A和B我In可以将它的写成下面的形式,用左边的位为及高有效位:A=(3)(2A(I)-A(O)B=B(3)B(2)B(I)-B(O)两个数的比较可以从始高有效依开始.逐位进行。如果两个位不相等,则该位值为0的数为较小的数-为了用逻辑等式实现这个功能.我们需要定义个中间变Iftx.注意下面实现的是同或(xnor)的功能.(i)=A(i)B(i)+A(i)B(t),大小比较岩的三个输出为:AY1.B.A1.B和A_cq_B.其计算公式为:A_gt_B=A(3B(3),+x(3)A(2)B(2),+x(3)x(2)A(I)B(l)+x(3)x(2)x(l)A(O)B(O)A_h_B=A(3),-B(

16、3)*x(3)A(2),B(2)+x(3)x(2)-A(l),B(l)+x(3)x(2)-x(l)-A(0),B(O)A_cq_B=x(3)x(2)x(l)x(O)写出模块magnitude-mparaor的VerilOg猫迷.写出激励模块并在模块中实例引IlJmagnitude.Compamor桢块.选择A和B的儿种俎令,对模块的功能进行测试,答,代码以及测试激励:(imcscalcInSylnSIwdulcIparator(.X,B.AgtB.AltB.Acq.B):input|3:0A.B;ou(plAY1.BwirexO.xl.x2.x3:assignx0=(A(0)&(B(0D)K(

17、!A|01)&(?B(0|);assignxl=(A(i)A(B(ID)KCAlI)(B(I);assignx2=A(2J)&(B(2)K(!A(2)&(!B(2J;assignx3=(A(3|&(B(3|)K(!A|3J)&(!BP|):assign=(Al3J&(!B(3|)|(x3&A2J&(!B|2J)|(x3&x2&A(lJ&(!B(IJ)|(x3&x2&xl&A(0|&(!B0).=(!A3)B3DKx3(!A&B2DH(x3&x2&(!AU)&BUDKx3&x2&xl&sln,sn);and(y2.i2.sl.s):and(y3,i3,sl,s);or(out,y,ylly2,y

18、3);endmodulenoduletop!3_2;ireout;regi.il.i2,i3:regsi,s;tuxllo_lny_ux(out,i,il,i2,i3.si,s:initialbegin$count_andgates(*top13_2,ny-ux*);endendmodule3 .创隹一个用户白定义系统任务SnionilormodHHPUl,该任务使找出模块实例的所有输IH信号,并把它们渗加到一个监视列表中。当模块的任何输出信号值改变时都应该出现文字“。1ItpmsignalhasChangCd”(提示,使用VC1.子程序).使用例13.1中的二选多路选择落.通过SmOnikj

19、mod_ompui把输出信号添加到监视列衣中,施加激附,检进结果.答:VerilOg代码如下.nodulemux2_to1(out.i,il.s):outputout:inputi.il;inputs:*ireSbor,yl,y2;notnl(sbar,s);andal(y1.i.sbar):anda2(y2,il,s);orol(outvyl.y2);endmodu1etiuletop!3_3;Wireout;regi.il;regs;rwx2to1nymux21(out,i,i1s);initialbeginSnonitornodoutput(*topl33,nymux21*);endCn

20、dmOdUIe仿真输出如下# OOutputsignaltop133.nymux21.ihaschangedO# OOutpulsignaltopi33.ny11ux21.i1haschangedIMOOutpu(signaltopl33.ny11ux21.shwchangedOH100utputsignaltopl33,nymux21,Shaschanged1# 20Outputsignaltop133.nymux21.ihaschanged1# 20Outtsignaltop133.nxmux21.i1haschangedOM200UIPUlsignaltop133.nynux21.sha

21、schangedOH300UtPIHsignaltopl33,nymux21,shaschanged1I.例6.5中使用RT1.描述定义了个超而进位的四位全加器.使用身边现有的工艺博综合谈全t11l8,优化电路,使我达到破快速度。把同样的激励施加到RT1.和门缎图表上,比较它们的输出。答,测试模块,mlukwire(3:0|sum;wirec-out;reg|3:0|a,b;rcgc_in;integeri;initialbeginfor(i=0i,z,XyZB=y+x,zyz为全器编写VCrikgRT1.描述,使用身边现有的任何工艺库综合该全液器,优化电路,使其达到鼓快速度把同样的激励应用到

22、RT1.和门级网衣上.比较它们的输出答:代码:modulefull_sub(x,y,z.D,B);inputx.y.z;outputD.B;assignD=!x)&(!y)&(z)l|!x)&y&(!z)e(x&(!y)&(!z)IKx&y&z);assignBNeX成y)K(!、成,cndmodulc测试输入:modulel4_2;regN.*;wireD.B;initialbeginx=0:y=0:z=0;#10x=0zy=0zz=k# 10x=0;y=|;z=0;# 10x=0;y=1;z=l;# 10=hy=0zz=0;# 10x=ly=0z=k# 10三hy三z=O;# 10x=l;

23、y=l;z=k# 10Ssop;endfull.subfsblraddl(out.a):initialbegina=3,M)00:#10a=3,M)01;#10a=3,b010;# 10a=3t01l;# 10a=3ZOO:# 10a=3,bll;# 10a=3*NI0;# 10a=3,blll:# 10a三3T72z;endcndmodulc前仿ft后伪典:4,为四位:进制i数器编写VBikgRT1.描述,该H数器带个高电平外效的同步复位端(提示X(史用带(以PosCdgCCIOek)语句的always循环)使用身边现有的任何1.艺库综合该计数器.优化电路,使其面枳最小.把同样的激励应用到R

24、T1.门级网衣上,比较它们的输出.答:代码和激励:modulecounter(Mit,ckxk,reset)inilpul3ul;inputClOCk.reset:reg(3:0|out:always(ptwedgeclock)ift!rcscout=(hRKeUUl=IHl1+1;Cndmodulcmduk114_4;wire3#out:regclocktrese;countcr4c4(out.ckkjese):initialMinclock=Ojee(=l;# 2031=0:# 20reset=1;# 200Ssop;endalways#5CloCk二YlOCk;end11xiuk前仿典:后伪W:工使用同步有限状态自动机方法设计一个电路,它在引脚M按殳,位的输入S1.衽当检测到模式Iolol时,输出引脚match被赋假为高电平,NWl用脚以同步方式初始化电路,输入引脚Clk用于给电路提供时怦信号.使用身边现有的任何工艺库粽合该电路,优化电路,使其达到取快速度.把同样的激励应用到RT1.和门级网衣上.比较它们的输出.后仿典输出:可见,后个match的1值由于延迟,在图中己羟看不到了.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号