Verilog數(shù)字電路設(shè)計(jì)--實(shí)驗(yàn)報(bào)告.docx
《Verilog數(shù)字電路設(shè)計(jì)--實(shí)驗(yàn)報(bào)告.docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《Verilog數(shù)字電路設(shè)計(jì)--實(shí)驗(yàn)報(bào)告.docx(53頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、Verilog數(shù)字電路設(shè)計(jì)實(shí)驗(yàn)名稱(chēng)Verilog數(shù)字電路設(shè)計(jì)班級(jí)130324姓名張先炳13031205同組者廖瑞13031191自動(dòng)化與電氣工程學(xué)院2016年 4月25 日目錄目錄目錄2實(shí)驗(yàn)一 簡(jiǎn)單組合邏輯設(shè)計(jì)11 實(shí)驗(yàn)?zāi)康?2 實(shí)驗(yàn)設(shè)備13 實(shí)驗(yàn)內(nèi)容14 實(shí)驗(yàn)代碼15 仿真結(jié)果2選作一:設(shè)計(jì)一個(gè)字節(jié)的比較器31 實(shí)驗(yàn)要求32 模塊代碼33 測(cè)試代碼34 仿真結(jié)果4實(shí)驗(yàn)二 簡(jiǎn)單分頻時(shí)序邏輯電路的設(shè)計(jì)41 實(shí)驗(yàn)?zāi)康?2 實(shí)驗(yàn)設(shè)備43 實(shí)驗(yàn)內(nèi)容54 實(shí)驗(yàn)代碼55 仿真結(jié)果6選作二:七段數(shù)碼管譯碼電路61 實(shí)驗(yàn)要求62 模塊代碼73 測(cè)試代碼84 仿真結(jié)果8實(shí)驗(yàn)三:利用條件語(yǔ)句實(shí)現(xiàn)計(jì)數(shù)分頻時(shí)序電路9
2、1 實(shí)驗(yàn)?zāi)康?2 實(shí)驗(yàn)設(shè)備93 實(shí)驗(yàn)內(nèi)容94 實(shí)驗(yàn)代碼95 仿真結(jié)果116 實(shí)驗(yàn)分析11選作三:設(shè)計(jì)一個(gè)單周期形狀的周期波形。111 實(shí)驗(yàn)要求112 模塊代碼113 測(cè)試代碼124 仿真結(jié)果13實(shí)驗(yàn)四:用always塊實(shí)現(xiàn)較復(fù)雜的組合邏輯131 實(shí)驗(yàn)?zāi)康?32 實(shí)驗(yàn)設(shè)備133 實(shí)驗(yàn)內(nèi)容144 實(shí)驗(yàn)代碼145 仿真結(jié)果16選作四:運(yùn)用always塊設(shè)計(jì)一個(gè)8路數(shù)據(jù)選擇器。161 實(shí)驗(yàn)要求162 模塊代碼163 測(cè)試代碼174 仿真結(jié)果18實(shí)驗(yàn)五:在 Verilog HDL中使用函數(shù)191 實(shí)驗(yàn)?zāi)康?92 實(shí)驗(yàn)設(shè)備193 實(shí)驗(yàn)內(nèi)容194 實(shí)驗(yàn)代碼195 仿真結(jié)果21選作五:設(shè)計(jì)一個(gè)帶控制端的邏輯運(yùn)
3、算電路221 實(shí)驗(yàn)要求222 模塊代碼223 測(cè)試代碼234 仿真結(jié)果25實(shí)驗(yàn)六:在Verilog HDL中使用任務(wù)(task)251 實(shí)驗(yàn)?zāi)康?52 實(shí)驗(yàn)設(shè)備253 實(shí)驗(yàn)內(nèi)容254 實(shí)驗(yàn)代碼255 仿真結(jié)果28選作六:冒泡法排序281 實(shí)驗(yàn)要求282 模塊代碼283 測(cè)試代碼294 仿真結(jié)果30選作七:串行輸入排序311 實(shí)驗(yàn)要求312 模塊代碼313 測(cè)試代碼334 仿真結(jié)果345 實(shí)驗(yàn)分析34實(shí)驗(yàn)七:利用有限狀態(tài)機(jī)進(jìn)行時(shí)序邏輯的設(shè)計(jì)351 實(shí)驗(yàn)?zāi)康?52 實(shí)驗(yàn)設(shè)備353 實(shí)驗(yàn)內(nèi)容354 實(shí)驗(yàn)代碼355 仿真結(jié)果376 實(shí)驗(yàn)分析37選作八:樓梯燈381 實(shí)驗(yàn)要求382 模塊代碼383 測(cè)試
4、代碼454 仿真結(jié)果475 實(shí)驗(yàn)分析47附:分工明細(xì)49Verilog仿真實(shí)驗(yàn)報(bào)告 第49頁(yè)實(shí)驗(yàn)一 簡(jiǎn)單組合邏輯設(shè)計(jì)1 實(shí)驗(yàn)?zāi)康?、掌握基本組合邏輯電路的實(shí)現(xiàn)方法。2、初步了解兩種基本組合邏輯電路的生成方法。3、學(xué)習(xí)測(cè)試模塊的編寫(xiě)。4、通過(guò)綜合和布局布線了解不同層次仿真的物理意義。2 實(shí)驗(yàn)設(shè)備安裝Modelsim-6.5c的PC機(jī)。3 實(shí)驗(yàn)內(nèi)容描述一個(gè)可綜合的數(shù)據(jù)比較器,比較數(shù)據(jù)a 、b的大小,若相同,則給出結(jié)果1,否則給出結(jié)果0。4 實(shí)驗(yàn)代碼模塊源代碼:module compare(equal,a,b); input a,b; output equal; assign equal=(a=b)
5、?1:0; endmodule測(cè)試代碼:timescale 1ns/1ns;include compare.vmodule compare_tb; reg a,b; wire equal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1; #100 a=1;b=0; #100 a=0;b=0; #100 $stop; #100 a=0;b=1; end compare m(.equal(equal),.a(a),.b(b); endmodule5 仿真結(jié)果選作一:設(shè)計(jì)一個(gè)字節(jié)的比較器1 實(shí)驗(yàn)要求比較兩個(gè)字節(jié)的大小,如a7:0大于b7:0,則
6、輸出高電平,否則輸出低電平;并改寫(xiě)測(cè)試模型,使其能進(jìn)行比較全面的測(cè)試。2 模塊代碼module compare_8bit(result,a,b); input 7:0a,b; output result; assign result = (ab)?1:0; endmodule3 測(cè)試代碼timescale 1ns/1nsinclude compare_8bit.vmodule test; reg7:0a,b; wire result; initial begin a=8d0; b=8d0; #100 a=8d6;b=8d5; #100 a=8d9;b=8d9; #100 a=8d12;b=8d
7、15; #100 $stop; end compare_8bit m(.result(result),.a(a),.b(b); endmodule4 仿真結(jié)果實(shí)驗(yàn)二 簡(jiǎn)單分頻時(shí)序邏輯電路的設(shè)計(jì)1 實(shí)驗(yàn)?zāi)康?、掌握最基本組合邏輯電路的實(shí)現(xiàn)方法。2、學(xué)習(xí)時(shí)序電路測(cè)試模塊的編寫(xiě)。3、學(xué)習(xí)綜合和不同層次的仿真。2 實(shí)驗(yàn)設(shè)備安裝Modelsim-6.5c的PC機(jī)。 3 實(shí)驗(yàn)內(nèi)容用always塊和(posedge clk)或(negedge clk)的結(jié)構(gòu)表述一個(gè)1/2分頻器的可綜合模型,觀察時(shí)序仿真結(jié)果。4 實(shí)驗(yàn)代碼模塊代碼:module half_clk(reset,clk_in,clk_out);
8、input clk_in,reset; output clk_out; reg clk_out; always (posedge clk_in) begin if(!reset)clk_out=0; else clk_out =clk_out; end endmodule測(cè)試代碼:timescale 1ns/100psdefine clk_cycle 50module text; reg clk,reset; wire clk_out; always #clk_cycle clk=clk; initial begin clk=0; reset=1; #10 reset=0; #110 rese
9、t=1; #100000 $stop; end half_clk m(.reset(reset),.clk_in(clk),.clk_out(clk_out); endmodule5 仿真結(jié)果選作二:七段數(shù)碼管譯碼電路1 實(shí)驗(yàn)要求設(shè)計(jì)一個(gè)七段數(shù)碼管譯碼電路。2 模塊代碼module qiduanma(in,out); input 3:0in; output6:0out; reg6:0out; always(in) begin case(in) 4b0000:out= 7b1111110; 4b0001:out= 7b0110000; 4b0010:out= 7b1101101; 4b0011:
10、out= 7b1111011; 4b0100:out= 7b0110011; 4b0101:out= 7b1011011; 4b0110:out= 7b0011111; 4b0111:out= 7b1110000; 4b1000:out= 7b1111111; 4b1001:out= 7b1110011; 4b1010:out= 7b0001101; 4b1011:out= 7b0011001; 4b1100:out= 7b0100011; 4b1101:out= 7b1001011; 4b1110:out= 7b0001111; 4b1111:out= 7b0000000; endcase
11、end endmodule3 測(cè)試代碼timescale 1ns/1ns;include qiduanma.vmodule test; reg3:0 in; wire6:0 out; integer t; initial begin in=4b0000; for(t=0;t4b1111;t=t+1) #100 in=in+1; end qiduanma m(.in(in),.out(out); endmodule4 仿真結(jié)果實(shí)驗(yàn)三:利用條件語(yǔ)句實(shí)現(xiàn)計(jì)數(shù)分頻時(shí)序電路1 實(shí)驗(yàn)?zāi)康?、掌握條件語(yǔ)句在簡(jiǎn)單時(shí)序模塊設(shè)計(jì)中的使用。2、學(xué)習(xí)在Verilog模塊中應(yīng)用計(jì)數(shù)器。3、學(xué)習(xí)測(cè)試模塊的編寫(xiě)、綜合和不同
12、層次的仿真。2 實(shí)驗(yàn)設(shè)備安裝Modelsim-6.5c的PC機(jī)。3 實(shí)驗(yàn)內(nèi)容仿真一個(gè)可綜合風(fēng)格的分頻器,將10MB的時(shí)鐘分頻為500KB的時(shí)鐘,定義一個(gè)計(jì)數(shù)器,原理同1/2分頻器一樣,只不過(guò)分頻變?yōu)?/20。4 實(shí)驗(yàn)代碼模塊代碼:module fdivision(RESET,F10M,F500K); input F10M,RESET; output F500K; reg F500K; reg7:0j; always(posedge F10M) if(!RESET) begin F500K=0; j=0; end else begin if(j=9) begin j=0; F500K=F500K
13、; end else j=j+1; end endmodule測(cè)試代碼:timescale 1ns/100psdefine clk_cycle 50module test_fdivision; reg F10M,RESET; wire F500K_clk; always #clk_cycle F10M=F10M; initial begin RESET=1; F10M=0; #100 RESET=0; #100 RESET=1; #10000 $stop; end fdivision m(.RESET(RESET),.F10M(F10M),.F500K(F500K_clk);endmodule
14、5 仿真結(jié)果6 實(shí)驗(yàn)分析書(shū)中程序if(j=19)段應(yīng)改為if(j=9)選作三:設(shè)計(jì)一個(gè)單周期形狀的周期波形。1 實(shí)驗(yàn)要求利用10MHZ的時(shí)鐘,設(shè)計(jì)一個(gè)單周期形狀的周期波形。2 模塊代碼module exp3(RESET,F10M,F_OUT); input F10M,RESET; output F_OUT; reg F_OUT; reg15:0j; always(posedge F10M) if(!RESET) begin F_OUT=0; j=0; end else begin j=j+1; case(j) 199:F_OUT=1; 299:F_OUT=0; 499:j=0; endcase
15、 end endmodule3 測(cè)試代碼timescale 1ns/100psdefine clk_cycle 50module test_exp3; reg F10M,RESET; wire F; always #clk_cycle F10M=F10M; initial begin RESET=1; F10M=0; #100 RESET=0; #100 RESET=1; #1000000 $stop; end exp3 m2(.RESET(RESET),.F10M(F10M),.F_OUT(F);endmodule4 仿真結(jié)果實(shí)驗(yàn)四:用always塊實(shí)現(xiàn)較復(fù)雜的組合邏輯1 實(shí)驗(yàn)?zāi)康?、掌握用
16、always實(shí)現(xiàn)較大組合邏輯電路的方法。2、進(jìn)一步了解assign與always兩種組合電路實(shí)現(xiàn)方法的區(qū)別和注意點(diǎn)。3、學(xué)習(xí)測(cè)試模塊中隨機(jī)數(shù)的產(chǎn)生和應(yīng)用。4、學(xué)習(xí)綜合不同層次的仿真,并比較結(jié)果。2 實(shí)驗(yàn)設(shè)備安裝Modelsim-6.5c的PC機(jī)。3 實(shí)驗(yàn)內(nèi)容設(shè)計(jì)一個(gè)簡(jiǎn)單的指令譯碼電路,該電路通過(guò)對(duì)指令的判斷,對(duì)輸入數(shù)據(jù)執(zhí)行相應(yīng)的操作,包括加、減、與、或和求反,并且無(wú)論是指令作用的數(shù)據(jù)還是指令本身發(fā)生變化,都有要作出及時(shí)的反應(yīng)。4 實(shí)驗(yàn)代碼模塊代碼:/-alu.v-define plus 3d0define minus 3d1define band 3d2define bor 3d3define
17、 unegate 3d4module alu(out,opcode,a,b);output7:0 out;reg7:0 out;input2:0 opcode;input7:0 a,b; /?always(opcode or a or b)begincase(opcode)plus: out = a + b; /?minus: out = a - b; /?band: out = a & b; /?bor: out = a | b; /?unegate: out = a; /?default: out = 8hx; /?endcaseendendmodule測(cè)試代碼:/-alutest.v-t
18、imescale 1ns/1nsinclude ./alu.vmodule alutest;wire7:0 out;reg7:0 a,b;reg2:0 opcode;parameter times=5;initialbegina =$random%256; /?0,255?b =$random%256; /?0,255?opcode = 3h0;repeat(times)begin#100 a =$random%256; b =$random%256; opcode = opcode+1;end#100 $stop;endalu alu1(out,opcode,a,b);endmodule5
19、仿真結(jié)果選作四:運(yùn)用always塊設(shè)計(jì)一個(gè)8路數(shù)據(jù)選擇器。1 實(shí)驗(yàn)要求每路輸入數(shù)據(jù)與輸出數(shù)據(jù)均為4位2進(jìn)制數(shù),當(dāng)選擇開(kāi)關(guān)(至少3位)或輸入數(shù)據(jù)發(fā)生變化時(shí),輸出數(shù)據(jù)也相應(yīng)地變化。2 模塊代碼module exp5(slt,in0,in1,in2,in3,in4,in5,in6,in7,out); input2:0slt; input3:0in0,in1,in2,in3,in4,in5,in6,in7; output 3:0out; reg 3:0out;always(in0 or in1 or in2 or in3 or in4 or in5 or in6 or in7 or slt) case
20、 (slt) 3d0: out = in0; 3d1: out = in1; 3d2: out = in2; 3d3: out = in3; 3d4: out = in4; 3d5: out = in5; 3d6: out = in6; 3d7: out = in7; endcaseendmodule3 測(cè)試代碼timescale 1ns/1nsmodule test_exp5_2; reg3:0in0,in1,in2,in3,in4,in5,in6,in7; reg2:0slt=0; reg clk; wire 3:0out; always #10 clk=clk; always(posed
21、ge clk) slt=slt+1; initial begin clk=0; begin in0=1; in1=3; in2=5; in3=7; in4=9; in5=11; in6=13; in7=15; end #160 begin in0=0; in1=2; in2=4; in3=6; in4=8; in5=10; in6=12; in7=14; end end exp5 m(.slt(slt),.in0(in0),.in1(in1),.in2(in2),.in3(in3),.in4(in4),.in5(in5),.in6(in6),.in7(in7),.out(out);endmod
22、ule4 仿真結(jié)果實(shí)驗(yàn)五:在 Verilog HDL中使用函數(shù)1 實(shí)驗(yàn)?zāi)康?、了解函數(shù)的定義和在模塊設(shè)計(jì)中的使用。2、了解函數(shù)的可綜合性問(wèn)題。3、了解許多綜合器不能綜合復(fù)雜的算術(shù)運(yùn)算。2 實(shí)驗(yàn)設(shè)備安裝Modelsim-6.5c的PC機(jī)。3 實(shí)驗(yàn)內(nèi)容做一個(gè)函數(shù)調(diào)用的示例,采用同步時(shí)鐘觸發(fā)運(yùn)算的執(zhí)行,每個(gè)clk時(shí)鐘周期執(zhí)行一次運(yùn)算,在測(cè)試模塊中,調(diào)用系統(tǒng)任務(wù)$display及在時(shí)鐘的下降沿顯示每次運(yùn)算的結(jié)果。4 實(shí)驗(yàn)代碼模塊代碼:module tryfunct(clk,n,result,reset); output31:0result; input3:0n; input reset,clk; re
23、g31:0result; always(posedge clk) begin if(!reset) result=0; else begin result=n*factorial(n)/(n*2)+1); end end function31:0factorial; input3:0operand; reg3:0index; begin factorial=operand?1:0; for(index=2;index=operand;index=index+1) factorial=index*factorial; end endfunction endmodule測(cè)試代碼:includetr
24、yfunct.vtimescale 1ns/100psdefine clk_cycle 50module test_tryfunct; reg3:0n,i; reg reset,clk; wire31:0result; initial begin clk=0; n=0; reset=1; #100 reset=0; #100 reset=1; for(i=0;i=15;i=i+1) begin #200 n=i; end #100 $stop; end always #clk_cycle clk=clk; tryfunct m(.clk(clk),.n(n),.result(result),.
25、reset(reset); endmodule5 仿真結(jié)果選作五:設(shè)計(jì)一個(gè)帶控制端的邏輯運(yùn)算電路1 實(shí)驗(yàn)要求分別完成正整數(shù)的平方、立方和最大數(shù)為5的階乘的運(yùn)算,要求可綜合。編寫(xiě)測(cè)試模塊,并給出各種層次的仿真波形,比較它們的不同。2 模塊代碼module tryfunct2(clk,n,result,reset,select); output31:0result; input3:0n; input1:0select; input reset,clk; reg31:0result; always(posedge clk) begin if(!reset) result=0; else begin
26、case(select) 0:result=square(n); 1:result=cube(n); 2:result=factorial(n); default:result=32hx; endcase end end function31:0square; input3:0operand; square=operand*operand; endfunction function31:0cube; input3:0operand; cube=operand*operand*operand; endfunction function31:0factorial; input3:0operand;
27、 reg3:0index; begin factorial=(operand&(operand=5)?1:0; for(index=2;index=operand;index=index+1) factorial=index*factorial; end endfunction endmodule3 測(cè)試代碼includetryfunct2.vtimescale 1ns/100psdefine clk_cycle 50module test_tryfunct2; reg1:0 select; reg3:0n,i; reg reset,clk; wire31:0result; initial b
28、egin clk=0; n=0; reset=1; #100 reset=0; #100 reset=1; for(select=0;select=2;select=select+1) for(i=0;i=6;i=i+1) begin for(select=0;selecty) begin tmp = x; x = y; y = tmp; endendtaskendmodule測(cè)試代碼:/-? sort4.v-module sort4(ra,rb,rc,rd,a,b,c,d); output3:0 ra,rb,rc,rd; input3:0 a,b,c,d; reg3:0 ra,rb,rc,r
29、d; reg3:0 va,vb,vc,vd;always (a or b or c or d) begin va,vb,vc,vd=a,b,c,d; sort2(va,vc);/va?vc? sort2(vb,vd); sort2(va,vb); sort2(vc,vd); sort2(vc,vd); sort2(vb,vc); ra,rb,rc,rd=va,vb,vc,vd; endtask sort2; inout3:0 x,y; reg3:0 tmp; if(xy) begin tmp = x; x = y; y = tmp; endendtaskendmodule5 仿真結(jié)果選作六:冒
30、泡法排序1 實(shí)驗(yàn)要求模仿上面的例子用純組合邏輯實(shí)現(xiàn),用冒泡法設(shè)計(jì)一個(gè)能完成四個(gè)8位2進(jìn)制數(shù)輸入數(shù)據(jù)的模塊。2 模塊代碼/-? sort4.v-module sort4_2(ra,rb,rc,rd,a,b,c,d); output7:0 ra,rb,rc,rd; input7:0 a,b,c,d; reg7:0 ra,rb,rc,rd; reg7:0 va,vb,vc,vd;always (a or b or c or d) begin va,vb,vc,vd=a,b,c,d; sort2(va,vb);/va?vc? sort2(va,vc); sort2(va,vd); sort2(vb,v
31、c); sort2(vb,vd); sort2(vc,vd); ra,rb,rc,rd=va,vb,vc,vd; endtask sort2; inout7:0 x,y; reg7:0 tmp; if(xy) begin tmp = x; x = y; y = tmp; endendtaskendmodule3 測(cè)試代碼timescale 1ns/100psinclude sort4_2.vmodule test_sort4_2; reg7:0 a,b,c,d; wire7:0 ra,rb,rc,rd; initial begin a=0;b=0;c=0;d=0; repeat(50) beg
32、in #100 a=$random%255;b=$random%255;c=$random%255;d=$random%255;end#100 $stop; endsort4_2 m(.a(a),.b(b),.c(c),.d(d),.ra(ra),.rb(rb),.rc(rc),.rd(rd);endmodule4 仿真結(jié)果選作七:串行輸入排序1 實(shí)驗(yàn)要求假設(shè)8位數(shù)據(jù)是按照時(shí)鐘節(jié)拍串行輸入的,要求用時(shí)鐘觸發(fā)任務(wù)的執(zhí)行法,每個(gè)時(shí)鐘周期完成一次數(shù)據(jù)交換的操作。比較兩種方法的運(yùn)行速度和消耗資源的不同。2 模塊代碼module sort4_3(ra,rb,rc,rd,in,clk); output7:
33、0 ra,rb,rc,rd; input7:0 in; input clk; reg7:0 ra,rb,rc,rd; reg7:0 va,vb,vc,vd; reg3:0i=0; always (posedge clk)begin case(i) 0:va=in; 1:vb=in; 2:vc=in; 3:vd=in; 4:sort2(va,vb); 5:sort2(va,vc); 6:sort2(va,vd); 7:sort2(vb,vc); 8:sort2(vb,vd); 9:begin sort2(vc,vd);ra,rb,rc,rd=va,vb,vc,vd;end default:i=1
34、5;/* 0:vay) begin tmp = x; x = y; y = tmp; endendtaskendmodule3 測(cè)試代碼timescale 1ns/100psinclude sort4_3.vdefine clk_cycle 50module test_sort4_3; reg7:0 in; reg clk; wire7:0 ra,rb,rc,rd; initial begin begin clk=0; repeat(50) #100 in=$random%255; end #100 $stop; end always #clk_cycle clk=clk;sort4_3 m(
35、.in(in),.clk(clk),.ra(ra),.rb(rb),.rc(rc),.rd(rd);endmodule4 仿真結(jié)果5 實(shí)驗(yàn)分析在模塊程序的case語(yǔ)句中用到了10句,4句輸入,6句排序,這說(shuō)明從輸入到排序完成在輸出,需要10個(gè)clk,其實(shí)可以通過(guò)改進(jìn)縮短這個(gè)時(shí)間,可改為:case(i) 0:va=in; 1:begin vb=in;sort2(va,vb);end 2:begin vc=in;sort2(va,vc);end 3:begin vd=in;sort2(va,vd);end 4:sort2(vb,vc); 5:sort2(vb,vd); 6:begin sort2(
36、vc,vd);ra,rb,rc,rd=va,vb,vc,vd;end default:i=15; endcase仿真結(jié)果一樣,不過(guò)這里只用了7個(gè)clk,相比上面的方法節(jié)約了三個(gè)時(shí)鐘,速度得到提升,相比第一個(gè)并行輸入的方法,少了3個(gè)接口和一些寄存器,但時(shí)間卻差不多(第一個(gè)方法也是7個(gè)clk執(zhí)行完一次循環(huán))。實(shí)驗(yàn)七:利用有限狀態(tài)機(jī)進(jìn)行時(shí)序邏輯的設(shè)計(jì)1 實(shí)驗(yàn)?zāi)康?、掌握利用有限狀態(tài)機(jī)實(shí)現(xiàn)一般時(shí)序邏輯分析的方法。2、掌握用Verilog編寫(xiě)可綜合的有限狀態(tài)機(jī)的標(biāo)準(zhǔn)模板。3、掌握用Verilog編寫(xiě)狀態(tài)機(jī)模塊的測(cè)試文件的一般方法。2 實(shí)驗(yàn)設(shè)備安裝Modelsim-6.2b的PC機(jī)。3 實(shí)驗(yàn)內(nèi)容編寫(xiě)狀態(tài)機(jī)
37、程序檢測(cè)5位二進(jìn)制系列“10010”。4 實(shí)驗(yàn)代碼模塊代碼:module seqdet(x,z,clk,rst,state); input x,clk,rst; output z; output 2:0state; reg2:0state; wire z; parameter IDLE=d0,A=d1,B=d2,C=d3,D=d4,E=d5,F=d6,G=d7; assign z= (state=D&x=0)?1:0; always (posedge clk) if(!rst) state=IDLE; else casex(state) IDLE:if(x=1) state=A; A: if(
38、x=0) state=B; B: if(x=0) state=C;else state=F; C: if(x=1) state=D;else state=G; D: if(x=0) state=E;else state=A; E: if(x=0) state=C;else state=A; F: if(x=1) state=A;else state=B; G: if(x=1) state=F; default:state=IDLE; endcase endmodule測(cè)試代碼:timescale 1ns/1nsinclude seqdet.vmodule test_seqdet; reg cl
39、k,rst; reg23:0data; wire2:0state; wire z,x; assign x=data23; always #10 clk=clk; always(posedge clk) data=data22:0,data23; initial begin clk=0; rst=1; #2 rst=0; #30 rst=1; data =b1100_1001_0000_1001_0100; #500 $stop; end seqdet m(.x(x),.z(z),.clk(clk),.rst(rst),.state(state); endmodule5 仿真結(jié)果6 實(shí)驗(yàn)分析書(shū)中
40、程序中的F、G狀態(tài)其實(shí)有些多余,F(xiàn)其實(shí)就對(duì)應(yīng)的A,G對(duì)應(yīng)的IDLE,因此完全可以將這兩個(gè)狀態(tài)去掉。另外,書(shū)中有個(gè)要求是:當(dāng)x序列10010的最后一個(gè)0到達(dá)時(shí)刻,z立刻輸出高電平,而書(shū)中程序assign z= (state=E&x=0)?1:0;并不能滿(mǎn)足這個(gè)要求,若改成assign z= (state=D&x=0)?1:0;便可實(shí)現(xiàn)。進(jìn)一步可以看出,其實(shí)E狀態(tài)也其實(shí)可以去掉,因?yàn)樵跔顟B(tài)D里輸入0便需要輸出1并切換到狀態(tài)C,輸入1則切換到狀態(tài)A,這樣亦可實(shí)現(xiàn)原功能。選作八:樓梯燈1 實(shí)驗(yàn)要求 樓下到樓上依次有3個(gè)感應(yīng)燈:燈1、燈2、燈3。當(dāng)行人上下樓梯時(shí),各個(gè)燈感應(yīng)到后自動(dòng)點(diǎn)亮,若在8s內(nèi)感應(yīng)信
41、號(hào)消失,則點(diǎn)亮8s,若感應(yīng)信號(hào)存在時(shí)間超過(guò)8s,則感應(yīng)信號(hào)消失4s后燈自動(dòng)關(guān)閉。 任務(wù)1:做出如上邏輯電路設(shè)計(jì)并仿真; 任務(wù)2:考慮去抖情況,對(duì)于感應(yīng)信號(hào)到達(dá)存在毛刺(小于0.5s),設(shè)計(jì)合適邏輯并剔出。 任務(wù)3:若為節(jié)約能源,下一個(gè)燈點(diǎn)亮的同時(shí)將自動(dòng)關(guān)閉上一個(gè)燈,做出如上邏輯設(shè)計(jì)并仿真(僅考慮一個(gè)人的情況); 任務(wù)4:考慮存在多個(gè)人上下樓梯的情況,比如:行人1已經(jīng)從燈1到達(dá)燈2,燈2受感應(yīng)自動(dòng)點(diǎn)亮,但此時(shí)行人2剛上樓梯到達(dá)燈1的位置,則燈1和燈2都須點(diǎn)亮,更加復(fù)雜一點(diǎn),如果行人2是下樓梯剛到達(dá)燈3位置,做出如上邏輯設(shè)計(jì)并仿真; 注意:1.上下樓梯順序 2.時(shí)鐘頻率為10Hz 3.感應(yīng)信號(hào)為電
42、平信號(hào)2 模塊代碼module stair_light(light1,light2,light3,s1,s2,s3,rst,state,clk); input s1,s2,s3,rst,clk; output light1,light2,light3; output2:0state; reg2:0state; reg7:0i1,i2,i3,t11,t12,t21,t22,t31,t32; reg e1,e2,e3,e1_d,e2_d,e3_d; wire light1,light2,light3,s1,s2,s3; assign light1=state2; assign light2=sta
43、te1; assign light3=state0; /light1 always(posedge clk) begin if(s1) begin i1=i1+1; if(i15) begin if(i180) begin t12=t12-1; if(t12=0) begin e1=0;i1=0;end end end end end /light2 always(posedge clk) begin if(s2) begin i2=i2+1; if(i25) begin if(i280) begin t22=t22-1; if(t22=0) begin e2=0;i2=0;end end end end end /light3 always(posedge clk) begin if(s3) begin i3=i3+1; if(i35) begin if(i380) begin t32=t32-1; if(t32=0) begin e3=0;i3=0;end end end end end/delay signals always(posedge clk
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《晏子使楚》優(yōu)秀課件 (3)
- 科室醫(yī)院年終總結(jié)課件
- 常用邏輯用語(yǔ)章末總結(jié)課件(人教A版選修1-1)免
- 新版PEP四年級(jí)英語(yǔ)上冊(cè)Unit3-My-Friends-B-Let’s-learn完美版-PPT
- 金融科技機(jī)遇
- 抗菌藥物合理使用專(zhuān)家講座
- 阿奇霉素在臨床中的應(yīng)用專(zhuān)家講座
- 納米抗菌蠶絲被介紹
- 男性盆部和會(huì)陰斷層解剖研究
- 部編選擇性必修二經(jīng)濟(jì)與社會(huì)生活-第九課世紀(jì)以來(lái)人類(lèi)的經(jīng)濟(jì)與生活教學(xué)課件
- 春七年級(jí)數(shù)學(xué)下冊(cè) 82 整式乘法單項(xiàng)式與單項(xiàng)式相乘課件4 (新版)滬科版
- 部編人教版語(yǔ)文七年級(jí)下冊(cè)7.土地的誓言課件
- 手足口病
- 正壓通氣裝置課件
- 課件】食品分析與檢驗(yàn)技術(shù)第二章