何有為 沈祖斌 鄒光毅
(江漢大學數學與計算機學院,湖北 武漢430056)
本系統采用最原始的原理圖設計方案,采用原理圖設計能最大限度的了解內部電路結構,了解其中的原理構造,清晰易懂,而且在一定程度上很好的強化與鍛煉了“數字邏輯”知識。在一般的簡易時鐘基礎上有了比較明顯的改進。如圖1所示,是該時鐘的整體實現框圖,實驗板采用CPLD芯片EPM240,它是一個中規模的實驗板,有很高的集成性,完全可以完成這個系統的需求。

圖1 整體框圖
該時鐘的晶振源由實驗板自帶的50MHz晶振源提供,對50MHz分頻得到1Hz的脈沖;然后對其計數,“秒鐘”滿60清0向分位進一,同樣“分”滿60進一到“時”,小時采用12小時制,故時滿12清零。接著,使用刷新電路對其進行動態刷新,并通過數碼管顯示出來。對于校時部分,直接通過校時電路對分、時部分進行校時。最后,關于對控制電路的設計,控制電路通過使用模二進制的循環狀態機實現四種模式循環,不同模式的控制,對模式信號進行處理,從而使MUX進行不同的選擇實現顯示以及閃爍。關于防抖部分,在每個按鍵輸入處進行消抖處理即可。
在確定整體思路基礎后,進行模塊化設計,采用模塊化設計方便進行局部調整,以及模塊的重用,便于開發,節省開發流程。對于該系統劃分為以下幾個模塊去實現:①分頻電路②秒鐘計時電路③時鐘計時電路④動態刷新和譯碼顯示電路⑤控制電路⑥防機械按鍵抖動電路⑦閃爍電路⑧校時電路⑨功能選擇電路。下面詳細介紹控制電路、防機械按鍵抖動電路的實現。
控制電路是該系統能實現各種模式切換以及閃爍的重要部分。控制電路是本系統的核心電路,盡管結構簡單但卻有著“四兩撥千斤”的作用。在控制電路中主要輸出模式切換信號、閃爍信號、校時信號。決定了模式的狀態和是否閃爍以及閃爍小時部分還是分鐘部分。本系統設計了正常顯示小時分鐘、正常顯示分秒、分鐘校時閃爍、小時校時閃爍這四種狀態,四種狀態的實現通過一個狀態機循環,即采用模二進制計數器。對應模式和模二計數器狀態如下:M1正常顯示小時分鐘(S1S0=00)、M2正常顯示分秒(S1S0=01)、M3分鐘校時閃爍(S1S0=10)、M4小時校時閃爍(S1S0=11);模式切換信號分兩種:①數碼管上顯示小時和分鐘②數碼管上顯示分鐘和秒鐘;閃爍信號也分兩種:①小時部分閃爍并校時②分鐘部分閃爍并校時。需要模式切換信號①的模式有M1、M3、M4,需要模式切換信號②的模式有M2。使模式切換信號①為低電平;模式切換信號②為高電平,那么采用一定的邏輯電路便可完成高電平和低電平的分離,獲取所需信號。采用的電路結構為S1與非門連接然后和S0相與得到切換信號C1,并將C1信號輸出給MUX31_21,從而實現功能切換。
同理需要閃爍信號①的模式有M4,需要閃爍信號②的模式有M3,兩種閃爍信號都不需要的模式有M1、M2。使需要閃爍時的狀態為高電平,不需要閃爍時的狀態為低電平。采用電路結構為,在M3模式下取閃爍信號為S0連接非門然后與S1相與得到高電平;M4模式下直接讓S0和S1相與得到高電平,輸出給閃爍電路和校時電路。由于閃爍時即代表該部分在校時,故閃爍電路和校時電路可以共用閃爍信號。既完成了對閃爍電路控制又完成了對校時電路的控制。控制電路的模二計數輸入由外部定義的機械按鍵輸入,該鍵即為module鍵。最后設計完成的控制電路原理圖如圖2所示,然后將其封裝成模塊,封裝方法:選中電路圖,File→Create/update→CreatesymbolfilesforcurrentFile保存即可。系統可直接調用封裝好的模塊。

圖2 控制電路
穩定可靠的信號輸入是時鐘系統能可靠工作的重要條件,我們不能將任何有毛刺的輸入作為計時器的時鐘信號,因此需要設計機械按鍵防抖動電路。該系統涉及到兩個外部機械按鍵,要使它們每一次按下時都要產生單脈沖信號,以此提高可靠的信號。由于機械式開關的核心部件為彈性金屬簧片,因而在開關切換的瞬問會在接觸點出現來回彈跳的現象。雖然只是進行了一次按鍵,但在按鍵信號穩定的前后出現了多個脈沖,如圖3按鍵波形圖所示。為了確保按鍵識別的準確性,在按鍵信號抖動的情況下不能進入狀態輸入,為此就必須對按鍵進行消抖處理。實驗開發板機械按鍵module鍵和check鍵常態下為高電平。如圖4為去抖電路所示硬件消抖電路,當按鍵Y按下時產生抖動,此時若時鐘脈沖CP的上升沿不來則兩個D觸發器的Q端不變,保持初始狀態。設初始狀態為Q1=Q2=0,輸出。這時即使Y有抖動也不會影響輸出,如圖5消抖波形仿真圖所示:

圖3 按鍵波形圖

圖4 防機械按鍵抖動電路

圖5 波形仿真
當第n個時鐘脈沖CP的到來時,觸發器DFF37翻轉,Q1=1;DFF36不變,則S=1。當n+1個時鐘脈沖到來時,DFF37不變,DFF36翻轉,Q2=1,此時鎖存Q1=Q2=1,則S=1。此時按下按鍵Y,在n+2個脈沖時鐘到來時,觸發器DFF36、DFF37維持不變。當按鍵Y松開時,D1=0,在第T個CLK脈沖到來時Q1=0,Q2不變,則S=0,產生了一個單脈沖信號。當第T+1個脈沖到來時,Q2翻轉,此時S=1回到常態。當按鍵Y松開時,如果此時第m個時鐘脈沖CP上升沿到來,Q1=1,Q2=0,則S=1。第m+1個時鐘脈沖CP的上升沿帶來時,Q1=1,Q2=1,則S=1。所以只要Y松開,即使有時鐘脈沖出發,輸出S仍保持不變。由此可得,按鍵Y按下一次,S端將獲得一個與時鐘脈沖同步的單次穩定脈沖信號輸入給計數器。
這樣就有效解決了抖動問題的情況,使得每一次按下外部機械按鍵時都只產生一個穩定的信號。為后面驗證工作打下了很好的基礎,保證了實際操作的準確性和靈敏度。
本文介紹了采用原理圖設計的方法,完成了數字時鐘系統的設計。并在核心為EPM240T100C5的實驗板上驗證良好通過。數字時鐘系統運行穩定,計時精準。注重設計時候的思想,采用自頂向下設計和模塊化思想,是進行EDA設計的重要思想方法。鍛煉學生動手操作能力,熟悉相關器件功能和工作方式。具有很好的綜合鍛煉能力。
[1]謝自美.電子線路設計·實驗·測試[M].2版.武漢:華中科技大學出版社,2000.
[2]周潤景.基于QuartusII的FPGA/CPLD數字系統設計實例(第一版)[M].北京:電子工業出版社,2007.