王喜喜 沈祖斌
摘 要:利用電子設計自動化(EDA)的技術自頂向下的設計方法,設計可校時電子鐘各模塊及相應具體電路,利用Quartus Prime軟件平臺對電路進行設計,設計包括對系統時鐘精確的分頻以及動態刷新驅動七段數碼管顯示,最后通過Quartus Prime軟件平臺編譯、仿真,并下載到EPM1270開發板上。在開發板上顯示“時”,“分”,“秒”,并可通過兩個功能鍵進行校時。
關鍵詞:校時;電子鐘;動態刷新;分頻電路
中圖分類號:TH714 文獻標志碼:A 文章編號: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 概述
在電子技術設計領域,可編程邏輯器件的應用,已得到廣泛的普及,這些器件為數字系統的設計帶來了極大的靈活性。這些器件可以通過軟件編程而對其硬件結構和工作方式進行重構,從而使得硬件的設計可以如同軟件設計那樣方便快捷。這一切極大地改變了傳統的數字系統設計方法、設計過程和設計觀念,促進了EDA技術的迅速發展。
隨著現場可編程門陣列(field program mablegate array,FPGA)的出現,電子系統向集成化、大規模和高速度等方向發展的趨勢更加明顯,作為可編程的集成度較高的 ASIC,可在芯片級實現任意數字邏輯電路,從而可以簡化硬件電路,提高系統工作速度,縮短產品研發周期。故利用FPGA這一新的技術手段來研究電子鐘有重要的現實意義。
本設計使用EPM1270開發板,利用Quartus Prime軟件設計的一個可校時電子鐘。
2 電子鐘功能描述
開發板上八個并排的七段數碼管采用動態刷新驅動的方式分別用于顯示電子鐘的“十時”、“時”、“十分”、“分”、“十秒”、“秒”、“1/10秒”及“1/100秒”;校時功能模仿傳統手表校時方式,分別對“時”和“分”逐位校時,對“秒”采用清零進位(秒針小于30,清零時不進位)的方式進行校時;功能按鍵采用開發板上未經去抖且常態為高電平的兩個按鍵。同時,開發板系統時鐘為50MHz有源晶振。
如圖1電子鐘工作說明圖,其工作原理是:由系統提供的時鐘脈沖信號經過分頻電路的分頻后,分別產生用于校時電路的去抖頻率、校時時使所校時數碼管閃爍的頻率、計時電路的計時頻率和數碼管動態刷新驅動的刷新頻率;計時電路的輸出通過刷新電路的刷新頻率分時輸入到七段顯示譯碼器,經過譯碼器譯碼后送到七段數碼管上顯示,數碼管在刷新電路的作用下分時選擇數碼管,使得在同一時刻計時電路對應的輸出顯示到對應的數碼管上,即動態刷新驅動的顯示方式,采用這種顯示驅動方式能有效節省I/O引腳的消耗。當電路計時出現誤差時,可以由校時電路通過兩個功能鍵分別對“時”、“分”、“秒”進行校時。一個功能鍵進行模式選擇,分別可選擇對時進行逐位加一模式,對分進行逐位加一模式,對秒、1/10秒、1/100秒清零模式,以及常態模式。在前三鐘模式的狀態下,所校時的數碼管閃爍。另外對秒的清零所采取的辦法是,滿30秒,清零的同時對分進行加一。
3 電路設計
由于數碼管采用動態刷新驅動的方式需要合適的刷新頻率,再加上電子鐘的計時與校時功能分別需要對應的時鐘頻率,則需要分頻模塊設計合適的電路對系統時鐘頻率進行分頻處理;多個不同模的計數器需要經過計時模塊合理的電路設計,才能實現我們整個系統的計時功能;另外,計時模塊中各個計數器的輸出分別能送到對應的七段數碼管上,以及八個數碼管能完成工作,即能實現動態刷新都需要顯示模塊完成設計。最后,校時功能需要對按鍵進行去抖處理以及對按鍵的功能設計,則需要校時模塊進行電路設計;電路設計采用層次化結構,頂層電路設計可分為四個大模塊,分別為顯示模塊、計時模塊、分頻模塊和校時模塊組成。
如圖2所示,FRE32是一個可分別產生1/2,1/4,1/8...,1/231,1/232分頻的分頻電路,由clock輸入系統時鐘,由q[31..0]輸出分頻后的時鐘信號;Time_Fre則是將系統時鐘分頻后,每10ms輸出一個高電平,其輸出作為計時模塊的控制信號,每當Time_Fre的輸出端EN_OUT為高電平時,計時電路Counter_Time則才可響應系統時鐘,其內部的計數器才可計數,即實現了每10ms計時電路的最低位,即1/100秒計數器計數一次;圖中FRE32和Time_Fre構成了整個分頻模塊,提供整個系統需要的各種頻率的時鐘信號;圖中counter8是一個模八計數器,輸入系統的1/217分頻后,其輸出的計數結果000->111,分別送到圖中的View來選擇對應的數碼管,和Counter_Time來選擇計時電路中對應的計數器的輸出,因此整個顯示電路由圖中counter8模八計數器、View以及7447譯碼器組成;圖中校時電路Control將功能按鍵進行去抖處理后,模式選擇由Control的SEL_MODE_OUT[2..0]輸出送到View選擇對應的數碼管閃爍,送到Counter_Time選擇要調節的計數器,而圖中CLK_USER_OUT則送到計時電路Counter_Time替代系統時鐘對計時電路進行校時。
3.1 分頻模塊
分頻電路的功能是對系統產生的時鐘信號頻率進行分頻處理,一方面產生用于計時模塊的精確計時頻率,另一方面產生用于顯示模塊動態刷新驅動數碼管的刷新頻率和用于校時的閃爍效果頻率以及校時模塊得的按鍵去抖的頻率。
由于計時電路時間精確到百分之一秒。要保證電子鐘的精確度,就需要利用實驗板上的50MHz晶振源得到100Hz的時鐘脈沖。因此,用于計時模塊的分頻電路采用一個模500000的計數器,即每經過50萬個時鐘脈沖,其輸出端輸出一個高電平。此高電平作為計時電路的使能信號,讓計時電路在系統時鐘下工作,即每經過50萬個系統時鐘,計時電路最低位計數一次(100Hz)。
3.2 計時模塊
計時模塊內部電路總共由八個計數器,分別由五個模十計數器、兩個模六計數器和一個模三計數器組成。
其工作流程是:1/100秒計數器通過外部每10ms產生的一個使能信號使1/100秒計數器計數一次,1/100秒計數器每計滿10次產生一個使能信號使1/10秒計數器計數一次,1/10秒計數器每計數滿10次產生一個使能信號使秒計數器計數一次,秒計數器每計數滿10次產生一個使能信號使十秒計數器計數一次,十秒計數器每計數滿6次產生一個使能信號使分計數器計數一次,分計數器每計數滿10次產生一個使能信號使十分計數器計數一次,十分計數器每計數滿6次產生一個使能信號使時計數器計數一次,時計數器每計數滿10次或4次產生一個使能信號使十時計數器計數一次,十時計數器則每計數3次一個循環。
由于受到七段數碼管只能顯示一位十進制數的限制,對于電子鐘的時分秒的顯示,其個位與十位要分別輸出顯示到七段數碼管上,并且對于小時的顯示更加特殊。由于小時每滿24小時一個循環,其個位的進制會因為十位的進制的不同而有所變化。即當十位為0或1時,其個位每滿十進一,而當十位為2時,其個位滿四進一。因此根據這個特點,可以利用一個模三計數器作為十位的計數,模十計數器作為個位的計數。并且,將模十計數器和部分邏輯門組合提供一個模四計數器的進位輸出。當十位的模三計數器計數值2時,選擇個位的模四計數的進位輸出作為使能信號,否則選擇個位的模十計數的進位輸出作為使能信號。
其原理是,當模三計數器的輸出QD QC QB QA=0010,模十計數器的輸出QD QC QB QA=0011時,模十計數器的置數端有效,模三計數器的使能端有效,在下一個脈沖信號來臨時,0000從模十計數器的A B C D口置入,則模十計數器從輸出QD QC QB QA=0000,同時模三計數器計數一次,完成一次循環計數,QD QC QB QA的輸出由0010變為0000,該過程即完成了時鐘的小時部分從23時到00時的過程。
3.3 計校時模式控制
無論何種方案設計出的電子鐘都或多或少會存在誤差, 因此必須考慮校時模塊的設計。當由于某種原因電子鐘走時不準時,可以校對時、分、秒。系統采用雙鍵校時法進行設計,為選擇并校對時、分、秒,需設計一譯碼電路分別產生校時、分、秒的使能信號;為完成時、分、秒計數值的修改,需產生一個單脈沖信號。
如圖3所示,Mode與SET為開發板上兩個常態為高電平的兩個按鍵,Mode進行模式選擇,SET修改計數值;Mode經過去抖電路處理后,產生的單脈沖作為模四計數器的脈沖輸入,模四計數器的輸出經過2-4譯碼器的譯碼使2-4譯碼器的輸出Y0 Y1 Y2 Y3依次輸出高電平,當Y0為高電平時,Y1 Y2 Y3為低電平,此時時、分、秒計數器的計數脈沖都將輸入系統脈沖,并且時計數器的使能端由分計數器的輸出和秒計數器輸出控制,分計數器的使能端由秒計數器的輸出控制,秒計數器的使能端則由分頻電路輸出的精確的100Hz使能信號控制,電子鐘正常計時;當Y1為高電平時,秒計數器的清零端與去抖后的Set單脈沖接通,分計數器的計數脈沖切換為Set單脈沖,并且在秒計數器輸出大于等于30秒時使能分計數器,此時可通過SET鍵對秒的數值進行清零,如果在秒計數器的輸出大于等于30秒時,分計數器被使能,此時Set單脈沖同時作用給分計數器,分計數器則實現加一,即實現了滿30秒,對秒計數器清零的同時對分計數器進行加一;當Y2為高電平時,分計數器的計數脈沖切換到去抖后的Set單脈沖,并且使能分計數器,此時可通過SET鍵對分的數值進行調整。當Y3為高電平時,時計數器的計數脈沖切換到去抖后的Set單脈沖,并且使能時計數器,此時可通過SET鍵對時的數值進行調整。
4 結束語
現場可編程門陣列 FPGA是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。本文運用Quartus Prime軟件開發平臺,基于EPM1270設計了一款可校時電子時鐘,并下載到EPM1270實驗平臺中進行驗證, 結果表明系統能以很小的誤差顯示時、分、秒,并運用SET、Mode兩個鍵實現校時。采用的動態刷新驅動的顯示方式,把八個七段數碼管的64個引腳(8個數據引腳×8)節省為16個引腳(8個數據引腳+8個位選引腳),這種方式有效節省I/O引腳的消耗;對系統的時鐘50MHz的時鐘頻率進行了很精確的分頻,才使得所設計的電子鐘走時精準。最后在校時的處理上對物理按鍵進行了去抖處理,并分別實現了對秒采用的清零進位(秒針小于30,清零時不進位)校時,對分、時采用的逐位校時的方式。最終完善了整個可校時電子鐘的設計,并且達到了非常好的驗證效果。
參考文獻:
[1]張強.基于FPGA的多功能數字鐘的設計與實現[J].儀器儀表用戶,2008,15(6):103-104.
[2]趙文來,楊俊秀,嚴國紅,等.基于FPGA的電子鐘設計與實現[J].浙江理工大學學報,2010,27(04):590-594.
[3]歐陽星明.數字邏輯[M].華中科技大學出版社,2005.
[4]許銳,沈祖斌,鄒光毅.數字電子鐘的EDA實現詳例[J].工業控制計算機,2011,24(03):103-104.
[5]Quartus Prime 數據手冊[Z].