數(shù)字邏輯與EDA設(shè)計(jì)丁磊課后參考答案_第1頁
數(shù)字邏輯與EDA設(shè)計(jì)丁磊課后參考答案_第2頁
數(shù)字邏輯與EDA設(shè)計(jì)丁磊課后參考答案_第3頁
數(shù)字邏輯與EDA設(shè)計(jì)丁磊課后參考答案_第4頁
數(shù)字邏輯與EDA設(shè)計(jì)丁磊課后參考答案_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

習(xí)題答案第1章一、單選題(1)B (2)C (3)B (4)C(5)D (6)D (7)B (8)C(9)D (10)C (11)C (12)D(13)D (14)A (15)D二、判斷題(1)√ (2)√ (3)× (4)√(5)× (6)× (7)× (8)×(9)√ (10)×三、填空題(1)10000111.101、207.5、87.A(2)185.75(3)10010100(4)、、、(5)(6)(7)(8)2n(9)1(10)1四、綜合題(1)①00110001(49)+00100101(37)=01010110(86)②00111000(56)+10011001(-103)=11010001(-47)(2)①②③(2)①②③(3)邏輯表達(dá)式如下真值表如下ABCY00010011010101101000101111011111標(biāo)準(zhǔn)與或式如下(4)根據(jù)表達(dá)式畫出邏輯圖如下

第2章一、單選題(1)B (2)CDA (3)D (4)C(5)C (6)B (7)C (8)B(9)A (10)D二、判斷題(1)√ (2)√ (3)× (4)√(5)× (6)√ (7)× (8)×(9)√ (10)√ 三、綜合題(1)圖2-34CoutS3~S0圖2-36S4~S0圖2-37S3~S0圖2-38S3~S0①0110+1011+0100010000100010001②0110+0011+1010100101001110101③1001+1011+0101001010010001010(2)(3)(4)(5)真值表ABY000011100110表達(dá)式:Y=A?B邏輯圖略(6)解:真值表輸入輸入輸出A3B3A2B2A1B1A0B0GESA3<B3××××××100A3=B3A2>B2××××100A3=B3A2=B2A1>B1××100A3=B3A2=B2A1=B1A0>B0100A3=B3A2=B2A1=B1A0=B0010A3>B3××××××001A3=B3A2<B2××××001A3=B3A2=B2A1<B1××001A3=B3A2=B2A1=B1A0<B0001邏輯表達(dá)式邏輯圖(7)(8)

第3章一、單選題(1)C (2)C (3)A (4)A(5)A (6)D (7)C (8)A(9)C (10)D (11)C (12)C(13)C (14)D (15)B二、判斷題(1)× (2)× (3)× (4)√(5)√ (6)× (7)√ (8)×(9)√ (10)×三、填空題(1)保持、置0、置1,

Clk有效邊沿(2)保持、置0、置1、翻轉(zhuǎn),

Clk有效邊沿(3)置0、置1,

Clk↑有效(4)保持、翻轉(zhuǎn),

Clk有效邊沿(5)翻轉(zhuǎn)(6)有效狀態(tài)(7)能自啟動(dòng)(8)時(shí)序電路(9)4(10)6四、綜合題(1)解:(2)解:(3)解:(4)邏輯圖時(shí)序圖(5)邏輯圖時(shí)序圖(6)狀態(tài)圖:時(shí)序圖:(7)(8)(9)略答案第4章選擇題12345678910ADCACACADA11121314151617AAAAABD判斷題12345678910××××√×√×√×填空題1234567a&b;a^b;monitor%t$time64第5章12345678910ADCCBCDDCB111215141516CBBBAB第6章一、答案(簡短)(1)改為:更具體見“詳細(xì)分析”內(nèi)容(2)頂層實(shí)例名與測試平臺(tái)的名稱一樣(testbench_8_3encoder),會(huì)導(dǎo)致仿真出錯(cuò)移位運(yùn)算符為<<,不是<(3)見“詳細(xì)分析”(4)4位串行進(jìn)位加法器更具體見“詳細(xì)分析”(5)不能處理有符號(hào)乘法測試平臺(tái)同6.7(二維碼):`timescale1ns/10psmoduletestbench;reg[3:0]ina,inb;wire[7:0]mult;initialbeginina=0;repeat(20)#20ina=$random;endinitialbegininb=0;repeat(10)#40inb=$random;endsign_mult_4sign_mult_tb(ina,inb,mult);endmodule設(shè)置為有符號(hào)數(shù)顯示結(jié)果:設(shè)置為無符號(hào)數(shù)顯示結(jié)果:該代碼實(shí)現(xiàn)的是無符號(hào)數(shù)乘法。(6)4選1數(shù)據(jù)選擇器modulemux4_1_c(D0,D1,D2,D3,Sel0,Sel1,Result);inputD0,D1,D2,D3;inputSel0,Sel1;outputResult;wireAT,BT;assignAT=Sel0?D3:D2; assignBT=Sel0?D1:D0; assignResult=(Sel1?AT:BT); endmodule程序說明:(1)程序采用數(shù)據(jù)流方式描述,與4.5.1中例子所用方法相同。(2)當(dāng)Sel0為1時(shí),{Sel1,Sel0}選擇的是D1或D3,當(dāng)Sel0為0時(shí),{Sel1,Sel0}選擇的是D0或D2;然后根據(jù)Sel1為0或1,選擇到底輸出的是哪個(gè)。(7)代碼邏輯分析見課本二維碼鏈接(6.9.1)測試平臺(tái)設(shè)計(jì)同課本內(nèi)容(6.9.1)(8)4.7.3的代碼:modulehalf_adder(A,B,S,C);inputA,B;outputS,C;xorgate1(S,A,B);andgate2(C,A,B);endmodulemodulefulladder(DataA,DataB,Cin,Sum,Cout);inputDataA,DataB,Cin;outputSum;outputCout;wires1,c1,c2;half_adderu1(DataA,DataB,s1,c1);half_adderu2(.A(s1),.B(Cin),.S(Sum),.C(c2));oru3(Cout,c1,c2); endmodule測試平臺(tái)`timescale1ns/1nsmoduletestbench;regpa,pb,pCin;wireSum,Cout;fulladder_1testadder(pa,pb,pCin,Sum,Cout);initialbeginpa=0; pb=0;pCin=0;#5pCin=1;#5pb=1;#5pCin=0;#5pa=1;#5pCin=1;#5pb=0;#5pCin=0;#5;$finish;endendmodule仿真結(jié)果(9)-(11)見“詳細(xì)分析”(12)在第2章中,全加器的邏輯表達(dá)式為:S的表達(dá)式可變?yōu)椋焊鶕?jù)該表達(dá)式可寫出如下設(shè)計(jì):modulefulladder_3(DataA,DataB,Cin,Sum,Cout);inputDataA,DataB,Cin;outputSum,Cout;assignSum=DataA^DataB^Cin;assignCout=(DataA&DataB)|(DataA&Cin)|(DataB&Cin);endmodule(13)modulemux4_1_b(D0,D1,D2,D3,Sel0,Sel1,Result);inputD0,D1,D2,D3;inputSel0,Sel1;outputResult;regResult;reg[1:0]SEL;always@(D0,D1,D2,D3,Sel1,Sel0)beginSEL={Sel1,Sel0}; //將2個(gè)選擇輸入連接為SELif(SEL==0)Result=D0;elseif(SEL==1)Result=D1;elseif(SEL==2)Result=D2;elseif(SEL==3)Result=D3;elseResult=1'bx;endendmodule二、答案(詳細(xì)分析)(1)紅色藍(lán)色部分,被當(dāng)成兩個(gè)獨(dú)立的if語句。紅色部分的代碼執(zhí)行后,結(jié)果會(huì)被藍(lán)色部分代碼的執(zhí)行效果覆蓋。如編寫測試平臺(tái)如下:`timescale1ns/1nsmoduletestbench;regIn0,In1,In2,In3,In4,In5,In6,In7;regEI;reg[7:0]in;wireA0,A1,A2;wireEO,GS;initialbegin{In7,In6,In5,In4,In3,In2,In1,In0}='b11111111;#10;EI=1;#20;EI=0;#20;in='b00000001;repeat(9)begin{In7,In6,In5,In4,In3,In2,In1,In0}=~in;#20in=in<<1; endendHC_148test_74HC148(In0,In1,In2,In3,In4,In5,In6,In7,EI,GS,A0,A1,A2,EO);endmodule仿真結(jié)果(EI=1,{In7,In6,In5,In4,In3,In2,In1,In0}='b11111111時(shí)結(jié)果都不正確,其它編碼正常):代碼修正為(藍(lán)色部分為修改過的):moduleHC_148(In0,In1,In2,In3,In4,In5,In6,In7,EI,EO,A0,A1,A2,GS);inputIn0,In1,In2,In3,In4,In5,In6,In7;inputEI;outputEO,GS;outputA0,A1,A2;reg[4:0]Outvec;wireA0,A1,A2,GS,EO;always@(In0orIn1orIn2orIn3orIn4orIn5orIn6orIn7orEI)beginif(EI)Outvec=5'b11111;elseif(In0&In1&In2&In3&In4&In5&In6&In7)Outvec=5'b01111;elseif(!In7)Outvec=5'b10000;elseif(!In6)Outvec=5'b10001;elseif(!In5)Outvec=5'b10010;elseif(!In4)Outvec=5'b10011;elseif(!In3)Outvec=5'b10100;elseif(!In2)Outvec=5'b10101;elseif(!In1)Outvec=5'b10110;elseif(!In0)Outvec=5'b10111;elseOutvec=5'b00000;endassign{EO,GS,A2,A1,A0}=Outvec;//原來的代碼沒錯(cuò),只是不夠精簡endmodule仿真結(jié)果:(3)代碼用不同方法設(shè)計(jì),在RTL視圖中也會(huì)體現(xiàn)出來,但工藝視圖有可能是一樣的。課本代碼(6.4,p203)綜合結(jié)果:二維碼鏈接代碼(6.4,p204)綜合結(jié)果:本題代碼綜合結(jié)果:代碼中有中間量AT……,故圖左邊為選擇結(jié)構(gòu),右邊是result表達(dá)式的結(jié)果。三種方法的RTL視圖不一樣,但工藝視圖結(jié)果都一樣:(4)題目代碼:modulefulladder_4_c(DataA,DataB,Cin,Sum,Cout);parameterN=4;input[N-1:0]DataA,DataB;inputCin;output[N-1:0]Sum;reg[N-1:0]Sum,p,g;outputCout;regCout;reg[N:0]q;always@(DataAorDataBorCin)begin:adderintegeri;q[0]=Cin;for(i=0;i<N;i=i+1)beginp[i]=DataA[i]^DataB[i]; //語句1g[i]=DataB[i]; //語句2q[i+1]=(p[i])?q[i]:g[i]; //語句3Sum[i]=p[i]^q[i]; //語句4endCout=q[N];endendmodule程序說明:采用和方法6.6.1方法2相同的程序結(jié)構(gòu),只是計(jì)算Sum和Cout的方法不同;根據(jù)語句1和語句4,其實(shí)相當(dāng)于:Sum[i]=DataA[i]^DataB[i]^q[i];語句3中,根據(jù)p[i]即DataA[i]^DataB[i]進(jìn)行選擇。當(dāng)DataA[i]和DataB[i]均為0或均為1時(shí),p[i]為0,g[i]即DataB[i]的值作為進(jìn)位(因?yàn)闉?時(shí)無進(jìn)位,為1時(shí)進(jìn)位為1);當(dāng)DataA[i]和DataB[i]有一個(gè)為1時(shí),p[i]為1,q[i]的值就作為進(jìn)位(因?yàn)闉?時(shí)無進(jìn)位,為1時(shí)產(chǎn)生進(jìn)位1)。綜合結(jié)果:測試平臺(tái)和驗(yàn)證結(jié)果與6.6的一致(課本沒有列出)。`timescale1ns/10psmoduleadder4_testbench;reg[3:0]ina,inb;regcin;wire[3:0]sum;wirecout;fulladder_4_cadder4_tb(ina,inb,cin,sum,cout);initialbeginina=0;repeat(20)#20ina=$random;endinitialbegininb=0;repeat(10)#40inb=$random;endinitialbegincin=0;#200cin=1;endendmodule(9)符合電路方法一:modulefit2_2(a,b,c,y);inputa,b,c;outputy;regy;always@(a,b,c)y=(~a&&~b&&~c)||(a&&b&&c);//按照邏輯表達(dá)式寫出endmodule測試平臺(tái)設(shè)計(jì)moduletestbench;regpa,pb,pc;integerI;wirepy;fit2_2test_fit2_2(pa,pb,pc,py);initialbeginfor(I=0;I<=7;I=I+1)begin{pa,pb,pc}=I;#10;endendendmodule綜合結(jié)果:功能驗(yàn)證:方法二:modulefit2_2_2(a,b,c,y);inputa,b,c;outputy;regy;always@(a,b,c)beginif((a==b)&&(b==c))y=1;elsey=0;endendmodule綜合結(jié)果Technology(工藝)視圖、測試平臺(tái)設(shè)計(jì)、仿真結(jié)果與方法1相同。(10)裁判電路方法一:modulejudgement_2_3(a,b,c,y);inputa,b,c;outputy;regy;always@(a,b,c)y=(a&&b)||(b&&c)||(a&&c);//按照邏輯表達(dá)式寫出endmodule測試平臺(tái)設(shè)計(jì)moduletestbench;regpa,pb,pc;integerI;wirepy;judgement_2_3test_judgement_2_3(pa,pb,pc,py);initialbeginfor(I=0;I<=7;I=I+1)begin{pa,pb,pc}=I;#10;endendendmodule綜合結(jié)果功能驗(yàn)證方法二:modulejudgement_2_3_2(a,b,c,y);inputa,b,c;outputy;regy;always@(a,b,c)beginif((a+b+c)>1)y=1;elsey=0;endendmodule綜合結(jié)果Technology(工藝)視圖、測試平臺(tái)設(shè)計(jì)、仿真結(jié)果與方法一同。方法三:modulejudgement_2_3_3(a,b,c,y);inputa,b,c;outputy;regy;always@(a,b,c)//y=(a+b+c);//錯(cuò)誤,獲得了低位//y=(a+b+c)>>1;//錯(cuò)誤,結(jié)果全部為0y=(a+b+c+0)>>1;endmoduleRTL視圖與方法二相同。Technology(工藝)視圖、測試平臺(tái)設(shè)計(jì)、仿真結(jié)果與方法一相同。(11)交通燈錯(cuò)誤檢測電路方法一:modulerag_detect(r,a,g,w);inputr,a,g;outputw;regw;always@(r,a,g)w=(~r&&~a&&~g)||(r&&~a&&g)||(r&&a&&~g)||(a&&g);//按照邏輯表達(dá)式寫出endmodule測試平臺(tái)設(shè)計(jì)moduletestbench;regpr,pa,pg;integerI;wirepw;rag_detecttest_rag_detect(pr,pa,pg,pw);initialbeginfor(I=0;I<=7;I=I+1)begin{pr,pa,pg}=I;#10;endendendmodule綜合結(jié)果功能驗(yàn)證方法二:modulerag_detect(r,a,g,w);inputr,a,g;outputw;regw;always@(r,a,g)beginif((r+a+g)==1)w=0;elsew=1;endendmodule綜合結(jié)果Technology(工藝)視圖、測試平臺(tái)設(shè)計(jì)、仿真結(jié)果與方法一相同。(14)按照2.3.2的描述設(shè)計(jì)數(shù)碼顯示譯碼器,根據(jù)表2-8寫出代碼:moduledecoder(I,Y);inputI;outputY;wire[3:0]I;reg[6:0]Y;always@(I)beginif(I==0)Y=126;//1111110,按a~g順序elseif(I==1)Y=48;elseif(I==2)Y=109;elseif(I==3)Y=121;elseif(I==4)Y=51;elseif(I==5)Y=91;elseif(I==6)Y=95;elseif(I==7)Y=112;elseif(I==8)Y=127;elseif(I==9)Y=123;endendmodule測試平臺(tái):`timescale1ns/1nsmoduletestbench;reg[3:0]I;wire[6:0]Y;decodertest(I,Y);initialbeginI=3;#5I=1;#5I=1;#5I=0;#5I=0;#5I=5;#5I=6;#5I=7;#5I=8;#5I=9;endendmodule(15)modulesoet4(ra,rb,rc,rd,a,b,c,d);output[3:0]ra,rb,rc,rd;input[3:0]a,b,c,d;reg[3:0]ra,rb,rc,rd;reg[3:0]va,vb,vc,vd;always@(aorborcord)begin{va,vb,vc,vd}={a,b,c,d};sort2(va,vc); //Va與Vc互換sort2(vb,vd); //Vb與Vd互換sort2(va,vb); //Va與Vb互換sort2(vc,vd); //Vc與Vd互換sort2(vb,vc); //Vb與Vc互換{ra,rb,rc,rd}={va,vb,vc,vd};endtasksort2;inout[3:0]x,y;/* 任務(wù)中的變量定義與模塊中的變量定義不盡相同,它們不受輸入輸出類型的限制,雖然x,y對(duì)tasksort2來說是inout型,但實(shí)際上它們對(duì)應(yīng)的是always塊中的變量,屬于reg型變量 */reg[3:0]tmp;if(x>y)begintmp=x; //阻塞賦值,順序執(zhí)行,x與y變量的內(nèi)容互換x=y;y=tmp;endendtaskendmodule綜合結(jié)果測試平臺(tái)設(shè)計(jì)`timescale1ns/1nsmoduletestbench;reg[3:0]a,b,c,d;wire[3:0]ra,rb,rc,rd;initialbegina=0;b=0;c=0;d=0;repeat(20)begin#20;a={$random}%15;b={$random}%15;c={$random}%15;d={$random}%15;end#10$stop;endsoet4test_st4(.a(a),.b(b),.c(c),.d(d),.ra(ra),.rb(rb),.rc(rc),.rd(rd));endmodule功能驗(yàn)證第7章(1)modulefunction_ex(clk,D,Q);parameterMAX_BITS=8;inputclk;input[MAX_BITS:1]D;outputreg[MAX_BITS:1]Q;function[MAX_BITS:1]reverse_bits;//函數(shù)的定義input[MAX_BITS:1]data;integerK;for(K=0;K<MAX_BITS;K=K+1)reverse_bits[MAX_BITS-K]=data[K+1];//調(diào)用函數(shù)并傳遞輸入變量給函數(shù),其調(diào)用通過將函數(shù)作為表達(dá)式中的操作數(shù)來實(shí)現(xiàn)endfunctionalways@(posedgeclk)Q<=reverse_bits(D);endmodule測試平臺(tái)設(shè)計(jì)`timescale1ns/100ps`defineclk_cycle50moduletestbench;reg[7:0]D;wire[7:0]Q;regclk;integerI;initialbeginclk=0;D=0;for(I=0;I<=15;I=I+1)#200D=I;#100$stop;endalways#`clk_cycleclk=~clk; //注意書寫方式function_extest_fun(.clk(clk),.D(D),.Q(Q));endmodule(2)moduletask_ex(clk,D,Q);parameterMAX_BITS=8;inputclk;input[MAX_BITS:1]D;outputreg[MAX_BITS:1]Q;taskreverse_bits; //任務(wù)的定義input[MAX_BITS:1]data;output[MAX_BITS:1]result;integerK;for(K=0;K<MAX_BITS;K=K+1)result[MAX_BITS-K]=data[K+1];endtaskalways@(posedgeclk)reverse_bits(D,Q); //調(diào)用任務(wù)并傳遞輸入、輸出變量給任務(wù)。endmodule(3)moduleHC74(SD1N,RD1N,CP1,D1,Q1,Q1N,SD2N,RD2N,CP2,D2,Q2,Q2N);inputD1,D2;inputRD1N,SD1N,CP1;inputRD2N,SD2N,CP2;outputQ1,Q1N,Q2,Q2N;regQ1,Q2;assignQ1N=~Q1;assignQ2N=~Q2;always@(posedgeCP1,negedgeRD1N,negedgeSD1N)beginif(!RD1N)Q1<=0;elseif(!SD1N)Q1<=1;elseQ1<=D1;endalways@(posedgeCP2,negedgeRD2N,negedgeSD2N)beginif(!RD2N)Q2<=0;elseif(!SD2N)Q2<=1;elseQ2<=D2;endendmodule測試平臺(tái):`timescale1ns/1nsmoduletestbench;regD1,D2,RD1N,RD2N,CP1,CP2,SD1N,SD2N;wireQ1,Q2,Q1N,Q2N;initialbeginCP1=0;CP2=0;endparameterclock_period=20;always#(clock_period/2)CP1=~CP1;always#(clock_period/2)CP2=~CP2;initialbeginD1=0;repeat(20)#15D1=$random;endinitialbeginSD1N=0;RD1N=0;#70RD1N=1;#70SD1N=1;#70RD1N=0;endinitialbeginD2=0;repeat(20)#15D2=$random;endinitialbeginRD2N=0;SD2N=0;#70SD2N=1;#70RD2N=1;#70SD2N=0;endHC74test_74(SD1N,RD1N,CP1,D1,Q1,Q1N,SD2N,RD2N,CP2,D2,Q2,Q2N);initialbegin#300$finish;endendmodule(4)moduleseqdet(x,z,clk,rst,state);inputx,clk,rst;outputz;output[2:0]state;wirez;reg[2:0]state;parameterIDLE=’d0,A=’d1,B=’d2,C=’d3,D=’d4,E=‘d5;assignz=(state==E);//當(dāng)狀態(tài)state變?yōu)镋時(shí),z同時(shí)變?yōu)?,表示檢測到序列,否則z為0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論