?

基于CPLD的四位計數顯示

2016-10-18 16:20梅李林趙瑛沈祖斌
科技視界 2016年22期

梅李林 趙瑛 沈祖斌

【摘 要】設計的計數器能實現從0到9999的計數,并具備清零功能。計數器采用原理圖層次化設計的方法,用四位七段數碼管顯示。通過分時復用技術,實現數碼管的分時復用和熄滅前導零。運用QuartusⅡ軟件進行設計和功能仿真,最終下載到EPM240T100C5N開發板上驗證。

【關鍵詞】CPLD;分時復用;前導零;多位計數

0 引言

CPLD(Complex Programmable Logic Device)復雜可編程邏輯器件,是從PAL和GAL發展出來的器件,是一種用戶根據自身需要而自行構造邏輯功能的可編程數字集成電路。其基本設計方法是使用集成開發軟件平臺,采用多種輸入方法,如原理圖、硬件描述語言、狀態圖及輸入輸出響應法等,并生成相應的目標文件。通過下載電纜將構造代碼下載到目標芯片中,實現所設計的數字系統。

使用的集成開發軟件平臺為QuartusⅡ。QuartusⅡ為Altera公司的綜合性PLD/FPGA開發軟件,具有原理圖、VHDL、VerilogHDL、AHDL和Megafunction等多種設計輸入方式,內嵌有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。

一般來說,QuartusⅡ軟件開發平臺為使用者給予了和結構基本無關系的全集成化環境。把軟件布局、軟件布線以及軟件系統的驗證都全部放入到一個無縫環境中,使設計人員可以非常方便快捷地對 PLD 產品實現設計輸入、編譯、仿真以及器件編程下載。QuartusⅡ平臺匯集了包括概念設計、算法開發、建模仿真等集成環境,是一款綜合性非常強的開發軟件,能夠很好地實現自設計輸入至硬件配置的完整 PLD 設計方法及步驟流程,是能夠在一個相對單一的特定設計空間內,給予一系列綜合、仿真和下載的軟件工具,這對加強硬件系統設計的環境有著積極的意義。

設計四位計數器中使用了原理圖的方式,在QuartusⅡ上來描敘整個設計流程,同時采用功能仿真的方式來進行結果的驗證,并經過下載電纜將構造代碼寫入EPM240T100C5N開發板中進行最終的驗證。采用分時復用技術來實現數碼管的控制,分時復用技術是用一條線路傳輸多路數據,基于分時段使用同一線路的技術。在此設計中,有四個七段數碼管,若不用分時復用技術則每個七段數碼管都需要與之對應的引腳和譯碼器,一共需要28(7*4)個引腳和四個譯碼器。而使用分時復用技術只需要一個數碼管的引腳加上四個位選的引腳,一共只需11(7+4)個引腳和一個譯碼器。這對于系統I/O資源緊張的設計是個有效節省I/O資源的方法,并節省設計的成本。

1 設計四位計數器

四位計數采用74LS161的同步置數法,每一位的計數狀態為(0000)→(0001)→(0010)→(0011)→(0100)→(0101)→(0110)→(0111)→(1000)→(1001)→(0000)。四位計數使用4個74LS161級聯,分別表示個位十位百位千位,最大能表示的數為9999。采用原理圖層次化設計的方式,將4個74LS161的CLK時鐘脈沖輸入端串連在一起。計數采用同步置數法,使用個位的進位使十位CEP和CET使能。每當有一個進位到來的時候上一位使能一次,在時鐘脈沖的作用下加1。這樣就實現了初步的計數器。

于是發現一個問題:當十位為8的時候,個位的進位信號到來會使十位為9。由于采用的置數法,當十位數中當出現1001的時候,就會產生一個進位信號并且會重置當前位。這就導致計數器十位百位千位的9不能正常顯示。

經過對這個現象的分析,發現是在進行計數器設計的時候,沒有考慮到十位百位千位重置問題,簡單的以為和個位一樣出現9就重置并產生進位。通過對計數原理和同步置數法的分析,發現十位百位千位的重置不是出現9就重置。例如十位,如果要將十位數重置為0,只有當十位本身為9且個位產生下一個進位的時候,才能重置十位并給百位一個進位信號。設計的思路為當脈沖到來時開始計數,產生的進位信號直接給上一位數,上一位數由于有進位信號的使能于是加1。如果十位要給上一位進位信號且重置自身,那么就需要下一個進位信號和自身的進位信號通過一個與非門得到一個低位信號。低位信號重置自身,并通過一個非門產生進位。設計的原理圖和通過QuartusⅡ功能仿真的結果如圖1所示。

圖 1 四位計數原理圖及仿真結果圖

2 四位顯示的分時復用

圖2 四位顯示的分時復用原理圖

四位計數顯示采用了分時復用技術。分時復用是用不同時段來傳輸和處理不同的信號,能達到多路傳輸和處理的目的。四位顯示的分時復用原理圖如圖2所示。通過一個4選1的選擇器來選擇顯示的位數。將一個周期劃分為4個等分的時間,每個等分的時間通過4選1的選擇器來選擇一個輸入,并通過BCD碼到7段字形的處理,最終顯示在七段數碼管上。當人眼在觀察數碼管時,光信號傳入大腦神經,需經過一段短暫的時間,光信號的作用結束后,視覺形象并不會立即消失,這種殘留的視覺稱“后像”,視覺的這一現象則被稱為“視覺暫留”。正是由于視覺暫留的存在,在多位計數的時候才得以采用分時復用,人眼被欺騙而認為是四位同時在顯示。

3 熄滅多位顯示的前導零

在計數器中我們發現剛剛開始計數的時候計數器顯示為0001,千位百位十位的零沒有任何意義。這樣顯示出來不符合一般的閱讀習慣,也不利于數字的辨識。如果出現這樣的零就是屬于前導零。在四位七段數碼管中有4個控制位選的引腳,查詢開發板原理圖得知數碼管的位選引腳是低電平有效。通過控制數碼管的位選端達到熄滅前導零的目的。熄滅前導零不是當某一位出現0就熄滅這一位的數碼管,而是當某一位為0且前面沒有不為0的數,那么就熄滅這一位以及前面所有的0。如果一個數為0但是前面有一個非0的數,那么這一位0是有效的,不能熄滅。如圖3為通過位選控制前導零的原理圖。

(1)如果某一位數為0,同時這一位數前面沒有非0的數。它的BCD碼0000通過或非門后為高位,由于2-4譯碼器默認輸出低位,將2-4譯碼器輸出的這一位低位與通過或非門運算得到的高位進行或運算,最終產生一個高位信號給位選端,位選端無效,熄滅這個為0的數碼管。

(2)如果某一位不為0,通過或非門后得到低位,這個低位通過與門后為低位。這個低位信號和2-4譯碼器的低位通過或運算得到的為低位,于是位選端有效,點亮這一位數碼管。

(3)如果某一位為0且前面有不為0數。不為0的這一位通過或非門后為低位,為0的這一位通過或非門后為高位。它們通過與運算后得到的還是低位,再與2-4譯碼器輸出的低位進行或運算得到一個低位,于是位選端有效,點亮這個為0的數碼管。

4 結果驗證

在上面進行仿真結果正確后,就可以進行引腳分配。在引腳分配之前需要選擇使用的器件型號,本設計使用了合肥零零電子科技有限公司的EPM240T100C5N開發板進行目標芯片的在電路驗證。在進行引腳分配時需要查詢四位計數器中使用的七段數碼管、重置、時鐘脈沖在開發板中的引腳編號,然后進行分配。在進行引腳分配后需要重新編譯后才能下載運行。

將開發板的JTAG與USB下載線連好,接通電源。在QuartusⅡ中選擇“Tools-Programmer”進行下載寫入。下載完成后觀察開發板上的數碼管顯示結果。驗證結果和預期完全一樣,至此說明設計沒有問題。

5 總結

四位計數顯示采用QuartusⅡ作為開發平臺,通過原理圖來設計整個流程,并采用了層次化設計的方式使得整個設計的流程更加清晰。整個設計中使用數碼管的顯示,分時復用等技術。分時復用技術在多位計數顯示上的使用,使得系統中有限的I/O資源能顯示更多的位數,從而大大的降低了成本。這種設計方式將會被很多領域借鑒并使用。我們在設計中考慮到了人們的閱讀習慣,于是熄滅前導零,使設計出來的計數器更加人性化,只有這樣才能被人類所接受。

【參考文獻】

[1]歐陽星明.于俊清.數字邏輯(第四版)[M].華中科技大學出版社,2009.

[2]周潤景,圖雅,張麗敏.基于QuartusⅡ的FPGA/CPLD數字系統設計實例[M].2007.

[3]吳亮亮.基于QuartusⅡ平臺的數字系統設計[J].電子電路設計與方案,2016.07.008.

[4]談宏華.用CPLD實現多處理器數據的分時共享[J].單片機與嵌入式系統應用,2005(10):12-14.

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合