基于FPGA的搶答器設計本科畢業設計_第1頁
基于FPGA的搶答器設計本科畢業設計_第2頁
基于FPGA的搶答器設計本科畢業設計_第3頁
基于FPGA的搶答器設計本科畢業設計_第4頁
基于FPGA的搶答器設計本科畢業設計_第5頁
已閱讀5頁,還剩70頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、河南科技大學本科畢業設計(論文)基于fpga的搶答器設計摘 要本文介紹了一種采用eda技術,基于fpga并在quartus工具軟件環境下使用verilog硬件描述語言編寫的數碼管顯示4路搶答器的電路設計。本次設計的搶答器能夠同時供應4位選手或者4個代表隊進行搶答比賽,分別使用4個按鈕a,b,c,d表示。同時需要設置系統復位和搶答控制開關,這需由主持人控制。主持人在允許搶答的情況下,計時器開始從30s開始倒計時,直到有人搶答成功后,由鎖存器將時間鎖存住,此時數碼管上將顯示剩余時間及搶答成功選手號碼,同時對應選手的led燈也被點亮。在判斷選手是否回答正確后,由主持人控制加減按鈕進行給分。在一輪比賽

2、結束后,主持人按下復位按鈕,則除了計分模塊外,其他模塊都復位為初始時刻,為下一輪的比賽做好準備。系統芯片主要采用ep2c8q208,由搶答判別模塊,計時模塊,分頻器模塊,計分模塊,鎖存器模塊,數碼管驅動模塊組成。經過編譯及其仿真所設計的程序,該設計的搶答器基本能夠實現此次設計的要求,從而完成了搶答器應具備的功能。關鍵詞:搶答器,數碼顯示,硬件描述語言,可編程邏輯門陣列fpga-based responder designabstractthis article introduces the design of 4 answering device circuit using an eda te

3、chnology verilog hdl language in fpga and quartus environment.at the same time,the 4 answering device circuit is displayed by the digital.the responder can also supply four players or four teams to answer in the game, respectively, using four buttons a, b, c, d. setting reset and answer in a system

4、control switch, which controls required by the moderator. when the moderator allows to answer, the timer starts counts down from the 30s until someone answers successfully, by the time the latch latches will to live, then the remaining time and the number of the player who responds successfully will

5、 be displayed on the digital tube, at the same time the led of the corresponding player lights will be lighted. determined whether the contestant answers correctly, the moderator will give points by controlling the addition and subtraction button. at the end of the game, the moderator presses the re

6、set button, others modules are reseted to the initial time for the next round of the game except the scoring module.the system uses mainly the ep2c8q208. at the same time the system is made from the answer in decision block, timing module, divider block, scoring module latch module, led driver modul

7、es. after compilation and simulation of the design process, the design responder can basically achieve the design requirements, thus completing the responder function.key words:responder, digital display, hdl ,fpga目錄前言1第1章 緒論3§1.1選題背景3§1.1.1eda技術發展3§1.1.2課題研究的必要性4§1.2研究課題的內容4第2章

8、系統方案設計6§2.1fpga簡介6§2.1.1fpga芯片結構8§2.1.2fpga設計流程12§2.1.3fpga軟件設計13§2.1.4fpga的應用14§2. 2verilog hdl概述15§2.2.1verilog hdl簡介15§2.2.2verilog hdl主要功能16§2.2.3verilog hdl與vhdl的區別16§2.3搶答器總體設計方案17§2.3.1搶答器構成18§2.3.2搶答器工作原理18第3章 搶答器模塊設計與實現19§3.1搶

9、答判別模塊19§3.2數碼管驅動模塊20§3.3計時模塊22§3.4分頻器模塊23§3.5計分模塊23§3.6鎖存模塊24§3.7總體模塊25第4章 搶答器程序設計、實現與仿真26§4.1搶答判別程序設計26§4.2數碼管驅動模塊程序設計28§4.3計時模塊程序設計29§4.4分頻模塊程序設計31§4.5計分模塊程序設計32§4.6鎖存模塊程序設計36結 論38參考文獻39致謝41附錄4271河南科技大學本科畢業設計(論文)前言隨著人類社會的高速發展,電子行業也隨之迅猛的發展

10、,這也使得人們越來越想方設法的是自己更加方便、輕松的生活,例如:自從有了電視遙控器開啟電視,更改電視頻道,我們再也不用跑來跑去用手改換頻道;自從有了全自動洗衣機,我們再也不用半自動洗衣機或者人工搓衣板去清洗衣服;自從有了交通燈,不僅省去了很多人力去指揮交通,而且使交通更加井然有序。當然,當具有定時、顯示、加減分等多功能性的搶答器擺在我們面前時,我想人們不會用舉手的方式或者舉牌的方式進行搶答了。如今無論是什么場合,只要舉辦搶答比賽,我們都能見到搶答器的使用,因為它以客觀的電子電路進行狀態判斷,避免了競賽中出現的人為的失誤,或者由于某些原因造成的不公平。搶答器能夠準確、公正的判斷誰是第一搶答者,并

11、且直觀的指出誰是第一搶答者。由于其附加的定時、加減分等功能則能夠省去部分人力,且更準確的規范時間。現在市面上也存在著各種各樣的搶答器,但主要流行的是單片機搶答器和數字搶答器,雖然這兩款搶答器都能實現搶答器的基本功能,但是都或多或少的存在著一些缺點。單片機搶答器的設計。控制系統主要由單片機應用電路、存儲器接口電路、顯示接口電路組成。其中單片機89c51是系統工作的核心,它主要負責控制各個部分協調工作.。雖然單片機實現起來相當靈活,但隨著搶答器數組的增加則存在著i/o口不足的問題。這就不能為以后進行搶答器組數的增加進行改進了。數字搶答器的設計。數字搶答器電路主要是由電子元器件組成,數字搶答器由主體

12、電路與擴展電路組成。雖然數字電路主要有元器件組成,成本較為便宜,且小規模數字邏輯設計思路簡單,但是電路實現起來比較麻煩:進行電路規劃,用protel99畫出電路的pcb板,硬件的焊接與調試等等程序步驟。總之硬件設計不僅工作量大,而且要求也高。介于上面兩款搶答器的不足點,本次設計則采用fpga現場可編程技術,這樣就避免了硬件的焊接與調試,同時由于fpga的i/o端口豐富,可以在設計的基礎上略加修改實現多組輸入的搶答器,增強了系統的靈活性。本文介紹了一種采用eda技術,基于fpga并在quartus工具軟件環境下使用verilog硬件描述語言編寫的數碼管顯示4路搶答器的電路設計、設計思路以及實現功

13、能。本次設計以ep2c8q208為核心,完成主持人的控制與參賽隊伍的搶答功能;使用quartus ii軟件用verilog hdl完成代碼編寫,然后用quartus ii軟件實現正確的波形仿真作為主要的技術指標。根據本次設計的技術要求,特設計了以下各種模塊來實現搶答器的基本功能:搶答判別模塊,計時模塊,分頻器模塊,計分模塊,鎖存器模塊,數碼管驅動模塊等等。經過編譯及其仿真所設計的程序,該設計的搶答器基本能夠實現此次設計的要求,從而完成了搶答器應具備的功能。第1章 緒論§1.1 選題背景§1.1.1 eda技術發展eda是電子設計自動化(electronic designau

14、tomation)的縮寫,在20世紀90年代初從計算機輔助設計(cad)、計算機輔助制造(cam)、計算機輔助測試(cat)和計算機輔助工程(cae)的概念發展而來的。eda技術是指以計算機為工作平臺,融合了應用電子技術、計算機技術、信息處理及智能化技術的最新成果,進行電子產品的自動設計。利用eda工具,電子設計師可以從概念、算法、協議等開始設計電子系統,大量工作可以通過計算機完成,并可以將電子產品從電路設計、性能分析到設計出ic版圖或pcb版圖的整個過程的計算機上自動處理完成。eda工具軟件可大致可分為芯片設計輔助軟件、可編程芯片輔助設計軟件、系統設計輔助軟件等三類。目前進入我國并具有廣泛影

15、響的eda軟件是系統設計軟件輔助類和可編程芯片輔助設計軟件:protel、altium designer、pspice、multisim12(原ewb的最新版本)、orcad、pcad、lsiiogic、microsim、ise、modelsim、matlab等等。這些工具都有較強的功能,一般可用于幾個方面,例如很多軟件都可以進行電路設計與仿真,同時還可以進行pcb自動布局布線,可輸出多種網表文件與第三方軟件接口。利用eda技術進行電子系統的設計,具有以下特點:(1) 用軟件的方式設計硬件;用軟件方式設計的系統到硬件系統的轉換是由有關的考法軟件自動完成的;(2) 設計過程中可用有關軟件進行各種

16、仿真;(3) 系統可現場編輯,在線升級;(4) 整個系統可集中在一個芯片上,體積小、功耗低、可靠性高;(5) 從以前的“組合設計”轉向真正的“自由設計”;(6) 設計的移植性好,效率高;(7) 非常適合分工設計,團體協作。因此,eda技術是現代電子設計的發展趨勢。§1.1.2 課題研究的必要性現行的搶答的實現方案主要有兩種:一種則是使用單片機,另一種是小規模數字邏輯芯片和觸發器。單片機搶答器的設計。控制系統主要由單片機應用電路、存儲器接口電路、顯示接口電路組成。其中單片機at89c51是系統工作的核心,它主要負責控制各個部分協調工作.。然而現如今單片機組成的搶答器也存在著一些缺點,或

17、者應該說是不足點,雖然單片機實現起來相當靈活,但隨著搶答器數組的增加則存在著i/o口不足的問題。這就不能為以后進行搶答器組數的增加進行改進了。數字搶答器的設計。數字搶答器電路主要是由電子元器件組成,數字搶答器由主體電路與擴展電路組成。優先編碼器、鎖存器、譯碼電路將參賽隊的輸入信號在顯示器上輸出;用控制電路和主持人開關啟動報警電路,以上兩部分組成主體電路。通過定時電路和譯碼電路將脈沖產生的信號在顯示器上輸出實現計時功能,構成擴展電路。雖然數字電路主要有元器件組成,成本較為便宜,且小規模數字邏輯設計思路簡單,但是電路實現起來比較麻煩:進行電路規劃,用protel99畫出電路的pcb板,硬件的焊接與

18、調試等等程序步驟。總之硬件設計不僅工作量大,而且要求也高。現存的搶答器設計方案雖然都能實現搶答器的功能,但是又由于它們自身缺點的限制,有些方面很難或者說很麻煩實現。然而由于fpga本身一些的特點、優點能夠使基于fpga制作的搶答器克服這些問題。fpga作為新技術具有以下優點:(1) fpga的管腳多,容易實現大規模系統。(2) fpga的運行速度快。(3) fpga內部程序并行運行,有處理更復雜的功能。(4) fpga有大量的軟核,能夠進行二次開發。所以學習fpga并利用fpga進行搶答器的設計是十分必要的。§1.2 研究課題的內容本次設計的搶答器能夠同時供應4位選手或者4個代表隊進

19、行搶答比賽,分別使用4個按鈕a,b,c,d表示。同時需要設置系統復位和搶答控制開關,這需由主持人控制。主持人在允許搶答的情況下,計時器開始從30s開始倒計時,直到有人搶答成功后,由鎖存器將時間鎖存住,此時數碼管上將顯示剩余時間及搶答成功選手號碼,同時對應選手的led燈也被點亮。在判別選手是否回答正確后,由主持人控制加減按鈕進行給分。在一輪比賽結束后,主持人按下復位按鈕,則除了計分模塊外,其他模塊都復位為初始時刻,為下一輪的比賽做好準備。第2章 系統方案設計§2.1 fpga簡介fpga(fieldprogrammable gate array),即現場可編程門陣列,它是在pal、ga

20、l、cpld等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(asic)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。其主要特點如下:(1) 采用fpga設計asic電路(專用集成電路),用戶不需要投片生產,就能得到合用的芯片。(2) fpga可做其它全定制或半定制asic電路的中試樣片。(3) fpga內部有豐富的觸發器和i/o引腳。(4) fpga是asic電路中設計周期最短、開發費用最低、風險最小的器件之一。(5) fpga采用高速cmos工藝,功耗低,可以與cmos、ttl電平兼容。可以說,fpga芯片是小批量系統提高系統集

21、成度、可靠性的最佳選擇之一。fpga是由存放在片內ram中的程序來設置其工作狀態的,因此,工作時需要對片內的ram進行編程。用戶可以根據不同的配置模式,采用不同的編程方式。加電時,fpga芯片將eprom中數據讀入片內編程ram中,配置完成后,fpga進入工作狀態。掉電后,fpga恢復成白片,內部邏輯關系消失,因此,fpga能夠反復使用。fpga的編程無須專用的fpga編程器,只須用通用的eprom、prom編程器即可。當需要修改fpga功能時,只需換一片eprom即可。這樣,同一片fpga,不同的編程數據,可以產生不同的電路功能。因此,fpga的使用非常靈活。目前以硬件描述語言(verilo

22、g hdl或 vhdl)所完成的電路設計,可以經過簡 單的綜合與布局,快速的燒錄至fpga上進行測試,是現代ic設計驗證的技術主流。這些可編輯元件可以被用來實現一些基本的邏輯門電路(比如and、or、xor、not)或者更復雜一些的組合功能比如解碼器或數學方程式。在大多數的fpga里面,這些可編輯的元件里也包含記憶元件例如觸發器(flipflop)或者其他更加完整的記憶塊。fpga一般來說比asic(專用集成芯片)的速度要慢,無法完成復雜的設計,但是功耗較低。但是他們也有很多的優點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的fpga。因為

23、這些芯片有比較差的可編輯能力,所以這些設計的開發是在普通的fpga上完成的,然后將設計轉移到一個類似于asic的芯片上。另外一種方法是用cpld(復雜可編程邏輯器件備)。根據市場上對fpga的需要,則fpga的主要分類有以下幾種:1) 按邏輯功能塊的大小分類可編程邏輯塊是fpga的基本邏輯構造單元。按照邏輯功能塊的大小不同,可將fpga分為細粒度結構和粗粒度結構兩類。細粒度fpga的邏輯功能塊一般較小,僅由很小的幾個晶體管組成,非常類似于半定制門陣列的基本單元,其優點是功能塊的資源可以被完全利用,缺點是完成復雜的邏輯功能需要大量的連線和開關,因而速度慢;粗粒度fpga的邏輯塊規模大,功能強,完

24、成復雜邏輯只需較少的功能塊和內部連線,因而能獲得較好的性能,缺點是功能塊的資源有時不能被充分利用。近年來隨著工藝的不斷改進,fpga的集成度不斷提高,硬件描述語言(hdl)的設計方法得到了廣泛應用。由于大多數邏輯綜合工具是針對門陣列的結構開發的,細粒度的fpga較粗粒度的fpga可以得到更好的邏輯綜合結果,因此許多廠家開發出了一些具有更高集成度的細粒度fpga,如xilinx公司采用microvia技術的一次編程反熔絲結構的xc8100系列,gatefield公司采用閃速eprom 控制開關元件的可再編程gf100k系列等,它們的邏輯功能塊規模相對都較小。2) 按互連結構分類根據fpga內部的

25、連線結構不同,可將其分為分段互連型和連續互連型兩類。分段互連型fpga中有不同長度的多種金屬線,各金屬線段之間通過開關矩陣或反熔絲編程連接。這種連線結構走線靈活,有多種可行方案,但走線延時與布局布線的具體處理過程有關,在設計完成前無法預測,設計修改將引起延時性能發生變化。連續互連型fpga是利用相同長度的金屬線,通常是貫穿于整個芯片的長線來實現邏輯功能塊之間的互連,連接與距離遠近無關。在這種連線結構中,不同位置邏輯單元的連接線是確定的,因而布線延時是固定和可預測的。3) 按編程特性分類根據采用的開關元件的不同,fpga可分為一次編程型和可重復編程型兩類。一次編程型fpga采用反熔絲開關元件,其

26、工藝技術決定了這種器件具有體積小、集成度高、互連線特性阻抗低、寄生電容小及可獲得較高的速度等優點;此外,它還有加密位、反拷貝、抗輻射抗干擾、不需外接prom或eprom等特點。但它只能一次編程,一旦將設計數據寫入芯片后,就不能再修改設計,因此比較適合于定型產品及大批量應用。可重復編程型fpga采用sram開關元件或快閃eprom控制的開關元件。fpga芯片中,每個邏輯塊的功能以及它們之間的互連模式由存儲在芯片中的sram或快閃eprom中的數據決定。sram型開關的fpga是易失性的,每次重新加電,fpga都要重新裝入配置數據。sram型fpga的突出優點是可反復編程,系統上電時,給fpga加

27、載不同的配置數據,即可令其完成不同的硬件功能。這種配置的改變甚至可以在系統的運行中進行,實現系統功能的動態重構。采用快閃eprom控制開關的fpga具有非易失性和可重復編程的雙重優點,但在再編程的靈活性上較sram型fpga差一些,不能實現動態重構。此外,其靜態功耗較反熔絲型及sram型的fpga高。§2.1.1 fpga芯片結構fpga采用了邏輯單元陣列lca(logic cell array)這樣一個概念,內部包括可配置邏輯模塊clb(configurable logic block)、輸出輸入模塊iob(input output block)和內部連線(interconnect

28、)三個部分。 現場可編程門陣列(fpga)是可編程器件,與傳統邏輯電路和門陣列(如pal,gal及cpld器件)相比,fpga具有不同的結構。fpga利用小型查找表(16×1ram)來實現組合邏輯,每個查找表連接到一個d觸發器的輸入端,觸發器再來驅動其他邏輯電路或驅動i/o,由此構成了既可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到i/o模塊。fpga的邏輯是通過向內部靜態存儲單元加載編程數據來實現的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與i/o間的聯接方式,并最終決定了fpga所能實現的功能,fpga允

29、許無限次的編程。fpga是在pal、gal、epld、cpld等可編程器件的基礎上進一步發展的產物。它是作為asic領域中的一種半定制電路而出現的,即解決了定制電路的不足,又克服了原有可編程器件門電路有限的缺點。 由于fpga需要被反復燒寫,它實現組合邏輯的基本結構不可能像asic那樣通過固定的與非門來完成,而只能采用一種易于反復配置的結構。查找表可以很好地滿足這一要求,目前主流fpga都采用了基于sram工藝的查找表結構,也有一些軍品和宇航級fpga采用flash或者熔絲與反熔絲工藝的查找表結構。通過燒寫文件改變查找表內容的方法來實現對fpga的重復配置。 根據數字電路的基本知識可以知道,對

30、于一個n輸入的邏輯運算,不管是與或非運算還是異或運算等等,最多只可能存在2n種結果。所以如果事先將相應的結果存放于一個存貯單元,就相當于實現了與非門電路的功能。fpga的原理也是如此,它通過燒寫文件去配置查找表的內容,從而在相同的電路情況下實現了不同的邏輯功能。 查找表(look-up-table)簡稱為lut,lut本質上就是一個ram。目前fpga中多使用4輸入的lut,所以每一個lut可以看成一個有4位地址線的 的ram。 當用戶通過原理圖或hdl語言描述了一個邏輯電路以后,pld/fpga開發軟件會自動計算邏輯電路的所有可能結果,并把真值表(即結果)事先寫入ram,這樣,每輸入一個信號

31、進行邏輯運算就等于輸入一個地址進行查表,找出地址對應的內容,然后輸出即可。目前主流的fpga仍是基于查找表技術的,已經遠遠超出了先前版本的基本性能,并且整合了常用功能(如ram、時鐘管理和dsp)的硬核(asic型)模塊。fpga芯片主要由7部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式ram、豐富的布線資源、內嵌的底層功能單元和內嵌專用硬件模塊。每個模塊功能如下:1) 可編程輸入輸出單元(iob)可編程輸入/輸出單元簡稱i/o單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信號的驅動與匹配要求,fpga內的i/o按組分類,每組都能夠獨立地支

32、持不同的i/o標準。通過軟件的靈活配置,可適配不同的電氣標準與i/o物理特性,可以調整驅動電流的大小,可以改變上、下拉電阻。外部輸入信號可以通過iob模塊的存儲單元輸入到fpga的內部,也可以直接輸入fpga 內部。當外部輸入信號經過iob模塊的存儲單元輸入到fpga內部時,其保持時間(hold time)的要求可以降低,通常默認為0。為了便于管理和適應多種電器標準,fpga的iob被劃分為若干個組(bank),每個bank的接口標準由其接口電壓vcco決定,一個bank只能有 一種vcco,但不同bank的vcco可以不同。只有相同電氣標準的端口才能連接在一起,vcco電壓相同是接口標準的基

33、本條件。2) 可配置邏輯塊(clb)clb是fpga內的基本邏輯單元。clb的實際數量和特性會依器件的不同而不同,但是每個clb都包含一個可配置開關矩陣,此矩陣由4或6個輸入、一些選型電路(多路復用器等)和觸發器組成。開關矩陣是高度靈活的,可以對其進行配置以便處理組合邏輯、移位寄存器或ram。數字時鐘管理模塊(dcm)。業內大多數fpga均提供數字時鐘管理(xilinx的全部fpga均具有這種特性)。xilinx推出最先進的fpga提供數字時鐘管理和相位環路鎖定。相位環路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,并實現過濾功能。3) 豐富的布線資源布線資源連通fpga內部的所有單元,而連線的

34、長度和工藝決定著信號在連線上的驅動能力和傳輸速度。fpga芯片內部有著豐富的布線資源,根據工藝、長度、寬度和分布位置的不同而劃分為4類不同的類別。第一類是全局布線資源,用于芯片內部全局時鐘和全局復位/置位的布線;第二類是長線資源,用以完成芯片 bank間的高速信號和第二全局時鐘信號的布線;第三類是短線資源,用于完成基本邏輯單元之間的邏輯互連和布線;第四類是分布式的布線資源,用于專有時鐘、復位等控制信號線。4) 底層內嵌功能單元內嵌功能模塊主要指dll(delay locked loop)、pll(phase locked loop)、dsp和cpu等軟處理核(softcore)。現在越來越豐富

35、的內嵌功能單元,使得單片fpga成為了系統級的設計工具,使其具備了軟硬件聯合設計的能力,逐步向soc平臺過渡。5) 內嵌專用硬核內嵌專用硬核是相對底層嵌入的軟核而言的,指fpga處理能力強大的硬核(hard core),等效于asic電路。為了提高fpga性能,芯片生產商在芯片內部集成了一些專用的硬核。6) 嵌入式塊ram(bram)大多數fpga都具有內嵌的塊ram,這大大拓展了fpga的應用范圍和靈活性。塊ram可被配置為單端口ram、雙端口ram、內容地址存儲器 (cam)以及fifo等常用存儲結構。ram、fifo是比較普及的概念,在此就不冗述。cam存儲器在其內部的每個存儲單元中都有

36、一個比較邏輯,寫入 cam中的數據會和內部的每一個數據進行比較,并返回與端口數據相同的所有數據的地址,因而在路由的地址交換器中有廣泛的應用。除了塊ram,還可以將 fpga中的lut靈活地配置成ram、rom和fifo等結構。在實際應用中,芯片內部塊ram的數量也是選擇芯片的一個重要因素。單片塊ram的容量為18k比特,即位寬為18比特、深度為1024,可以根據需要改變其位寬和深度,但要滿足兩個原則:首先,修改后的容量(位寬 深度)不能大于18k比特;其次,位寬最大不能超過36比特。當然,可以將多片塊ram級聯起來形成更大的ram,此時只受限于芯片內塊ram的數量,而 不再受上面兩條原則約束。

37、7) 數字時鐘管理模塊(dcm)業內大多數fpga均提供數字時鐘管理(xilinx的全部fpga均具有這種特性)。xilinx推出最先進的fpga提供數字時鐘管理和相位環路鎖定。相位環路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,并實現過濾功能。§2.1.2 fpga設計流程一般來說,完整的fpga/cpld設計流程包括:(1) 電路功能設計,系統設計之前,首要的是方案論證、系統設計和fpga芯片選擇等準備工作。一般采用自頂向下的設計方法將系統分成若干基本單元,然后將基本單元劃分成下一層的基本單元,一直這樣就行下去,直到可以直接使用eda元件庫為止。(2) 設計輸入,常用的方法是硬件

38、描述語言和原理圖輸入方式。 (3) 功能仿真,驗證設計電路的邏輯功能。 (4) 綜合優化(synthesis),綜合優化是指將hdl語言、原理圖等設計輸入翻譯成由與、或、非門、ram、觸發器等基本邏輯單元組成的邏輯網表,并根據目標與要求(約束條件)優化生成的邏輯網表,輸出edf和edn等文件,供fpga/cpld廠家的布局布線器進行實現。 (5) 綜合后仿真,檢查綜合結果是否與原設計一致,仿真時把綜合生成的標準延時文件反標注到綜合仿真模型中,可估計門延時帶來的影響。但這一步驟不能估計線延時,因此和布線后的仿真情況還有一定的差距,并不十分準確。(6) 實現(implementation),實現是

39、將綜合生成的邏輯網表配置到具體的fpga芯片上,xilinx的實現過程分為翻譯(translate)、映射(map)、和布局布線(place&route)。布局布線是其中最重要的過程,布局是將邏輯網表中的硬件原語和底層單元合理得配置到芯片內部的硬件結構上,并且需要在速度最優和面積最優之間做出選擇。布線時根據布局的拓撲結構,利用芯片內部的各種連線資源合理準確的連接各個元件。 (7) 時序仿真與驗證,將布局布線后的延時信息反標注到網表中用來檢測時序工作情況,時序仿真包括的延時信息最全,也最精確,能較好的反映芯片的實際工作情況。有是為了保證設計的可靠性,在時序仿真后還要做一些驗證,可以用is

40、e內嵌的時序分析工具完成靜態時序分析(sta,static timing analyzer),也可以用第三方驗證工具(如synopsys的formality驗證工具,primetime靜態時序分析工具等)進行驗證。可以用ise內嵌的fpga editor和chip viewer觀察芯片內部的連接于配置情況,或者使用ise內嵌的chipscope pro進行在線邏輯分析。(8) 調試與加載配置,就是在線調試或者將生成的配置文件寫入芯片中進行測試。在ise中對應的工具就是impact。fpga設計流程圖如圖2-1所示。圖2-1 fpga設計流程圖§2.1.3 fpga軟件設計fpga軟件

41、設計可分為兩大塊:編程語言和編程工具。編程語言主要有vhdl和verilog兩種硬件描述語言;編程工具主要是兩大廠家altera和xilinx的集成綜合eda軟件quartusii以及第三方工具。具體的設計輸入方式有以下幾種:(1) hdl語言方式。hdl既可以描述底層設計,也可以描述頂層的設計,但它不容易做到較高的工作速度和芯片利用率。用這種方式描述的項目最后所能達到的性能與設計人員的水平、經驗以及綜合軟件有很大的關系。(2) 圖形方式。可以分為電路原理圖描述,狀態機描述和波形描述3種形式。電路原理圖方式描述比較直觀和高效,對綜合軟件的要求不高;狀態機描述主要用來設計基于狀態機思想的時序電路

42、;波形描述方式是基于真值表的一種圖形輸入方式,直接描述輸入與輸出的波形關系。§2.1.4 fpga的應用 fpga的應用可分為三個層面:電路設計,產品設計,系統設計。1) 電路設計中fpga的應用連接邏輯,控制邏輯是fpga早期發揮作用比較大的領域也是fpga應用的基石事實上在電路設計中應用fpga的難度還是比較大的這要求開發者要具備相應的硬件知識(電路知識)和軟件應用能力(開發工具)這方面的人才總是緊缺的,往往都從事新技術,新產品的開發成功的產品將變成市場主流基礎產品供產品設計者應用在不遠的將來,通用和專用ip的設計將成為一個熱門行業!搞電路設計的前提是必須要具備一定的硬

43、件知識在這個層面,干重于學,當然,快速入門是很重要的,越好的位子越不等人電路開發是黃金飯碗。2) 產品設計把相對成熟的技術應用到某些特定領域如通訊,視頻,信息處理等等開發出滿足行業需要并能被行業客戶接受的產品這方面主要是fpga技術和專業技術的結合問題,另外還有就是與專業客戶的界面問題產品設計還包括專業工具類產品及民用產品,前者重點在性能,后者對價格敏感產品設計以實現產品功能為主要目的,fpga技術是一個實現手段在這個領域,fpga因為具備接口,控制,功能ip,內嵌cpu等特點有條件實現一個構造簡單,固化程度高,功能全面的系統產品設計將是fpga技術應用最廣大的市場,具有極大的爆發性的需求空間

44、產品設計對技術人員的要求比較高,路途也比較漫長不過現在整個行業正處在組建首發團隊的狀態,只要加入,前途光明產品設計是一種職業發展方向定位,不是簡單的愛好就能做到的!產品設計領域會造就大量的企業和企業家,是一個近期的發展熱點和機遇。3) 系統級應用系統級的應用是fpga與傳統的計算機技術結合,實現一種fpga版的計算機系統如用xilinxv-4, v-5系列的fpga,實現內嵌powerpccpu, 然后再配合各種外圍功能,實現一個基本環境,在這個平臺上跑linix等系統這個系統也就支持各種標準外設和功能接口(如圖象接口)了這對于快速構成 fpga大型系統來講是很有幫助的。這種山寨味很濃的系統早

45、期優勢不一定很明顯,類似arm系統的境況但若能慢慢發揮出fpga的優勢,逐漸實現一些特色系統也是一種發展方向。若在系統級應用中,開發人員不具備系統的擴充開發能力,只是搞搞編程是沒什么意義的,當然設備驅動程序的開發是另一種情況,搞系統級應用看似起點高,但不具備深層開發能力,很可能會變成愛好者,就如很多人會做網頁但不能稱做會編程類似以上是幾點個人開發,希望能幫助想學fpga 但很茫然無措的人理一理思路。這是一個不錯的行業,有很好的個人成功機會。但也肯定是一個競爭很激烈的行業,關鍵看的就是速度和深度當然還有市場適應能力。§2. 2 verilog hdl概述§2.2.1 veri

46、log hdl簡介verilog hdl是目前應用最為廣泛的硬件描述語言,適合算法級,寄存器級,邏輯級,門級和版圖級等各個層次的設計和描述,優點是其工藝無關性這使得工程師在功能設計,邏輯驗證階段可以不必過多考慮門級及工藝實現的具體細節,只需根據系統設計的要求施加不同的約束條件。verilog hdl 是一種硬件描述語言,用于從算法級、門級到開關級的多種抽象設計層次的數字系統建模。被建模的數字系統對象的復雜性可以介于簡單的門和完整的電子數字系統之間。數字系統能夠按層次描述,并可以在相同描述中顯示的進行時序建模。這種語言具有下述描述能力:設計的行為特性、設計的數據流特性、設計的結構組成以及包含響應

47、監控和設計驗證方面的時延和波形產生機制。所有這些都使用同一種建模語言、此外,verilog hdl語言提供了編程語言接口,通過該接口可以在模擬、驗證期間從設計外部訪問設計,包括模擬的具體控制和運行。這種硬件語言不僅定義了語法。而且對每個語法結構都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用verilog仿真器進行驗證。語言從c編程語言中繼承了多種操作符和結構。verilog hdl提供了擴展的建模能力,其中許多擴展最初很難理解。但是,verilog hdl語言的核心子集非常易于學習和使用,這對大多數建模應用來說已經足夠。當然,完整的硬件描述語言足以對從最復雜的芯片到完整的電子

48、系統進行描述。verilog hdl語言最初是于1983年由gateway design automation公司為其模擬器產品開發的硬件建模語言。那時它只是一種專用語言。由于他們的模擬、仿真器產品的廣泛使用,verilog hdl 作為一種便于使用且實用的語言逐漸為眾多設計者所接受。在一次努力增加語言普及性的活動中,verilog hdl語言于1990年被推向公眾領域。 open verilog international (ovi)是促進verilog發展的國際性組織。1992年,ovi決定致力于推廣verilog ovi標準成為ieee標準。這一努力最后獲得成功,verilog hdl于

49、1995年成為ieee標準,稱為ieee std 13641995。完整的標準在verilog硬件描述語言參考手冊中有詳細描述。§2.2.2 verilog hdl主要功能(1) 基本邏輯門,例如and、or和nand等都內置在語言中。(2) 用戶定義原語(udp)創建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可以是時序邏輯原語。(3) 開關級基本結構模型,例如pmos 和nmos等也被內置在語言中。(4) 提供顯式語言結構指定設計中的端口到端口的時延及路徑時延和設計的時序檢查。(5) 可采用三種不同方式或混合方式對設計建模。這些方式包括:行為描述方式使用過程化結構建模;數據流

50、方式使用連續賦值語句方式建模;結構化方式使用門和模塊實例語句描述建模。§2.2.3 verilog hdl與vhdl的區別verilog hdl和vhdl作為描述硬件電路設計的語言,其共同特點在于:能形式化地抽象表示電路的行為和結構;支持邏輯設計中層次與范圍的描述;可借用高級語言的精巧結構來簡化電路行為的描述;具有電路仿真與驗證機制以保證設計的正確性;支持電路描述由高層到低層的綜合轉換;硬件描述與實現工藝無關(有關工藝參數可通過語言提供的屬性包括進去);便于文檔管理;易于理解和設計重用。但是,兩者又有著各自的特點:(1) 語法特點verilog hdl和vhdl最大的差別在語法上,v

51、erilog hdl是一種類c語言,而vhdl是一種ada(action data automation,行動數據自動化)語言。由于c語言簡單易用且應用廣泛,因此也使得verilog hdl語言容易學習,如果有c語言學習的基礎,很快就能夠掌握;相比之下,vhdl語句較為晦澀,使用難度較大。(2) 運用群體由于verilog hdl早在1983年就已推出,至今已有20多年的應用歷史,因而verilog hdl擁有更加廣泛的設計群體,成熟的資源也比vhdl豐富。(3) 優勢不同傳統觀念認為verilog hdl在系統級抽象方面較弱,不太適合大型的系統;vhdl側重于系統描述,從而更多地為系統級設計

52、人員所采用;verilog hdl側重于電路級描述,從而更多地為電路設計人員所采用。但這兩種語言仍處于不斷完善之中,都在朝著更高級、更強大描述語言的方向前進。其中,經過ieee verilog hdl 2001標準補充之后,verilog hdl 語言的系統級描述性能和可綜合性能有了大幅度提高。綜上所述,verilog hdl 語言作為學習hdl設計方法入門和基礎是非常合適的。掌握了verilog hdl 語言建模、綜合和仿真技術,不僅可以增加對數字電路設計的深入了解,還可以為后續高級階段的高級學習打好基礎 ,包括數字信號處理和數字通信的fpga實現、ic設計等領域。本文的設計中,采用veri

53、log hdl語言。§2.3 搶答器總體設計方案§2.3.1 搶答器構成本次設計的搶答器,其系統芯片主要采用ep2c8q208,由搶答判別模塊,計時模塊,分頻器模塊,計分模塊,鎖存器模塊,數碼管驅動模塊組成。搶答器結構簡圖如圖2-3所示。圖2-3 搶答器結構簡圖由圖2-3我們很清楚的看到系統都有哪些外圍電路組成,而且還能很快就能明白這次設計目的與原理。§2.3.2 搶答器工作原理分頻器主要是運用計數器的功能,由于實際上我們使用的是50hz的頻率,所以我將設計計數器,其在每個脈沖的上升沿來臨時,就會加1,直到加到25時,則會使輸出脈沖致1,在下一個25時,則會使輸出

54、脈沖致0。這樣就能夠實現將50hz的脈沖變成1hz的脈沖,用于控制計時模塊。計時模塊運用的是計數器的減法運算,當外部條件滿足時,計時器就會從30s開始計時,一直計到零時,計數器停止,直到主持人按下復位按鈕,計數器復位,才能使下次搶答時能夠從頭開始。數碼管驅動主要是將4位變8位,即當外部條件滿足時,就會將輸入的4位數據轉變成7位,從而能夠使其能夠在數碼管上顯示出來。鎖存器在外部信號沒要求進行鎖存操作時,則會跟著輸入的變化而變化,然而當外部要求進行鎖存時,就是立即鎖存住當前的數據,即輸出保持當前的數據不再變化。第3章 搶答器模塊設計與實現§3.1 搶答判別模塊搶答判別模塊是實現搶答器搶答

55、功能的核心元件了,通過搶答判別模塊來鑒別搶答的先后,其中設計的這個模塊中自帶鎖存功能,即當其中一人或者一組搶答成功后,其余人或者組都不能再搶答了。該模塊還能夠進行判別誰進行了搶答,當主持人還沒有說開始搶答時,就有人開始搶答時,該人或者該組面前的led燈就會被點亮,對應的報警器也會響起,同時數碼管這時也會顯示出提前搶答的組號,從而杜絕了一些不公平的元素。其流程圖如圖3-1。圖3-1 搶答判別流程圖我們通過對fpga以及硬件語言verilo hdl的學習,只通過對系統的編程就滿足了該模塊的要求,能實現判別,鎖存,顯示,報警等功能。搶答判別模塊的輸入有en,clr,a,b,c,d,而輸出端為led_

56、a,led_b.led_c,led_d以及4位led_f,4位led_t。其中en表示使能端,只有主持人按下這個按鈕,才能允許參賽選手進行搶答;clr表示復位信號,當主持人按下這個按鈕后,所有的狀態都將恢復成初始狀態,為下次搶答做好準備;a,b,c,d表示四組搶答選手;led_a,led_b.led_c,led_d分別表示對應小組的led燈,用來顯示選手們的搶答情況;led_f表示報警信號,當有選手提前搶答時,該對應的報警器將會響起;led_t表示顯示選手號碼的信號,當有選手搶答時,就會通過led_t輸出的信號使其組號在數碼管上顯示出來。該模塊的邏輯框圖如圖3-2所示。圖3-2 搶答判別模塊邏

57、輯框圖§3.2 數碼管驅動模塊數碼管按段數可分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極管單元(多一個小數點顯示);按能顯示多少個“8”可分為1位、2位、3位、4位、5位、6位、7位等數碼管。按發光二極管單元連接方式可分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極管的陽極接到一起形成公共陽極(com)的數碼管,共陽數碼管在應用時應將公共極com接到+5v,當某一字段發光二極管的陰極為低電平時,相應字段就點亮,當某一字段的陰極為高電平時,相應字段就不亮。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極(com)的數碼管,共陰數碼管在應用時應將公

58、共極com接到地線gnd上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮,當某一字段的陽極為低電平時,相應字段就不亮。數碼管要正常顯示,就要用驅動電路來驅動數碼管的各個段碼,從而顯示出我們要的數字,因此根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。(1) 靜態顯示驅動。靜態驅動也稱直流驅動。靜態驅動是指每個數碼管的每一個段碼都由一個單片機的i/o端口進行驅動,或者使用如bcd碼二-十進制譯碼器譯碼進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用i/o端口多,如驅動5個數碼管靜態顯示則需要5×8=40根i/o端口來驅動,要知道一個89s51單片機可用的i/o端口才32個),實際

溫馨提示

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

評論

0/150

提交評論