基于FPGA的四路搶答器設(shè)計(jì)_第1頁
基于FPGA的四路搶答器設(shè)計(jì)_第2頁
基于FPGA的四路搶答器設(shè)計(jì)_第3頁
基于FPGA的四路搶答器設(shè)計(jì)_第4頁
基于FPGA的四路搶答器設(shè)計(jì)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、桂林電子科技大學(xué) 基于FPGA的四路搶答器設(shè)計(jì)摘 要本文介紹了以FPGA為基礎(chǔ)的四路搶答器的設(shè)計(jì),此次設(shè)計(jì)是一個(gè)有4組搶答輸入,并具有搶答計(jì)時(shí)控制,按鍵消抖以及積分顯示等功能的通用型搶答器。主持人有4個(gè)按鍵控制,可以進(jìn)行開始搶答,對各搶答小組成績進(jìn)行相應(yīng)加減操作以及所有積分重置。此次設(shè)計(jì)程序使用verilog語言編寫,并且使用modelsim進(jìn)行相關(guān)仿真,最后在FPGA開發(fā)板上燒錄程序進(jìn)行實(shí)際操作演示實(shí)現(xiàn)了相應(yīng)功能,達(dá)到了此次設(shè)計(jì)的目的。本設(shè)計(jì)采用FPGA來做增強(qiáng)了時(shí)序控制的靈活性,同時(shí)由于FPGA的IO端口資源豐富,可以再本設(shè)計(jì)基礎(chǔ)上稍加修改可以重復(fù)設(shè)計(jì)出具有多組輸入的搶答器。關(guān)鍵字:按鍵消

2、抖;顯示;仿真;四路搶答;AbstractIn this paper, the design of four channel responder based on FPGA is proposed. The design contains four channel input, and also it has timing function, button-stop-shaking function, score display function. And the result of the design is a universal responder. The host has four

3、buttons to control, in order to start response, add or sub the scores for each group and clear all group scores. The design program uses verilog language to write software. And modelsim is used to simulate the function on computer. At last the actual design results are demonstrated on the FPGA devel

4、opment board, and the functions are well veified. The result achieves the purpose of the design. The design uses FPGA to enhance the flexibility of timing control. At the same time because of IO port resoures in FPGA are much rich, if you want to design more channels responder, you just only repeat

5、design on the basic of the design which is slightly modified.Keywords: button-stop-shaking; display; simulate; four channel responder;目 錄1引言42FPGA原理及其相關(guān)工具軟件的介紹52.1FPGA開發(fā)過程與應(yīng)用52.1.1FPGA發(fā)展歷程及現(xiàn)狀52.1.2FPGA工作原理62.1.3FPGA開發(fā)流程62.2Quartus II軟件72.3Simulink軟件82.3.1代碼仿真82.3.2門級仿真和時(shí)序仿真93實(shí)驗(yàn)步驟及仿真調(diào)試結(jié)果93.1功能描述及設(shè)計(jì)架構(gòu)

6、93.2搶答器程序流程圖和各模塊軟件代碼分析103.2.1搶答器程序結(jié)構(gòu)及主程序流程圖103.2.2主控制及按鍵輸入模塊123.2.3計(jì)時(shí)模塊143.2.4BCD顯示模塊143.3頂層模塊連線及開發(fā)板硬件配置153.4modelsim仿真194結(jié)論21謝 辭22參考文獻(xiàn)231 引言隨著電子技術(shù)的發(fā)展,現(xiàn)在的搶答器功能越來越強(qiáng),可靠性和準(zhǔn)確性也越來越高。能夠?qū)崿F(xiàn)搶答器功能的方式有多種,可以采用前期的模擬電路、數(shù)字電路或模擬與數(shù)字電路相結(jié)合的方式,但這種方式制作過程復(fù)雜,而且準(zhǔn)確性與可靠性不高,成品面積大。對于目前搶答器的功能描述,如涵蓋搶答器、搶答限時(shí)、選手答題計(jì)時(shí)及犯規(guī)組號搶答器具有搶答自鎖,

7、燈光指示、暫停復(fù)位、電子音樂報(bào)聲、自動定時(shí)等功能,還有工作模式的切換和時(shí)間設(shè)定,對于這些,隨著科學(xué)技術(shù)的發(fā)展,肯定還要得到進(jìn)一步的改進(jìn)。一般都要趨向于智能化。在各類競賽中,特別是做搶答題時(shí),在搶答過程中,為了知道哪一組或哪一名選手先答題,必須要有一個(gè)系統(tǒng)來完成這個(gè)任務(wù)。如果在搶答過程中,只靠人的視覺是很難判斷出哪組先答題。利用FPGA來設(shè)計(jì)搶答器,使以上問題得以解決,即使有兩組的搶答時(shí)間相差幾微秒,也可分辨出哪組優(yōu)先答題。搶答器是一種應(yīng)用非常廣泛的設(shè)備,在各種競賽、搶答場合中,它能迅速、客觀地分辨出最先獲得發(fā)言權(quán)的選手。早期的搶答器只由幾個(gè)三極管、可控硅、發(fā)光管等組成, 能通過發(fā)光管的指示辨認(rèn)

8、出選手號碼。現(xiàn)在大多數(shù)搶答器均使用高速處理芯片和數(shù)字集成電路,從開始的單片機(jī)到現(xiàn)在的ARM或者FPGA控制,并越來越走向成熟,同時(shí)增加了許多新功能,如選手號碼顯示、搶按前或搶按后的計(jì)時(shí)、選手得分顯示功能。像這類搶答器,制作過程簡單,準(zhǔn)確性與可靠性高,而且安裝維護(hù)簡單。對于搶答器的應(yīng)用,如早期的數(shù)字電路,隨著科技的逐步發(fā)展,進(jìn)而到了單片機(jī)以及更高的FPGA或ARM的控制來實(shí)現(xiàn)其功能,而且功能齊全,電路簡單,成本低,性能高,真正朝著有利的方向發(fā)展。2 FPGA原理及其相關(guān)工具軟件的介紹2.1 FPGA開發(fā)過程與應(yīng)用隨著現(xiàn)場可編程邏輯器件越來越高的集成度,加上不斷出現(xiàn)的I/O標(biāo)準(zhǔn)、嵌入功能、高級時(shí)鐘

9、管理的支持,使得現(xiàn)場可編程邏輯器越來越廣泛。2.1.1 FPGA發(fā)展歷程及現(xiàn)狀從Xilinx公司推出了世界上第一片F(xiàn)PGA(現(xiàn)場可編程邏輯芯片),F(xiàn)PGA已經(jīng)歷幾十年的發(fā)展。從最初的一千多可利用門,發(fā)展到90年代的幾十萬個(gè)可利用門,到十一世紀(jì)又陸續(xù)推出了幾千萬門的單片F(xiàn)PGA芯片。FPGA使用靈活,適用性強(qiáng),特別適用于復(fù)雜邏輯的設(shè)計(jì),有利用電子系統(tǒng)小型化,而且其開發(fā)周期短、開發(fā)投入少、芯片價(jià)格不斷降低,促使FPGA越來越多地取代了ASIC的市場。2.1.2 FPGA工作原理FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB(Confi

10、gurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。FPGA的基本特點(diǎn)主要有: 1)采用FPGA設(shè)計(jì)ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。 3)FPGA內(nèi)部有豐富的觸發(fā)器和IO引腳。 4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。 5) FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 可以說,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。 FPGA是由存

11、放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對片內(nèi)的RAM進(jìn)行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。 加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。2.1.3 FPGA開發(fā)流程FPGA開發(fā)流程可以分為如下幾步:設(shè)計(jì)輸入,

12、設(shè)計(jì)輸入主要包括原理圖輸入、狀態(tài)圖輸入、波形圖輸入以及某種硬件描述語言,比如說是VHDL、Verilog的源程序。它是利用這些輸入去描述一個(gè)電路的功能。功能仿真,功能仿真就是利用相關(guān)仿真工具對相關(guān)電路進(jìn)行功能級別仿真,也就是說對你的輸入設(shè)計(jì)的邏輯功能進(jìn)行相關(guān)的模擬測試。在功能上面來了解電路是否能夠達(dá)到預(yù)期要求。這里的功能仿真純粹是模擬性質(zhì)的,不會設(shè)計(jì)的任何具體器件的硬件特性。綜合,綜合就是行為或者功能層次表達(dá)的電子系統(tǒng)轉(zhuǎn)換成低層次門級電路的網(wǎng)表。布局布線,就是將綜合后的網(wǎng)表文件針對某一個(gè)具體的目標(biāo)器件進(jìn)行邏輯映射。此時(shí)應(yīng)該使用FPGA廠商提供的實(shí)現(xiàn)與布局布線工具,根據(jù)所選芯片的型號,進(jìn)行芯片內(nèi)

13、部功能單元的實(shí)際連接與映射。時(shí)序驗(yàn)證,就是要使得時(shí)序仿真過程中,建立與保持時(shí)間要符合相關(guān)的制約,以便數(shù)據(jù)能被正確的傳輸。使仿真既包含門延時(shí),又包含線延時(shí)信息。能較好地反映芯片的實(shí)際工作情況。生成SOF等文件,此文件可以通過調(diào)試器把它下載到系統(tǒng)中間去。而FPGA設(shè)計(jì)流程的其他步驟基本上由相關(guān)工具去完成,因此只要自己設(shè)置好相關(guān)參數(shù),不要人為干預(yù)太多。而驗(yàn)證的話就需要用戶花費(fèi)大量的時(shí)間去完成。2.2 Quartus II軟件 此次所使用的軟件是Quartus II9.0,編程語音是verilog HDL。Quartus II是Altera提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界最大可

14、編程邏輯器件供應(yīng)商之一。Quartus II在21世紀(jì)初推出,是Altera前一代FPGA/CPLD集成開發(fā)環(huán)境MAX+plus II的更新?lián)Q代產(chǎn)品,其界面友好,使用便捷。在Quartus II上可以完成設(shè)計(jì)輸入、HDL綜合、布線布局(適配)、仿真和下載和硬件測試等流程,它提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。Altera的Quartus II 提供了完整的多平臺設(shè)計(jì)環(huán)境,能滿足各種特定設(shè)計(jì)的需要,也是單芯片可編程系統(tǒng)(SOPC)設(shè)計(jì)的綜合性環(huán)境和SOPC開發(fā)的基本設(shè)計(jì)工具,并為AlteraDSP開發(fā)包進(jìn)行系統(tǒng)模型設(shè)計(jì)提供了集成綜合環(huán)境。Quartu

15、s II設(shè)計(jì)工具完全支持VHDL、Verylog的設(shè)計(jì)流程,其內(nèi)部嵌有VHDL、Verilog邏輯綜合器。Quartus II也可以利用第三方的綜合工具,如Leonardo Spectrum、Synplify Pro、FPGA Complier II,并能直接調(diào)用這些工具。同樣,Quartus II具備仿真功能,同時(shí)也支持第三方的仿真工具,如ModelSim。此外,Quartus II與MATLAB和DSP Builder結(jié)合,可以進(jìn)行基于FPGA的DSP系統(tǒng)開發(fā),是DSP硬件系統(tǒng)實(shí)現(xiàn)的關(guān)鍵EDA工具。Quartus II包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(Analysis

16、 & Synthesis)、適配器(Filter)、裝配器(Assembler)、時(shí)序分析器(Timing Analyzer)、設(shè)計(jì)輔助模塊(Design Assistant)、EDA網(wǎng)表文件生成器(EDA Netlist Writer)和編輯數(shù)據(jù)接口(Complier Database Interface)等??梢酝ㄟ^選擇Start Complication來運(yùn)行所有的編譯器模塊,也可以通過選擇Start單獨(dú)運(yùn)行各個(gè)模塊。還可以通過選擇Complier Tool(Tools 菜單),在Complier Tool 窗口中運(yùn)行該模塊來啟動編輯器模塊。在Complier Tool 窗口中,

17、可以打開該模塊的設(shè)置文件或報(bào)告文件,或打開其他相關(guān)窗口。圖七中所示的上排是Quartus II編譯設(shè)計(jì)主控界面,它顯示了Quartus II自動設(shè)計(jì)的各主要處理環(huán)節(jié)和設(shè)計(jì)流程,包括設(shè)計(jì)輸入編輯、設(shè)計(jì)分析與綜合、適配、編程文件匯編(裝配)、時(shí)序參數(shù)提取以及編程下載幾個(gè)步驟。在圖七下排的流程框圖,是與上面的Quartus II設(shè)計(jì)流程相對照的標(biāo)準(zhǔn)的EDA開發(fā)流程。圖一、Quartus II設(shè)計(jì)流程2.3 Simulink軟件2.3.1 代碼仿真在完成一個(gè)設(shè)計(jì)的代碼編寫工作之后,可以直接對代碼進(jìn)行仿真,檢測源代碼是否符合功能要求。這時(shí),仿真的對象為HDL代碼,比較直觀,速度比較快,可以進(jìn)行與軟件相類

18、似的多種手段的調(diào)試(如單步執(zhí)行等)。在設(shè)計(jì)的最初階段發(fā)現(xiàn)問題,可以節(jié)省大量的精力。1設(shè)計(jì)HDL源代碼:可以使VHDL語言或Verilog語言。2測試激勵(lì)代碼:根據(jù)設(shè)計(jì)要求輸入/輸出的激勵(lì)程序,由于不需要進(jìn)行綜合,書寫具有很大的靈活性。3仿真模型/庫:根據(jù)設(shè)計(jì)內(nèi)調(diào)用的器件供應(yīng)商提供的模塊而定,如:FIFO(Altera常用的FIFO有:lpm_fifo /lpm_fifo_dc等)、DPRAM等。2.3.2 門級仿真和時(shí)序仿真使用綜合軟件綜合后生成的門級網(wǎng)表或者是實(shí)現(xiàn)后生成的門級模型進(jìn)行仿真,不加入時(shí)延文件的仿真就是門級仿真。可以檢驗(yàn)綜合后或?qū)崿F(xiàn)后的功能是否滿足功能要求,其速度比代碼功能仿真要慢

19、,但是比時(shí)序仿真要快。在門級仿真的基礎(chǔ)上加入時(shí)延文件“.sdf”文件的仿真就是時(shí)延仿真。優(yōu)點(diǎn)是:比較真實(shí)的反映邏輯的時(shí)延與功能,缺點(diǎn)是速度比較慢,如果邏輯比較大,那么需要很長的時(shí)間。在這里仿真以Altera的器件為例。利用經(jīng)過綜合布局布線的網(wǎng)表和具有時(shí)延信息的反標(biāo)文件進(jìn)行仿真,可以比較精確的仿真邏輯的時(shí)序是否滿足要求。3 實(shí)驗(yàn)步驟及仿真調(diào)試結(jié)果3.1 功能描述及設(shè)計(jì)架構(gòu)本文設(shè)計(jì)了一個(gè)通用型電子搶答器:有8個(gè)按鍵輸入,其中4個(gè)按鍵為四組搶答選手的輸入,另4個(gè)分別為主持人的開始搶答、加分、減分以及積分重置操作按鍵。有3個(gè)BCD數(shù)碼管進(jìn)行顯示,其中1個(gè)顯示搶答者組號,另外2個(gè)顯示積分。并有8個(gè)LED

20、燈用來提示相應(yīng)搶答倒計(jì)時(shí)時(shí)間。四組搶答選手,各自可手動按按鈕申請搶答權(quán);回答正確加1 分,回答錯(cuò)誤減1 分,違規(guī)搶答減1分,不搶答不加分不扣分,各組初始積分為10分。搶答器具體功能如下:1、設(shè)置一個(gè)搶答控制開關(guān)Start,該開關(guān)由主持人控制;只有當(dāng)主持人按下開始鍵才能搶答;在按開始按鈕前搶答屬于違規(guī)。2、搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間設(shè)定為8 秒。當(dāng)主持人啟動"開始"鍵后,8個(gè)紅色LED燈全亮,每流失一秒,LED燈則熄滅一個(gè),從右到左依次熄滅,直到全部熄滅,若仍沒人搶答則該輪搶答輪空,自動轉(zhuǎn)到下一輪搶答環(huán)節(jié)。3、搶答器具有鎖存與顯示功能,即選手按動按鈕搶答后,鎖存

21、相應(yīng)的組號,當(dāng)主持人分?jǐn)?shù)加減完畢后,將在3個(gè)數(shù)碼管分別顯示所搶答的組號以及該組目前的積分,如果屬于違規(guī)搶答,則直接跳出搶答環(huán)節(jié),直接扣分并顯示相應(yīng)組號和目前積分,進(jìn)入下一輪搶答。4、主持人在選手搶答后進(jìn)入加減分環(huán)節(jié),此時(shí)主持人可使用2個(gè)按鍵中的其中一個(gè),一個(gè)按鍵用來加分,一個(gè)按鍵用來減分,主持人可選擇加、減或者不操作,此環(huán)節(jié)一樣為計(jì)時(shí)環(huán)節(jié),倒計(jì)時(shí)時(shí)間為5秒,當(dāng)5秒過后主持人未進(jìn)行操作,則判定這次搶答為既不加分也不減分。加減分倒計(jì)時(shí)通過5個(gè)紅色LED燈進(jìn)行顯示,當(dāng)有人按下?lián)尨鸷螅?個(gè)LED燈全亮,每過1秒,則熄滅一個(gè),從左到右,直到全部熄滅。本設(shè)計(jì)以FPGA 為基礎(chǔ)設(shè)計(jì)的電子搶答器,根據(jù)設(shè)計(jì)功

22、能要求,該設(shè)計(jì)主要包括搶答輸入鍵盤,數(shù)碼管顯示,LED燈顯示及FPGA 最小系統(tǒng)。搶答器結(jié)構(gòu)框圖如下圖所示:FPGA時(shí)鐘信號按鍵輸入電路數(shù)碼管顯示電路LED計(jì)時(shí)顯示電路圖二、搶答器結(jié)構(gòu)框圖其中FPGA 最小系統(tǒng)電路為FPGA 正常工作時(shí)的基本電路,由時(shí)鐘和復(fù)位電路組成。按鍵輸入電路由8個(gè)按鍵組成。數(shù)碼管顯示電路由1個(gè)8段控制共陰BCD和2個(gè)經(jīng)過譯碼后的4位BCD組成。LED計(jì)時(shí)顯示電路由8個(gè)紅色LED燈組成。3.2 搶答器程序流程圖和各模塊軟件代碼分析3.2.1 搶答器程序結(jié)構(gòu)及主程序流程圖軟件設(shè)計(jì)主要采用verilog HDL 語言進(jìn)行設(shè)計(jì),總體編程思路采用模塊化編程方式,主要分為3個(gè)模塊,

23、一個(gè)主控制及按鍵輸入模塊,一個(gè)LED計(jì)時(shí)提示模塊,一個(gè)搶答組號及積分顯示模塊,分別對這3個(gè)子模塊進(jìn)行獨(dú)立編程設(shè)計(jì),并生成元件,并在頂層使用電路連線的方式將3個(gè)模塊連接起來完成整個(gè)設(shè)計(jì)。主要程序運(yùn)行方式采用狀態(tài)機(jī)的方法來實(shí)現(xiàn)對搶答器的各個(gè)環(huán)節(jié)的控制。此次所設(shè)計(jì)的狀態(tài)一共有4個(gè)狀態(tài)。第一個(gè)狀態(tài)為等待主持人按鍵開始搶答,在此狀態(tài)時(shí)會一直檢測按鍵信號,當(dāng)收到主持人的開始搶答信號進(jìn)入下一個(gè)環(huán)節(jié),如果有人搶答判定為違規(guī)搶答,而直接進(jìn)入狀態(tài)4進(jìn)行積分和搶答組號顯示。第二個(gè)狀態(tài)為等待4組搶答狀態(tài),在此狀態(tài)時(shí),LED計(jì)時(shí)顯示模塊將開始顯示搶答計(jì)時(shí),如果在規(guī)定時(shí)間內(nèi)有人最先搶答則直接進(jìn)入下一個(gè)狀態(tài),而如果無人搶答

24、,計(jì)時(shí)時(shí)間到后也進(jìn)入下一個(gè)狀態(tài),此狀態(tài)下主持人按除復(fù)位鍵以外鍵無效,而按復(fù)位鍵則直接返回第一個(gè)狀態(tài),并將積分復(fù)位。第三個(gè)狀態(tài)為主持人加減分狀態(tài),在此狀態(tài)時(shí),LED計(jì)時(shí)顯示模塊重置并顯示加減分的計(jì)時(shí),如果在規(guī)定時(shí)間內(nèi)主持人按下加分或減分則直接進(jìn)入第四狀態(tài),而無操作計(jì)時(shí)時(shí)間到后也進(jìn)入下一個(gè)狀態(tài),此狀態(tài)下主持人按復(fù)位鍵則返回第一狀態(tài)并將積分復(fù)位。其他按鍵輸入無效。第四個(gè)狀態(tài)對前面狀態(tài)中所獲取的鍵值信號進(jìn)行處理,更新并保存各組的積分信息,同時(shí)將搶答組號和積分發(fā)送給BCD顯示模塊進(jìn)行顯示,最后自動跳轉(zhuǎn)回第一狀態(tài)。下圖為主程序運(yùn)行流程圖:圖三、 主程序流程圖3.2.2 主控制及按鍵輸入模塊此模塊輸入有時(shí)鐘

25、信號clk,8個(gè)按鍵輸入信號7:0key_in, 加減分計(jì)時(shí)計(jì)完信號score_end,搶答計(jì)時(shí)計(jì)完信號start_end;而輸出有加減分開始計(jì)時(shí)信號score_begin,搶答開始計(jì)時(shí)信號start_begin,搶答組積分輸出信號4:0score_value,搶答組組號輸出信號3:0 score_num,復(fù)位信號clr。該模塊生成圖如下:圖四、主控制及按鍵輸入模塊框圖此模塊主要實(shí)現(xiàn)按鍵輸入和判定,以及狀態(tài)機(jī)控制,并與計(jì)時(shí)模塊進(jìn)行雙向通信,發(fā)送計(jì)時(shí)信號和接收計(jì)時(shí)完成信號,將搶答結(jié)果組號和積分信息發(fā)送給BCD顯示模塊進(jìn)行顯示,其中clr信號對其他模塊進(jìn)行同步復(fù)位。此模塊的按鍵輸入采用了軟件計(jì)數(shù)消

26、抖的方法,就是在按鍵按下邊沿信號發(fā)生后,計(jì)數(shù)單位開始計(jì)數(shù)如果計(jì)數(shù)完后按鍵狀態(tài)仍處于按下狀態(tài),則判定有按鍵輸入,否則不做操作。此次設(shè)計(jì)開發(fā)板上使用的時(shí)鐘頻率為20MHz,因此設(shè)置計(jì)數(shù)最大值為4000000則消抖時(shí)間大約在200ms左右,符合消抖延時(shí)所需要的時(shí)間。此次設(shè)計(jì)對每個(gè)按鍵均設(shè)置獨(dú)立的消抖計(jì)數(shù)單位,如果哪個(gè)按鍵的計(jì)數(shù)最先完成,則判定該鍵最先按下,并進(jìn)行相應(yīng)操作,部分程序如下:if(cnt0<32'd4000000)cnt0=cnt0+1;else /if(cnt3=22'd4000000)begincnt0=32'd0;key_value=8'b001

27、00001;state=3'b011;end按鍵輸入的判斷采用casez語句實(shí)現(xiàn),只對按鍵的某一位進(jìn)行判斷,部分程序如下:casez(key_in) 8'b?0:Begin3.2.3 計(jì)時(shí)模塊此模塊輸入有時(shí)鐘信號clk,搶答開始計(jì)時(shí)信號start_begin,加減分開始計(jì)時(shí)信號score_begin,復(fù)位信號clr,輸出信號有搶答結(jié)束計(jì)時(shí)信號start_end,加減分結(jié)束計(jì)時(shí)信號score_end,以及8個(gè)LED燈顯示控制led_8信號。該模塊生成圖如下:圖五、計(jì)時(shí)模塊框圖此模塊主要實(shí)現(xiàn)當(dāng)主控模塊發(fā)來搶答開始計(jì)時(shí)信號后開始搶答計(jì)時(shí),計(jì)時(shí)時(shí)間為8秒,并用8個(gè)LED燈進(jìn)行顯示,每次

28、計(jì)時(shí)時(shí)間減少1秒,則一個(gè)LED燈熄滅,從右到左,直到8個(gè)LED全部熄滅,計(jì)時(shí)結(jié)束返回?fù)尨鸾Y(jié)束計(jì)時(shí)信號;當(dāng)主控模塊發(fā)來加減分開始計(jì)時(shí)信號后開始加減分計(jì)時(shí),計(jì)時(shí)時(shí)間為5秒,并用5個(gè)LED燈進(jìn)行顯示,每次計(jì)時(shí)減少1秒,則一個(gè)LED燈熄滅,從左到右來區(qū)別搶答計(jì)時(shí)的LED燈提示方式,直到5個(gè)LED全部熄滅,計(jì)時(shí)結(jié)束返回加減分結(jié)束計(jì)時(shí)信號。不管在計(jì)時(shí)過程中還是不計(jì)時(shí)狀態(tài),如果有收到主控模塊發(fā)來的clr信號,則所有計(jì)時(shí)停止,重置所有狀態(tài)。計(jì)時(shí)所使用的方式仍然是通過計(jì)數(shù)實(shí)現(xiàn),部分程序如下:if(cnt <32'd20000000 )cnt=cnt+32'd1;elsebegincnt=3

29、2'd0;led_8=8'b11111111<<cnt_max1;cnt_max1=cnt_max1+1;end3.2.4 BCD顯示模塊此模塊輸入信號有時(shí)鐘信號clk,復(fù)位信號clr,搶答組積分信號4:0 score_value,搶答組組號3:0 score_num;輸出信號有組號顯示控制信號7:0 score_disp,積分個(gè)位顯示控制信號3:0 addr_l,積分十位顯示控制信號3:0 addr_h。此模塊框圖如下圖:圖六、BCD顯示模塊框圖此模塊實(shí)現(xiàn)從主控模塊搶答組的信息并進(jìn)行顯示,使用一個(gè)BCD顯示搶答組的組號,而搶答組積分有兩位,所以進(jìn)行相應(yīng)處理,取得積

30、分的個(gè)位和十位,并使用2個(gè)BCD顯示其積分。當(dāng)收到主控模塊發(fā)來的clr信號后,3個(gè)BCD顯示重置為未顯示狀態(tài)。由于設(shè)計(jì)開發(fā)板上積分顯示所使用的2個(gè)BCD有編碼芯片,所以可以直接輸出值進(jìn)行顯示,而組號顯示所使用的BCD是直接8段控制,需要進(jìn)行編碼操作,其部分程序如下:case(score_num)4'd1:score_disp=8'b00000110;4'd2:score_disp=8'b01011011;4'd3:score_disp=8'b01001111;4'd4:score_disp=8'b01100110;default:

31、;endcase3.3 頂層模塊連線及開發(fā)板硬件配置此次設(shè)計(jì)頂層模塊不是通過程序例化的方式添加子模塊,而是使用電路圖連線的方式,將每個(gè)模塊編譯成功后生成的器件圖導(dǎo)入到頂層模塊中,并使用連線直接將各模塊直接連接,并設(shè)置整個(gè)頂層總模塊的輸入和輸出,其具體連線圖如下:圖七、頂層模塊連線圖此次設(shè)計(jì)中進(jìn)行實(shí)物驗(yàn)證的FPGA開發(fā)板所使用芯片型號為CycloneII系列中EP2C5T144,此次設(shè)計(jì)中主要用到了開發(fā)板上的8個(gè)按鍵,8個(gè)LED燈以及3個(gè)BCD數(shù)碼管,相應(yīng)硬件引腳對應(yīng)名稱如下表:引腳名FPGA引腳號相應(yīng)功能ClkP17給FPGA提供20Mhz時(shí)鐘信號K1P57搶答開始按鍵K2P58加分操作按鍵K

32、3P59減分操作按鍵K4P60搶答復(fù)位按鍵K5P63一號搶答按鍵K6P64二號搶答按鍵K7P65三號搶答按鍵K8P67四號搶答按鍵LED8P9LED計(jì)時(shí)顯示1LED7P8LED計(jì)時(shí)顯示2LED6P7LED計(jì)時(shí)顯示3LED5P4LED計(jì)時(shí)顯示4LED4P3LED計(jì)時(shí)顯示5LED3P144LED計(jì)時(shí)顯示6LED2P143LED計(jì)時(shí)顯示7LED1P142LED計(jì)時(shí)顯示8LEDA-d0P27積分個(gè)位BCD數(shù)碼管d0LEDA-d1P43積分個(gè)位BCD數(shù)碼管d1LEDA-d2P42積分個(gè)位BCD數(shù)碼管d2LEDA-d3P41積分個(gè)位BCD數(shù)碼管d3LEDB-d0P40積分十位BCD數(shù)碼管d0LEDB-d1

33、P32積分十位BCD數(shù)碼管d1LEDB-d2P31積分十位BCD數(shù)碼管d2LEDB-d3P30積分十位BCD數(shù)碼管d3LEDC-aP55組號BCD數(shù)碼管a段LEDC-bP53組號BCD數(shù)碼管b段LEDC-cP52組號BCD數(shù)碼管c段LEDC-dP51組號BCD數(shù)碼管d段LEDC-eP48組號BCD數(shù)碼管e段LEDC-fP47組號BCD數(shù)碼管f段LEDC-gP45組號BCD數(shù)碼管g段LEDC-pP44組號BCD數(shù)碼管p段表一、FPGA開發(fā)板對應(yīng)管腳號及功能表此次設(shè)計(jì)中clk信號未外接時(shí)鐘,而直接由開發(fā)板上的20M晶振提供。按鍵部分電路在未按下狀態(tài)為高電平,按下后為低電平,接法如下圖:圖八、按鍵部

34、分電路8個(gè)LED燈直接由高電平驅(qū)動,當(dāng)FPGA的IO輸出高電平時(shí),LED被點(diǎn)亮,輸出低電平則LED熄滅。LEDA和LEDB兩個(gè)8段數(shù)碼管里面有編碼芯片,因此輸出4位數(shù)可直接顯示,無需進(jìn)行編碼,例如輸出1則直接顯示“1”,方便操作。而LEDC數(shù)碼管為共陰數(shù)碼管,它的每一段使用FPGA的一個(gè)IO驅(qū)動,因此輸出的8位數(shù)為編碼后的數(shù)。LEDC8段數(shù)碼管的每段所在位置及內(nèi)部電路如圖:圖九、共陰數(shù)碼管段位置分布圖圖十、共陰數(shù)碼管內(nèi)部結(jié)構(gòu)圖由于此開發(fā)板上有JTAG接口,而沒有AS接口,因此開發(fā)板程序下載方式只有JTAG下載方式。而JTAG下載方式又有兩種,一種掉電后程序就擦除,另一種將程序保存在外部EEPR

35、OM里,進(jìn)行引導(dǎo)FPGA配置,掉電后程序不會消失。在程序調(diào)試時(shí)候可以使用掉電式下載,方便查找程序的漏洞,此時(shí)下載進(jìn)FPGA的文件為.sof格式的文件,而如果想將程序固化到開發(fā)板上的EPC存儲器件中,需要將.sof轉(zhuǎn)換成.jic文件進(jìn)行下載,此時(shí)需要選擇相應(yīng)的EPC型號,進(jìn)行下載。此次在固化程序時(shí)候發(fā)現(xiàn),開發(fā)板上的EPC型號為EPCS1,程序的大小超過了板子上的EPC容量,因此此次設(shè)計(jì)不能將程序固化到開發(fā)板上,只能掉電式調(diào)試。3.4 modelsim仿真此次設(shè)計(jì)中clk為20MHz,因此時(shí)間周期為50ns,而計(jì)時(shí)模塊以及按鍵去抖程序的時(shí)間都大于200ms,因此仿真時(shí)會造成時(shí)間差太大,而造成仿真時(shí)間太長而不能運(yùn)行。此時(shí)仿真可將計(jì)時(shí)模塊以及按鍵去抖的計(jì)數(shù)值從原先設(shè)計(jì)的好的值調(diào)整到一個(gè)較小的數(shù)來讓仿真可以運(yùn)行,用于查看波形是否正確,實(shí)際應(yīng)用時(shí)再還原原先設(shè)定的計(jì)數(shù)值。此次仿真將計(jì)數(shù)值設(shè)定為10,整個(gè)仿真運(yùn)行時(shí)間為1ms,并且按鍵輸入只設(shè)定搶答1的脈沖為1,而其他按鍵脈沖值為0,則此時(shí)搶答器處于違規(guī)搶答狀態(tài),每一次搶答環(huán)節(jié)將扣除搶答1組積分1分,直

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論