張穎



摘 要:以自頂向下的模塊化方法進行數(shù)字鐘系統(tǒng)設(shè)計,采用VHDL語言編寫各功能模塊,原理圖作為頂層文件的方式,在Quartus II集成開發(fā)環(huán)境里進行編譯、仿真、綜合,最后在線下載到實驗箱進行調(diào)試,調(diào)試結(jié)果表明:數(shù)字鐘的時間顯示、調(diào)時和鬧鐘功能均可實現(xiàn)。
關(guān)鍵詞:EDA技術(shù);VHDL;自頂向下;數(shù)字鐘
引言
隨著可編程邏輯器件應(yīng)用的日益廣泛,以大規(guī)模可編程集成電路為物質(zhì)基礎(chǔ)的EDA技術(shù)打破了軟硬件之間的設(shè)計界限,使硬件系統(tǒng)軟件化,這已成為現(xiàn)代電子設(shè)計技術(shù)的發(fā)展趨勢。[1]VHDL(超高速集成電路硬件描述語言)作為一種常用的數(shù)字系統(tǒng)設(shè)計輸入方式,語法結(jié)構(gòu)嚴(yán)謹(jǐn),描述功能強大,可用簡潔明了的代碼描述復(fù)雜的邏輯電路設(shè)計。而且VHDL語言支持從系統(tǒng)級到門級所有層次的設(shè)計,支持自頂向下的模塊化設(shè)計方法,在電子設(shè)計領(lǐng)域,已被廣泛使用。本文詳述使用VHDL語言實現(xiàn)對數(shù)字鐘的層次化設(shè)計,將文本編輯和圖形編輯兩種方式混合使用[2],實現(xiàn)數(shù)字鐘計時、調(diào)時和鬧鐘功能。
1 系統(tǒng)總體設(shè)計
設(shè)計數(shù)字時鐘要求實現(xiàn)以下功能:(1)能顯示時、分、秒;(2)可手動調(diào)整時和分;(3)具有鬧鐘功能,可設(shè)定時間并且到時提醒。根據(jù)系統(tǒng)的功能,采用自頂向下的模塊化設(shè)計方法,以VHDL語言描述底層模塊硬件功能,原理圖做頂層文件的方式進行設(shè)計。根據(jù)數(shù)字鐘的功能要求,可以把系統(tǒng)大體分為三部分:計時部分、鬧鐘部分和顯示部分。計時部分的主體是3個級聯(lián)的異步計數(shù)器,計數(shù)并輸出結(jié)果。其中秒、分計數(shù)模塊分別由60進制計數(shù)器組成,時計數(shù)模塊由24進制計數(shù)器組成,且上一級計數(shù)器的進位輸出信號作為下一級的時鐘脈沖輸入。為了實現(xiàn)調(diào)時調(diào)分功能,則分別在秒、分計數(shù)模塊外部增加調(diào)分調(diào)時控制端和調(diào)時信號脈沖輸入端。鬧鐘模塊則要求具有鬧鐘功能控制端,若控制端有效,模塊可以手動調(diào)整鬧鐘時間;反之,則進行正常的計時功能。而且當(dāng)鬧鐘時間與正常時間相同時,可以發(fā)出提醒信號[3]。顯示部分則要通過動態(tài)掃描的方法將計數(shù)器的輸出送到數(shù)碼管上來顯示,由選擇模塊和數(shù)碼管顯示模塊組成。
2 底層模塊的設(shè)計與實現(xiàn)
2.1 秒計數(shù)模塊(實體second)
秒計數(shù)模塊可以看成一個60進制的計數(shù)器,實現(xiàn)正常的計時和調(diào)分功能。此模塊與分計數(shù)模塊進行級聯(lián),其進位輸出信號enmin作為下一級分計數(shù)模塊的時鐘輸入,即秒計數(shù)器計數(shù)到59時,enmin端輸出單個脈沖,此時分計數(shù)器加一計數(shù)。
當(dāng)復(fù)位端clr有效時,計數(shù)器復(fù)位清零;當(dāng)clr無效時,如果調(diào)分控制端setmin有效,計數(shù)器則進入調(diào)分狀態(tài),進位輸出端enmin不再輸出計數(shù)器的計數(shù)結(jié)果,而是輸出手動調(diào)分信號minin(minin輸入端為手動控制的脈沖信號),通過使下一級分計數(shù)模塊以minin脈沖信號的頻率快速計數(shù)來完成調(diào)分功能;如果setmin無效,則計數(shù)器處于正常計時狀態(tài),從00計數(shù)到59并輸出進位信號。硬件功能描述時通過多個if語句的嵌套使用來實現(xiàn),根據(jù)時鐘信號clk的輸入按照流程圖所示依次循環(huán)。過程中采用十進制計數(shù),并且用BCD碼來表示個位和十位數(shù)字,使其易于理解也方便數(shù)碼管的顯示。設(shè)計流程如圖1(a)所示,生成的邏輯符號如圖1(b)所示。
2.2 分計數(shù)模塊(實體minute)
分計數(shù)模塊實質(zhì)上與秒計數(shù)模塊相同,也是一個60進制的計數(shù)器,可實現(xiàn)計時和調(diào)時功能。模塊與下一級時計數(shù)模塊級聯(lián),當(dāng)計數(shù)到59時,進位輸出端enhour輸出單位脈沖到時計數(shù)模塊的時鐘輸入端clkm,時計數(shù)模塊加一計數(shù)。其設(shè)計流程同秒計數(shù)模塊相似,調(diào)時功能也是通過調(diào)時端sethour來控制進位輸出端enhour輸出手動調(diào)時信號hourin,使時計數(shù)模塊快速計數(shù)到需要的時間。生成模塊的邏輯符號如圖2所示。
2.3 時計數(shù)模塊(實體hour)
時計數(shù)模塊是一個簡單的24進制計數(shù)器,其時鐘輸入信號是分計數(shù)模塊的進位輸出,不需要產(chǎn)生進位信號。模塊功能描述與分、秒計數(shù)模塊大同小異,但要注意此計數(shù)器是從00計數(shù)到23,所以需多加一個if語句使計數(shù)器計數(shù)到23后復(fù)位清零。邏輯符號如圖3所示。
2.4 鬧鐘模塊(實體naozhong)
此模塊通過3個進程語句,分別描述了手動設(shè)定鬧鐘時、分和到時提醒的功能。設(shè)定鬧鐘時間的設(shè)計思路與之前second模塊調(diào)分功能相似,也是控制計數(shù)器加一計數(shù)直到需要的時間為止。以鬧鐘調(diào)分為例,當(dāng)鬧鐘調(diào)分控制端setm有效時,進入鬧鐘定時模式,通過minnao端手動調(diào)分信號的輸入來設(shè)定鬧鐘時間,這里輸入的minnao信號與分計數(shù)模塊的時鐘輸入信號clk作用相同,控制計數(shù)器進行計數(shù),其過程與前面時、分、秒計數(shù)過程是分開的,二者互不影響;若setm端無效,輸出端outm、outh輸出時、分計數(shù)模塊的正常計數(shù)結(jié)果(即inm和inh的輸入)。而鬧鐘調(diào)時過程則需注意是從00計數(shù)到23,是24進制計數(shù)。設(shè)計流程如圖4(a)所示。第三個進程語句較為簡單,只需通過if語句來判斷設(shè)定的鬧鐘時間與正常的計數(shù)時間是否相同,若相同,則產(chǎn)生提醒信號。生成模塊邏輯符號如圖4(b)所示。
2.5 選擇模塊(實體select)和數(shù)碼管顯示模塊(實體display)
這兩個模塊實質(zhì)上是通過動態(tài)掃描的方法顯示時間。select模塊相當(dāng)于數(shù)據(jù)選擇器,在高頻率時鐘信號的作用下進行循環(huán)掃描,選擇顯示的數(shù)碼管以及對應(yīng)的時、分、秒的結(jié)果。display模塊則接受選擇信號,輪流向各位數(shù)碼管送出字形碼和相應(yīng)位選,使七段數(shù)碼管顯示所對應(yīng)的數(shù)字。此處的clk端必須輸入較高頻率的時鐘信號,利用發(fā)光管的余輝和人眼視覺暫留作用,使人感覺好像各位數(shù)碼管都在顯示[4]。模塊邏輯符號如圖5(a)(b)所示。
2.6 頂層設(shè)計原理圖
在各模塊編譯通過且仿真成果正確的基礎(chǔ)上,采用頂層原理圖的設(shè)計方法,系統(tǒng)頂層方框圖如圖6所示。在實驗中,還可在鬧鐘模塊的提醒信號輸出端sp后接一個簡單的電子琴模塊,當(dāng)sp信號產(chǎn)生時,鬧鐘定時與正常計時相同,此時控制電子琴模塊自動演奏樂曲作為鬧鐘鈴聲。
3 結(jié)束語
根據(jù)上述數(shù)字鐘設(shè)計實例,可以看出通過VHDL 語言實現(xiàn)電子設(shè)計,是一個以軟件設(shè)計為主,器件配置相結(jié)合的過程,能從多個層次對數(shù)字系統(tǒng)進行設(shè)計,設(shè)計數(shù)字電路更為靈活方便,設(shè)計周期也可大大減小,提高了設(shè)計效率和可靠性[5]。VHDL語言作為一種標(biāo)準(zhǔn)的硬件描述語言,具備強大的行為描述能力和移植復(fù)用能力,支持復(fù)雜電路設(shè)計的層次化分解和已有設(shè)計的移植再利用,已經(jīng)成為數(shù)字系統(tǒng)設(shè)計不可缺少的重要工具。
參考文獻
[1]李國麗,朱維勇,何劍春.EDA與數(shù)字系統(tǒng)設(shè)計[M].北京:機械工業(yè)出版社,2009.
[2]胡宏梅.基于VHDL語言的數(shù)字鐘層次化設(shè)計與實現(xiàn)[J].電氣自動化,2016(1).
[3]賴偉瑋,蘇靜怡.FPGA原理及應(yīng)用結(jié)課論文[D].東北大學(xué)秦皇島分校,2012.
[4]席玉清,陳化奎.兩位數(shù)碼管動態(tài)顯示編程常見問題分析[J].科技創(chuàng)新與應(yīng)用,2016(12).
[5]王彩鳳.VHDL語言在電子設(shè)計中的應(yīng)用[J].實驗科學(xué)與技術(shù),2014(4).