基于FPGA的搶答器設(shè)計與實現(xiàn)
搶答器在各類競賽中的必備設(shè)備,有單路輸入的,也有組輸入方式,本設(shè)計以FPGA 為基礎(chǔ)設(shè)計了有三組輸入(每組三人),具有搶答計時控制,能夠?qū)Ω鲹尨鹦〗M成績進行相應(yīng)加減操作的通用型搶答器;現(xiàn)行的搶答器中主要有兩種:小規(guī)模數(shù)字邏輯芯片譯碼器和觸發(fā)器來做,另外一種用單片機來做;小規(guī)模數(shù)字邏輯電路比較復(fù)雜,用單片機來做隨著搶答組數(shù)的增加有時候存在I/O 口不足的情況;本設(shè)計采用FPGA 來做增強了時序控制的靈活性,同時由于FPGA 的I/O 端口資源豐富,可以在本設(shè)計基礎(chǔ)上稍加修改可以設(shè)計具有多組輸入的搶答器。
本文引用地址:http://www.ex-cimer.com/article/190857.htm功能描述
本文設(shè)計了一個通用型電子搶答器:三個參賽隊,每個隊有三個成員,各自可手動按按鈕申請搶答權(quán);回到正確加1 分,回答錯誤減1 分,違規(guī)搶答減1分,不搶答不加分不扣分;用4 位LED 的左邊2 位顯示搶答組號及搶答計時時間,右邊2 位顯示相應(yīng)組的成績。
搶答器具體功能如下:
1、可同時進行三組每個小組三人的搶答, 用9 個按鈕Group1_1,Group1_2,Group1_3,Group2_1,Group2_2,Group2_3,Group3_1,Group3_2,Group3_3 表示;
2、設(shè)置一個搶答控制開關(guān)Start,該開關(guān)由主持人控制;只有當(dāng)主持人按下開始鍵才能搶答;在按開始按鈕前搶答屬于違規(guī);
3、搶答器具有定時搶答功能,且一次搶答的時間設(shè)定為30 秒。當(dāng)主持人啟動“開始”鍵后,用4 位LED 數(shù)碼管左邊兩位顯示30s 的倒計時;同時紅色LED燈亮,表明可以搶答。
4、搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的組號,并在4 位LED 數(shù)碼管的左邊兩位顯示,同時用一個綠色LED 指示是否有選手搶答,如果是違規(guī)搶答還能用選手蜂鳴器報警提示。搶答實行優(yōu)先鎖存,優(yōu)先搶答選手的相應(yīng)組號和成績一直保持到下一輪搶答開始。
5、參賽選手在設(shè)定的時間內(nèi)進行搶答,搶答有效,數(shù)碼管左邊兩位顯示 ”FX”,如果搶答違規(guī)則顯示 ”XF”(其中X 表示組號1~3),并保持到下一輪搶答。如果搶答延遲時間已到,無人搶答,本次搶答無效,系統(tǒng)回到主持人按開始前的等待狀態(tài),數(shù)碼管上左邊兩位顯示“FF”。
6、當(dāng)搶答有效后,主持人可以根據(jù)搶答選手回答問題正確與否對選手相應(yīng)組數(shù)的成績進行加減分操作,搶答違規(guī)也能減分操作,用4 位LED 數(shù)碼管右邊兩位顯示相應(yīng)組數(shù)的成績。(注各組初始成績?yōu)?0 分)
設(shè)計架構(gòu)
本文以FPGA 為基礎(chǔ)設(shè)計的電子搶答器,根據(jù)設(shè)計功能要求,改設(shè)計主要包括搶答輸入鍵盤,數(shù)碼管顯示,報警及FPGA 最小系統(tǒng)。搶答器結(jié)構(gòu)簡圖如圖1所示。
1、FPGA 最小系統(tǒng)電路:FPGA 正常工作時的基本電路,由時鐘和復(fù)位電路組成。
2、鍵盤輸入電路:用3×3 矩陣鍵盤組成3 個組共9 個人的搶答按鈕。同時包括Start, Add, Sub 三個由主持人控制的單獨按鈕。
3、顯示模塊:用移位寄存器74HC164 驅(qū)動4 位共陰數(shù)碼管顯示;數(shù)碼管要顯示的數(shù)據(jù)通過74HC164 串行數(shù)據(jù)端口輸入。
4、報警及相關(guān)信息顯示:蜂鳴器電路和LED 燈顯示相關(guān)狀態(tài)信息指示電路。
各模塊詳細描述
1、FPGA 與各個模塊的接口
本文以XC3S400 為基礎(chǔ)設(shè)計的電子搶答器,搶答器實際上是一個人機接口的一個智能設(shè)備,該設(shè)計中用到的FPGA 外部I/O 口及其與外部各個模塊連接的網(wǎng)絡(luò)標(biāo)識如圖2 所示。
圖2.FPGA 的IO 接口
2、按鍵模塊
由于按鍵是機械的動作,按鍵存在電平抖動,為了消除按鍵抖動引起的干擾,需要等按鍵值達到穩(wěn)定狀態(tài)時才讀取按鍵的值,也就是說要當(dāng)按鍵按下一段時間后,才讀取按鍵值;本設(shè)計中搶答開始鍵(Start)、搶答后各組成績的加(Add)和減(Sub)按鍵是以單鍵的形式輸入,按鍵延遲時間為20ms,對于搶答組的按鍵是用3×3 陣列鍵盤實現(xiàn),row=3’b001 以周期為5.08ms 進行循環(huán)左移掃描,掃描完三行的周期為15.24ms,這個就是說只有當(dāng)兩個按鍵之間的時間間隔在15.24ms 之內(nèi)時才有可能存在一個按鈕在比另一個按鈕先按,而響應(yīng)后者;實際操作中,兩人按鍵之間的間隔大于這個時間間隔,因此,不會出現(xiàn)錯誤響應(yīng)。同時每個按鍵后的延遲等待125.76ms 后此按鍵值才有效;經(jīng)過實際測試,鍵盤具有消抖功能,能夠正確檢測按鍵值。按鍵電路圖如圖3 所示。
圖3.按鍵電路
圖注: Group1_1,Group1_2,Group1_3 分別表示第一參賽小組的三個成員的按鈕, 依次類推Group2_1,Group2_2,Group2_3 和 Group1_1,Group1_2,Group1_3 分別代表第二和第三參賽小組的三個成員;Start、Add、Sub 分別代表搶答開始按鍵、對小組成績的加操作和減操作按鈕!
3、顯示模塊
顯示模塊由4 位的LED 數(shù)碼管顯示搶答組數(shù)、是否違規(guī)搶答信息、按下?lián)尨疰I后的搶答時間、各組所得分數(shù)等信息;其中數(shù)碼管左邊2 位顯示搶答組號及搶答計時時間,右邊2 位顯示相應(yīng)組的成績。數(shù)碼管的驅(qū)動電路(譯碼電路)用兩片74164 控制;電路圖如圖4 所示。
顯示數(shù)據(jù)信息通過74164 的串行譯碼傳送到數(shù)碼管對應(yīng)段,對應(yīng)位顯示;對于數(shù)碼管顯示的時序特別要注意:數(shù)碼管是采用動態(tài)掃描方式顯示,所有位掃描顯示一次的頻率一定要大于相應(yīng)位數(shù)據(jù)改變的頻率;同時當(dāng)數(shù)碼管對于數(shù)據(jù)改變的同時一定要把相應(yīng)數(shù)據(jù)送到數(shù)碼管進行顯示,即數(shù)據(jù)改變和數(shù)據(jù)顯示要同步;此設(shè)計中4 位數(shù)碼管動態(tài)掃描頻率位190Hz,而數(shù)碼管要顯示的搶答組數(shù)、搶答組的成績等信息的變化頻率都是秒級,即幾秒鐘或者幾分鐘變化一次,滿足數(shù)碼管顯示要求。
圖4.顯示電路
注:數(shù)碼管為共陰數(shù)碼管,其中pin6,pin8,pin9,pin12 依次為位碼,其余為段碼;
4、時鐘復(fù)位
此模塊用于生成FPGA 系統(tǒng)時鐘和復(fù)位電路,采用有源晶振和低電平復(fù)位。系統(tǒng)時鐘采用50MHz,能夠滿足電路設(shè)計要求,電路如圖5 所示。
圖5.時鐘復(fù)位電路
5、報警模塊
報警主要用于響應(yīng)當(dāng)沒有按開始鍵之前違規(guī)搶答信號;即當(dāng)違規(guī)時蜂鳴器響;同時還增加了一個紅色用于顯示當(dāng)按下開始鍵的信號;即當(dāng)主持人按下開始按鍵時,紅色LED 燈亮;同時用一個綠色LED 燈指示有選手按搶答按鈕,選手按鍵搶答,綠色LED 閃爍一次。電路圖如圖6 所示。
圖6.報警和指示
軟件代碼描述
軟件設(shè)計主要采用verilog HDL 語言進行設(shè)計,采用狀態(tài)機對搶答器的各個過程進行控制,設(shè)計中采用了層次化和模塊化的思想,即頂層模塊只有一個控制搶答器的主狀態(tài)機和模塊例化,然后分別用子模塊實現(xiàn)數(shù)碼管顯示,成績多路選擇器,成績的處理模塊,按下?lián)尨痖_始鍵后的延遲等待模塊,按鍵模塊等。程序流程圖如圖7 所示。
fpga相關(guān)文章:fpga是什么
蜂鳴器相關(guān)文章:蜂鳴器原理
評論