萬軍華,劉瑞通
(1.湖南理工學(xué)院 信息與通信工程學(xué)院,湖南 岳陽 414006;2.西南交通大學(xué) 電氣工程學(xué)院,成都 610031)
基于VHDL的多功能數(shù)字鬧鐘設(shè)計
萬軍華1,劉瑞通2
(1.湖南理工學(xué)院 信息與通信工程學(xué)院,湖南 岳陽 414006;2.西南交通大學(xué) 電氣工程學(xué)院,成都 610031)
針對多功能數(shù)字鬧鐘的設(shè)計提出了三種可行性設(shè)計方案,并對這些方案的優(yōu)缺點(diǎn)進(jìn)行了比較論證,在充分考慮各種方案優(yōu)缺點(diǎn)的前提下,選擇利用FPGA芯片來設(shè)計多功能數(shù)字鬧鐘.本設(shè)計選用可編程器件FPGA采用硬件描述語言VHDL按照自頂向下的設(shè)計方法設(shè)計了數(shù)字鬧鐘的各個模塊,并對各個功能模塊進(jìn)行了軟件仿真.
VHDL;FPGA;數(shù)字鬧鐘;狀態(tài)機(jī);電子琴
隨著電子技術(shù)的發(fā)展,特別是大規(guī)模集成電路的研制和發(fā)展,電子電路的設(shè)計變得越來越復(fù)雜,這使得采用了“自頂向下”設(shè)計思想的EDA解決方案得到了廣泛的應(yīng)用,從而極大地提高了設(shè)計效率,縮短了產(chǎn)品的研制周期.再加上其采用硬件描述語言作為輸入、庫的引入、設(shè)計文檔管理、強(qiáng)大的電路仿真功能和知識產(chǎn)權(quán)的保護(hù)等優(yōu)點(diǎn)[1],使其在現(xiàn)在大規(guī)模電子設(shè)計中得到了廣泛的應(yīng)用.
硬件描述語言VHDL是EDA的重要組成部分,VHDL語言具有很強(qiáng)的電路描述和建模能力、與具體硬件電路無關(guān)和與設(shè)計平臺無關(guān)的特性,以及良好的電路行為描述和系統(tǒng)描述能力.
針對現(xiàn)代社會生活對時間觀念越來越重視和對生活質(zhì)量要求越來越高的現(xiàn)狀,本文設(shè)計了一種以FPGA為核心、以Xilinx公司的ISE為開發(fā)工具、以VHDL為硬件描述語言的多功能數(shù)字鬧鐘.
能滿足多功能數(shù)字鬧鐘設(shè)計要求的設(shè)計方案有以下三種.
方案一:利用純數(shù)字芯片實現(xiàn)數(shù)字鬧鐘的設(shè)計
采用外部6MHz晶振作為脈沖源,然后由14位分頻器CD4060和計數(shù)器74HC190進(jìn)行分頻得到1Hz的時鐘.然后由6個十進(jìn)制計數(shù)器74HC190來分別完成時、分、秒位的BCD碼計數(shù).用8個四線—七段鎖存譯碼器/驅(qū)動器CD4511實現(xiàn)七段數(shù)碼管的編碼、驅(qū)動,使用LED顯示時分秒.其定時功能由8位數(shù)值比較器74HC688完成時、分位的比較,然后驅(qū)動蜂鳴器.
方案二:利用AT89S52單片機(jī)實現(xiàn)數(shù)字鬧鐘的設(shè)計
利用單片機(jī)內(nèi)部的定時/計數(shù)器進(jìn)行中斷定時,配合軟件延時實現(xiàn)對時、分、秒的計時.在上電后系統(tǒng)自動進(jìn)入時間顯示,通過按下時間設(shè)定/啟動計時鍵,系統(tǒng)停止計時,進(jìn)入時間設(shè)定狀態(tài),系統(tǒng)保持原有的顯示,等待鍵入當(dāng)前時間,根據(jù)需要按相應(yīng)的數(shù)字鍵可以順序設(shè)置時、分、秒,并在LED上顯示設(shè)置值,設(shè)置完畢后,系統(tǒng)將從設(shè)定后的時間開始計時顯示;當(dāng)按下鬧鐘鍵時,進(jìn)入鬧鐘模式,到設(shè)定時間時蜂鳴器鳴響.
方案三:利用FPGA芯片實現(xiàn)多功能數(shù)字鬧鐘的設(shè)計
利用FPGA精度高、處理速度快的特點(diǎn),利用外部50M石英晶振提供高精度系統(tǒng)頻率,經(jīng)分頻得到所需要的不同頻率時鐘,利用軟件消除按鍵抖動,分別設(shè)計了百分之一秒、秒、分和時計時,分、時調(diào)時,整點(diǎn)報時和鬧鈴等功能,鬧鈴的鈴聲有不同選擇,由軟件直接控制、編碼的顯示功能.
綜上所述,第一種方案,全由數(shù)字芯片構(gòu)成,芯片數(shù)目比較大,外圍電路比較復(fù)雜,給設(shè)計和制作帶來很多不便,并且容易出現(xiàn)電路不穩(wěn)定、精度低、開發(fā)周期長等問題;第二種方案,外圍電路比較簡單,利用單片機(jī)的內(nèi)部定時器完成計時功能,但其精度不是很高.第三種方案,外圍電路比較簡單,精度較高,能夠滿足更高精度的要求,并且設(shè)計比較人性化.
本文采用第三種方案設(shè)計了多功能、人性化、精度高、外圍電路簡單的多功能數(shù)字鬧鐘.
本設(shè)計選用可編程器件FPGA采用硬件描述語言VHDL按照自頂向下的設(shè)計方法設(shè)計了多功能數(shù)字鬧鐘.該數(shù)字電子鬧鐘主要包括時鐘分頻、消除抖動、百分之一秒計時、秒計時、分計時?分設(shè)置、時計時?時設(shè)置、顯示選擇控制、總控制、設(shè)定時間比較、鬧鐘鈴聲和顯示輸出等11個模塊.圖1為此系統(tǒng)的設(shè)計頂層文件方框圖.
圖1 頂層文件方框圖
在復(fù)位信號Reset有效時,計時和調(diào)時的所有位都復(fù)位.當(dāng)復(fù)位信號Reset無效、顯示選擇信號Choose為低時,進(jìn)入正常計時模式,由分頻器產(chǎn)生的100Hz頻率的信號作為百分之一秒計時的時鐘信號進(jìn)入正常計時狀態(tài),百分之一秒采用100進(jìn)制的BCD碼計數(shù),當(dāng)計數(shù)到99后,再來一個計時脈沖,此位變成0并向秒位輸出一個計時脈沖;秒計時采用60進(jìn)制的BCD碼計數(shù),當(dāng)計數(shù)到59后,再來一個計時脈沖,此位變成0并向分計時輸出一個計時脈沖;分計時也采用60進(jìn)制的BCD碼計數(shù),與秒計時的工作方式一樣;時計時采用24進(jìn)制的BCD碼計數(shù),當(dāng)計數(shù)到23時,再來一個脈沖則變成0.用選擇鍵信號En分別選擇調(diào)時和調(diào)分的位,被選中調(diào)整位閃爍,通過加一鍵Add來調(diào)整此位的值.當(dāng)選擇信號Choose為高時,進(jìn)入定時模式,數(shù)碼管只顯示時、分定時位,也是通過選擇信號En選擇相應(yīng)的定時位,加一鍵Add來調(diào)整相應(yīng)的值.當(dāng)定時時間和計時時間相同時,Bell根據(jù)音節(jié)頻率的不同輸出一分鐘悅耳音樂;當(dāng)整點(diǎn)時輸出整點(diǎn)報時音樂.
設(shè)計采用了外部 50MHz石英晶振作為頻率源,提高了時鐘的精確度;采用電子琴樂曲設(shè)計方法設(shè)計鈴聲,給人以悅耳的鬧鈴和整點(diǎn)報時鈴聲;在設(shè)置和調(diào)整時間時,采用相應(yīng)位閃爍技術(shù),使用戶方便操作.
由于彈性作用的影響,按鍵的機(jī)械觸點(diǎn)在閉合及斷開的瞬間都會有抖動的現(xiàn)象,即不能馬上實現(xiàn)按鍵的完全閉合或斷開,從而使輸入電壓信號也出現(xiàn)抖動現(xiàn)象,抖動時間的長短由按鍵的機(jī)械性決定,一般為5~ 10mS[2].
本設(shè)計中采用對按鍵輸入信號 din延時計數(shù)10mS后,如果按鍵仍被按下,則判斷為有效按鍵;否則此信號為無效信號.其流程圖如圖2所示.
圖2 消除抖動模塊流程圖
此模塊主要實現(xiàn)分計時、分調(diào)整和分設(shè)定的功能.分計時功能是實現(xiàn)對正常時間分位的計時,并產(chǎn)生時計時信號;分調(diào)整功能是校正數(shù)字鬧鐘分位;分設(shè)定功能是鬧鐘分位數(shù)值的設(shè)定,它通過調(diào)時/定時信號鍵Choose和分選擇信號min選中,然后通過加1信號鍵Add對分位進(jìn)行調(diào)整.
當(dāng)復(fù)位信號 Result為“1”時即復(fù)位信號有效,minute、minute_set復(fù)位;而Result為“0”時,如果調(diào)分信號min和選擇信號Choose同時為“1”時,通過加1鍵Add對鬧鐘分位minute_set進(jìn)行手動設(shè)定;當(dāng)調(diào)分信號min為“1”且選擇信號Choose為“0”時,實現(xiàn)對計時分位 minute調(diào)整;當(dāng)調(diào)分信號 min為“0”時,進(jìn)入正常計時狀態(tài).此模塊的計數(shù)采用了十進(jìn)制計數(shù),并且把個位和十位的數(shù)字分別采用BCD碼計數(shù),方便用LED顯示.
此模塊把計時、定時和調(diào)時三大功能放在一個模塊中實現(xiàn),簡化了程序,也減少了整個系統(tǒng)的模塊個數(shù),使整個系統(tǒng)的設(shè)計更加簡單、方便.但此模塊的程序整體來看比較難理解,并且不太容易分析.其流程圖如圖3所示.
圖3 分計時-分設(shè)置模塊流程圖
此模塊用狀態(tài)機(jī)[3]實現(xiàn)控制LED顯示的數(shù)據(jù)和位置.當(dāng)選擇信號Choose為“1”時,進(jìn)入定時顯示模式,根據(jù)min、hou和clk2信號來選擇顯示的數(shù)據(jù)和位置,并確定下一個狀態(tài);當(dāng)選擇信號Choose為“0”時進(jìn)入計時顯示模式.此模塊也是實現(xiàn)對相應(yīng)調(diào)整位閃爍的重要控制模塊,在顯示閃爍信號和閃爍時鐘信號都有效時,此位閃爍顯示;閃爍時鐘無效時此位不顯示.控制模塊的狀態(tài)圖如圖4所示.
圖4 控制模塊狀態(tài)圖
此模塊是根據(jù)八音符電子琴自動演奏樂曲設(shè)計的.八音符電子琴系統(tǒng)[4,5]由數(shù)控分頻器和樂曲存儲模塊組成.數(shù)控分頻器對FPGA的基準(zhǔn)頻率進(jìn)行分頻,得到與各個音節(jié)對應(yīng)的頻率輸出.樂曲存儲模塊產(chǎn)生節(jié)拍控制和音階選擇信號,即在此模塊中可存放多個樂曲曲譜真值表,有一個計數(shù)器來控制相應(yīng)真值表的輸出,由計數(shù)器的計數(shù)時鐘信號作為樂曲節(jié)拍控制信號.
數(shù)控分頻模塊對時基脈沖進(jìn)行分頻,得到與1、2、3、4、5、6、7七個音符對應(yīng)的頻率.
音調(diào)發(fā)生器的作用是產(chǎn)生獲得音階的分頻預(yù)置值.當(dāng)8位發(fā)聲控制輸入信號index中的某一位為高電平時,則對應(yīng)某一音階數(shù)值將在端口tone輸出,該數(shù)值即為該音階的分頻預(yù)置值,分頻預(yù)置值控制數(shù)控分頻器來對4MHz的脈沖進(jìn)行分頻,由此可得到每個音階對應(yīng)的頻率.
音樂存儲模塊的作用是產(chǎn)生8位發(fā)聲控制輸入index.由存儲在此模塊中的8位二進(jìn)制數(shù)作為發(fā)聲控制輸入,可自動演奏樂曲.
由于本設(shè)計中加入了鬧鐘鈴聲和整點(diǎn)報時模塊,在鬧鈴時能夠發(fā)出比較委婉的音樂,能夠使使用者生活在一個相對和諧的環(huán)境中,和悅的音樂作為鬧鐘的鈴聲也使剛從睡夢中醒來的使用者不被驚嚇,并且很容易從睡夢中清醒去處理自己的事情.其流程圖如圖5和圖6所示.
圖5 樂曲模塊流程圖
圖6 數(shù)控分頻器模塊流程圖
本設(shè)計的軟件仿真采用了Xilinx公司ISE軟件上的Simulation,對各個功能模塊進(jìn)行了波形時序的仿真,經(jīng)過分析各個模塊時序都是準(zhǔn)確的.下面是典型模塊的仿真圖:
圖7 消除抖動仿真波形圖
圖8 分計時-分設(shè)置仿真波形圖
圖9 控制功能仿真波形圖
本文采用硬件描述語言VHDL編寫、利用Xilinx公司的ISE仿真軟件開發(fā)實現(xiàn)多功能數(shù)字鬧鐘各個模塊的功能,提出了一種方便實用的多功能數(shù)字鬧鐘設(shè)計方案.整個系統(tǒng)的程序下載到硬件中,經(jīng)測試所有的設(shè)計功能都能實現(xiàn).
[1]潘 松,黃繼業(yè).EDA技術(shù)實用教程[M].北京:科學(xué)出版社,2006:7~10
[2]趙全利,肖興達(dá).單片機(jī)原理與應(yīng)用教程[M].北京:機(jī)械出版社,2004:162~163
[3]邱玉娟.基于FPGA的數(shù)顯測溫系統(tǒng)的設(shè)計[J].自動化技術(shù)應(yīng)用,2008,27:93~95
[4]張 亮,羅小巧,董繼承.基于FPGA的樂曲演奏器的設(shè)計[J].電子技術(shù),2007,(09):101~102
[5]熊 杰,彭 力,薛德恒,等.簡易電子琴設(shè)計[J].企業(yè)技術(shù)開發(fā),2009,(05):33
Design of Multifunctional Digital Clock Based on VHDL
WAN Jun-hua1, LIU Rui-tong2
(1.College of Information and Communication Engineering,Hunan Institute of Science and Technology,Yueyang 414006,China;2.School of Electrical Engineering,Southwest Jiaotong University,Chengdu 610031,China)
Three feasible proposals are given aiming at the design of multifunctional digital clock and the strong and weak points among the proposals are compared.And then,taking all kinds of strong and weak points into consideration,the multifunctional digital electronic clock is designed by using FPGA.The modules of the digital electronic clock are designed using programmable device FPGA and hardware description language VHDL in accordance with the method of top-down design,and each module are simulated with software.
VHDL;FPGA;digital clock;state machine;electronic organ
TP271
A
1672-5298(2011)01-0067-05
2010-11-03
萬軍華(1969? ),男,湖南岳陽人,湖南理工學(xué)院信息與通信工程學(xué)院高級實驗師.主要研究方向:控制工程