0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

電子設(shè)計 ? 來源:郭婷 ? 作者:電子設(shè)計 ? 2019-04-23 08:25 ? 次閱讀

基于FPGA設(shè)計數(shù)字日歷可以實現(xiàn)以軟件方式設(shè)計硬件的目的,無需購買專用數(shù)字芯片,從而克服了傳統(tǒng)利用多片數(shù)字集成電路設(shè)計數(shù)字日歷存在焊接麻煩、調(diào)試繁瑣、成本較高等問題。而且,基于FPGA的數(shù)字日歷與傳統(tǒng)系統(tǒng)相比,在設(shè)計靈活、開發(fā)速度、降低成本、計時精度、功能實現(xiàn)上都得到大幅度提升,能夠更好地滿足人們?nèi)粘I畹男枰?/p>

本文介紹如何利用VHDL硬件描述語言設(shè)計一個具有年、月、日、星期、時、分、秒計時顯示功能,時間調(diào)整功能和整點(diǎn)報時功能的數(shù)字日歷。在QuartusⅡ開發(fā)環(huán)境下,采用自頂向下的設(shè)計方法,建立各個基本模塊,再構(gòu)建成一個完整的基于FPGA設(shè)計的數(shù)字日歷的頂層模塊,然后對其進(jìn)行編譯、仿真、引腳鎖定,最終下載到可編程邏輯器件上進(jìn)行結(jié)果驗證。

1數(shù)字日歷整體設(shè)計方案

基于FPGA的數(shù)字日歷設(shè)計分為硬件設(shè)計和軟件設(shè)計兩大部分。其原理框圖如圖1所示。整個數(shù)字日歷由六個部分組成:顯示控制部分,時分秒部分,年月日部分,定時與整點(diǎn)報時部分,星期部分,調(diào)整控制部分。秒、分、時分別由兩個60進(jìn)制的計數(shù)器和一個24進(jìn)制的計數(shù)器組成。當(dāng)個計數(shù)器達(dá)到進(jìn)位的條件時向下一計數(shù)器進(jìn)位。同樣日、月、年也是由不同的計數(shù)器組成,當(dāng)達(dá)到所需進(jìn)位的條件時向下一計數(shù)器進(jìn)位,各計數(shù)器在進(jìn)位的同時分別把各自的結(jié)果輸出給顯示部分進(jìn)行實時顯示。

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖1數(shù)字日歷原理框圖

2數(shù)字日歷的工作原理

首先由外部振蕩器產(chǎn)生穩(wěn)定的高頻脈沖信號,作為數(shù)字日歷的時間基準(zhǔn),然后經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖,輸入到FPGA的CLOCK端,實現(xiàn)計數(shù)。當(dāng)秒計數(shù)器滿60后向分計數(shù)器進(jìn)位,分計數(shù)器滿60后向小時計數(shù)器進(jìn)位,小時計數(shù)器按照“24進(jìn)1”規(guī)律計數(shù)。計滿后各計數(shù)器清零,重新計數(shù)。日部分由于日有28天、29天、30天、31天4種情況,故日由年和月共同判斷其天數(shù),日計滿后向月進(jìn)位,月滿后向年進(jìn)位。計數(shù)器的輸出分別經(jīng)譯碼器送數(shù)碼管顯示。計時出現(xiàn)誤差時,可以用校時電路校時、校分、校秒和校年、校月、校日。

設(shè)計中用到了6個按鍵K1,K2,K3,K4,ZHENG,NAO.其中K1用于切換顯示,剛開始時顯示日期,按兩次K1顯示星期+時間,再按兩次K1顯示定時時間,再按兩次重新顯示日期,以此循環(huán)。K2、K3和K4配合進(jìn)行調(diào)節(jié):開始正常顯示不進(jìn)行調(diào)節(jié);當(dāng)按兩下K2鍵切換到對分鐘進(jìn)行調(diào)節(jié),此時每按兩下K3鍵分鐘加1;再按兩下K2鍵切換到對小時進(jìn)行調(diào)節(jié),此時每按兩下K3鍵小時加1;依照分鐘→小時→星期→天→月→年→定時→正?!昼姷拇涡蜓h(huán)調(diào)節(jié),每按兩下K2鍵切換到調(diào)節(jié)相應(yīng)顯示,此時每按下K3鍵兩次,對應(yīng)顯示加1;當(dāng)切換到定時調(diào)節(jié)時,每按兩下K3鍵,定時的分鐘加1,此時按兩下K4鍵,切換到定時小時調(diào)節(jié),每按兩下K3鍵,定時的小時加1.按鍵ZHENG和NAO為整點(diǎn)報時和定時鬧鐘的使能端(低電平有效)。

3軟件設(shè)計

軟件設(shè)計分為秒分時、年月日、按鍵調(diào)整、控制顯示、鬧鐘等幾大模塊。設(shè)計好各子模塊,然后在原理圖編輯窗口創(chuàng)建頂層原理圖文件shuzirili.bdf,將各子模塊按照邏輯關(guān)系連接起來得到數(shù)字日歷電路核心部分的原理圖。下面對各子模塊設(shè)計及仿真進(jìn)行介紹。

3.1時分秒模塊

分和秒都是60進(jìn)制的計數(shù)器,小時則是24進(jìn)制的計數(shù)器,先對各個子模塊進(jìn)行設(shè)計編譯,驗證無誤后再將其組織到一起。外部時鐘信號通過秒模塊的clk輸入,產(chǎn)生的進(jìn)位信號輸送到分模塊的clk,分模塊產(chǎn)生的進(jìn)位信號輸送到小時模塊的clk,構(gòu)成時分秒模塊。其結(jié)構(gòu)圖如圖2所示。

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖2時分秒原理圖

3.2星期模塊

星期模塊為七進(jìn)制計數(shù)器。其計數(shù)時鐘信號來自于調(diào)時電路產(chǎn)生的星期進(jìn)位脈沖信號,計數(shù)至6瞬間,計星期模塊返回0重新開始計數(shù)。

3.3年月日模塊

年月日模塊有daycounter模塊、days-control模塊、monthcounter模塊、yearcounter模塊組成,具有大小月判斷和閏年判斷功能,其結(jié)構(gòu)圖如圖3所示。

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖3年月日連接框圖

下面以年月日模塊為例,連接好之后進(jìn)行編譯并仿真,閏/平年的2月仿真結(jié)果如圖4,圖5所示,年進(jìn)位如圖6所示。

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖4仿真結(jié)果(2008年2月)

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖5仿真結(jié)果(2005年2月)

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖6仿真結(jié)果(2004年12月)

年月日模塊計數(shù)設(shè)定為2000年~2999年,從圖4中可以看出2008年2月,計數(shù)到29天;從圖5得到2005年2月計數(shù)到28天;從圖6看出2004年12月計數(shù)到31天,設(shè)計正確。

3.4定時模塊

定時模塊通過按鍵K4來切換調(diào)節(jié)定時的分鐘和小時,調(diào)整功能由調(diào)時模塊的按鍵K3來完成,每按兩下K3對應(yīng)的顯示加1.

3.5調(diào)時模塊

調(diào)時模塊設(shè)計思想是:通過把整個設(shè)計中的上一個模塊(比如:分的上一個模塊是秒;年的上一個模塊是月,等等)的進(jìn)位輸出接到本模塊的輸入in,out接到下一個模塊的時鐘輸入。正常狀態(tài)下sout=fin,fout=hin,hout=din,dout=min,mout=yin,win=hout;當(dāng)每按下兩次K2鍵,產(chǎn)生一個上升沿分別對fin,hin,win,din,min,yin,dingshi調(diào)節(jié),調(diào)節(jié)信號由K3給出。其中定義一個信號w,計數(shù)到7返0,對應(yīng)正常狀態(tài),fin,hin,win,din,min,yin,dingshi 7個狀態(tài)。

當(dāng)K2每來一個上升沿時,分別對分,時,星期,天,月,年以及定時調(diào)整,調(diào)整信號由K3給出,經(jīng)仿真調(diào)時模塊結(jié)果與系統(tǒng)設(shè)計要求符合。

3.6控制模塊

控制模塊通過K1按鍵進(jìn)行切換顯示調(diào)整,起初顯示年月日,按下2次K1顯示時間,再按下2次顯示定時時間。

若仿真參數(shù)設(shè)置數(shù)值為:2013年05月15日,星期三,15:28(33 s),定時為07:19.仿真后結(jié)果如圖7所示。

從圖7可以看出,通過K1按鍵控制顯示,開始顯示年月日:20130515,當(dāng)按下K1兩下,顯示星期+時間:03152833;再按兩下顯示定時時間:00000719.仿真結(jié)果與預(yù)期設(shè)計一致,設(shè)計正確。

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖7仿真結(jié)果

3.7鬧鐘模塊

鬧鐘模塊設(shè)計為當(dāng)定時時間到或者整點(diǎn)時鬧鈴響,分別有ZHENG,NAO兩個控制端子控制,低電平有效。經(jīng)驗證,定時和整點(diǎn)報時仿真結(jié)果均符合設(shè)計要求。

3.8頂層模塊

將各個子模塊設(shè)計好之后,并創(chuàng)建各自文件的圖元,以供原理圖設(shè)計文件中調(diào)用。然后在原理圖編輯窗口創(chuàng)建頂層原理圖文件shuzirili.bdf,即將各圖元的引線端子按照邏輯關(guān)系連接起來,得到如圖8所示的完整原理圖,也即頂層模塊。

對頂層文件分別進(jìn)行時間、日期、鬧鈴功能的波形仿真,得到的仿真結(jié)果和預(yù)想設(shè)計一致,表明設(shè)計正確。

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖8頂層原理圖

4硬件驗證

在QuartusⅡ開發(fā)環(huán)境中完成上述軟件設(shè)計及仿真后,最后還需將程序下載到FPGA器件中進(jìn)行硬件測試,以進(jìn)一步驗證所設(shè)計程序是否正確。硬件驗證時,還需對頂層文件進(jìn)行管腳分配、并編譯,然后將編譯好的目標(biāo)文件通過下載電纜下載到FPGA開發(fā)板中進(jìn)行驗證和調(diào)試。

采用GW48-SPOC/EDA實驗開發(fā)系統(tǒng)并設(shè)置在工作模式0來驗證設(shè)計結(jié)果。下面僅給出部分驗證結(jié)果。剛完成下載,數(shù)碼管顯示20000000,按兩下K1切換到時間顯示,才剛剛開始計數(shù),同時揚(yáng)聲器發(fā)出“滴答滴答”的頻率為1 Hz的響聲(為整點(diǎn)報時)60 s,然后通過按鍵8(K1)、鍵7(K2)、鍵6(K3)、鍵5(K4)對各個功能進(jìn)行驗證。首先調(diào)整時間,按兩下K2鍵切換到分的調(diào)整,此時每按兩下K3鍵,分鐘加1,驗證過程中看到加到59就變?yōu)?0;再按兩下K2鍵切換到小時的調(diào)整,此時每按兩下K3鍵,分鐘加1;用同樣的方法調(diào)整星期,天,月,年以及定時的分鐘和小時。

調(diào)整日期為2013年7月31號,當(dāng)再調(diào)整天時,就變?yōu)?013年7月1號,結(jié)果如圖9所示。其他月份實驗結(jié)果也符合生活規(guī)律,與設(shè)計要求一致。

其他的測試結(jié)果,數(shù)碼管能夠正確顯示計時時間,定時驗證及時間調(diào)節(jié)、整點(diǎn)報時均能夠正常工作,實驗結(jié)果符合設(shè)計要求。

利用VHDL語言與FPGA器件設(shè)計數(shù)字日歷

圖9實際電路驗證

5結(jié)語

本文基于FPGA環(huán)境設(shè)計了一個具有年、月、日、星期、時、分、秒計時顯示功能,時間調(diào)整功能和整點(diǎn)報時功能的數(shù)字日歷系統(tǒng),并將之下載到FPGA芯片EP1C3T144-3上進(jìn)行結(jié)果驗證,實驗驗證表明:數(shù)碼管能夠正確顯示計時時間,能夠通過按鍵調(diào)整時間,能夠設(shè)定時間并調(diào)整,整點(diǎn)報時能夠正常工作,實驗結(jié)果符合設(shè)計要求。由于設(shè)計中利用硬件描述語言和FPGA芯片相結(jié)合進(jìn)行數(shù)字日歷的研究,即利用EDA技術(shù)在一定程度上實現(xiàn)了硬件設(shè)計軟件化,使設(shè)計過程變得相對簡單,易于修改。

另外,隨著電子技術(shù)的發(fā)展,數(shù)字日歷的功能會更加多樣化,諸如增加農(nóng)歷顯示;加入溫度采集系統(tǒng),能夠顯示每時每刻的環(huán)境溫度;加入節(jié)氣、節(jié)日提醒及顯示功能,提醒人們農(nóng)耕及休息時間;還可以加入語音識別,方便人們不動手實現(xiàn)對數(shù)字日歷的調(diào)節(jié)等等。相信功能日趨完善多樣化的數(shù)字日歷將能更好地滿足人們的各種需要,為人類服務(wù)。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1621

    文章

    21515

    瀏覽量

    599182
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49689

    瀏覽量

    417423
  • vhdl
    +關(guān)注

    關(guān)注

    30

    文章

    816

    瀏覽量

    127957
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA畢業(yè)論文選題大全

      基于VHDL語言數(shù)字鐘系統(tǒng)設(shè)計  基于FPGA的交通燈控制  采用可編程器件(FPGA/C
    發(fā)表于 02-10 10:40

    FPGAVHDL有哪些優(yōu)點(diǎn)?怎么理解VHDL?

    VHDL 主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL語言形式、描述風(fēng)格和句法上與一般的計算機(jī)高級
    發(fā)表于 09-07 09:04

    基于CPLD和FPGAVHDL語言電路優(yōu)化設(shè)計

    成為描述、驗證和設(shè)計數(shù)字系統(tǒng)中最重要的標(biāo)準(zhǔn)語言之一。由于VHDL在語法和風(fēng)格上類似于高級編程語言,可讀性好,描述能力強(qiáng),設(shè)計方法靈活,可移植性強(qiáng),因此它已成為廣大EDA工程師的首選。目
    發(fā)表于 06-18 07:45

    怎么設(shè)計優(yōu)化VHDL語言電路?

    可編程邏輯器件(PLD)的發(fā)展而發(fā)展起來的。它是一種面向設(shè)計、多層次的硬件描述語言,是集行為描述、RTL描述、門級描述功能為一體的語言,并已成為描述、驗證和設(shè)計數(shù)字系統(tǒng)中最重要的標(biāo)準(zhǔn)
    發(fā)表于 08-08 07:08

    怎么利用CPLD/FPGAVHDL語言優(yōu)化電路?

    (PLD)的發(fā)展而發(fā)展起來的。它是一種面向設(shè)計、多層次的硬件描述語言,是集行為描述、RTL描述、門級描述功能為一體的語言,并已成為描述、驗證和設(shè)計數(shù)字系統(tǒng)中最重要的標(biāo)準(zhǔn)語言之一。由于
    發(fā)表于 08-28 08:05

    如何利用VHDL語言實現(xiàn)FPGA與單片機(jī)的串口異步通信電路?

    本文介紹利用VHDL語言實現(xiàn) FPGA與單片機(jī)的串口異步通信電路。
    發(fā)表于 04-29 06:34

    如何利用FPGAVHDL語言實現(xiàn)PCM碼的解調(diào)?

    利用現(xiàn)場可編程門陣列(FPGA)和VHDL 語言實現(xiàn)了PCM碼的解調(diào),這樣在不改變硬件電路的情況下,能夠適應(yīng)PCM碼傳輸速率和幀結(jié)構(gòu)變化,從而正確解調(diào)數(shù)據(jù)。
    發(fā)表于 05-07 06:58

    淺析嵌入式FPGA與HDL硬件描述語言

    )領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。HDL硬件描述語言(HDL)是一種用來設(shè)計數(shù)字邏輯系統(tǒng)和描述數(shù)字電路的
    發(fā)表于 12-22 07:39

    VHDL硬件描述語言數(shù)字邏輯電路設(shè)計

    VHDL硬件描述語言數(shù)字邏輯電路設(shè)計:本書系統(tǒng)地介紹了一種硬件描述語言,即VHDL語言設(shè)
    發(fā)表于 02-06 16:55 ?363次下載

    VHDL語言FPGA/CPLD開發(fā)中的應(yīng)用?

    【摘 要】 通過設(shè)計實例詳細(xì)介紹了用VHDL(VHSIC Hardware DescriptionLanguage)語言開發(fā)FPGA/CPLD的方法,以及與電路圖輸入和其它HDL語言
    發(fā)表于 05-10 19:47 ?1154次閱讀
    <b class='flag-5'>VHDL</b><b class='flag-5'>語言</b>在<b class='flag-5'>FPGA</b>/CPLD開發(fā)中的應(yīng)用?

    采用CPLD/FPGAVHDL語言電路優(yōu)化原理設(shè)計

    采用CPLD/FPGAVHDL語言電路優(yōu)化原理設(shè)計 VHDL(Very High Speed Integrated Circuit Hardware Description Lan
    發(fā)表于 03-19 11:38 ?2431次閱讀
    采用CPLD/<b class='flag-5'>FPGA</b>的<b class='flag-5'>VHDL</b><b class='flag-5'>語言</b>電路優(yōu)化原理設(shè)計

    基于CPLD的VHDL語言數(shù)字鐘(含秒表)設(shè)計

    利用一塊芯片完成除時鐘源、按鍵、揚(yáng)聲器和顯示器(數(shù)碼管)之外的所有數(shù)字電路功能。所有數(shù)字邏輯功能都在CPLD器件上用VHDL
    發(fā)表于 09-27 15:08 ?366次下載
    基于CPLD的<b class='flag-5'>VHDL</b><b class='flag-5'>語言</b><b class='flag-5'>數(shù)字</b>鐘(含秒表)設(shè)計

    基于Xilinx FPGAVHDL數(shù)字秒表設(shè)計與仿真實現(xiàn)

    文中著重介紹了一種基于FPGA利用VHDL硬件描述語言數(shù)字秒表設(shè)計方法,在設(shè)計過程中使用基于VHDL
    發(fā)表于 12-25 11:19 ?6453次閱讀

    基于FPGA數(shù)字跑表的設(shè)計

    基于FPGA數(shù)字跑表的設(shè)計 VHDL語言
    發(fā)表于 10-30 10:39 ?25次下載

    基于VHDL語言FPGA開發(fā)板實現(xiàn)數(shù)字秒表的設(shè)計

    應(yīng)用VHDL語言設(shè)計數(shù)字系統(tǒng),很多設(shè)計工作可以在計算機(jī)上完成,從而縮短了系統(tǒng)的開發(fā)時間,提高了工作效率。本文介紹一種以FPGA為核心,以VHDL
    的頭像 發(fā)表于 07-24 08:05 ?3829次閱讀
    基于<b class='flag-5'>VHDL</b><b class='flag-5'>語言</b>和<b class='flag-5'>FPGA</b>開發(fā)板實現(xiàn)<b class='flag-5'>數(shù)字</b>秒表的設(shè)計