文/鐘鵬程
隨著籃球運動的普及和NBA比賽在世界的風靡,籃球比賽的24秒倒計時器已被廣泛采用。AHDL語言是一種支持Altera公司器件的硬件描述語言,是一種模塊化的高級語言。AHDL語言易學、易用且功能強大,對于復雜組合邏輯電路設計與時序邏輯電路設計都完全勝任。Quartus Ⅱ是Altera公司的綜合性CPLD/FPGA開發(fā)軟件,擁有AHDL、VHDL、VerilogHDL以及原理圖等多種設計輸入形式,功能強大,界面友好,內嵌自帶的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。本文基于AHDL語言在Quartus Ⅱ軟件中設計了籃球賽24秒倒計時器。
籃球賽24秒倒計時器的總體方案結構如圖1所示,包括高頻率脈沖信號、分頻電路模塊、遞減計數(shù)器電路模塊、聲光報警裝置、2個譯碼電路模塊、數(shù)碼管動態(tài)掃描驅動電路模塊和數(shù)碼管等。高頻率的脈沖信號通過分頻電路模塊進行分頻,輸出頻率為1Hz的脈沖信號(周期為1s),作為遞減計數(shù)器電路模塊的脈沖信號。遞減計數(shù)器電路模塊的輸出端與譯碼電路模塊的輸入端相連,進行BCD譯碼,最終由動態(tài)數(shù)碼管顯示倒計時的時間。當顯示的數(shù)字為00時,發(fā)出聲光報警信號。使用AHDL語言在Quartus Ⅱ軟件中設計分頻電路模塊、遞減計數(shù)器電路模塊、譯碼電路模塊和數(shù)碼管動態(tài)掃描驅動電路模塊,并實現(xiàn)以下功能:

圖1:倒計時器總體方案結構
(1)24秒倒計時顯示功能,采用動態(tài)數(shù)碼管顯示;
(2)設置外部控制開關,控制計數(shù)器的重置24秒功能;
(3)計數(shù)器遞減至0時,數(shù)碼管顯示“00”,同時發(fā)出聲光報警信號。
假設整個系統(tǒng)的輸入端輸入頻率為40MHz的脈沖信號,分頻電路模塊的輸出端輸出頻率為1Hz的脈沖信號(周期為1s),那么需要將頻率分為原來的分頻電路模塊的輸出端與遞減計數(shù)器電路模塊的時鐘輸入端相連,保證了數(shù)碼管顯示的數(shù)字每秒減1。分頻電路模塊的AHDL語言程序如下:


圖2:蜂鳴器電路
該遞減計數(shù)器由24遞減至0,有兩個輸入端,它們分別是時鐘輸入端和置數(shù)輸入端。時鐘輸入端與分頻電路模塊的輸出端相連,輸入頻率為1Hz的脈沖信號。置數(shù)輸入端是通過人為控制的,當輸入低電平時,遞減計數(shù)器置數(shù)為24,當輸入高電平時,遞減計數(shù)器正常工作。遞減計數(shù)器電路模塊的一個輸出端led與發(fā)光二極管相連,另一個輸出端buzz用來控制蜂鳴器(如圖2所示),其余的輸出端與兩個譯碼電路模塊的輸入端相連。遞減至0之前,發(fā)光二極管不亮,蜂鳴器不響;遞減至0以后,發(fā)光二極管變亮,蜂鳴器發(fā)出聲音,即發(fā)出聲光報警信號。遞減計數(shù)器電路模塊的AHDL語言程序如下:


譯碼電路模塊的輸入端與遞減計數(shù)器電路模塊的輸出端相連,輸出端與數(shù)碼管動態(tài)掃描驅動電路模塊的輸入端相連。譯碼電路模塊的AHDL語言程序如下:

所謂數(shù)碼管的動態(tài)驅動,就是把每個數(shù)碼管的“段”對應并聯(lián),這樣所有數(shù)碼管的“段驅動”只使用7根驅動線。同時用輸出掃描脈沖控制每個數(shù)碼管的COM端,在一個瞬時只讓一個數(shù)碼管被點亮,且每個數(shù)碼管輪流被點亮(一個數(shù)碼管一般點亮時間為1-5ms)。如此循環(huán)不斷。由于人眼有視覺殘留效應,若各數(shù)碼管循環(huán)點亮的速度足夠快,則人眼看到的是多個數(shù)碼管都被點亮了起來。數(shù)碼管動態(tài)掃描驅動電路模塊的輸入端與兩個譯碼電路模塊的輸出端和40MHz的時鐘脈沖信號相連。將時鐘脈沖信號分頻,得到頻率為1KHz的脈沖信號,即周期為1ms的脈沖信號,所以每個數(shù)碼管被點亮的時間為1ms。與數(shù)碼管的靜態(tài)驅動相比,數(shù)碼管的動態(tài)驅動使用的引腳較少,電路功耗較低。數(shù)碼管動態(tài)掃描驅動電路模塊的AHDL語言程序如下:
在Quartus Ⅱ軟件中,創(chuàng)建4個擴展名為.tdf的文件并完成AHDL語言程序設計。創(chuàng)建1個擴展名為.bdf的文件(原理圖輸入文件),為4個tdf文件創(chuàng)建符號文件,即在bdf文件的元件庫中生成相應的可調用的元器件,通過調用這些元器件生成如圖3所示的電路,并進行引腳分配。確定編譯無誤后,將擴展名為.pof的文件下載到CPLD中,選用的CPLD型號為MAX Ⅱ EPM240T100C5。按照定義好的引腳連接好電路,并增加一個獨立按鍵電路來控制引腳LD輸入的高低電平,如圖4所示。按下按鍵,引腳LD端為低電平,此時數(shù)碼管顯示數(shù)字24,負責報警的發(fā)光二極管不亮,蜂鳴器不發(fā)出聲音。再松開按鍵,引腳LD端為高電平,此時數(shù)碼管顯示的數(shù)字開始倒計時,即每隔1秒,數(shù)碼管數(shù)字減1。當數(shù)碼管顯示的數(shù)字為00時,數(shù)碼管顯示的數(shù)字不變,負責報警的發(fā)光二極管由不亮變?yōu)榱粒澍Q器發(fā)出聲音。在任意情況下,按下按鍵,引腳LD端為低電平,都會使數(shù)碼管顯示的數(shù)字重置為24。這樣的籃球賽24秒倒計時器可以應用到籃球比賽中,幫助裁判判斷參賽者是否24秒違例。

圖3:倒計時器電路圖
在本文提出的籃球賽24秒倒計時器總體方案基礎上,采用AHDL語言詳細設計了分頻電路模塊、遞減計數(shù)器電路模塊、譯碼電路模塊和數(shù)碼管動態(tài)掃描驅動電路模塊,分析了電路的工作原理。在Quartus Ⅱ軟件中完成24秒倒計時器設計,將擴展名為.pof的文件下載到CPLD中,并完成實物的電路連接,實現(xiàn)了24秒倒計時、隨時置數(shù)、自動報警等功能,達到了預期的設計效果。