FPGA24小時(shí)計(jì)時(shí)器課程設(shè)計(jì)_第1頁
FPGA24小時(shí)計(jì)時(shí)器課程設(shè)計(jì)_第2頁
FPGA24小時(shí)計(jì)時(shí)器課程設(shè)計(jì)_第3頁
FPGA24小時(shí)計(jì)時(shí)器課程設(shè)計(jì)_第4頁
FPGA24小時(shí)計(jì)時(shí)器課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

任務(wù)分析根據(jù)設(shè)計(jì)要求,我把功能分割為幾大功能模塊:頂層模塊、分頻模塊、按鍵模塊、時(shí)間模塊、鬧鐘模塊、顯示模塊。各模塊相互配合,模塊示意圖如圖1所示。頂層模塊頂層模塊時(shí)間鬧鐘按鍵顯示分頻圖1FPGA數(shù)字鐘整體設(shè)計(jì)框圖本次課程設(shè)計(jì)主要對FPGA多功能數(shù)字鐘的實(shí)現(xiàn)展開,各模塊的基本功能是頂層模塊,建立各模塊關(guān)系;分頻模塊獲取所需時(shí)鐘;按鍵模塊建立所需按鍵,進(jìn)行消抖處理等;時(shí)間模塊進(jìn)行時(shí)間處理,并結(jié)合按鍵,可對時(shí)間進(jìn)行調(diào)整;鬧鐘模塊進(jìn)行蜂鳴器設(shè)置;顯示模塊進(jìn)行數(shù)碼管顯示。我使用是FPGA是CYCLONEII系列的EP2C8Q208C8-FPGA開發(fā)板。我使用的是QuartusII9.0版本,采用的是verilog語言。

2FPGA簡介2.1FPGA簡述FPGA(Field-ProgrammableGateArray),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。2.2FPGA工作原理FPGA采用了邏輯單元陣列LCA(LogicCellArray)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB(ConfigurableLogicBlock)、輸出輸入模塊IOB(InputOutputBlock)和內(nèi)部連線(Interconnect)三個(gè)部分?,F(xiàn)場可編程門陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16×1RAM)來實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)I/O,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲(chǔ)單元加載編程數(shù)據(jù)來實(shí)現(xiàn)的,存儲(chǔ)在存儲(chǔ)器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實(shí)現(xiàn)的功能,F(xiàn)PGA允許無限次的編程。2.3FPGA的基本結(jié)構(gòu)FPGA具有掩膜可編程門陣列的通用結(jié)構(gòu),它由邏輯功能塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來實(shí)現(xiàn)不同的設(shè)計(jì)。FPGA一般由3種可編程電路和一個(gè)用于存放編程數(shù)據(jù)的靜態(tài)存儲(chǔ)器SRAM組成。這3種可編程電路是:可編程邏輯模塊(CLB--ConfigurableLogicBlock)、輸入/輸出模塊(IOB--I/OBlock)和互連資源(IR—InterconnectResource)。可編程邏輯模塊CLB是實(shí)現(xiàn)邏輯功能的基本單元,它們通常規(guī)則的排列成一個(gè)陣列,散布于整個(gè)芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長度的連接線段和一些可編程連接開關(guān),它們將各個(gè)CLB之間或CLB、IOB之間以及IOB之間連接起來,構(gòu)成特定功能的電路。CLB是FPGA的主要組成部分。圖2是CLB基本結(jié)構(gòu)框圖,它主要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器等電路組成。CLB中3個(gè)邏輯函數(shù)發(fā)生器分別是G、F和H,相應(yīng)的輸出是G’、F’和H’。G有4個(gè)輸入變量G1、G2、G3和G4;F也有4個(gè)輸入變量F1、F2、F3和F4。這兩個(gè)函數(shù)發(fā)生器是完全獨(dú)立的,均可以實(shí)現(xiàn)4輸入變量的任意組合邏輯函數(shù)。邏輯函數(shù)發(fā)生器H有3個(gè)輸入信號;前兩個(gè)是函數(shù)發(fā)生器的輸出G’和F’,而另一個(gè)輸入信號是來自信號變換電路的輸出H1。這個(gè)函數(shù)發(fā)生器能實(shí)現(xiàn)3輸入變量的各種組合函數(shù)。這3個(gè)函數(shù)發(fā)生器結(jié)合起來,可實(shí)現(xiàn)多達(dá)9變量的邏輯函數(shù)。CLCLBCLBCLBCLBCLBBCLBCLBCLBCLBCLBCLBCLBCLBBCLBCLBCLB可編程開關(guān)矩輸入輸出模塊互連資源圖2CLB基本結(jié)構(gòu)CLB中有許多不同規(guī)格的數(shù)據(jù)選擇器(四選一、二選一等),通過對CLB內(nèi)部數(shù)據(jù)選擇器的編程,邏輯函數(shù)發(fā)生器G、F和H的輸出可以連接到CLB輸出端X或Y,并用來選擇觸發(fā)器的激勵(lì)輸入信號、時(shí)鐘有效邊沿、時(shí)鐘使能信號以及輸出信號。這些數(shù)據(jù)選擇器的地址控制信號均由編程信息提供,從而實(shí)現(xiàn)所需的電路結(jié)構(gòu)。CLB中的邏輯函數(shù)發(fā)生器F和G均為查找表結(jié)構(gòu),其工作原理類似于ROM。F和G的輸入等效于ROM的地址碼,通過查找ROM中的地址表可以得到相應(yīng)的組合邏輯函數(shù)輸出。另一方面,邏輯函數(shù)發(fā)生器F和G還可以作為器件內(nèi)高速RAM或小的可讀寫存儲(chǔ)器使用,它由信號變換電路控制。2.輸入/輸出模塊IOB。IOB提供了器件引腳和內(nèi)部邏輯陣列之間的連接。它主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā)/鎖存器、輸出緩沖器組成。每個(gè)IOB控制一個(gè)引腳,它們可被配置為輸入、輸出或雙向I/O功能。當(dāng)IOB控制的引腳被定義為輸入時(shí),通過該引腳的輸入信號先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到MUX,另一路經(jīng)延時(shí)幾納秒(或者不延時(shí))送到輸入通路D觸發(fā)器,再送到數(shù)據(jù)選擇器。通過編程給數(shù)據(jù)選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來自輸入緩沖器,還是來自觸發(fā)器。當(dāng)IOB控制的引腳被定義為輸出時(shí),CLB陣列的輸出信號OUT也可以有兩條傳輸途徑:一條是直接經(jīng)MUX送至輸出緩沖器,另一條是先存入輸出通路D觸發(fā)器,再送至輸出緩沖器。IOB輸出端配有兩只MOS管,它們的柵極均可編程,使MOS管導(dǎo)通或截止,分別經(jīng)上拉電阻接通Vcc、地線或者不接通,用以改善輸出波形和負(fù)載能力??删幊袒ミB資源IR??删幊袒ミB資源IR可以將FPGA內(nèi)部的CLB和CLB之間、CLB和IOB之間連接起來,構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。IR主要由許多金屬線段構(gòu)成,這些金屬線段帶有可編程開關(guān),通過自動(dòng)布線實(shí)現(xiàn)各種電路的連接。

3主要模塊設(shè)計(jì)3.1分頻模塊分頻模塊的主要作用是從FPGA開發(fā)板自帶的50MHz晶振中分出時(shí)間模塊需要的1Hz秒時(shí)鐘信號,作為秒鐘的時(shí)間。同時(shí)可以分出鬧鐘模塊的蜂鳴器所需的1Khz時(shí)鐘。晶體振蕩器是構(gòu)成數(shù)字式時(shí)鐘的核心,振蕩器的穩(wěn)定度及頻率的精度決定了數(shù)字鐘計(jì)時(shí)的準(zhǔn)確程度,它保證了時(shí)鐘的走時(shí)準(zhǔn)確及穩(wěn)定。石英晶體的選頻特性非常好,只有某一頻率點(diǎn)的信號可以通過它,其它頻率段的信號均會(huì)被它所衰減,而且,振蕩信號的頻率與振蕩電路中的R、C元件的數(shù)值無關(guān)。因此,這種振蕩電路輸出的是準(zhǔn)確度極高的信號。然后再利用分頻電路,將其輸出信號轉(zhuǎn)變?yōu)槊胄盘?,其組成框圖如圖3。分頻電路分頻電路石英晶體振蕩電路秒信號圖3秒信號產(chǎn)生電路框圖3.1.1分頻模塊源代碼分頻模塊源代碼如下:modulefenpin(clk,rst_n,en_1s,en_1ms);//產(chǎn)生1s,1ms的分頻inputclk;//FPGA晶振50Mhzinputrst_n;outputen_1s;outputen_1ms;reg[31:0]jishu_1s;reg[15:0]jishu_1ms;parametercnt_1s=49999999;parametercnt_1ms=49999;always@(posedgeclkornegedgerst_n)beginif(!rst_n) jishu_1s<=32'b0; elseif(jishu_1s<cnt_1s) jishu_1s<=jishu_1s+1'b1; elsejishu_1s<=32'b0; endalways@(posedgeclkornegedgerst_n)beginif(!rst_n) jishu_1ms<=16'b0; elseif(jishu_1ms<cnt_1ms) jishu_1ms<=jishu_1ms+1'b1; elsejishu_1ms<=16'b0; endassignen_1s=(jishu_1s==cnt_1s)?1'b1:1'b0;//1sassignen_1ms=(jishu_1ms==cnt_1ms)?1'b1:1'b0;//1msendmodule3.1.2分頻模塊仿真分頻模塊的RTL視圖如圖4所示,可以看出輸出端en_1ms與en_1s與輸入端clk和rst_n的邏輯關(guān)系。圖4分頻模塊的RTL視圖1ms時(shí)鐘信號的輸出,如圖5所示,相鄰脈沖之間相隔1ms。圖51ms時(shí)鐘信號的仿真1s時(shí)鐘信號的輸出,如圖6所示,相鄰脈沖之間相隔1s。圖61s時(shí)鐘信號的仿真3.2按鍵模塊本設(shè)計(jì)的按鍵模塊主要作用是校時(shí)作用,可以調(diào)整時(shí)間與鬧鐘時(shí)間,同時(shí)作為時(shí)間模式與鬧鐘模式的切換。本模塊用于當(dāng)有按鍵按下時(shí),采用軟件消抖的辦法去除按鍵抖動(dòng)。模塊的實(shí)現(xiàn)方法是先判斷是否有按鍵按下,如有按鍵按下則延時(shí)一段時(shí)間,待抖動(dòng)過去之后再讀行線狀態(tài),如果仍有低電平行線,則確定有按鍵按下,然后產(chǎn)生一個(gè)有按鍵按下的信號。該模塊有一個(gè)時(shí)鐘輸入端口,輸入時(shí)鐘信號是分頻出來的50MHZ的時(shí)鐘;有一個(gè)輸入端口與行線相連,用于輸入行線狀態(tài);一個(gè)輸出端口,用于輸出有按鍵按下的信號。3.2.1按鍵模塊源代碼按鍵模塊的部分源代碼如下(以一個(gè)按鍵為例):module//按鍵控制部分anjian(clk,rst_n,key1,key2,key1_low,key2_low,key3,key3_low);inputclk;inputrst_n;inputkey1;//分加inputkey2;//分減inputkey3;//界面選擇outputkey1_low;//按鍵按下消抖后的標(biāo)志位outputkey2_low;outputkey3_low;regreg0_key;//key1消抖regreg1_key;regreg2_key;//key2消抖regreg3_key;regreg4_key;//key3消抖regreg5_key;always@(posedgeclkornegedgerst_n)beginif(!rst_n) beginreg0_key<=1'b1;reg1_key<=1'b1;endelse beginreg0_key<=key1;reg1_key<=reg0_key;//根據(jù)非阻塞賦值的原理,reg1_key存儲(chǔ)的值是reg0_key上一個(gè)時(shí)鐘的值endend//脈沖邊沿檢測法,當(dāng)寄存器key1由1變?yōu)?時(shí),key1_an的值變?yōu)楦撸S持一個(gè)時(shí)鐘周期wirekey1_an;assignkey1_an=reg1_key&(~reg0_key);always@(posedgeclkornegedgerst_n)beginif(!rst_n) begin reg2_key<=1'b1; reg3_key<=1'b1;endelse begin reg2_key<=key2;reg3_key<=reg2_key;endendreg[19:0]cnt_key1;//計(jì)數(shù)寄存器always@(posedgeclkornegedgerst_n)beginif(!rst_n)cnt_key1<=20'd0;//異步復(fù)位elseif(key1_an)cnt_key1<=20'd0;//led1_an=1,按鍵確認(rèn)按下,cnt_key1從0開始計(jì)數(shù)elsecnt_key1<=cnt_key1+1'b1;end//以下為消抖程序regreg_low;regreg1_low;always@(posedgeclkornegedgerst_n)beginif(!rst_n)beginreg_low<=1'b1;endelseif(cnt_key1==20'hfffff)//時(shí)鐘50mhz的話大約計(jì)時(shí)是20msbeginreg_low<=key1;//led_an=1,按鍵確認(rèn)按下,cnt_key從0開始計(jì)數(shù),這時(shí)候還有消抖動(dòng),計(jì)數(shù)20ms后抖動(dòng)濾除了此時(shí)再鎖存一下key1的值 end//這時(shí)key1的值就穩(wěn)定了endalways@(posedgeclkornegedgerst_n)beginif(!rst_n)reg1_low<=1'b1;elsereg1_low<=reg_low;endassignkey1_low=reg1_low&(~reg_low);//當(dāng)寄存器reg_low由1變?yōu)?時(shí),key_low的值變?yōu)楦?,維持一個(gè)時(shí)鐘周期//以一個(gè)按鍵為例,省略其余兩個(gè)按鍵endmodule3.2.2按鍵模塊仿真按鍵模塊的RTL視圖如圖7所示,可以看出輸出端Key1_low、Key2_low、Key3_low與輸入端Key1和Key2、Key3、clk、rst_n的邏輯關(guān)系。圖7按鍵模塊的RTL視圖3.3時(shí)間模塊時(shí)間模塊的作用是:利用分頻模塊產(chǎn)生的精確的秒時(shí)鐘信號,給時(shí)鐘秒位計(jì)時(shí),設(shè)置好時(shí)分秒的進(jìn)位;利用按鍵模塊的控制,給時(shí)鐘校時(shí),給鬧鐘設(shè)置時(shí)間。3.3.1時(shí)間模塊源代碼按鍵模塊的部分源代碼如下://時(shí)、分、秒moduleshijian(clk,rst_n,en_1s,key1_low,key2_low,key3_low,shi,fen,miao,nao_shi,nao_fen,nao_miao,moshi);inputclk;inputrst_n;inputen_1s;inputkey1_low;inputkey2_low;inputkey3_low;output[5:0]shi;output[5:0]fen;output[5:0]miao;output[5:0]nao_shi;output[5:0]nao_fen;output[5:0]nao_miao;outputreg[1:0]moshi;//0時(shí)顯示時(shí)間1時(shí)顯示鬧鐘reg[5:0]shi;reg[5:0]fen;reg[5:0]miao;reg[5:0]nao_shi;reg[5:0]nao_fen;reg[5:0]nao_miao;always@(posedgeclkornegedgerst_n)//key3按鍵選擇模式beginif(!rst_n) beginmoshi<=1'b0; end elseif(key3_low) begin moshi<=moshi+1'b1; endend always@(posedgeclkornegedgerst_n)beginif(!rst_n) begin shi<=6'b000001;//1 fen<=6'b011000;//24 miao<=6'b0;//0 nao_shi<=6'b000001;//1 nao_fen<=6'b011110;//30 nao_miao<=6'b010100;//20 end elseif(en_1s) begin miao=miao+1'b1; if(miao==60) begin miao=0; fen=fen+1'b1; if(fen==60) begin fen=0; shi=shi+1'b1; if(shi==24) shi=0; end end end elseif(!moshi&&key1_low)//時(shí)間模式下按加鍵 begin fen=fen+1'b1; if(fen==60) begin fen=0; shi=shi+1'b1; if(shi==24) shi=0; end end elseif(!moshi&&key2_low)//時(shí)間模式下按減鍵 beginfen=fen-1'b1; if(fen==0) begin shi=shi-1'b1; fen=59; end end elseif(moshi&&key1_low)//時(shí)間模式下按加鍵 begin nao_fen=nao_fen+1'b1; if(nao_fen==60) begin nao_fen=0; nao_shi=nao_shi+1'b1; if(shi==24) shi=0; end end elseif(moshi&&key2_low)//鬧鐘模式下按減鍵 beginnao_fen=nao_fen-1'b1; if(nao_fen==0) begin nao_shi=nao_shi-1'b1; nao_fen=59; end endelse begin shi<=shi; fen<=fen; miao<=miao; nao_shi<=nao_shi; nao_fen<=nao_fen; nao_miao<=nao_miao; endendendmodule3.3.2時(shí)間模塊仿真時(shí)間模塊的RTL視圖如圖8所示,可以看出輸出端shi、fen、miao、nao_shi、nao_fen、mao_miao與輸入端Key1_low和Key2_low、Key3_low、en_1s、rst_n的邏輯關(guān)系。圖8時(shí)間模塊的RTL視圖仿真了時(shí)鐘,仿真波形圖如圖9、圖10所示,仿真圖滿足設(shè)計(jì)的要求。分計(jì)數(shù)和時(shí)計(jì)數(shù)模塊的設(shè)計(jì)原理與秒模塊的類似。圖9秒時(shí)鐘仿真波形圖10計(jì)時(shí)模塊仿真3.4顯示模塊顯示模塊的作用是:在8位數(shù)碼管上顯示時(shí)間模塊輸出的時(shí)間和鬧鐘信號,通過按鍵可以切換顯示時(shí)間和鬧鐘。具體原理是采用動(dòng)態(tài)掃描的方法,動(dòng)態(tài)掃描電路將計(jì)數(shù)器輸出的8421BCD碼轉(zhuǎn)換為數(shù)碼管需要的邏輯狀態(tài),并且輸出數(shù)碼管的片選信號和位選信號。所謂動(dòng)態(tài)掃描顯示方式是在顯示某一位LED顯示塊的數(shù)據(jù)的時(shí)候,讓其它位不顯示,然后在顯示下一位的數(shù)據(jù),同時(shí)關(guān)閉其他顯示塊。這樣做可以使每一個(gè)顯示塊顯示與自己相對應(yīng)的數(shù)據(jù)。只要保證每一位顯示的時(shí)間間隔不要太大,利用人眼的視覺暫留的現(xiàn)象,就可以造成各位數(shù)據(jù)同時(shí)顯示的假象。一般每一位的顯示時(shí)間為1~10ms。3.4.1顯示模塊源代碼顯示模塊的部分源代碼如下:(以顯示秒為例)modulexianshi(clk,rst_n,en_1ms,shi,fen,miao,led_bit,dataout,moshi,nao_shi,nao_fen,nao_miao);inputclk;inputrst_n;inputen_1ms;input[5:0]shi;input[5:0]fen;input[5:0]miao;input[5:0]nao_shi;input[5:0]nao_fen;input[5:0]nao_miao;input[1:0]moshi;output[2:0]led_bit;//位選output[7:0]dataout;//段選//數(shù)碼管顯示0~9對應(yīng)段選輸出parameternum0=8'b11000000,num1=8'b11111001,num2=8'b10100100,num3=8'b10110000,num4=8'b10011001,num5=8'b10010010,num6=8'b10000010,num7=8'b11111000,num8=8'b10000000,num9=8'b10010000;reg[3:0]shi1,shi2,fen1,fen2,miao1,miao2;reg[3:0]nao_shi1,nao_shi2,nao_fen1,nao_fen2,nao_miao1,nao_miao2;reg[2:0]led_bit;//位選reg[7:0]dataout;//段選reg[2:0]state;//狀態(tài)寄存器always@(posedgeclkornegedgerst_n)if(!rst_n)begin state<=3'b0; endelseif(en_1ms)begin state<=state+1'b1; shi1=shi/10; shi2=shi%10; fen1=fen/10; fen2=fen%10; miao1=miao/10; miao2=miao%10; nao_shi1=nao_shi/10; nao_shi2=nao_shi%10; nao_fen1=nao_fen/10; nao_fen2=nao_fen%10; nao_miao1=nao_miao/10; nao_miao2=nao_miao%10; if(state==3'b000) begin led_bit=3'b101; if(!moshi) begin case(miao2) 0:dataout<=num0;1:dataout<=num1;2:dataout<=num2;3:dataout<=num3;4:dataout<=num4;5:dataout<=num5;6:dataout<=num6;7:dataout<=num7;8:dataout<=num8;9:dataout<=num9; default:dataout<=num0; endcase end elseif(moshi) begin case(nao_miao2) 0:dataout<=num0;1:dataout<=num1;2:dataout<=num2;3:dataout<=num3;4:dataout<=num4;5:dataout<=num5;6:dataout<=num6;7:dataout<=num7;8:dataout<=num8;9:dataout<=num9; default:dataout<=num0; endcase end endelseif(state==3'b001) begin led_bit=3'b100; if(!moshi) begin case(miao1) 0:dataout<=num0;1:dataout<=num1;2:dataout<=num2;3:dataout<=num3;4:dataout<=num4;5:dataout<=num5; default:dataout<=num0; endcase end if(moshi) begin case(nao_miao1) 0:dataout<=num0;1:dataout<=num1;2:dataout<=num2;3:dataout<=num3;4:dataout<=num4;5:dataout<=num5; default:dataout<=num0; endcase end endend//以顯示秒為例,時(shí)與分的省略Endmodule3.4.1顯示模塊仿真顯示模塊的RTL視圖如圖11所示,可以看出輸出端控制數(shù)碼管的8位段選和3為位選與輸入端時(shí)間信號和鬧鐘信號的邏輯關(guān)系。圖11顯示模塊的RTL視圖3.5鬧鐘模塊鬧鐘模塊的作用是:當(dāng)時(shí)間與鬧鐘時(shí)間相同時(shí),鬧鐘模塊根據(jù)分頻模塊得出的en_1ms驅(qū)動(dòng)蜂鳴器發(fā)出聲響。3.5.1鬧鐘模塊源代碼鬧鐘模塊的源代碼如下:modulenaozhong(clk,en_1ms,beep,shi,fen,miao,nao_shi,nao_fen,nao_miao); inputclk,en_1ms; //clk作為時(shí)鐘信號,en_1ms作為發(fā)聲信號 input[5:0]shi;input[5:0]fen;input[5:0]miao; input[5:0]nao_shi;input[5:0]nao_fen;input[5:0]nao_miao; outputregbeep; //作為發(fā)聲輸出信號接揚(yáng)聲器 regbep;initial begin beep<=1; bep<=0; endalways@(posedgeclk) begin if(nao_shi==shi&&nao_fen==fen &&nao_miao<miao) bep<=1'b1; elsebep<=0; endalways@(bep) begin if(bep==1'b1) begin beep<=en_1ms; end elsebeep<=1; endendmodule3.5.2鬧鐘模塊仿真鬧鐘模塊的RTL視圖如圖12所示,可以看出當(dāng)輸出端時(shí)間信號大于等于鬧鐘信號時(shí),蜂鳴器開始工作。圖12鬧鐘模塊的RTL視圖3.6頂層模塊頂層模塊的作用是:例化各模塊,建立分頻模塊、時(shí)間模塊、按鍵模塊、顯示模塊、鬧鐘模塊的聯(lián)系。3.6.1頂層模塊源代碼頂層模塊的源代碼如下:moduleshuzizhong(clk,rst_n,key1,key2,key3,led_bit,dataout,beep);inputclk;inputrst_n;inputkey1;//加inputkey2;//減inputkey3;//模式按鍵output[2:0]led_bit;output[7:0]dataout;outputbeep;wireen_1s;wireen_1ms;wire[5:0]shi;wire[5:0]fen;wire[5:0]miao;wire[5:0]nao_shi;wire[5:0]nao_fen;wire[5:0]nao_miao;wirekey1_low,key2_low,key3_low;wire[1:0]moshi;fenpinfenpin_int(.clk(clk),.rst_n(rst_n), .en_1s(en_1s), .en_1ms(en_1ms) ); anjiananjian_int(.clk(clk),.rst_n(rst_n), .key1(key1), .key2(key2), .key3(key3), .key1_low(key1_low), .key2_low(key2_low), .key3_low(key3_low) ); shijianshijian_int(.clk(clk),.rst_n(rst_n), .en_1s(en_1s), .key1_low(key1_low), .key2_low(key2_low), .key3_low(key3_low), .shi(shi), .fen(fen), .miao(miao), .nao_shi(nao_shi), .nao_fen(nao_fen), .nao_miao(nao_miao), .moshi(moshi) );xianshixianshi_int(.clk(clk),.rst_n(rst_n), .en_1ms(en_1ms), .moshi(mos

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論