Verilog HDL数字设计与综合(第二版)习题答案.docx
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;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的整数: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<fc)ays(0J9);f. reg|63:0|MEM10:255;g. parameterCaChC_sizc=512:5,下面各条语句的出结果是什么?a. Iaich=4'd12;Sdisplay('Thecurrentvalueoflatch=%b'n.latch);b. in_rcg=3'd2;Smonitor(Slime,*I11registervalue=%bn",in-eg2);c. defineMEM_SIZE1024SdisplayC,Thcmaximummemorysizeis%h',MEN1.SlZE);警:仿真输出结果如卜a#Thecurrentvalueoflatch三1100ffb#Olnregistervalue=OlO*c#Thenuixiinuinmemorysizeis.00000400注就1 .本邂中的变51默认为长度正好相符.比如IatCh=4'dl2就相当于rcg(3:0latch.2 .b中的Siime代送时间,根据给in,reg这个寄存器以值时间而变化,比如在第5秒对ineg进行赋值,就会显示;W5lnregistervalue=0101 .模块的茶本tfl成部分,鼻较?鼻几个部分必须出现?答,模块的基本组成部分包括:关键字module.模块名、墙口列发、娴口声明和可选的参数声明.模块内部还有5个基本组成部分是:变量声明、数据流语句、低层模块实例、行为语句块以及任务和函数,在根块的所有姐成部分中.只有module、根块幺和end11odule必须出现,其他部分都是可选的.用户可以根据设计的需要随意选用.2 .一个不与外部环境交互的模块是否有口?模块定义中是否有列表?答,产格意义上讲,一个模块如果号外界次行任何IZ1.那么自然是不IK要有而且是不Ul能行M口的.在没有端口的情况下.端口列农力然也是不存在的.3 .一个4位并行移位寄存的1/。引脚加下图所示.写出模软、hlfCreli的定义,只需写出口列赛和"口定义,不必耳出接块的内部结构.yJn(5>移也型以bAm"3hmrc£CioATUft>答,模块代码如下:moduleshift_rcg(c)uckfcrcgJn.rcg_ouO;inputclock:input(3:0regjn;output(3r_out;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|REG.1N;wire(3X)REG_OUT:/*4conncctbynamc""""Shif1.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一耳自己的双入*的与门、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/*»*:*»:*:*会*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:endmoduleWIOSs<op;#10<=hy<=0;#10<=lzy<=l;#10Sstop:endmy_xormyxor(x.y.z):endnuxiule其中“h和CJn为入,sum和JcHIt为tth只使用与门、11.非门实现一个一位全加辑写出其VSik>g描述,是每个门多只能有四个入写激励模块对其功旗行检查.并对全部的入融合进行试等,在前面的课程中己钱学习过位全加黑的相关知识,位全加密的电路如卜所示:按此电路图,采用门级描述代码如下,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);nand(s7.s5.cjn);nand(sum,s6.s7);nand(c_ou(,s5,sl);CndinodulcInOdUletes(53:rcgi1.bx-,in;wiresum,c-out;ini(i<lbegina<=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()Ss<op:endinitialSmonitor(Stimc.,'a='ob.b=%b.cJn=%b.sum=%b.c-out=%b”.a.b.jin«sum.JoUU:FuI1.addfiidd<a,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答:代码如下'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<=krcsct<=l:endmy_n»rsl(rcscl.sct.q.qbar);niliulSmonitor(Stin>e,',se=%b,nese-%b,q=%b,qbar