專(zhuān)用集成電路題目+源代碼+測(cè)試程序+波形圖_第1頁(yè)
專(zhuān)用集成電路題目+源代碼+測(cè)試程序+波形圖_第2頁(yè)
專(zhuān)用集成電路題目+源代碼+測(cè)試程序+波形圖_第3頁(yè)
專(zhuān)用集成電路題目+源代碼+測(cè)試程序+波形圖_第4頁(yè)
專(zhuān)用集成電路題目+源代碼+測(cè)試程序+波形圖_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、題目1:數(shù)字集成電路的verilog HDL描述與仿真。要求:(1)學(xué)習(xí)使用Modelsim設(shè)計(jì)和仿真軟件; (2)練習(xí)教材7.2.1中的例子; (3)掌握設(shè)計(jì)代碼和測(cè)試代碼的編寫(xiě); (4)掌握測(cè)試仿真流程; (5)掌握Modelsim軟件的波形驗(yàn)證方式。module testbench_shiftregist; parameter shiftregist_width=4; reg shiftregist_width-1:0data_load; reg load,clk,rst_n,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftl

2、eft; wire shiftregist_width-1:0data_out; always #5 clk=clk; initial begin data_load=0;load=0;rst_n=1;ctr_shiftright=0;ctr_shiftleft=0;clk=0;data_shiftright=0;data_shiftleft=0;end initial begin #10 rst_n=0;#3 rst_n=1;end initial begin #15 load=1;data_load=4'b1010;#10 load=0;end initial begin #30

3、ctr_shiftright=1;#20 data_shiftright=1;#20 ctr_shiftright=0;#20ctr_shiftleft=1;#25data_shiftleft=1;#20data_shiftleft=0;end shiftregist U1(.clk(clk),.rst_n(rst_n),.load(load),.ctr_shiftright(ctr_shiftright),.ctr_shiftleft(ctr_shiftleft),.data_shiftright(data_shiftright),.data_shiftleft(data_shiftleft

4、),.data_load(data_load),.data_out(data_out);endmodulemodule shiftregist(data_out,clk,rst_n,load,data_load,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftleft); parameter shiftregist_width=4; outputshiftregist_width-1:0data_out; input shiftregist_width-1:0data_load; input load,clk,rst_n,ctr_s

5、hiftright,ctr_shiftleft,data_shiftright,data_shiftleft; regshiftregist_width-1:0data_out; always(posedge clk or negedge rst_n) if(!rst_n) data_out<=0; else if(load) data_out<=data_load; else if(ctr_shiftright) data_out<=data_shiftright,data_outshiftregist_width-1:1; else if(ctr_shiftleft) d

6、ata_out<=data_outshiftregist_width-2:0,data_shiftleft; else data_out<=data_out; endmodule題目2: 簡(jiǎn)述begin-end語(yǔ)句塊和fork-join語(yǔ)句塊的區(qū)別,并寫(xiě)出下面信號(hào)對(duì)應(yīng)的程序代碼begin-end語(yǔ)句塊和fork-join語(yǔ)句塊的區(qū)別:1. 執(zhí)行順序與作用:begin-end其中的語(yǔ)句按串行方式執(zhí)行,可以用于綜合電路程序和仿真測(cè)試程序。fork-join其中的語(yǔ)句按并行方式執(zhí)行,不可以用于綜合電路程序和仿真測(cè)試程序。2. 起始時(shí)間:begin-end語(yǔ)句塊為首句開(kāi)始執(zhí)行的時(shí)間,for

7、k-join語(yǔ)句塊為轉(zhuǎn)入并行語(yǔ)句塊的時(shí)間。3. 結(jié)束時(shí)間:begin-end語(yǔ)句塊為最后一條語(yǔ)句執(zhí)行結(jié)束的時(shí)間,fork-join語(yǔ)句塊為執(zhí)行時(shí)間最長(zhǎng)的那條語(yǔ)句執(zhí)行結(jié)束的時(shí)間。4. 行為描述的意義:begin-end語(yǔ)句塊為電路中的數(shù)據(jù)在時(shí)鐘及控制信號(hào)的作用下,沿?cái)?shù)據(jù)通道中各級(jí)寄存器之間的傳送過(guò)程。fork-join語(yǔ)句塊為電路上電后,各電路模塊同時(shí)開(kāi)始工作的過(guò)程。Begin_end程序代碼module b(A,B);output A,B;reg A,B;parameter T=10;initialbegin A=0;B=1; #T A=1;B=0; #T A=1;B=1; #T A=0;B=

8、1; #T A=0;B=0; #T A=1;B=1; endendmodulefork_join程序代碼module b(A,B);output A,B;reg A,B;parameter T=10;initialbegin A=0;B=1; #3T A=0; #5T A=1; #T B=0; #2T B=1; #4T B=0; endendmodule題目3. 分別用阻塞和非阻塞賦值語(yǔ)句描述如下圖所示移位寄存器的電路圖。T3非阻塞代碼module clog(din,clk,out0,out1,out2,out3);input din,clk;output out0,out1,out2,out

9、3;reg out0,out1,out2,out3;always(posedge clk)begin out3=out2;out2=out1;out1=out0;out0=din;endendmodule測(cè)試代碼module test_clog; reg din,clk; wire out0,out1,out2,out3; always #10 clk=clk; always #100 din=din; clog U1(.clk(clk),.din(din),.out3(out3),.out2(out2),.out1(out1),.out0(out0); initial begin clk=0

10、; din=1; endendmodule T3非阻塞代碼module test_clog; reg din,clk; wire out0,out1,out2,out3; always #10 clk=clk; always #100 din=din; clog U1(.clk(clk),.din(din),.out3(out3),.out2(out2),.out1(out1),.out0(out0); initial sim:/test_block/clk sim:/test_block/din sim:/test_block/out3 sim:/test_block/out2 sim:/t

11、est_block/out1 sim:/test_block/out0 begin clk=0; din=1; endendmodule測(cè)試代碼module test_clog; reg din,clk; wire out0,out1,out2,out3; always #10 clk=clk; always #100 din=din; clog U1(.clk(clk),.din(din),.out3(out3),.out2(out2),.out1(out1),.out0(out0); initial begin clk=0; din=1; endendmodule 題目4:(1) 分析16

12、位同步計(jì)數(shù)器結(jié)構(gòu)和電路特點(diǎn)16位同步計(jì)數(shù)器至少需要四個(gè)觸發(fā)器,同步計(jì)數(shù)則時(shí)鐘同步控制四個(gè)觸發(fā)器的狀態(tài),通過(guò)固定周期的時(shí)鐘,上升沿或下降沿電路就能進(jìn)行開(kāi)始逐次計(jì)數(shù)。(2) 用硬件描述語(yǔ)言進(jìn)行設(shè)計(jì)程序如下:module counter_16(count,clk,reset,result); output count,result; input clk,reset; reg 3:0count; always(posedge clk) begin if(!reset) count=4'b0000; else count=count+1; end assign result=count0|cou

13、nt1|count2|count3;endmodule(3) 編寫(xiě)測(cè)試仿真并進(jìn)行仿真。測(cè)試程序如下;module test_counter_16; reg clk; reg reset; wire 3:0count,result; always #10 clk=clk; initial begin clk=0;reset=0; #20 reset=1; end counter_16 U1(.clk(clk),.reset(reset),.result(result),.count(count);題目5. 試用Verilog HDL門(mén)級(jí)描述方式描述如下圖所示的電路.思路:通過(guò)電路分析可知,利用門(mén)

14、級(jí)建模即可實(shí)現(xiàn)該電路,從左到右依次為非門(mén),與門(mén),或門(mén)。源程序如下:module five(D0,D1,D2,D3,S1,S2,Z);output Z;input D0,D1,D2,D3,S1,S2;wire w1,w2,w3,w4,w5,w6;not U1(w1,S1), U2(w2,S2);and U3(w6,D3,S2), U4(w5,D2,S1,w2), U5(w4,D1,S1,w1), U6(w3,D0,w1,w2);or U7(Z,w3,w4,w5,w6);endmodule測(cè)試程序module test_five;reg D0,D1,D2,D3,S1,S2;wire Z,w1,w2

15、,w3,w4,w5,w6;five U1(D0,D1,D2,D3,S1,S2,Z);initial begin D0=1;D1=1;D2=1;D3=0;S1=1;S2=0; #10 D0=0;D1=0;D2=0;D3=1;S1=0;S2=1; #20 D0=1;D1=1;D2=1;D3=0;S1=1;S2=0; endendmodule題目6. 試用查找真值表的方式實(shí)現(xiàn)真值表中的加法器,寫(xiě)出Verilog HDL代碼。CinainbinsumCout0000000110010100110110010101011100111111思路:根據(jù)所給真值表,將輸出結(jié)果cout和sum用連接符連接起來(lái)以

16、減少代碼數(shù)量源程序module two_bits_fulladder(sum,cout,a,b,cin);output sum,cout;input a,b,cin;reg sum,cout;always(a or b or cin)case(a,b,cin) 3'b000:cout,sum=a+b+cin; 3'b001:cout,sum=a+b+cin; 3'b010:cout,sum=a+b+cin; 3'b011:cout,sum=a+b+cin; 3'b100:cout,sum=a+b+cin; 3'b101:cout,sum=a+b+

17、cin; 3'b110:cout,sum=a+b+cin; 3'b111:cout,sum=a+b+cin; endcase endmodule測(cè)試程序module test_two_bits_fulladder; reg a,b,cin; wire sum,cout; two_bits_fulladder U1(.sum(sum),.cout(cout),.a(a),.b(b),.cin(cin); initial begin a=0;b=0;cin=0; #20 a=0;b=0;cin=1; #20 a=0;b=1;cin=0; #20 a=0;b=1;cin=1; #20

18、 a=1;b=0;cin=0; #20 a=1;b=0;cin=1; #20 a=1;b=1;cin=0; #20 a=1;b=1;cin=1; #220 $finish; endendmodule題目7:設(shè)計(jì)16位同步加法器和乘法器要求:(1)分析16位同步加法器和乘法器結(jié)構(gòu)和電路特點(diǎn); (2)用硬件描述語(yǔ)言進(jìn)行設(shè)計(jì); (3)編寫(xiě)測(cè)試仿真并進(jìn)行仿真。程序如下:思路:根據(jù)書(shū)上二位加法器改進(jìn)而來(lái),中間加一些16位變量即可。16位同步加法器:module test_sixteen_bit_adder; parameter adder16_width=16; reg adder16_width-1:

19、0a,b; reg Cin; wire adder16_width-1:0sum; wire Cout; initial begin a=11;b=10;Cin=1;#20 a=8;b=15;Cin=0;#20 a=6;b=13;Cin=1; end sixteen_bit_adder U1(.a(a),.b(b),.Cin(Cin),.Cout(Cout),.sum(sum);endmodule測(cè)試程序:module sixteen_bit_adder(a,b,sum,Cout,Cin); parameter width=16; output width-1:0sum; output Cou

20、t; input width-1:0a,b; input Cin; assign Cout,sum=a+b+Cin;endmodule 16位同步乘法器module test_sixteen_bit_mul; parameter w=16; reg w-1:0a,b; wire w*2-1:0mul; initial begin a=2;b=2; endinitial begin #10 a=100;#15 b=100; end sixteen_bit_mul U1(.a(a),.b(b),.mul(mul);endmodule測(cè)試程序:module sixteen_bit_mul(a,b,m

21、ul); parameter w=16; input w-1:0a,b; output w*2-1:0mul; assign mul=a*b;endmodule題目8:將下面的狀態(tài)轉(zhuǎn)移圖用Verilog HDL描述。思路:狀態(tài)機(jī)的輸入只與狀態(tài)的跳轉(zhuǎn)有關(guān),與狀態(tài)機(jī)的輸出無(wú)關(guān),因此該狀態(tài)機(jī)為摩爾型狀態(tài)機(jī)。下面為三段式描述方式:module state4(clk,out,step,clr); output 2:0out; input step,clk,clr; reg 2:0out; reg 1:0state,next_state; always (posedge clk) state<=ne

22、xt_state; always (state or clr) if(clr) next_state<=0; else case(state) 2'b00: case(step) 1'b0:begin next_state<=2'b00;out<=3'b001;end 1'b1:begin next_state<=2'b01; out<=3'b010;end endcase 2'b01: begin out<=3'b100; next_state<=2'b10; end 2

23、'b11: case(step) 1'b0:begin next_state<=2'b11;out<=3'b111;end 1'b1:begin next_state<=2'b00;out<=3'b001;end endcase 2'b10: case(step) 1'b0:begin next_state<=2'b00;out<=3'b001;end 1'b1:begin next_state<=2'b11;out<=3'b111;e

24、nd endcase endcaseendmodule測(cè)試程序:module test_state4; reg clk,step,clr; wire 3:0out; always #5 clk=clk; initialbegin clk=0; clr=1;step=1;end initial begin #5clr=0; #80 step=0; #100step=1;end state4 U1(clk,out,step,clr);endmodule題目9. 如下圖所示電路,若其延遲時(shí)間設(shè)定如表所示,試寫(xiě)Verilog HDL程序設(shè)計(jì)該電路。路徑最小值(min)典型值(type)最大值(max)

25、a_sa_y101214s_s0_sa_y151719s_sb_y111315b_sb_y101214module e(a,s,b,y,s0); input a,s,b,s0; output y; assign y=(s&&b)|(s0&&a); specify (a=>y)=(10,12,14); (b=>y)=(10,12,14); (s=>y)=(11,13,15); (s0=>y)=(11,13,15); endspecifyendmodulemodule f(a,s,b,y); input s,a,b; output y; wi

26、re s0; not #(4)U1(s0,s); e U2(a,s,b,y,s0);endmodulemodule test; reg a,s,b; wire y;f U1(a,s,b,y); initial begin a=1;s=0;b=1;#20 a=0;s=1;b=1;#20 a=1;s=0;b=0; endendmodule題目10.設(shè)計(jì)一個(gè)8位數(shù)字顯示的簡(jiǎn)易頻率計(jì)。要求:能夠測(cè)試10Hz10MHz方波信號(hào);電路輸入的基準(zhǔn)時(shí)鐘為1Hz,要求測(cè)量值以8421BCD碼形式輸出;系統(tǒng)有復(fù)位鍵;采用分層次分模塊的方法,用Verilog HDL進(jìn)行設(shè)計(jì)。思路:首先以標(biāo)準(zhǔn)時(shí)鐘為準(zhǔn),在待測(cè)信號(hào)高電

27、平期間測(cè)試標(biāo)準(zhǔn)時(shí)鐘的上升沿次數(shù),最后乘以2即可得到正確結(jié)果,最后把二進(jìn)制結(jié)果通過(guò)二進(jìn)制8421BCD轉(zhuǎn)換模塊轉(zhuǎn)換成8421BCD結(jié)果,最終輸出。module f_test(clk, measureclk, clk1, clear, outBCD); output 31:0outBCD; /output 23:0Q1; input clk, measureclk, clear, clk1; reg 23:0 Q1; count U1(.testclock(measureclk), .clock(clk), .clear(clear), .Q0(Q1); transform U2(.Q2(Q1),

28、 .outtrans(outBCD), .clock1(clk1); endmodule module count(testclock, clock, clear, Q0); input testclock, clear, clock; output Q0; reg 23:0Q, Q0; always (posedge testclock or negedge clear) begin if(!clear) Q=0; else if(clock) Q=Q+2'b10; else begin Q0<=Q; Q<=0; end end endmodule module tran

29、sform(Q2, outtrans, clock1); input 23:0Q2; input clock1; output 31:0outtrans; reg 31:0 outtrans_r; reg 23:0Q2_r; reg 31:0tp; integer i; assign outtrans = outtrans_r; always (posedge clock1) begin if(Q2<=24'b1010 | Q2>=24'b1001_1000_1001_0110_1000_0000) outtrans_r = 0; else begin Q2_r =

30、 Q2; tp=0; for(i=0; i<23; i=i+1) begin tp=tp30:0,Q2_r23; if(tp3:0>4'd4) tp3:0 = tp3:0+4'd3; if(tp7:4>4'd4) tp7:4 = tp7:4+4'd3; if(tp11:8>4'd4) tp11:8 = tp11:8+4'd3; if(tp15:12>4'd4) tp15:12 = tp15:12+4'd3; if(tp19:16>4'd4) tp19:16 = tp19:16+4'

31、;d3; if(tp23:20>4'd4) tp23:20 = tp23:20+4'd3; if(tp27:24>4'd4) tp27:24 = tp27:24+4'd3; if(tp31:28>4'd4) tp31:28 = tp31:28+4'd3; Q2_r = Q2_r<<1; outtrans_r = tp30:0,Q20; end end end endmodule 題目11. 用Verilog HDL設(shè)計(jì)一個(gè)4位LED顯示器的動(dòng)態(tài)掃描譯碼電路。要求:4個(gè)七段顯示器共用一個(gè)譯碼驅(qū)動(dòng)電路;顯示的數(shù)碼管清晰明

32、亮,無(wú)閃爍現(xiàn)象發(fā)生。思路:利用case語(yǔ)句,輸入一個(gè)0-9之間的數(shù),即可對(duì)應(yīng)相應(yīng)的編碼。從而達(dá)到題目要求。module LED(out,in); output out; input in; reg6:0out; wire3:0in; always(in) begin case(in) 4'd0:out=7'b1111110; 4'd1:out=7'b0110000; 4'd2:out=7'b1101101; 4'd3:out=7'b1111001; 4'd4:out=7'b0110011; 4'd5:out=7'b1011011; 4'd6:out=7'b1011111; 4'd7:out=7'b1110000; 4'd8:out=7'b1111111; 4'd9:out=7'b1111011; endcase endendmodulemodule w(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,out1,out2,out3,out4 ,out5,out6,out7,out8,out9,out10); output out1,out2,o

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論