資源描述:
《基于fpga的數(shù)字秒表設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、基于FPGA的數(shù)字秒表設(shè)計一、設(shè)計實驗條件Quartus7.2集成開發(fā)環(huán)境二、設(shè)計目標1.能對0秒~59分59.99秒范圍進行計時,顯示最長時間是59分59秒;2.計時精度達到10ms;3.設(shè)計復(fù)位開關(guān)和啟停開關(guān),復(fù)位開關(guān)可以在任何情況下使用,使用以后計時器清零,并做好下一次計時的準備。三、設(shè)計內(nèi)容1.緒論數(shù)字秒表是日常生活中比較常見的電子產(chǎn)品,當今社會是數(shù)字化的社會,是數(shù)字集成電路廣泛應(yīng)用的社會。數(shù)字集成電路本身在不斷進行更新?lián)Q代,隨著微電子技術(shù)的發(fā)展,設(shè)計與制造集成電路的任務(wù)已不完全由半導(dǎo)體廠商來獨立承擔。系統(tǒng)設(shè)計師更愿意自己設(shè)計
2、專業(yè)集成電路(ASIC)芯片,而且希望設(shè)計周期盡可能短,最好在實驗室里就能設(shè)計出合適的ASIC芯片并且立即投入實際應(yīng)用之中,因而出現(xiàn)了現(xiàn)場可編程器件(FPLD)?,F(xiàn)場可編程門陣列(FPGA)即屬其中應(yīng)用最廣泛的一種。超高速硬件描述語言VHDL,是對數(shù)字系統(tǒng)進行抽象的行為與功能描述到具體的內(nèi)部線路結(jié)構(gòu)描述,各個層次進行計算機模擬驗證,保證設(shè)計過程的正確性,可大大降低設(shè)計成本,縮短設(shè)計周期。2.設(shè)計主體2.1原理根據(jù)數(shù)字秒表的設(shè)計要求,可以使用多個不同的計數(shù)器單元模塊,通過有機的組合來得到數(shù)字秒表系統(tǒng)。要滿足數(shù)字秒表的精度,首先應(yīng)獲得精確
3、的計數(shù)基準信號,這里的系統(tǒng)精度要求為0.01s,因此必須設(shè)置周期0.01s的時鐘脈沖。由于數(shù)字秒表輸入脈沖為3MHZ,因此每個3000個外界輸入脈沖的輸出一個頻率,該頻率的時間周期正好為0.01s,即先將外界脈沖進行3MHZ—100HZ的分頻。0.1s、1s、1min等計時單位之間的進位轉(zhuǎn)換可以通過十進制與六進制計數(shù)器來實現(xiàn)。每位計數(shù)器均能輸出相應(yīng)計時單位計時結(jié)果,其中十進制計數(shù)器可以實現(xiàn)0.01s、0.1s、1s和1min單位單元的計數(shù);六進制可以實現(xiàn)10s,10min為單位的計數(shù)。由于秒表需要具有異步清零和啟動/暫停功能,因此可以
4、將每個計數(shù)器都設(shè)置異步清零(CRL)和啟動/暫停(ENA)輸入端口,再將各級計數(shù)器進行級聯(lián),即可顯示不同度量單位的計時內(nèi)容。數(shù)字秒表內(nèi)部計數(shù)器內(nèi)部構(gòu)成如下圖1。圖1數(shù)字秒表內(nèi)部計數(shù)器在上圖中,U0模塊用于將外界脈沖進行3MHZ—100MHZ的分頻,從而得到0.01s的脈沖信號;U1模塊用于實現(xiàn)0.1s的脈沖信號;U2模塊用于實現(xiàn)1s的脈沖信號;U3和U4用于實現(xiàn)1min的脈沖信號,U5和U6用于實現(xiàn)1h的脈沖信號。除U0外,U1~U6的CQ都可以驅(qū)動顯示帶譯碼的七段LED進行數(shù)字顯示。通過上述分析可知,數(shù)字秒表的構(gòu)成實質(zhì)上依賴于3個基
5、本模塊,即3MHZ—100HZ的分頻模塊(CLKGEN)、十進制計數(shù)器模塊(CNT10)和六進制計數(shù)器模塊(CNT6),然后使用一個頂層模塊(miaobiao)進行有機結(jié)合。2.2各模塊程序及仿真(1)3MHZ-100HZ分頻模塊3MHZ-100HZ分頻模塊流程圖如下圖2所示,在使用VHDL編寫程序時,在實體中應(yīng)定義3MHZ時鐘頻率輸入端(CLK)和100HZ的時鐘脈沖輸出端(NEWCLK)。3MHZ時鐘輸入每來一個脈沖,CNTER是否為29999?CNTER清零NEWCLK輸出為高電平得到100MHZ的輸出脈沖CNTER+1NEWC
6、LK輸出為低電平NY圖23MHZ--100HZ分頻模塊流程圖在結(jié)構(gòu)體的說明語句中,應(yīng)定義一個頻率脈沖計數(shù)信號(CNTER),該信號的類型為整數(shù)型,計數(shù)范圍為0~29999。在結(jié)構(gòu)體的功能描述語句中,可使用2個進程(U1和U2)來完成3MHZ-100HZ的頻率描述。在U1中,每次檢測到一個上升沿輸入脈沖時,先通過if語句檢測輸入信號是否為上升沿。若是上升沿,在使用一個if語句判斷當前計數(shù)值(CNTER)是否等于29999,如果相等,則將CNTER清零,為輸出下一個100HZ的頻率做準備,否則將CNTER加1。在U2中,判斷CNTER是否
7、等于29999,如果相等,將NEWCLK輸出為高電平,否則輸出為低電平。源程序如下:LibraryIeee;UseIeee.Std_Logic_1164.All;EntityClkgenIsPort(Clk:InStd_Logic;Newclk:OutStd_Logic);EndClkgen;ArchitectureArtOfClkgenIsSignalCnter:IntegerRange0To10#29999#;Beginu1:Process(Clk)BeginIfClk'EventAndClk='1'ThenIfCnter=10#
8、29999#ThenCnter<=0;ElseCnter<=Cnter+1;EndIf;EndIf;EndProcessu1;u2:Process(Cnter)BeginIfCnter=10#29999#ThenNewc