版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)一
與非門設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?)掌握Vivado軟件的基本使用方法;(2)掌握VerilogHDL基本模塊的使用;(3)掌握assign語句的語法。二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明根據(jù)數(shù)電的基本知識(shí),利用assign語句設(shè)計(jì)二輸入與非門。二輸入與非門的真值表如表9.1.1所示,其中a、b為輸入信號(hào),f為輸出信號(hào)。實(shí)驗(yàn)一
與非門設(shè)計(jì)表9.1.1二輸入與非門真值表abf001011101110二輸入與非門的邏輯函數(shù)表達(dá)式如下:
四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程my_nand.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序my_nand_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成my_nand.bit并下載文件。實(shí)驗(yàn)一
與非門設(shè)計(jì)五、參考程序如圖9.1.1二輸入與非門的RTL原理圖所示,與非門的輸入端為a、b,輸出端為f。程序采用assign持續(xù)驅(qū)動(dòng)語句進(jìn)行描述。圖9.1.1二輸入與非門的RTL原理圖`timescale1ns/1psmodulemy_nand(inputa,inputb,outputf);assign
;endmodule仿真激勵(lì)程序如下:實(shí)驗(yàn)一
與非門設(shè)計(jì)`timescale1ns/1psmodulemy_nand_tf();rega;regb;wiref;my_nanduut(.a(a),.b(b),.f(f));initialbegin
a=0;b=0;#100;
a=0;b=1;#100;
a=1;b=0;#100;
a=1;b=1;#100;
$stop;endendmodule六、仿真激勵(lì)程序和波形實(shí)驗(yàn)一
與非門設(shè)計(jì)六、仿真激勵(lì)程序和波形如圖9.1.1二輸入與非門的RTL原理圖所示,與非門的輸入端為a、b,輸出端為f。程序采用assign持續(xù)驅(qū)動(dòng)語句進(jìn)行描述。圖9.1.2二輸入與非門的波形圖七、配置約束文件可以在IMPLEMENTATION中點(diǎn)擊RunImplementation,在IMPLEMENTEDDESIGN中的I/OPorts內(nèi),填寫端口對(duì)應(yīng)的引腳編號(hào)和I/O標(biāo)準(zhǔn)并保存;也可以在my_nand.xdc中編寫配置文件。配置約束文件內(nèi)容如下:實(shí)驗(yàn)一
與非門設(shè)計(jì)七、配置約束文件八、拓展訓(xùn)練1.設(shè)計(jì)一個(gè)異或門并進(jìn)行仿真和下載。2.設(shè)計(jì)一個(gè)三人表決器:假設(shè)ABC分別代表三個(gè)裁判,當(dāng)A=1時(shí)輸出F=1,或當(dāng)B和C都為1時(shí)F=1;其他情況下F=0。3.根據(jù)圖9.1.3所示電路的RTL原理圖編寫程序。set_propertyPACKAGE_PINN4[get_portsa]set_propertyPACKAGE_PINR1[get_portsb]set_propertyPACKAGE_PINK2[get_portsf]set_propertyIOSTANDARDLVCMOS33[get_portsa]set_propertyIOSTANDARDLVCMOS33[get_portsb]set_propertyIOSTANDARDLVCMOS33[get_portsf]圖9.1.3
RTL原理圖實(shí)驗(yàn)二一位全加器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?)復(fù)習(xí)Vivado軟件的使用。(2)復(fù)習(xí)assign語句的語法。(3)學(xué)習(xí)“{}”的語法結(jié)構(gòu)。二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明根據(jù)全加器的工作原理,編寫真值表如下表9.2.1所示。實(shí)驗(yàn)二一位全加器設(shè)計(jì)表9.2.1全加器真值表全加器邏輯函數(shù)表達(dá)式如下:sum=a⊕b⊕cin輸入端輸出端abcincoutsum0000000101010010111010001101101101011111cout=ab+bcin+acin實(shí)驗(yàn)二一位全加器設(shè)計(jì)四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程full_add.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序full_add_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成full_add.bit并下載文件。五、參考程序如圖9.2.1全加器RTL原理圖所示,全加器的輸入端有三個(gè):a、b、cin;輸出端有cout、sum。可以根據(jù)表格9.2,計(jì)算函數(shù)表達(dá)式,分別對(duì)cout和sum進(jìn)行描述。圖9.2.1全加器RTL原理圖實(shí)驗(yàn)二一位全加器設(shè)計(jì)五、參考程序`timescale1ns/1psmodulefull_add(cout,sum,a,b,cin);inputa,b,cin;outputcout,sum;assigncout
=
assignsum=
endmodule
參考程序如下:實(shí)驗(yàn)二一位全加器設(shè)計(jì)`timescale1ns/1psmodulefull_add_tf();rega,b,cin;wirecout,sum;full_adduut(cout,sum,a,b,cin);initialbegin
a=0;b=0;cin=0;#100;
a=0;b=0;cin=1;#100;
a=0;b=1;cin=0;#100;
a=0;b=1;cin=1;#100;
a=1;b=0;cin=0;#100;
a=1;b=0;cin=1;#100;
a=1;b=1;cin=0;#100;
a=1;b=1;cin=1;#100;
$stop;endendmodule六、仿真激勵(lì)程序和波形實(shí)驗(yàn)二一位全加器設(shè)計(jì)六、仿真激勵(lì)程序和波形如圖9.2.1為全加器的仿真波形圖,可以根據(jù)表9.2全加器真值表對(duì)全加器的輸出波形進(jìn)行檢驗(yàn)。cout為全加器輸出的進(jìn)位端,每個(gè)cout的高電平表示二進(jìn)制的2,當(dāng)輸入端a、b、cin三者中有兩者及以上為1時(shí),cout輸出高電平。圖9.1.2二輸入與非門的波形圖七、配置約束文件將輸入端a、b、cin配置到撥碼開關(guān),輸出端cout和sum配置到led。編寫full_add.xdc配置文件。配置約束文件內(nèi)容如下:實(shí)驗(yàn)二一位全加器設(shè)計(jì)七、配置約束文件八、拓展訓(xùn)練1.采用always或元件例化設(shè)計(jì)全加器并仿真下載。2.設(shè)計(jì)一個(gè)8位的全加器并仿真下載。3.設(shè)計(jì)一個(gè)8位的奇偶校驗(yàn)位產(chǎn)生器并仿真下載。set_propertyPACKAGE_PINM4[get_portsa]set_propertyPACKAGE_PINN4[get_portsb]set_propertyPACKAGE_PINR1[get_portscin]set_propertyPACKAGE_PINJ2[get_portscout]set_propertyPACKAGE_PINK2[get_portssum]set_propertyIOSTANDARDLVCMOS33[get_portsa]set_propertyIOSTANDARDLVCMOS33[get_portsb]set_propertyIOSTANDARDLVCMOS33[get_portscin]set_propertyIOSTANDARDLVCMOS33[get_portscout]set_propertyIOSTANDARDLVCMOS33[get_portssum]實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?)學(xué)習(xí)3-8譯碼器的工作原理;(2)掌握assign語句的語法;(3)學(xué)習(xí)always語句的語法。二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明根據(jù)3-8譯碼器的工作原理,編寫真值表如表9.3.1所示。實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)表9.3.13-8譯碼器真值表序號(hào)abcY[7]Y[6]Y[5]Y[4]Y[3]Y[2]Y[1]Y[0]000000000001100100000010201000000100301100001000410000010000510100100000611001000000711110000000可以分別寫出Y[0]~Y[7]的函數(shù)表達(dá)式并用assign語句進(jìn)行描述,也可用always過程語句描述3-8譯碼器。四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程decode_38.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序decode_38_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成decode_38.bit并下載文件。實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)五、參考程序如圖9.3.13-8譯碼器RTL原理圖所示,譯碼器的輸入端為a、b、c,輸出端為Y[7:0],且Y輸出1有效。圖9.3.13-8譯碼器RTL原理圖實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)五、參考程序`timescale1ns/1psmoduledecode_38(inputa,b,c,output[7:0]Y);
assignY[0]=!a&!b&!c;
assignY[1]=
;
assignY[2]=
;
assignY[3]=
;
assignY[4]=
;
assignY[5]=
;
assignY[6]=
;
assignY[7]=
;endmodule
參考程序如下:實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)`timescale1ns/1psmoduledecode_38_tf();rega;regb;regc;wire[7:0]Y;decode_38uut(.a(a),.b(b),.c(c),.Y(Y));六、仿真激勵(lì)程序和波形initialbegina=0;b=0;c=0;#100;a=0;b=0;c=1;#100;a=0;b=1;c=0;#100;a=0;b=1;c=1;#100;a=1;b=0;c=0;#100;a=1;b=0;c=1;#100;a=1;b=1;c=0;#100;a=1;b=1;c=1;#100;$stop;endendmodule
仿真激勵(lì)程序如下:
仿真激勵(lì)程序續(xù):實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)六、仿真激勵(lì)程序和波形將a、b、c三個(gè)輸入端的各種邏輯狀態(tài)寫入激勵(lì)程序中,仿真輸出Y的波形,如圖9.3.2所示。為了方便觀察,將輸出Y設(shè)置為二進(jìn)制顯示:選中Y并點(diǎn)擊右鍵,選擇Radix中的Binary,將其修改為二進(jìn)制。圖9.3.23-8譯碼器波形圖七、配置約束文件在EGO1開發(fā)板上,選擇SW3~SW0三個(gè)撥碼開關(guān)和LD2中八個(gè)LED燈開關(guān)為3-8譯碼器的輸入輸出端。撥碼開關(guān)往下為低電平,LED高電平點(diǎn)亮。配置約束文件內(nèi)容如下:實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)七、配置約束文件set_propertyIOSTANDARDLVCMOS33[get_ports{Y[7]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Y[6]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Y[5]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Y[4]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Y[3]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Y[2]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Y[1]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Y[0]}]set_propertyIOSTANDARDLVCMOS33[get_portsa]set_propertyIOSTANDARDLVCMOS33[get_portsb]set_propertyIOSTANDARDLVCMOS33[get_portsc]set_propertyPACKAGE_PINM4[get_portsa]set_propertyPACKAGE_PINN4[get_portsb]set_propertyPACKAGE_PINR1[get_portsc]set_propertyPACKAGE_PINF6[get_ports{Y[7]}]實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)七、配置約束文件八、拓展訓(xùn)練1.采用always語句設(shè)計(jì)3-8譯碼器并仿真下載。2.請(qǐng)用always描述表9-3-2譯碼器74LS138的真值表,功能如下:(1)使能端G1高電平有效,G2A、G2B低電平有效;(2)a、b、c為譯碼器的輸入端;(3)輸出端Y7~Y0低電平有效。set_propertyPACKAGE_PING4[get_ports{Y[6]}]set_propertyPACKAGE_PING3[get_ports{Y[5]}]set_propertyPACKAGE_PINJ4[get_ports{Y[4]}]set_propertyPACKAGE_PINH4[get_ports{Y[3]}]set_propertyPACKAGE_PINJ3[get_ports{Y[2]}]set_propertyPACKAGE_PINJ2[get_ports{Y[1]}]set_propertyPACKAGE_PINK2[get_ports{Y[0]}]實(shí)驗(yàn)三3-8譯碼器設(shè)計(jì)八、拓展訓(xùn)練表9.3.2譯碼器74LS138真值表使能端輸入端輸出端G1G2AG2BabcY[7:0]0XXXXX8’B1111_1111X1XXXX8’B1111_1111XX1XXX8’B1111_11111000008’B1111_11101000018’B1111_11011000108’B1111_10111000118’B1111_01111001008’B1110_11111001018’B1101_11111001108’B1011_11111001118’B0111_1111實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?)學(xué)習(xí)BCD譯碼器的工作原理;(2)了解數(shù)碼管的工作原理;二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明根據(jù)BCD譯碼器的工作原理,編寫真值表如下表9.4.1所示:實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)表9.4.1BCD譯碼器真值表四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程decode_bcd.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序decode_bcd_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成decode_bcd.bit并下載文件。序號(hào)in[3]in[2]in[1]in[0]DFGFEDCBA16進(jìn)制00000001111113f10001000001100620010010110115b30011010011114f40100011001106650101011011016d60110011111017d70111000001110781000011111117f91001011011116f實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)五、參考程序BCD譯碼器的電路圖可從軟件中的RTLANALYSIS中的Schematic中查看,由于Vivado生成的電路比較復(fù)雜,這里只提供BCD譯碼器基本的端口圖,如圖9.4.1所示。圖9.4.1BCD譯碼器端口圖`timescale1ns/1psmoduledecode_bcd(outputregDF,outputregG,outputregF,outputregE,outputregD,
參考程序如下:
參考程序續(xù):
outputregC,
outputregB,outputregA,outputregBIT1,input[3:0]in);實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)五、參考程序always@(*)beginBIT1=1;//共陰數(shù)碼管位選端,接NPN三極管基極if(in==4'b0000)begin{DF,G,F,E,D,C,B,A}=8'h3f;endelseif(in==4'b0001)begin{DF,G,F,E,D,C,B,A}=8'h06;endelseif(in==4'b0010)begin{DF,G,F,E,D,C,B,A}=8'h5b;endelseif(in==4'b0011)begin{DF,G,F,E,D,C,B,A}=8'h4f;endelseif(in==4'b0100)begin{DF,G,F,E,D,C,B,A}=8'h66;endelseif(in==4'b0101)begin{DF,G,F,E,D,C,B,A}=8'h6d;endelseif(in==4'b0110)begin{DF,G,F,E,D,C,B,A}=8'h7d;endelseif(in==4'b0111)begin{DF,G,F,E,D,C,B,A}=8'h07;endelseif(in==4'b1000)begin{DF,G,F,E,D,C,B,A}=8'h7f;endelseif(in==4'b1001)begin{DF,G,F,E,D,C,B,A}=8'h6f;endelsebegin{DF,G,F,E,D,C,B,A}=8'hxx;BIT1=0;endendendmodule
參考程序續(xù):實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)`timescale1ns/1psmoduledecode_bcd_tf();wireA,B,C,D,E,F,G,DF,BIT1;reg[3:0]in;decode_bcduut(.DF(DF),.G(G),.F(F),.E(E),.D(D),.C(C),.B(B),.A(A),.BIT1(BIT1),.in(in));六、仿真激勵(lì)程序和波形initialbeginin=4'b0000;#100;in=4'b0001;#100;in=4'b0010;#100;in=4'b0011;#100;in=4'b0100;#100;in=4'b0101;#100;in=4'b0110;#100;in=4'b0111;#100;in=4'b1000;#100;in=4'b1001;#100;$stop;endendmodule
仿真激勵(lì)程序如下:
仿真激勵(lì)程序續(xù):實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)六、仿真激勵(lì)程序和波形如圖9.4.2BCD譯碼器波形圖所示,為了方便觀察,將DF-A生成新總線:選中要合并的線,點(diǎn)擊右鍵選擇NewVirtualBus生成新總線并命名為seg。選擇新總線seg,點(diǎn)擊右鍵選擇Radix中的Hexadecimal修改為十六進(jìn)制;將in總線修改為二進(jìn)制Binary。圖9.4.2BCD譯碼器波形圖七、配置約束文件在EGO1開發(fā)板上,選擇SW3~SW0三個(gè)撥碼開關(guān)和LD2中八個(gè)LED燈開關(guān)為3-8譯碼器的輸入輸出端。撥碼開關(guān)往下為低電平,LED高電平點(diǎn)亮。配置約束文件內(nèi)容如下:實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)七、配置約束文件set_propertyIOSTANDARDLVCMOS33[get_ports{in[3]}]set_propertyIOSTANDARDLVCMOS33[get_ports{in[2]}]set_propertyIOSTANDARDLVCMOS33[get_ports{in[1]}]set_propertyIOSTANDARDLVCMOS33[get_ports{in[0]}]set_propertyPACKAGE_PINR2[get_ports{in[3]}]set_propertyPACKAGE_PINM4[get_ports{in[2]}]set_propertyPACKAGE_PINN4[get_ports{in[1]}]set_propertyPACKAGE_PINR1[get_ports{in[0]}]set_propertyPACKAGE_PIND4[get_portsA]set_propertyPACKAGE_PINE3[get_portsB]set_propertyPACKAGE_PIND3[get_portsC]set_propertyPACKAGE_PINF4[get_portsD]set_propertyPACKAGE_PINF3[get_portsE]set_propertyPACKAGE_PINE2[get_portsF]set_propertyPACKAGE_PIND2[get_portsG]set_propertyPACKAGE_PINH2[get_portsDF]set_propertyPACKAGE_PING6[get_portsBIT1]set_propertyIOSTANDARDLVCMOS33[get_portsA]實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)七、配置約束文件八、拓展訓(xùn)練1.采用case語句設(shè)計(jì)BCD譯碼器并仿真下載。2.修改程序讓兩位數(shù)碼管同時(shí)顯示。3.修改程序讓數(shù)碼管自動(dòng)從0~F循環(huán)顯示并仿真下載。set_propertyIOSTANDARDLVCMOS33[get_portsB]set_propertyIOSTANDARDLVCMOS33[get_portsC]set_propertyIOSTANDARDLVCMOS33[get_portsD]set_propertyIOSTANDARDLVCMOS33[get_portsE]set_propertyIOSTANDARDLVCMOS33[get_portsF]set_propertyIOSTANDARDLVCMOS33[get_portsG]set_propertyIOSTANDARDLVCMOS33[get_portsDF]set_propertyIOSTANDARDLVCMOS33[get_portsBIT1]實(shí)驗(yàn)四BCD譯碼器設(shè)計(jì)八、拓展訓(xùn)練表9.4.2譯碼器74LS138真值表使能端輸入端輸出端G1G2AG2BabcY[7:0]0XXXXX8’B1111_1111X1XXXX8’B1111_1111XX1XXX8’B1111_11111000008’B1111_11101000018’B1111_11011000108’B1111_10111000118’B1111_01111001008’B1110_11111001018’B1101_11111001108’B1011_11111001118’B0111_1111實(shí)驗(yàn)五D觸發(fā)器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?)了解時(shí)序邏輯電路的時(shí)鐘邊沿信號(hào)的描述;(2)了解時(shí)序邏輯電路復(fù)位信號(hào)的分類和描述;(3)掌握always語句的使用。二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明本實(shí)驗(yàn)設(shè)計(jì)的是一個(gè)帶同步復(fù)位端的D觸發(fā)器。根據(jù)D觸發(fā)器的工作原理,編寫真值表如下表9.5.1所示。實(shí)驗(yàn)五D觸發(fā)器設(shè)計(jì)表9.5.1D觸發(fā)器真值表四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程dff_syn.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序dff_syn_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成dff_syn.bit并下載文件;(6)在示波器中觀察波形。Qn+1=D(clk=↑,res=1)當(dāng)時(shí)鐘clk上升沿且res=0時(shí)D觸發(fā)器復(fù)位,輸出Qn+1=0;當(dāng)res=1時(shí)D觸發(fā)器不復(fù)位,在時(shí)鐘clk上升沿Qn+1鎖存D的值,否則Qn+1保持原來的值。實(shí)驗(yàn)五D觸發(fā)器設(shè)計(jì)五、參考程序圖9.5.1為D觸發(fā)器RTL原理圖,從圖中可看出當(dāng)res為低電平時(shí),選擇器RTL_MUX輸出高電平,使后級(jí)RTL_REG_SYNC高電平復(fù)位;當(dāng)res=1時(shí),RTL_REG_SYNC不復(fù)位而正常工作。圖9.5.1BCD譯碼器端口圖moduledff_syn(outputregQ,outputQ_n,inputclk,inputD,inputres);
參考程序如下:實(shí)驗(yàn)五D觸發(fā)器設(shè)計(jì)五、參考程序assignQ_n=
;always@(
)//時(shí)鐘上升沿beginif(res==0)begin
end else begin
endendendmodule
參考程序續(xù):實(shí)驗(yàn)五D觸發(fā)器設(shè)計(jì)`timescale1ns/1psmoduledff_syn_tf; regclk; regD; regres;//wireclk_buf; wireQ; wireQ_n; parameterPeriod=10;
//定義周期常量Period為10 dff_synuut( .Q(Q), .Q_n(Q_n), .clk(clk),//.clk_buf()clk_buf, .D(D), .res(res)
);六、仿真激勵(lì)程序和波形 initialbegin clk=0;D=0;res=0;clk=1;#10; res=1;//不復(fù)位; D=1;#80; D=0;#80; D=1'bx;#100; D=1'bz;#100; $stop; endalways#(Period/2)clk=~clk;
//10ns時(shí)鐘產(chǎn)生endmodule
仿真激勵(lì)程序如下:
仿真激勵(lì)程序續(xù):實(shí)驗(yàn)五D觸發(fā)器設(shè)計(jì)六、仿真激勵(lì)程序和波形從圖9.5.2D觸發(fā)器波形圖中可看到:當(dāng)res=0時(shí),在clk上升沿時(shí)輸出為0;在clk上升沿時(shí)Q才會(huì)等于D的值;當(dāng)Q為高阻態(tài)或未知態(tài)時(shí),Q_n等于高阻態(tài)。圖9.5.2D觸發(fā)器波形圖七、配置約束文件為了方便對(duì)比觀察,可將clk時(shí)鐘信號(hào)引入clk_buf用示波器顯示。使用信號(hào)發(fā)生器在D端輸入頻率可調(diào)的3.3V矩形波信號(hào)。從輸出端Q可對(duì)比觀察D觸發(fā)器的工作波形(如果沒有儀器,可將輸入D和輸出Q、Q_n配置到按鍵和LED上)。配置約束文件內(nèi)容如下:實(shí)驗(yàn)五D觸發(fā)器設(shè)計(jì)七、配置約束文件set_propertyPACKAGE_PINP17[get_portsclk]#set_propertyPACKAGE_PING17[get_portsclk_buf]#J5左上第三#set_propertyPACKAGE_PINH17[get_portsD]#J5右上第三set_propertyPACKAGE_PINR17[get_portsD]#輸入端DS1#set_propertyPACKAGE_PINB16[get_portsQ]set_propertyPACKAGE_PINK2[get_portsQ]#LD20最右邊LED#set_propertyPACKAGE_PINB17[get_portsQ_n]set_propertyPACKAGE_PINJ2[get_portsQ_n]#LD21set_propertyPACKAGE_PINR1[get_portsres]#復(fù)位SW0set_propertyIOSTANDARDLVCMOS33[get_portsclk]#set_propertyIOSTANDARDLVCMOS33[get_portsclk_buf]實(shí)驗(yàn)五D觸發(fā)器設(shè)計(jì)七、配置約束文件八、拓展訓(xùn)練1.設(shè)計(jì)一個(gè)帶異步復(fù)位的D觸發(fā)器并進(jìn)行仿真。2.設(shè)計(jì)同步復(fù)位端的JK觸發(fā)器并仿真,真值表如表9-5-2所示:set_propertyIOSTANDARDLVCMOS33[get_portsD]set_propertyIOSTANDARDLVCMOS33[get_portsQ]set_propertyIOSTANDARDLVCMOS33[get_portsQ_n]set_propertyIOSTANDARDLVCMOS33[get_portsres]表9.5.2同步復(fù)位端的JK觸發(fā)器真值表實(shí)驗(yàn)六模10計(jì)數(shù)器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?)掌握同步復(fù)位和異步復(fù)位的VerilogHDL描述方法;(2)了解阻塞與非阻塞賦值語句的區(qū)別;(3)掌握計(jì)數(shù)器的工作原理。二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明在數(shù)字系統(tǒng)中,計(jì)數(shù)器主要用于對(duì)脈沖個(gè)數(shù)計(jì)數(shù),以實(shí)現(xiàn)測(cè)量、計(jì)數(shù)和控制的功能,同時(shí)兼有分頻功能。本實(shí)驗(yàn)要設(shè)計(jì)一個(gè)帶異步復(fù)位端的模10計(jì)數(shù)器,復(fù)位時(shí)輸出端清零;此計(jì)數(shù)器不復(fù)位,當(dāng)每個(gè)clk時(shí)鐘的上升沿觸發(fā)always語句時(shí),Q自加1,當(dāng)Q加到9時(shí)自身清零且進(jìn)位端Cout=1。此計(jì)數(shù)器的真值表如表9.6.1所示。實(shí)驗(yàn)六模10計(jì)數(shù)器設(shè)計(jì)表9.6.1模10計(jì)數(shù)器真值表四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程count_m10.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序count_m10_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成count_m10.bit并下載文件。CoutQ
clk備注000x復(fù)位001↑
不復(fù)位
進(jìn)位011↑021↑031↑041↑051↑061↑071↑181↑091↑實(shí)驗(yàn)六模10計(jì)數(shù)器設(shè)計(jì)五、參考程序圖9.6.1為模10計(jì)數(shù)器的RTL原理圖。圖中,Q0_i為加法器,其作用是使輸入信號(hào)加1;Q1_i負(fù)責(zé)判斷輸入信號(hào)是否等于9,如果是則輸出1;Q_i為選擇開關(guān),當(dāng)Q1_i輸出為1時(shí)Q_i從0重新開始;Q_reg[3:0]為4位D觸發(fā)器,當(dāng)res=0時(shí),輸出為0,否則正常工作;Cout_i為ROM,根據(jù)前面Q_reg[3:0]的輸出值判斷Cout的值,當(dāng)Q_reg[3:0]為9時(shí)Cout輸出1。圖9.6.1模10計(jì)數(shù)器的RTL原理圖實(shí)驗(yàn)六模10計(jì)數(shù)器設(shè)計(jì)五、參考程序`timescale1ns/1psmodulecount_m10(Cout,Q,res,clk);inputres;inputclk;outputreg[3:0]Q;outputCout;assignCout=(Q==9)?1:0;always@(posedgeclk,negedgeres)beginif(!res)beginQ<=0;endelsebeginif
else
endendendmodule
參考程序如下:實(shí)驗(yàn)六模10計(jì)數(shù)器設(shè)計(jì)`timescale1ns/1psmodulecount_m10_tf();regres;regclk;wire[3:0]Q;wireCout;count_m10uut(.Cout(Cout),.Q(Q),.res(res),.clk(clk));六、仿真激勵(lì)程序和波形initialbeginclk=0;res=0;#100;res=1;repeat(50)#50clk=!clk;res=0;#50;$stop;endendmodule
仿真激勵(lì)程序如下:
仿真激勵(lì)程序續(xù):實(shí)驗(yàn)六模10計(jì)數(shù)器設(shè)計(jì)六、仿真激勵(lì)程序和波形圖9.6.2為模10計(jì)數(shù)器的仿真波形圖。由圖9.6.2可知在時(shí)鐘clk上升沿輸出發(fā)生變化:Q從0數(shù)到9后清零,當(dāng)Q=9時(shí)進(jìn)位端Cout=1。圖9.6.2模10計(jì)數(shù)器的仿真波形圖七、配置約束文件將進(jìn)位端Cout連接到開發(fā)板J5的右上方第三個(gè)接線端子,輸出端Q連接到四個(gè)LED上或者J5的接線端子(用邏輯分析儀觀察);將輸入端res連接至sw0撥碼開關(guān),往上撥接,高電平不復(fù)位;clk可采用板上100MHz的時(shí)鐘信號(hào)(Cout為10MHz)或者通過信號(hào)發(fā)生器從J5右下方最后一個(gè)端子輸入一個(gè)頻率為20Hz、幅度為3.3V的方波信號(hào)(Cout為2Hz)。配置約束文件文件內(nèi)容如下:實(shí)驗(yàn)六模10計(jì)數(shù)器設(shè)計(jì)七、配置約束文件set_propertyPACKAGE_PINH4[get_ports{Q[3]}]set_propertyPACKAGE_PINJ3[get_ports{Q[2]}]set_propertyPACKAGE_PINJ2[get_ports{Q[1]}]set_propertyPACKAGE_PINK2[get_ports{Q[0]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Q[3]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Q[2]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Q[1]}]set_propertyIOSTANDARDLVCMOS33[get_ports{Q[0]}]set_propertyPACKAGE_PINB16[get_portsclk]#J5右下最后一個(gè)端口set_propertyPACKAGE_PINH17[get_portsCout]#J5右上第三個(gè)端口set_propertyPACKAGE_PINR1[get_portsres]set_propertyIOSTANDARDLVCMOS33[get_portsclk]set_propertyIOSTANDARDLVCMOS33[get_portsCout]set_propertyIOSTANDARDLVCMOS33[get_portsres]set_propertyCLOCK_DEDICATED_ROUTEFALSE[get_netsclk_IBUF]實(shí)驗(yàn)六模10計(jì)數(shù)器設(shè)計(jì)八、拓展訓(xùn)練1.將本實(shí)驗(yàn)參考程序修改成帶同步復(fù)位端的模10計(jì)數(shù)器程序,要求復(fù)位端高電平有效并將復(fù)位端配置到輕觸開關(guān)S4上。2.設(shè)計(jì)一個(gè)帶同步復(fù)位、同步加載端的計(jì)數(shù)器,具體要求如下:加載端:8位總線data,配置到8個(gè)撥碼開關(guān);輸出端:8位總線Q,配置到8個(gè)LED或輸出端;加載使能端:load,高電平有效,配置到輕觸開關(guān)S4;復(fù)位端:res,高電平有效,配置到輕觸開關(guān)S1。實(shí)驗(yàn)七流水燈控制器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?)掌握分頻器的工作原理及設(shè)計(jì);(2)了解時(shí)序電路中always的敏感信號(hào)選擇;(3)了解模塊的調(diào)用。二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明本實(shí)驗(yàn)設(shè)計(jì)的是一個(gè)帶同步復(fù)位端的流水燈控制器。根據(jù)流水燈的工作原理,編寫真值表如下表9.7.1所示:實(shí)驗(yàn)七流水燈控制器設(shè)計(jì)表9.7.1流水燈真值表四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程flash_led.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序flash_led_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成flash_led.bit并下載文件。序號(hào)LEDclk_1Hz
備注18’b0000_0000↑0復(fù)位28’b0000_0001↑1
不
復(fù)
位
38’b0000_0010↑148’b0000_0100↑158’b0000_1000↑168’b0001_0000↑178’b0010_0000↑188’b0100_0000↑198’b1000_0000↑1實(shí)驗(yàn)七流水燈控制器設(shè)計(jì)五、參考程序如圖9.7.1流水燈端口及信號(hào)連接圖所示,流水燈控制器分為兩個(gè)模塊:u1、u2。u1模塊為分頻器,將100MHz時(shí)鐘信號(hào)clk分頻成1Hz。u2模塊為流水燈譯碼電路,負(fù)責(zé)流水燈的移動(dòng)方向。圖9.7.1流水燈端口及信號(hào)連接圖`timescale1ns/1psmoduletop(led,clk,res);output[7:0]led;inputclk;inputres;
頂層top模塊參考程序如下:wireclk_1Hz;div_frequ1(clk_1Hz,res,clk);flash_ledu2(led,clk_1Hz,res);endmodule
頂層top模塊參考程序續(xù):實(shí)驗(yàn)七流水燈控制器設(shè)計(jì)五、參考程序moduleflash_led(led,clk,res);inputclk;inputres;outputreg[7:0]led;always@(posedgeclk,posedgeres)beginif(res)beginled=8'b0000_0001;endelsebeginif(led!=8'b1000_0000)led=led<<1;elseled=8'b0000_0001;endend
endmodule
flash_led模塊參考程序:modulediv_freq(clk_1Hz,res,clk);inputres;inputclk;reg[31:0]cnt;outputclk_1Hz;parameterPeriod=99_999_999;assignclk_1Hz=(cnt==Period)?1:0;always@(posedgeclk,posedgeres)beginif(res)begincnt=0;endelsebeginif(cnt>=Period)cnt=0;elsecnt=cnt+1;endendendmodule
div_freq模塊參考程序:實(shí)驗(yàn)七流水燈控制器設(shè)計(jì)`timescale1ns/1psmoduleflash_led_tf();wire[7:0]led;regclk,res;topuut(led,clk,res);initialbeginres=1;clk=0;#100;res=0;forever#5clk=~clk;endendmodule六、仿真激勵(lì)程序和波形
仿真激勵(lì)程序如下:實(shí)驗(yàn)七流水燈控制器設(shè)計(jì)六、仿真激勵(lì)程序和波形從圖9.7.2流水燈波形圖中可看,當(dāng)?shù)絩es=0時(shí),Q=0、Q_n=1;當(dāng)res=1時(shí),流水燈在時(shí)鐘驅(qū)動(dòng)下正常移位。為了方便仿真觀察,可將程序中的Period改為5。圖9.7.2流水燈波形圖七、配置約束文件將8個(gè)led配置到板子下方的LD1,clk使用板上100MHz時(shí)鐘信號(hào)P17,復(fù)位端使用S1高電平復(fù)位。配置約束文件文件內(nèi)容如下:實(shí)驗(yàn)七流水燈控制器設(shè)計(jì)七、配置約束文件set_propertyIOSTANDARDLVCMOS33[get_ports{led[7]}]set_propertyIOSTANDARDLVCMOS33[get_ports{led[6]}]set_propertyIOSTANDARDLVCMOS33[get_ports{led[5]}]set_propertyIOSTANDARDLVCMOS33[get_ports{led[4]}]set_propertyIOSTANDARDLVCMOS33[get_ports{led[3]}]set_propertyIOSTANDARDLVCMOS33[get_ports{led[2]}]set_propertyIOSTANDARDLVCMOS33[get_ports{led[1]}]set_propertyIOSTANDARDLVCMOS33[get_ports{led[0]}]set_propertyIOSTANDARDLVCMOS33[get_portsclk]set_propertyIOSTANDARDLVCMOS33[get_portsres]set_propertyPACKAGE_PINK1[get_ports{led[7]}]set_propertyPACKAGE_PINH6[get_ports{led[6]}]set_propertyPACKAGE_PINH5[get_ports{led[5]}]set_propertyPACKAGE_PINJ5[get_ports{led[4]}]set_propertyPACKAGE_PINK6[get_ports{led[3]}]實(shí)驗(yàn)七流水燈控制器設(shè)計(jì)八、拓展訓(xùn)練1.參考實(shí)驗(yàn)程序,將程序改為異步復(fù)位并修改LED的移動(dòng)方向。2.設(shè)計(jì)一個(gè)帶異步復(fù)位的花樣流水燈,通過兩個(gè)撥碼開關(guān)選擇樣式。七、配置約束文件set_propertyPACKAGE_PINL1[get_ports{led[2]}]set_propertyPACKAGE_PINM1[get_ports{led[1]}]set_propertyPACKAGE_PINK3[get_ports{led[0]}]set_propertyPACKAGE_PINR17[get_portsres]set_propertyPACKAGE_PINP17[get_portsclk]實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述一、實(shí)驗(yàn)?zāi)康模?)了解按鍵的抖動(dòng)原因及消除原理;(2)掌握模塊調(diào)用格式;(3)了解case語句的語法結(jié)構(gòu)。二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明本實(shí)驗(yàn)設(shè)計(jì)的是一個(gè)帶同步復(fù)位端的按鍵消抖處理電路。開發(fā)板的按鍵電路如圖9.8.1所示:平時(shí)電路輸出低電平,按下按鍵時(shí)輸出高電平。輸出波形如圖9.8.2所示:在按鍵按下(B時(shí)間段)或松開(C時(shí)間段)時(shí)均有抖動(dòng)實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述系統(tǒng)工作原理如下:(1)將系統(tǒng)100MHz時(shí)鐘分頻為5ms。(2)每5ms對(duì)按鍵輸出進(jìn)行一次采樣,當(dāng)連續(xù)的四次采樣邏輯電平都為1時(shí)判斷按鍵為穩(wěn)定輸出。(3)當(dāng)再次檢測(cè)到連續(xù)兩次低電平后,判定按鍵已經(jīng)松開。(4)用穩(wěn)定的輸出信號(hào)驅(qū)動(dòng)LED的取反。圖9.8.1按鍵電路圖圖9.8.2
按鍵抖動(dòng)波形圖實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程key_debouncer.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序key_debouncer_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成key_debouncer.bit并下載文件。五、參考程序如圖9.8.3按鍵消抖電路端口及信號(hào)連接圖所示,將按鍵消抖電路的描述分為兩個(gè)模塊:u1、u2。u1模塊為分頻器,將100MHz時(shí)鐘信號(hào)clk分頻成200Hz。u2模塊為消抖采樣電路,負(fù)責(zé)在連續(xù)的四個(gè)5ms對(duì)按鍵輸出進(jìn)行采樣和比較,當(dāng)key_r的四次值全為1時(shí)輸出高電平,且再次檢測(cè)到兩次低電平后對(duì)key_value取反,財(cái)時(shí)用穩(wěn)定的key_value信號(hào)驅(qū)動(dòng)led的亮滅。實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述五、參考程序圖9.8.3按鍵消抖電路端口及信號(hào)連接圖`timescale1ns/1psmodulekey_debouncer(inputclk,inputkey_in, inputres,outputled);wireclk_5ms;
頂層key_debouncer模塊參考程序如下:fdiv_5msu1(clk_5ms,clk,res);debounceru2(led,key_in,clk_5ms,res);endmodule
頂層key_debouncer模塊參考程序續(xù):實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述五、參考程序modulefdiv_5ms(clk_5ms,clk,res);outputclk_5ms;inputclk;inputres;reg[17:0]cnt;parameterPeriod_5ms=249999;always@(posedgeclk,posedgeres)begin if(res)cnt<=0; elsecnt<=cnt+1;endassignclk_5ms=(cnt>=Period_5ms)?1:0;endmodule
div_freq模塊參考程序:實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述五、參考程序key_r<={key_r,key_in};
//移位寄存器,寄存按鍵值。if(key_r==4'b1111)
//按鍵按下20ms內(nèi)連續(xù)4次高電平。
beginkey_flag<=1;
//key_flag為消抖后穩(wěn)定信號(hào)。
endif(key_r==4'b0000)
key_flag<=0;
if(key_flag&&(key_r==4'b1100))
key_value<=~key_value;
//松手檢測(cè)endendendmodule
debouncer模塊參考程序續(xù):moduledebouncer(led,key_in,clk_5ms,res);inputkey_in;inputclk_5ms;inputres;outputled;regkey_value;reg[3:0]key_r;regkey_flag;assignled=key_value;always@(posedgeclk_5ms,posedgeres)beginif(res)beginkey_r<=4'b0000;key_flag<=0;key_value<=0;endelse begin
debouncer模塊參考程序:實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述`timescale1ns/1psmodulekey_debouncer_tf(); regclk; regkey_in;regres; wireled; key_debounceruut( .clk(clk), .key_in(key_in), .res(res), .led(led) ); initialbegin
//仿真要在主程序中修改:Period_5ms=9;
clk=0;key_in=0;res=0;res=1;clk=1;#100;
res=0;
key_in=0;#200;六、仿真激勵(lì)程序和波形
仿真激勵(lì)程序如下:實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述六、仿真激勵(lì)程序和波形
仿真激勵(lì)程序續(xù):
repeat(5)#5key_in=!key_in;key_in=1;//按下;#1000;repeat(5)#5key_in=!key_in;key_in=0;//松手;repeat(10)#1000;key_in=0;repeat(5)#5key_in=!key_in;key_in=1;//按下;#1000;repeat(5)#5key_in=!key_in;key_in=0;//松手;
#3000;$stop;end
always#5clk=~clk;
endmodule實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述六、仿真激勵(lì)程序和波形從圖9.8.4按鍵消抖電路波形圖中可看到,當(dāng)res=0時(shí),系統(tǒng)不復(fù)位。在key_in從低電平變成高電平的區(qū)間出現(xiàn)多次抖動(dòng),系統(tǒng)在連接的20ms內(nèi)采樣4次的key_in的信號(hào)均為高電平,又連續(xù)采樣到2次key_in低電平(松手)后,輸出穩(wěn)定的key_value信號(hào)驅(qū)動(dòng)led的亮滅。圖9.8.4流水燈波形圖七、配置約束文件將led和key_out分別配置到EGO-1板子下方的LD1和LD2;復(fù)位端res和按鍵key_in使用S4和S1,高電平復(fù)位;clk使用板上100MHz時(shí)鐘信號(hào)P17。配置約束文件文件內(nèi)容如下:實(shí)驗(yàn)八按鍵消抖的VerilogHDL描述七、配置約束文件set_propertyPACKAGE_PINP17[get_portsclk]set_propertyPACKAGE_PINR17[get_portskey_in]set_propertyPACKAGE_PINK2[get_portsled]set_propertyPACKAGE_PINU4[get_portsres]set_propertyIOSTANDARDLVCMOS33[get_portsclk]set_propertyIOSTANDARDLVCMOS33[get_portskey_in]set_propertyIOSTANDARDLVCMOS33[get_portsled]set_propertyIOSTANDARDLVCMOS33[get_portsres]八、拓展訓(xùn)練1.參考實(shí)驗(yàn)程序,將程序改成流水燈控制器,控制流水燈的樣式。2.參考實(shí)驗(yàn)程序,將程序改成數(shù)碼管控制器,控制數(shù)碼管從0~9變化。實(shí)驗(yàn)九
秒表的VerilogHDL實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康模?)掌握BCD譯碼器的工作原理及設(shè)計(jì)思路;(2)掌握數(shù)碼管的工作原理;(3)了解case語句的語法結(jié)構(gòu)。二、實(shí)驗(yàn)設(shè)備本實(shí)驗(yàn)所需實(shí)驗(yàn)設(shè)備包括:計(jì)算機(jī)、實(shí)驗(yàn)平臺(tái)、萬用表、Vivado軟件等。三、實(shí)驗(yàn)原理說明本實(shí)驗(yàn)設(shè)計(jì)的是一個(gè)帶異步復(fù)位端的秒表控制器電路。根據(jù)秒表的工作原理,編寫功能表,如表9.9.1所示。實(shí)驗(yàn)九
秒表的VerilogHDL實(shí)現(xiàn)三、實(shí)驗(yàn)原理說明當(dāng)系統(tǒng)檢測(cè)到res=1時(shí),系統(tǒng)復(fù)位;當(dāng)系統(tǒng)不復(fù)位,每一個(gè)時(shí)鐘clk_1Hz為上升沿使數(shù)碼管加1的指令。BIT1為四位共陰數(shù)碼管的其中一個(gè)公共端,高電平點(diǎn)亮相應(yīng)的位。clk_1Hz的低頻時(shí)鐘信號(hào)由板載100MHz時(shí)鐘分頻所得。表9.9.1
帶異步復(fù)位端的秒表功能表顯示segBIT1clk_1Hzkey_stop
備注無xx↑x1復(fù)位無x0xxx
不
復(fù)
位
08’h3f1↑0018’h061↑0028’h5b1↑0038’h4f1↑0048’h661↑0058’h6d1↑0068’h7d1↑0078’h071↑0088’h7f1↑0098’h6f1↑0010暫停1↑10實(shí)驗(yàn)九
秒表的VerilogHDL實(shí)現(xiàn)四、實(shí)驗(yàn)步驟(1)打開Vivado軟件,新建工程stopwatch.xpr;(2)芯片選擇xc7a35tcsg324-1,根據(jù)實(shí)驗(yàn)原理說明編寫程序;(3)編寫仿真激勵(lì)程序stopwatch_tf.v,并觀察波形;(4)對(duì)芯片配置約束文件;(5)將程序綜合后,生成stopwatch.bit并下載文件。五、參考程序如圖9.9.1秒表電路端口及信號(hào)連接圖所示,秒表控制器分為四個(gè)模塊:u1、u2、u3、u4。u1模塊為分頻器,將100MHz時(shí)鐘信號(hào)clk分頻成5ms。u2模塊為按鍵去抖電路,消除按鍵抖動(dòng)。u3為秒時(shí)鐘分頻器,將100MHz時(shí)鐘信號(hào)clk分頻成1Hz,可通過按鍵控制啟停。u4為秒表顯示電路,由BCD譯碼器構(gòu)成。實(shí)驗(yàn)九
秒表的VerilogHDL實(shí)現(xiàn)五、參考程序圖9.9.1秒表電路端口及信號(hào)連接圖`timescale1ns/1psmodulestopwatch(inputclk,inputkey_in, inputres,outputBIT1,output[6:0]seg);wireclk_5ms;wire[3:0]binary;
頂層stopwatch模塊參考程序如下:wirekey_value,key_flag;//模塊調(diào)用fdiv_5msu1(clk_5ms,clk,res);debounceru2(key_value,key_in,clk_5ms,res);fdiv_1su3(binary,clk,res,key_value);decode_bcdu4(seg,BIT1,binary);endmodule
頂層stopwatch模塊參考程序續(xù):實(shí)驗(yàn)九
秒表的VerilogHDL實(shí)現(xiàn)五、參考程序 else
beginkey_r<={key_r,key_in};
//移位寄存器,寄存按鍵值。if(key_r==4'b1111)
//按鍵按下20ms內(nèi)連續(xù)4次高電平。beginkey_flag<=1;
//key_flag為消抖后穩(wěn)定信號(hào)。endif(key_r==4'b0000)key_flag<=0;if(key_flag&&(key_r==4'b1100))
key_value<=~key_value;
//松手檢測(cè)endendendmodule
debouncer模塊參考程序續(xù):moduledebouncer(key_value,key_in,clk_5ms,res);inputkey_in;inputclk_5ms;inputres;outputregkey_value;reg[3:0]key_r;regkey_flag;always@(posedgeclk_5ms,posedgeres)beginif(res)beginkey_r<=4'b0000;key_flag<=0;key_value<=0;end
debouncer模塊參考程序:實(shí)驗(yàn)九
秒表的VerilogHDL實(shí)現(xiàn)五、參考程序modulefdiv_1s(out,clk,res,key_value);outputreg[3:0]out;inputclk;inputres;inputkey_value;reg[31:0]cnt;parameterPeriod_1s=100_000_000-1;//仿真改為100-1;=100_000_000-1;always@(posedgeclk,posedgeres)begin if(res)cnt<=0; else begin if(key_value==1) begin if(cnt>=Period_1s)cnt<=0;
fdiv_1s模塊參考程序: elsecnt<=cnt+1; end elsecnt<=cnt; endendalways@(posedgeclk,posedgeres)beginif(res)beginout<=0;endelsebeginif(cnt==Period_1s)beginif(out<9)out<=out+1;elseout<=0;end
end
endendmodulefdiv_1s模塊參考程序續(xù):實(shí)驗(yàn)九
秒表的VerilogHDL實(shí)現(xiàn)五、參考程序moduledecode_bcd(outputreg[6:0]seg,outputregBIT1,input[3:0]in);always@(*)beginBIT1=1;//共陰數(shù)碼管位選端,接NPN三極管基極if(in==4'b0000)begi
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年企業(yè)復(fù)工復(fù)產(chǎn)管理方案與實(shí)施細(xì)則
- 新版小學(xué)語文期末綜合測(cè)試題
- 農(nóng)民合作社年度經(jīng)營情況報(bào)告模板
- 企業(yè)合同管理流程指南
- 三年級(jí)科學(xué)知識(shí)點(diǎn)總結(jié)與重點(diǎn)難點(diǎn)解析
- 小學(xué)五年級(jí)英語語法專項(xiàng)練習(xí)卷
- 工業(yè)自動(dòng)化生產(chǎn)線控制系統(tǒng)設(shè)計(jì)
- 物業(yè)費(fèi)用收費(fèi)與管理操作手冊(cè)
- 電子產(chǎn)品售后服務(wù)標(biāo)準(zhǔn)解析
- 九年級(jí)學(xué)生補(bǔ)差方案設(shè)計(jì)及實(shí)施效果分析
- 2025西部機(jī)場(chǎng)集團(tuán)航空物流有限公司招聘參考考點(diǎn)題庫及答案解析
- 煤炭代加工合同范本
- 景區(qū)安全協(xié)議合同范本
- 2025年大學(xué)《地理信息科學(xué)-地圖學(xué)》考試備考試題及答案解析
- 雨課堂在線學(xué)堂《信息素養(yǎng)-學(xué)術(shù)研究的必修課》作業(yè)單元考核答案
- 【MOOC】《大學(xué)足球》(西南交通大學(xué))章節(jié)期末慕課答案
- 《設(shè)計(jì)創(chuàng)新人才職業(yè)能力要求》
- 中學(xué)八年級(jí)英語重點(diǎn)詞匯與語法解析
- 生產(chǎn)車間節(jié)能知識(shí)培訓(xùn)課件
- 寄售管理制度及流程
- 公共文化服務(wù)質(zhì)量評(píng)價(jià)指標(biāo)體系研究-洞察及研究
評(píng)論
0/150
提交評(píng)論