王喜喜 沈祖斌
摘 要:利用電子設(shè)計(jì)自動(dòng)化(EDA)的技術(shù)自頂向下的設(shè)計(jì)方法,設(shè)計(jì)可校時(shí)電子鐘各模塊及相應(yīng)具體電路,利用Quartus Prime軟件平臺(tái)對(duì)電路進(jìn)行設(shè)計(jì),設(shè)計(jì)包括對(duì)系統(tǒng)時(shí)鐘精確的分頻以及動(dòng)態(tài)刷新驅(qū)動(dòng)七段數(shù)碼管顯示,最后通過(guò)Quartus Prime軟件平臺(tái)編譯、仿真,并下載到EPM1270開(kāi)發(fā)板上。在開(kāi)發(fā)板上顯示“時(shí)”,“分”,“秒”,并可通過(guò)兩個(gè)功能鍵進(jìn)行校時(shí)。
關(guān)鍵詞:校時(shí);電子鐘;動(dòng)態(tài)刷新;分頻電路
中圖分類號(hào):TH714 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2018)19-0089-03
Abstract: Utilizing Electronic Design Automation (EDA) technology top-down design methodology, designing corrective electronic clock modules and corresponding specific circuits, using the Quartus Prime software platform to design the circuit, the design includes precise frequency division of the system clock and the dynamic display method is used to drive the seven-segment digital display, which is finally compiled and emulated by the Quartus Prime software and downloaded to the EPM1270 development board. The "hour", "minute", "second" are displayed on the Development Board and the time can be corrected by two function keys.
Keywords: correcting time; electronic clock; dynamic display; frequency divider
1 概述
在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了極大的靈活性。這些器件可以通過(guò)軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過(guò)程和設(shè)計(jì)觀念,促進(jìn)了EDA技術(shù)的迅速發(fā)展。
隨著現(xiàn)場(chǎng)可編程門陣列(field program mablegate array,F(xiàn)PGA)的出現(xiàn),電子系統(tǒng)向集成化、大規(guī)模和高速度等方向發(fā)展的趨勢(shì)更加明顯,作為可編程的集成度較高的 ASIC,可在芯片級(jí)實(shí)現(xiàn)任意數(shù)字邏輯電路,從而可以簡(jiǎn)化硬件電路,提高系統(tǒng)工作速度,縮短產(chǎn)品研發(fā)周期。故利用FPGA這一新的技術(shù)手段來(lái)研究電子鐘有重要的現(xiàn)實(shí)意義。
本設(shè)計(jì)使用EPM1270開(kāi)發(fā)板,利用Quartus Prime軟件設(shè)計(jì)的一個(gè)可校時(shí)電子鐘。
2 電子鐘功能描述
開(kāi)發(fā)板上八個(gè)并排的七段數(shù)碼管采用動(dòng)態(tài)刷新驅(qū)動(dòng)的方式分別用于顯示電子鐘的“十時(shí)”、“時(shí)”、“十分”、“分”、“十秒”、“秒”、“1/10秒”及“1/100秒”;校時(shí)功能模仿傳統(tǒng)手表校時(shí)方式,分別對(duì)“時(shí)”和“分”逐位校時(shí),對(duì)“秒”采用清零進(jìn)位(秒針小于30,清零時(shí)不進(jìn)位)的方式進(jìn)行校時(shí);功能按鍵采用開(kāi)發(fā)板上未經(jīng)去抖且常態(tài)為高電平的兩個(gè)按鍵。同時(shí),開(kāi)發(fā)板系統(tǒng)時(shí)鐘為50MHz有源晶振。
如圖1電子鐘工作說(shuō)明圖,其工作原理是:由系統(tǒng)提供的時(shí)鐘脈沖信號(hào)經(jīng)過(guò)分頻電路的分頻后,分別產(chǎn)生用于校時(shí)電路的去抖頻率、校時(shí)時(shí)使所校時(shí)數(shù)碼管閃爍的頻率、計(jì)時(shí)電路的計(jì)時(shí)頻率和數(shù)碼管動(dòng)態(tài)刷新驅(qū)動(dòng)的刷新頻率;計(jì)時(shí)電路的輸出通過(guò)刷新電路的刷新頻率分時(shí)輸入到七段顯示譯碼器,經(jīng)過(guò)譯碼器譯碼后送到七段數(shù)碼管上顯示,數(shù)碼管在刷新電路的作用下分時(shí)選擇數(shù)碼管,使得在同一時(shí)刻計(jì)時(shí)電路對(duì)應(yīng)的輸出顯示到對(duì)應(yīng)的數(shù)碼管上,即動(dòng)態(tài)刷新驅(qū)動(dòng)的顯示方式,采用這種顯示驅(qū)動(dòng)方式能有效節(jié)省I/O引腳的消耗。當(dāng)電路計(jì)時(shí)出現(xiàn)誤差時(shí),可以由校時(shí)電路通過(guò)兩個(gè)功能鍵分別對(duì)“時(shí)”、“分”、“秒”進(jìn)行校時(shí)。一個(gè)功能鍵進(jìn)行模式選擇,分別可選擇對(duì)時(shí)進(jìn)行逐位加一模式,對(duì)分進(jìn)行逐位加一模式,對(duì)秒、1/10秒、1/100秒清零模式,以及常態(tài)模式。在前三鐘模式的狀態(tài)下,所校時(shí)的數(shù)碼管閃爍。另外對(duì)秒的清零所采取的辦法是,滿30秒,清零的同時(shí)對(duì)分進(jìn)行加一。
3 電路設(shè)計(jì)
由于數(shù)碼管采用動(dòng)態(tài)刷新驅(qū)動(dòng)的方式需要合適的刷新頻率,再加上電子鐘的計(jì)時(shí)與校時(shí)功能分別需要對(duì)應(yīng)的時(shí)鐘頻率,則需要分頻模塊設(shè)計(jì)合適的電路對(duì)系統(tǒng)時(shí)鐘頻率進(jìn)行分頻處理;多個(gè)不同模的計(jì)數(shù)器需要經(jīng)過(guò)計(jì)時(shí)模塊合理的電路設(shè)計(jì),才能實(shí)現(xiàn)我們整個(gè)系統(tǒng)的計(jì)時(shí)功能;另外,計(jì)時(shí)模塊中各個(gè)計(jì)數(shù)器的輸出分別能送到對(duì)應(yīng)的七段數(shù)碼管上,以及八個(gè)數(shù)碼管能完成工作,即能實(shí)現(xiàn)動(dòng)態(tài)刷新都需要顯示模塊完成設(shè)計(jì)。最后,校時(shí)功能需要對(duì)按鍵進(jìn)行去抖處理以及對(duì)按鍵的功能設(shè)計(jì),則需要校時(shí)模塊進(jìn)行電路設(shè)計(jì);電路設(shè)計(jì)采用層次化結(jié)構(gòu),頂層電路設(shè)計(jì)可分為四個(gè)大模塊,分別為顯示模塊、計(jì)時(shí)模塊、分頻模塊和校時(shí)模塊組成。
如圖2所示,F(xiàn)RE32是一個(gè)可分別產(chǎn)生1/2,1/4,1/8...,1/231,1/232分頻的分頻電路,由clock輸入系統(tǒng)時(shí)鐘,由q[31..0]輸出分頻后的時(shí)鐘信號(hào);Time_Fre則是將系統(tǒng)時(shí)鐘分頻后,每10ms輸出一個(gè)高電平,其輸出作為計(jì)時(shí)模塊的控制信號(hào),每當(dāng)Time_Fre的輸出端EN_OUT為高電平時(shí),計(jì)時(shí)電路Counter_Time則才可響應(yīng)系統(tǒng)時(shí)鐘,其內(nèi)部的計(jì)數(shù)器才可計(jì)數(shù),即實(shí)現(xiàn)了每10ms計(jì)時(shí)電路的最低位,即1/100秒計(jì)數(shù)器計(jì)數(shù)一次;圖中FRE32和Time_Fre構(gòu)成了整個(gè)分頻模塊,提供整個(gè)系統(tǒng)需要的各種頻率的時(shí)鐘信號(hào);圖中counter8是一個(gè)模八計(jì)數(shù)器,輸入系統(tǒng)的1/217分頻后,其輸出的計(jì)數(shù)結(jié)果000->111,分別送到圖中的View來(lái)選擇對(duì)應(yīng)的數(shù)碼管,和Counter_Time來(lái)選擇計(jì)時(shí)電路中對(duì)應(yīng)的計(jì)數(shù)器的輸出,因此整個(gè)顯示電路由圖中counter8模八計(jì)數(shù)器、View以及7447譯碼器組成;圖中校時(shí)電路Control將功能按鍵進(jìn)行去抖處理后,模式選擇由Control的SEL_MODE_OUT[2..0]輸出送到View選擇對(duì)應(yīng)的數(shù)碼管閃爍,送到Counter_Time選擇要調(diào)節(jié)的計(jì)數(shù)器,而圖中CLK_USER_OUT則送到計(jì)時(shí)電路Counter_Time替代系統(tǒng)時(shí)鐘對(duì)計(jì)時(shí)電路進(jìn)行校時(shí)。
3.1 分頻模塊
分頻電路的功能是對(duì)系統(tǒng)產(chǎn)生的時(shí)鐘信號(hào)頻率進(jìn)行分頻處理,一方面產(chǎn)生用于計(jì)時(shí)模塊的精確計(jì)時(shí)頻率,另一方面產(chǎn)生用于顯示模塊動(dòng)態(tài)刷新驅(qū)動(dòng)數(shù)碼管的刷新頻率和用于校時(shí)的閃爍效果頻率以及校時(shí)模塊得的按鍵去抖的頻率。
由于計(jì)時(shí)電路時(shí)間精確到百分之一秒。要保證電子鐘的精確度,就需要利用實(shí)驗(yàn)板上的50MHz晶振源得到100Hz的時(shí)鐘脈沖。因此,用于計(jì)時(shí)模塊的分頻電路采用一個(gè)模500000的計(jì)數(shù)器,即每經(jīng)過(guò)50萬(wàn)個(gè)時(shí)鐘脈沖,其輸出端輸出一個(gè)高電平。此高電平作為計(jì)時(shí)電路的使能信號(hào),讓計(jì)時(shí)電路在系統(tǒng)時(shí)鐘下工作,即每經(jīng)過(guò)50萬(wàn)個(gè)系統(tǒng)時(shí)鐘,計(jì)時(shí)電路最低位計(jì)數(shù)一次(100Hz)。
3.2 計(jì)時(shí)模塊
計(jì)時(shí)模塊內(nèi)部電路總共由八個(gè)計(jì)數(shù)器,分別由五個(gè)模十計(jì)數(shù)器、兩個(gè)模六計(jì)數(shù)器和一個(gè)模三計(jì)數(shù)器組成。
其工作流程是:1/100秒計(jì)數(shù)器通過(guò)外部每10ms產(chǎn)生的一個(gè)使能信號(hào)使1/100秒計(jì)數(shù)器計(jì)數(shù)一次,1/100秒計(jì)數(shù)器每計(jì)滿10次產(chǎn)生一個(gè)使能信號(hào)使1/10秒計(jì)數(shù)器計(jì)數(shù)一次,1/10秒計(jì)數(shù)器每計(jì)數(shù)滿10次產(chǎn)生一個(gè)使能信號(hào)使秒計(jì)數(shù)器計(jì)數(shù)一次,秒計(jì)數(shù)器每計(jì)數(shù)滿10次產(chǎn)生一個(gè)使能信號(hào)使十秒計(jì)數(shù)器計(jì)數(shù)一次,十秒計(jì)數(shù)器每計(jì)數(shù)滿6次產(chǎn)生一個(gè)使能信號(hào)使分計(jì)數(shù)器計(jì)數(shù)一次,分計(jì)數(shù)器每計(jì)數(shù)滿10次產(chǎn)生一個(gè)使能信號(hào)使十分計(jì)數(shù)器計(jì)數(shù)一次,十分計(jì)數(shù)器每計(jì)數(shù)滿6次產(chǎn)生一個(gè)使能信號(hào)使時(shí)計(jì)數(shù)器計(jì)數(shù)一次,時(shí)計(jì)數(shù)器每計(jì)數(shù)滿10次或4次產(chǎn)生一個(gè)使能信號(hào)使十時(shí)計(jì)數(shù)器計(jì)數(shù)一次,十時(shí)計(jì)數(shù)器則每計(jì)數(shù)3次一個(gè)循環(huán)。
由于受到七段數(shù)碼管只能顯示一位十進(jìn)制數(shù)的限制,對(duì)于電子鐘的時(shí)分秒的顯示,其個(gè)位與十位要分別輸出顯示到七段數(shù)碼管上,并且對(duì)于小時(shí)的顯示更加特殊。由于小時(shí)每滿24小時(shí)一個(gè)循環(huán),其個(gè)位的進(jìn)制會(huì)因?yàn)槭坏倪M(jìn)制的不同而有所變化。即當(dāng)十位為0或1時(shí),其個(gè)位每滿十進(jìn)一,而當(dāng)十位為2時(shí),其個(gè)位滿四進(jìn)一。因此根據(jù)這個(gè)特點(diǎn),可以利用一個(gè)模三計(jì)數(shù)器作為十位的計(jì)數(shù),模十計(jì)數(shù)器作為個(gè)位的計(jì)數(shù)。并且,將模十計(jì)數(shù)器和部分邏輯門組合提供一個(gè)模四計(jì)數(shù)器的進(jìn)位輸出。當(dāng)十位的模三計(jì)數(shù)器計(jì)數(shù)值2時(shí),選擇個(gè)位的模四計(jì)數(shù)的進(jìn)位輸出作為使能信號(hào),否則選擇個(gè)位的模十計(jì)數(shù)的進(jìn)位輸出作為使能信號(hào)。
其原理是,當(dāng)模三計(jì)數(shù)器的輸出QD QC QB QA=0010,模十計(jì)數(shù)器的輸出QD QC QB QA=0011時(shí),模十計(jì)數(shù)器的置數(shù)端有效,模三計(jì)數(shù)器的使能端有效,在下一個(gè)脈沖信號(hào)來(lái)臨時(shí),0000從模十計(jì)數(shù)器的A B C D口置入,則模十計(jì)數(shù)器從輸出QD QC QB QA=0000,同時(shí)模三計(jì)數(shù)器計(jì)數(shù)一次,完成一次循環(huán)計(jì)數(shù),QD QC QB QA的輸出由0010變?yōu)?000,該過(guò)程即完成了時(shí)鐘的小時(shí)部分從23時(shí)到00時(shí)的過(guò)程。
3.3 計(jì)校時(shí)模式控制
無(wú)論何種方案設(shè)計(jì)出的電子鐘都或多或少會(huì)存在誤差, 因此必須考慮校時(shí)模塊的設(shè)計(jì)。當(dāng)由于某種原因電子鐘走時(shí)不準(zhǔn)時(shí),可以校對(duì)時(shí)、分、秒。系統(tǒng)采用雙鍵校時(shí)法進(jìn)行設(shè)計(jì),為選擇并校對(duì)時(shí)、分、秒,需設(shè)計(jì)一譯碼電路分別產(chǎn)生校時(shí)、分、秒的使能信號(hào);為完成時(shí)、分、秒計(jì)數(shù)值的修改,需產(chǎn)生一個(gè)單脈沖信號(hào)。
如圖3所示,Mode與SET為開(kāi)發(fā)板上兩個(gè)常態(tài)為高電平的兩個(gè)按鍵,Mode進(jìn)行模式選擇,SET修改計(jì)數(shù)值;Mode經(jīng)過(guò)去抖電路處理后,產(chǎn)生的單脈沖作為模四計(jì)數(shù)器的脈沖輸入,模四計(jì)數(shù)器的輸出經(jīng)過(guò)2-4譯碼器的譯碼使2-4譯碼器的輸出Y0 Y1 Y2 Y3依次輸出高電平,當(dāng)Y0為高電平時(shí),Y1 Y2 Y3為低電平,此時(shí)時(shí)、分、秒計(jì)數(shù)器的計(jì)數(shù)脈沖都將輸入系統(tǒng)脈沖,并且時(shí)計(jì)數(shù)器的使能端由分計(jì)數(shù)器的輸出和秒計(jì)數(shù)器輸出控制,分計(jì)數(shù)器的使能端由秒計(jì)數(shù)器的輸出控制,秒計(jì)數(shù)器的使能端則由分頻電路輸出的精確的100Hz使能信號(hào)控制,電子鐘正常計(jì)時(shí);當(dāng)Y1為高電平時(shí),秒計(jì)數(shù)器的清零端與去抖后的Set單脈沖接通,分計(jì)數(shù)器的計(jì)數(shù)脈沖切換為Set單脈沖,并且在秒計(jì)數(shù)器輸出大于等于30秒時(shí)使能分計(jì)數(shù)器,此時(shí)可通過(guò)SET鍵對(duì)秒的數(shù)值進(jìn)行清零,如果在秒計(jì)數(shù)器的輸出大于等于30秒時(shí),分計(jì)數(shù)器被使能,此時(shí)Set單脈沖同時(shí)作用給分計(jì)數(shù)器,分計(jì)數(shù)器則實(shí)現(xiàn)加一,即實(shí)現(xiàn)了滿30秒,對(duì)秒計(jì)數(shù)器清零的同時(shí)對(duì)分計(jì)數(shù)器進(jìn)行加一;當(dāng)Y2為高電平時(shí),分計(jì)數(shù)器的計(jì)數(shù)脈沖切換到去抖后的Set單脈沖,并且使能分計(jì)數(shù)器,此時(shí)可通過(guò)SET鍵對(duì)分的數(shù)值進(jìn)行調(diào)整。當(dāng)Y3為高電平時(shí),時(shí)計(jì)數(shù)器的計(jì)數(shù)脈沖切換到去抖后的Set單脈沖,并且使能時(shí)計(jì)數(shù)器,此時(shí)可通過(guò)SET鍵對(duì)時(shí)的數(shù)值進(jìn)行調(diào)整。
4 結(jié)束語(yǔ)
現(xiàn)場(chǎng)可編程門陣列 FPGA是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。本文運(yùn)用Quartus Prime軟件開(kāi)發(fā)平臺(tái),基于EPM1270設(shè)計(jì)了一款可校時(shí)電子時(shí)鐘,并下載到EPM1270實(shí)驗(yàn)平臺(tái)中進(jìn)行驗(yàn)證, 結(jié)果表明系統(tǒng)能以很小的誤差顯示時(shí)、分、秒,并運(yùn)用SET、Mode兩個(gè)鍵實(shí)現(xiàn)校時(shí)。采用的動(dòng)態(tài)刷新驅(qū)動(dòng)的顯示方式,把八個(gè)七段數(shù)碼管的64個(gè)引腳(8個(gè)數(shù)據(jù)引腳×8)節(jié)省為16個(gè)引腳(8個(gè)數(shù)據(jù)引腳+8個(gè)位選引腳),這種方式有效節(jié)省I/O引腳的消耗;對(duì)系統(tǒng)的時(shí)鐘50MHz的時(shí)鐘頻率進(jìn)行了很精確的分頻,才使得所設(shè)計(jì)的電子鐘走時(shí)精準(zhǔn)。最后在校時(shí)的處理上對(duì)物理按鍵進(jìn)行了去抖處理,并分別實(shí)現(xiàn)了對(duì)秒采用的清零進(jìn)位(秒針小于30,清零時(shí)不進(jìn)位)校時(shí),對(duì)分、時(shí)采用的逐位校時(shí)的方式。最終完善了整個(gè)可校時(shí)電子鐘的設(shè)計(jì),并且達(dá)到了非常好的驗(yàn)證效果。
參考文獻(xiàn):
[1]張強(qiáng).基于FPGA的多功能數(shù)字鐘的設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表用戶,2008,15(6):103-104.
[2]趙文來(lái),楊俊秀,嚴(yán)國(guó)紅,等.基于FPGA的電子鐘設(shè)計(jì)與實(shí)現(xiàn)[J].浙江理工大學(xué)學(xué)報(bào),2010,27(04):590-594.
[3]歐陽(yáng)星明.數(shù)字邏輯[M].華中科技大學(xué)出版社,2005.
[4]許銳,沈祖斌,鄒光毅.數(shù)字電子鐘的EDA實(shí)現(xiàn)詳例[J].工業(yè)控制計(jì)算機(jī),2011,24(03):103-104.
[5]Quartus Prime 數(shù)據(jù)手冊(cè)[Z].