劉德方,王先超,陳秀明,趙 佳
(阜陽(yáng)師范大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,安徽 阜陽(yáng)236037)
搶答器在各種競(jìng)賽場(chǎng)合被廣泛應(yīng)用,比如:知識(shí)競(jìng)賽或智力競(jìng)賽。目前,其設(shè)計(jì)方案基本上有兩種:一種是用單片機(jī)作為主控制器;另一種是用規(guī)模較小的數(shù)字邏輯芯片設(shè)計(jì)實(shí)現(xiàn)。前者比較靈活,其缺點(diǎn)是若搶答組數(shù)多,會(huì)有I/O 口不夠用的問題[1];后者設(shè)計(jì)思路簡(jiǎn)單,但電路可靠性低,而且實(shí)現(xiàn)起來(lái)難度較大。由于EDA(electronic design automation)技術(shù)的飛速發(fā)展,以計(jì)算機(jī)為平臺(tái),用EDA 軟件為開發(fā)工具,借助大規(guī)??删幊踢壿嬈骷﨔PGA(field programmable gate array)芯 片EP2C35F672C8 為實(shí)現(xiàn)載體,可以完成以軟件方式設(shè)計(jì)八人四組搶答器硬件電路,并且可以向小型化,速度快,功耗低,便于攜帶方向發(fā)展[2-4]。
利用EDA 技術(shù),采用自頂向下的設(shè)計(jì)方法,在集成開發(fā)環(huán)境QUARTUSII9.0 下,利用VHDL(very-high-speed integrated circuit hardware description language)程序設(shè)計(jì)并生成各個(gè)邏輯模塊,即各模塊的邏輯符號(hào)圖,最后將各邏輯符號(hào)圖級(jí)聯(lián)實(shí)現(xiàn)基于FPGA 芯片EP2C35F672C8 的多路搶答器。該搶答器可以執(zhí)行八人四組參賽選手的同時(shí)搶答,針對(duì)每位參賽選手,設(shè)置一個(gè)開關(guān)按鍵,以供搶答使用。搶答使能信號(hào)由裁判員設(shè)置(即授權(quán)),當(dāng)搶答使能信號(hào)有效時(shí)(高電平),允許搶答。同時(shí)設(shè)置倒計(jì)時(shí)信號(hào),當(dāng)?shù)褂?jì)時(shí)信號(hào)為高電平時(shí),進(jìn)行20 秒倒計(jì)時(shí);為低電平時(shí),倒計(jì)時(shí)單元被關(guān)閉。復(fù)位后,裁判員授權(quán)搶答允許信號(hào),搶答者開始搶答,同時(shí)倒計(jì)時(shí)單元進(jìn)行20 s 計(jì)時(shí),參賽者們按下?lián)尨痖_關(guān)按鍵,搶答器能判斷出第一搶答者(將搶答允許信號(hào)清零)并顯示該組組號(hào),同時(shí)使得其他組參賽者的搶答按鍵無(wú)效。在倒計(jì)時(shí)階段,若沒有人搶答,報(bào)警模塊就會(huì)發(fā)出警示信號(hào)。搶答器有復(fù)位清零功能。
本設(shè)計(jì)主要實(shí)現(xiàn)判斷第一搶答者,搶答倒計(jì)時(shí)和顯示組號(hào)等功能。其總體設(shè)計(jì)框圖如圖1。軟件部分則通過(guò)QuartusII9.0 軟件,用VHDL 程序設(shè)計(jì)實(shí)現(xiàn)多路搶答器的主要功能。
圖1 搶答器總體設(shè)計(jì)
主芯片采用Altera 公司推出的Cyclone II 系列的FPGA EP2C35F672C8,該器件有672 個(gè)引腳,片上邏輯宏單元(LE)共有33 216 個(gè),存儲(chǔ)容量為4 KB 的RAM 有105 個(gè),片上的18×18 硬件乘法器共有35、高性能鎖相環(huán)時(shí)鐘發(fā)生器有4 個(gè),用戶自定義I/O 引腳多達(dá)475 個(gè)[5]。
根據(jù)設(shè)計(jì)要求,該系統(tǒng)的頂層電路如圖2所示。
該搶答器主要由以下電路模塊組成:搶答判別電路、分頻電路、組別判斷電路、掃描信號(hào)產(chǎn)生電路、數(shù)碼管位信號(hào)與段信號(hào)匹配電路、倒計(jì)時(shí)電路和譯碼顯示電路。其中:組別判斷電路和搶答判別電路是關(guān)鍵模塊,前者是對(duì)每一位參賽者的組號(hào)進(jìn)行判斷,后者主要完成對(duì)最快搶答者的判斷功能;倒計(jì)時(shí)電路對(duì)搶答進(jìn)行20 s 倒計(jì)時(shí);分頻電路是為了得到1 Hz 的時(shí)鐘信號(hào);掃描信號(hào)產(chǎn)生電路產(chǎn)生的掃描信號(hào)除了能作為多位數(shù)碼管顯示的位選信號(hào)外還能作為多位數(shù)碼管顯示相應(yīng)位的段碼掃描信號(hào);數(shù)碼管位信號(hào)與段信號(hào)匹配電路是將多位七段數(shù)碼管相應(yīng)位位信號(hào)和段信號(hào)進(jìn)行匹配以正確顯示組號(hào)和倒計(jì)時(shí)時(shí)間信號(hào);譯碼顯示電路則是顯示搶答器的狀態(tài)。
搶答器的輸入信號(hào)CLK、CLR 和EN,分別是時(shí)鐘、復(fù)位、使能信號(hào);參賽者搶答按鍵開關(guān)信號(hào)A0、A1、B0、B1、C0、C1、D0、D1;輸出信號(hào)有:報(bào)警信號(hào)M、數(shù)碼管的LED 位信號(hào)和LED 段信號(hào)。
搶答器的工作流程:先將搶答使能信號(hào)EN和倒計(jì)時(shí)開關(guān)信號(hào)RST 置于高電平,然后進(jìn)行復(fù)位,此時(shí)參賽者可以開始進(jìn)行搶答,同時(shí)倒計(jì)時(shí)數(shù)碼管顯示從19 開始進(jìn)行倒計(jì)時(shí),A、B、C、D 四組搶答者誰(shuí)最先按下?lián)尨鸢存I,誰(shuí)搶答成功,同時(shí),搶答成功者面前的指示燈被點(diǎn)亮,而且譯碼顯示電路模塊顯示搶答成功者的參賽編號(hào)、主持人設(shè)置倒計(jì)時(shí)開關(guān)信號(hào)為低電平,禁止報(bào)警;如果倒計(jì)時(shí)結(jié)束時(shí)沒有人搶答,則發(fā)出報(bào)警信號(hào)。
該搶答器由組別判斷模塊、倒計(jì)時(shí)模塊、搶答判別模塊、數(shù)碼管位信號(hào)與段信號(hào)匹配模塊、掃描信號(hào)產(chǎn)生模塊、譯碼顯示模塊和分頻模塊組成如圖3。本設(shè)計(jì)使用VHDL 語(yǔ)言編程。
圖3 各模塊邏輯符號(hào)組別判斷模塊(a)組別判別;(b)搶答判別;(c)倒計(jì)時(shí);(d)掃描信號(hào)產(chǎn)生;(e)數(shù)碼管位信號(hào)與段信號(hào)匹配;(f)譯碼顯示;(g)分頻
2.2.1 組別判斷模塊設(shè)計(jì)
組別判斷模塊的主要作用是對(duì)每一位參賽者的組號(hào)進(jìn)行判斷。其模塊符號(hào)如圖3(a)。該模塊輸入信號(hào)有時(shí)鐘信號(hào)CLK(1 KHz)、四組按鍵A[1,0]、B[1,0]、C[1,0]、D[1,0],輸出信號(hào)為每一組的搶答信號(hào)S0、S1、S2、S3。
2.2.2 搶答判別模塊
搶答判別模塊具有第一搶答信號(hào)的鑒別和鎖存功能,在進(jìn)行鎖存的同時(shí),對(duì)搶答狀態(tài)進(jìn)行顯示。其模塊符號(hào)如圖3(b)。輸入信號(hào)有參賽者搶答按鍵開關(guān)信號(hào)、清零信號(hào)CLR、EN 使能信號(hào),各組搶答狀態(tài)顯示信號(hào)LEDA、LEDB、LEDC、LEDD 和搶答成功組別編號(hào)信號(hào)Q[3,…,0]為輸出信號(hào)。
系統(tǒng)復(fù)位后,當(dāng)使能信號(hào)EN 為高電平時(shí),系統(tǒng)根據(jù)選手按下?lián)尨鸢粹o的先后順序選擇最先搶答信號(hào),其對(duì)應(yīng)的搶答狀態(tài)顯示信號(hào)LEDALEDD 輸出高電平,搶答成功組別編號(hào)由信號(hào)Q[3,…,0]輸出,并鎖存搶答器此時(shí)的狀態(tài),使其他選手的搶答按鍵無(wú)效直到清零信號(hào)有效為止。在每一輪搶答開始之前,都要使用復(fù)位清零信號(hào)CLR,使電路恢復(fù)初始狀態(tài)。
2.2.3 倒計(jì)時(shí)模塊
倒計(jì)時(shí)模塊的主要作用是進(jìn)行搶答倒計(jì)時(shí)。系統(tǒng)復(fù)位后,當(dāng)?shù)褂?jì)時(shí)開關(guān)信號(hào)為高電平時(shí),倒計(jì)時(shí)數(shù)碼管從19 開始以秒為單位進(jìn)行倒計(jì)時(shí),當(dāng)有選手搶答時(shí),主持人給出停止計(jì)時(shí)信號(hào);如果倒計(jì)時(shí)結(jié)束后還無(wú)人搶答,倒計(jì)時(shí)模塊會(huì)輸出一個(gè)高電平使LED 燈亮。其模塊符號(hào)如3(c)所示。時(shí)鐘信號(hào)CLK(1 Hz)、清零信號(hào)CLR、倒計(jì)時(shí)停止信號(hào)RST 這三個(gè)信號(hào)為輸入信號(hào);TH[3,…,0]、TL[3,…,0]、LED 燈報(bào)警信號(hào)M 為輸出信號(hào),它們分別是計(jì)時(shí)器高位信號(hào)、計(jì)時(shí)器低位信號(hào)、倒計(jì)時(shí)報(bào)警信號(hào)。
2.2.4 掃描信號(hào)產(chǎn)生模塊
掃描信號(hào)產(chǎn)生模塊的主要作用是產(chǎn)生掃描信號(hào),它不僅能作為多位數(shù)碼管顯示的位選信號(hào),還能作為數(shù)碼管顯示相應(yīng)位的段碼掃描信號(hào)。其模塊符號(hào)如3(d)所示。時(shí)鐘信號(hào)CLK(1 KHz)是輸入信號(hào),Q[2,1,0]是輸出信號(hào),該信號(hào)是作為基于時(shí)鐘的掃描信號(hào)使用。
2.2.5 數(shù)碼管位信號(hào)與段信號(hào)匹配模塊
由于該系統(tǒng)需要顯示一位選手編號(hào)和兩位倒計(jì)時(shí)時(shí)間信號(hào),要正確顯示這些數(shù)據(jù),需要對(duì)多位七段數(shù)碼管相應(yīng)顯示位的位信號(hào)與段信號(hào)進(jìn)行匹配。其模塊符號(hào)如3(e)所示。該模塊的輸入信號(hào)有掃描信號(hào)SEL[2,…,0]、搶答選手編號(hào)的BCD碼D3[3,…,0]、倒計(jì)時(shí)模塊輸出的時(shí)間信號(hào)的高位和低位的BCD 碼D1[3,…,0]和D2[3,…,0];輸出信號(hào)為顯示信號(hào)Q[3,…,0]。
2.2.6 譯碼顯示模塊
譯碼顯示模塊的實(shí)質(zhì)是一個(gè)LED 共陽(yáng)極顯示模塊的譯碼器,其作用是將輸入的BCD 碼轉(zhuǎn)換成可供數(shù)碼管直接顯示用的七段碼。其模塊符號(hào)如3(f)所示。其中D[3,…,0]為輸入的BCD 碼,Q[6,…,0]為輸出的七段碼,它將輸入的BCD 碼譯碼顯示為十進(jìn)制數(shù)字的0~9。
2.2.7 分頻模塊
由于倒計(jì)時(shí)模塊需要1 Hz 的時(shí)鐘信號(hào),而FPGA EP2C35F672C8 的時(shí)鐘信號(hào)為50MHz,所以需要分頻來(lái)得到1 Hz 的時(shí)鐘信號(hào)。其模塊符號(hào)如3(g)所示。
根據(jù)搶答器的工作原理及其頂層電路,各模塊的設(shè)計(jì)實(shí)現(xiàn)與仿真結(jié)果與理論一致。以下僅對(duì)組別判斷模塊、搶答判別模塊及頂層電路的的組別判別模塊的仿真結(jié)果進(jìn)行分析。
組別判斷模塊的波形仿真如圖4 所示。搶答信號(hào)為低電平有效。圖中只有當(dāng)同組的兩個(gè)參賽者都輸出高電平時(shí),該組的輸出信號(hào)才為高電平。
圖4 組別判斷模塊的仿真波形
其波形仿真如圖5 所示。從圖中可看出,A組最先搶答,LEDA 輸出高電平,同時(shí)輸出信號(hào)為“001”。這說(shuō)明該模塊能對(duì)第一搶答信號(hào)進(jìn)行鑒別并鎖存該信號(hào),同時(shí)與搶答成功者組號(hào)相對(duì)應(yīng)的LED 燈會(huì)被點(diǎn)亮以發(fā)出提示。
圖5 搶答判別模塊的仿真波形
由圖中可看出,當(dāng)CLR 信號(hào)無(wú)效和RST 為高電平時(shí),倒計(jì)時(shí)模塊從19 開始進(jìn)行倒計(jì)時(shí),倒計(jì)時(shí)為0 時(shí),發(fā)出一個(gè)高電平信號(hào)報(bào)警。
搶答器頂層電路波形仿真如圖6 所示。從圖中可看出,A 組最先搶答,系統(tǒng)正確判斷出了第一搶答者的組號(hào),并顯示A 組的LED 燈亮。
圖6 搶答器頂層電路仿真波形
本文通過(guò)集成開發(fā)環(huán)境QUARTUSII9.0 和硬件描述語(yǔ)言VHDL 設(shè)計(jì)并實(shí)現(xiàn)了八人四組搶答器。首先采用硬件描述語(yǔ)言程序設(shè)計(jì)各模塊并生成邏輯符號(hào)圖,然后按照搶答器的工作原理,將邏輯符號(hào)圖級(jí)聯(lián)構(gòu)成搶答器的頂層電路,最后通過(guò)仿真、下載驗(yàn)證目標(biāo)文件。實(shí)驗(yàn)結(jié)果表明,該搶答器運(yùn)行效果良好,可在各類競(jìng)賽性質(zhì)的場(chǎng)合推廣應(yīng)用,能夠消除人眼誤差、正確判斷最先搶答者。