沈慧鈞
(太原理工大學(xué)信息工程學(xué)院,山西太原030024)
搶答器可準確、公正地判斷出搶答者,可通過數(shù)碼顯示確定第一搶答者,并已廣泛應(yīng)用在各種知識競賽、文娛活動中。搶答器一般采用中規(guī)模集成電路芯片或單片機進行設(shè)計[1,2],中規(guī)模集成電路芯片設(shè)計方案選用觸發(fā)器、定時器、譯碼器等芯片進行設(shè)計,系統(tǒng)硬件電路復(fù)雜,工作不穩(wěn)定;單片機設(shè)計方案選用單片機作為系統(tǒng)控制器,硬件電路簡單,性能穩(wěn)定,但由于單片機管腳有限,不適于有多路輸入功能要求的搶答器設(shè)計。
隨著EDA技術(shù)的發(fā)展,可編程邏輯器件內(nèi)部資源更加豐富,并有著并行處理及在系統(tǒng)可編程的靈活性,在現(xiàn)代電子系統(tǒng)設(shè)計中發(fā)揮著重要作用[3]。本文基于FPGA進行16路輸入、具有搶答、計時、報警、電子計分等功能的搶答器設(shè)計。
本文設(shè)計的搶答器具有以下功能[4,5]:
(1)16路輸入,可供16組選手使用;
(2)具有自鎖功能,在有效搶答時間內(nèi),第一路搶答信號有效后,其他組搶答信號無效;
(3)具有搶答倒計時功能,主持人復(fù)位系統(tǒng)后,計時顯示器開始倒計時,當(dāng)計時時間記到0時,發(fā)生報警信號,取消本次搶答;
(4)具有組別顯示功能,通過兩位數(shù)碼管顯示搶答選手的組號;
(5)具有3位計分功能,可顯示每組參賽選手的比賽成績,主持人根據(jù)搶答選手回答問題情況,增加或減少該組分數(shù)。
本文設(shè)計的搶答器系統(tǒng)結(jié)構(gòu)如圖1所示。
系統(tǒng)上電后,當(dāng)開始搶答時,主持人首先按動復(fù)位按鈕,輸入復(fù)位信號至FPGA,復(fù)位結(jié)束后,等待參賽選手搶答,同時FPGA觸發(fā)搶答倒計時模塊開始到計時,初始時間設(shè)為10秒,在倒計時模塊遞減到0秒之前,如果有參賽選手點擊按鈕搶答,則FPGA鎖存該路搶答信號,不再接收其他按鍵輸入信號,并將該路搶答信號進行編碼,輸出至組別顯示模塊,用兩位LED數(shù)碼管顯示搶答組別號;在倒計時模塊顯示0秒之前,如果沒有參賽選手點擊按鈕搶答,則取消該次搶答。
每路搶答信號對應(yīng)一個3位的計分顯示器,參賽選手搶答結(jié)束后,如回答問題正確,則主持人通過點擊“加分”按鈕,可使該路選手對應(yīng)的計分器加分,加分分值可設(shè)定為10分;如選手回答問題錯誤,主持人可通過點擊“減分”按鈕,使該路選手對應(yīng)的計分器減分。當(dāng)本次搶答結(jié)束后,主持人點擊復(fù)位按鈕,開始下一次搶答。
圖1 系統(tǒng)結(jié)構(gòu)
FPGA是搶答器的控制系統(tǒng),按照EDA設(shè)計采用的模塊化設(shè)計原則,F(xiàn)PGA內(nèi)部功能模塊可劃分為:響應(yīng)鑒別模塊、倒計時顯示控制模塊、組別顯示控制模塊、計分顯示控制模塊,如圖2所示。
圖2 FPGA內(nèi)部功能模塊
該模塊接收主持人發(fā)送的復(fù)位信號,并接收參賽選手輸入的搶答信號,當(dāng)復(fù)位結(jié)束后,該模塊準備接收搶答信號,當(dāng)接收到第一組搶答信號后,鎖存該組信號,不再接收其他各路輸入信號,即只接收最先輸入的搶答信號,體現(xiàn)了比賽的公平性。接收到第一路搶答信號后,對16組搶答輸入信號進行編碼,并將編碼結(jié)果輸出到組別顯示控制模塊,以顯示搶答選手的組號。接收到復(fù)位信號后,該模塊同時觸發(fā)倒計時顯示控制模塊,以顯示倒計時信號。該模塊對應(yīng)的波形仿真圖如圖3所示。
圖3 響應(yīng)鑒別模塊仿真波形圖
仿真波形圖中,rst為復(fù)位信號,clk為系統(tǒng)時鐘信號,an1…an16為16路搶答輸入信號,code為16路編碼輸出信號,djs_en為倒計時模塊使能信號,當(dāng)復(fù)位信號結(jié)束后,djs_en信號即為高電平,觸發(fā)倒計時模塊開始工作,第一路輸入的搶答信號有效,如圖an9信號最先有效,則編碼輸出信號為“01001”,并鎖存該編碼信息,此后不再響應(yīng)其他路搶答信號。
該模塊接收響應(yīng)鑒別模塊輸出的搶答信號編碼數(shù)據(jù),并將其譯碼,以兩位共陰極七段數(shù)碼管顯示搶答組別號,對應(yīng)仿真波形圖如圖4所示。
圖4 組別顯示模塊仿真波形圖
該模塊顯示搶答倒計時信息,以確保搶答在預(yù)定時間內(nèi)完成,否則取消該次搶答。當(dāng)該模塊接收到響應(yīng)鑒別模塊輸出的倒計時使能信號djs_en有效后,在秒時鐘脈沖同步下,將顯示數(shù)值由9遞減至0。該模塊內(nèi)部包含分頻模塊和計數(shù)模塊,分頻模塊將100 kHz主時鐘分頻產(chǎn)生1 Hz計數(shù)時鐘,計數(shù)模塊在1 Hz時鐘同步下,實現(xiàn)減法計數(shù)。
該模塊用于顯示各搶答選手的比賽成績,每路搶答選手對應(yīng)一個3位的LED數(shù)碼管,顯示該組成績。當(dāng)選手搶答結(jié)束后,如果回答問題正確,則主持人點擊“加分”按鈕,給該組選手加分,如果回答問題錯誤,可點擊“減分”按鈕,給該組選手減分,為防止出現(xiàn)分數(shù)減到負值,可在初始時給每個選手設(shè)置初始分數(shù)。
由于每組搶答信號對應(yīng)3個LED數(shù)碼管,如果選用LED靜態(tài)掃描方式,則每組需21根信號線,則16組選手就需336根信號線,大大增加了系統(tǒng)復(fù)雜度,所以本設(shè)計選用LED動態(tài)掃描方式,所有LED連接相同的信號線,即FPGA輸出的七段數(shù)碼管控制信號對應(yīng)連接至所有的LED數(shù)碼管,并輸出使能信號控制數(shù)碼管,任何時刻只有一個數(shù)碼管的使能信號有效,其他均無效,根據(jù)人眼視覺惰性,每個數(shù)碼管的掃描頻率如果在30 Hz以上,人眼是看不出閃爍的,所以本設(shè)計采用動態(tài)掃描方式,只需23根信號線即可控制16個LED數(shù)碼管,大大簡化了系統(tǒng)連線復(fù)雜度。
本文采用EDA設(shè)計方法,完成了16路搶答器的設(shè)計,具有組別顯示、搶答倒計時、計分顯示等功能,設(shè)計采用VHDL語言實現(xiàn),使用Modelsim仿真工具進行波形仿真,并在FPGA上驗證。本文設(shè)計的搶答器在不改變硬件結(jié)構(gòu)條件下,可根據(jù)用戶實際需求增加系統(tǒng)功能,應(yīng)用靈活。
[1]楊俊秀,趙文來,鮑佳.基于FPGA的多路搶答器設(shè)計與實現(xiàn)[J].浙江理工大學(xué)學(xué)報,2010,27(2):249-253.
[2]龔江濤.基于CPLD的4路搶答器設(shè)計[J].蘇州市職業(yè)大學(xué)學(xué)報,2010,21(4):91 -93.
[3]潘松,黃繼業(yè).EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社,2009.
[4]劉凱,王紅航.電子搶答器的EDA設(shè)計與實現(xiàn)[J].電子元器件應(yīng)用,2010,12(8):54 -57.
[5]尹會明.基于VHDL語言的倒計時搶答器設(shè)計[J].信息化研究,2009,35(11):37 -41.