版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 1 引言</b></p><p> EDA技術是指以計算機為工作平臺,融合了應用電子技術、計算機技術、信息處理及智能化技術的最新成果,進行電子產(chǎn)品的自動設計。</p><p> 利用EDA工具,電子設計師可以從概念、算法、協(xié)議等開始設計電子系統(tǒng),大量工作可以通過計算機完成,并可以將電子產(chǎn)品從電路設計、性能分析到設計出IC版圖或PCB版
2、圖的整個過程的計算機上自動處理完成。</p><p> 現(xiàn)在對EDA的概念或范疇用得很寬。包括在機械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學、軍事等各個領域,都有EDA的應用。目前EDA 技術已在各大公司、企事業(yè)單位和科研教學部門廣泛使用。例如在飛機制造過程中,從設計、性能測試及特性分析直到飛行模擬,都可能涉及到EDA技術。</p><p> 傳統(tǒng)的設計方法采用自底向上的設計方法
3、,一般先按電子系統(tǒng)的具體功能要求進行功能劃分,然后對每個子模塊畫出真值表,用卡諾圖進行手工邏輯簡化,寫出布爾表達式,畫出相應的邏輯線路圖,再據(jù)此選擇元器件,設計電路板,最后進行實測與調(diào)試,由于無法進行硬件系統(tǒng)功能仿真,如果某一過程存在錯誤,查找和修改十分不便,所以這是一種費時、費力的設計方法,而現(xiàn)代電子設計技術(EDA)是自頂向下且先進高效的。在電子產(chǎn)品的設計理念、設計方式、系統(tǒng)硬件構成、設計的重用性、知識產(chǎn)權、設計周期等方面,EDA技
4、術具有一定的優(yōu)勢。所以本次設計的搶答器拋棄了傳統(tǒng)的設計方法,選擇了采用主流的EDA技術進行設計。</p><p> 智力競賽是“快樂學習”這一教育模式的典范,它采用在規(guī)定的一段時間內(nèi)搶答和必答等方式,在給人們的生活帶來樂趣的同時,也使參與者和觀眾在愉悅的氛圍中學到一些科學知識和生活知識,因此很受大家的喜歡。智力搶答器在智力競賽中起到很重要的角色,能夠準確、公正、直觀地判斷出首輪搶答者,并且通過搶答器的數(shù)碼顯示和
5、警示蜂鳴等方式指示出首輪搶答者。</p><p> 2 VHDL硬件描述語言及硬件平臺QuartusII概述</p><p> 2.1VHDL硬件描述語言</p><p> VHDL全名Very-High-Speed Integrated Circuit HardwareDescription Language,誕生于1982年。1987年底,VHDL被IEE
6、E和美國國防部確認為標準硬件描述語言 。自IEEE-1076(簡稱87版)之后,各EDA公司相繼推出自己的VHDL設計環(huán)境,或宣布自己的設計工具可以和VHDL接口。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版本,簡稱93版。VHDL和Verilog作為IEEE的工業(yè)標準硬件描述語言,得到眾多EDA公司支持,在電子工程領域,已成為
7、事實上的通用硬件描述語言。</p><p> 2.1.1 VHDL簡介</p><p> VHDL語言是一種用于電路設計的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設計語言 。</p><p> VHDL翻譯成中文就是超高速集成電路硬件描述語言,主要是應用在數(shù)字電路的設計中。目前,它
8、在中國的應用多數(shù)是用在FPGA/CPLD/EPLD的設計中。當然在一些實力較為雄厚的單位,它也被用來設計ASIC。</p><p> VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風格以及語法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端
9、口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設計就可以直接調(diào)用這個實體。這種將設計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設計的基本點。</p><p> 與其他硬件描述語言相比,VHDL具有以下特點:</p><p> 1.功能強大、設計靈活</p><p> VHDL具有功能強
10、大的語言結(jié)構,可以用簡潔明確的源代碼來描述復雜的邏輯控制。它具有多層次的設計描述功能,層層細化,最后可直接生成電路級描述。VHDL支持同步電路、異步電路和隨機電路的設計,這是其他硬件描述語言所不能比擬的。VHDL還支持各種設計方法,既支持自底向上的設計,又支持自頂向下的設計;既支持模塊化設計,又支持層次化設計。</p><p> 2.支持廣泛、易于修改</p><p> 由于VHDL已
11、經(jīng)成為IEEE標準所規(guī)范的硬件描述語言,目前大多數(shù)EDA工具幾乎都支持VHDL,這為VHDL的進一步推廣和廣泛應用奠定了基礎。在硬件電路設計過程中,主要的設計文件是用VHDL編寫的源代碼,因為VHDL易讀和結(jié)構化,所以易于修改設計。</p><p> 3.強大的系統(tǒng)硬件描述能力</p><p> VHDL具有多層次的設計描述功能,既可以描述系統(tǒng)級電路,又可以描述門級電路。而描述既可以采
12、用行為描述、寄存器傳輸描述或結(jié)構描述,也可以采用三者混合的混合級描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準確地建立硬件電路模型。VHDL支持預定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來較大的自由度,使設計人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。</p><p> 4.獨立于器件的設計、與工藝無關</p><p> 設計人員用VHDL進行設計時,不需要首先考慮選擇完成設計的器件,就可
13、以集中精力進行設計的優(yōu)化。當設計描述完成后,可以用多種不同的器件結(jié)構來實現(xiàn)其功能。</p><p><b> 5.很強的移植能力</b></p><p> VHDL是一種標準化的硬件描述語言,同一個設計描述可以被不同的工具所支持,使得設計描述的移植成為可能。</p><p><b> 6.易于共享和復用</b><
14、;/p><p> VHDL采用基于庫(Library)的設計方法,可以建立各種可再次利用的模塊。這些模塊可以預先設計或使用以前設計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設計中進行復用,可以使設計成果在設計人員之間進行交流和共享,減少硬件電路設計。</p><p> 2.1.2 VHDL優(yōu)勢</p><p> 1.與其他的硬件描述語言相比,VHDL具有
15、更強的行為描述能力,從而決定了他成為系統(tǒng)設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結(jié)構,從邏輯行為上描述和設計大規(guī)模電子系統(tǒng)的重要保證。</p><p> 2.VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設計早期就能查驗設計系統(tǒng)的功能可行性,隨時可對設計進行仿真模擬。</p><p> 3.VHDL語句的行為描述能力和程序結(jié)構決定了他具有支持大規(guī)模設計的分解和
16、已有設計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。</p><p> 4.對于用VHDL完成的一個確定的設計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述設計轉(zhuǎn)變成門級網(wǎng)表。</p><p> 5.VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結(jié)構,也不必管理最終設計實現(xiàn)的目標器件是什么,而進行獨立的設
17、計。</p><p> 2.2硬件平臺QuartusII概述</p><p> 2.2.1 Quartus II介紹</p><p> Quartus II是Altera 公司單芯片可編程系統(tǒng)(SOPC) 設計的綜合性環(huán)境,也是適合SOPC的最全面的設計環(huán)境。它擁有現(xiàn)場可編程門陣列(FPGA) 和復雜可編程邏輯器件(CPLD) 設計的所有階段的解決方案。Qua
18、rtus II 設計軟件改進了性能、提升了功能性、解決了潛在的設計延遲等,在工業(yè)領域率先提供FPGA與mask-programmed devices開發(fā)的統(tǒng)一工作流程。同時,Altera的Quartus II可編程邏輯軟件還屬于第四代PLD開發(fā)平臺。該平臺支持一個工作組環(huán)境下的設計要求,其中包括支持VHDL、Verilog的設計流程,其內(nèi)部嵌有VHDL、Verilog邏輯綜合器。同樣,Quartus II具備仿真功能,同時也支持第三方的
19、仿真工具。Quartus II支持層次化設計,可以在一個新的編輯輸入環(huán)境中對使用不同</p><p> 輸入設計方式完成的模塊進行調(diào)用,從而解決了原理圖與HDL混合輸入設計的問題,并且在設計輸入之后,Quartus II的編譯器將給出設計輸入的錯誤報告。</p><p> 在設計實驗過程中有以下幾點需要注意:</p><p> 1.在編程時要注意信號與變量的區(qū)
20、別,并能正確定義和應用。</p><p> 2.在創(chuàng)建工程時,要注意工程名和文件名和實體名要保持一致;</p><p> 3.設計結(jié)束時間時最好是時間周期的15倍,否則可能會出現(xiàn)時序圖圖像重疊不好識別的現(xiàn)象;</p><p> 4.仿真中,適當進制的轉(zhuǎn)換有時候可以更使觀察者更明顯地看出來時序圖的功能。</p><p> 2.2.2 Q
21、uartus II的設計優(yōu)勢應用舉例</p><p> 隨著邏輯設計復雜性的不斷增加,僅依賴于軟件方式的仿真測試來了解設計系統(tǒng)的硬件功能已經(jīng)遠遠不夠了,而需要重復進行硬件系統(tǒng)測試的測試也變得更為困難。嵌入式邏輯分析儀SignalTapII的使用就解決了這一問題。它可以隨設計文件一并下載于目標芯片中,用以捕捉目標芯片內(nèi)部系統(tǒng)信號節(jié)點處的信息或總線上的數(shù)據(jù)流,而又不影響原硬件系統(tǒng)的正常工作。【4】嵌入式邏輯分析儀S
22、ignalTapII有很多的優(yōu)點:(1)允許對設計層次的模塊的信號節(jié)點進行測試,可以使用多時鐘驅(qū)動;(2)利用Signal Tap II成功的采集了FPGA內(nèi)部信號的波形,不占用額外的I/O引腳;(3)Signal Tap II為硬件板級調(diào)試工具,它采集的波形是工程下載后的實時波形,方便設計者查找引起設計缺陷的原因;(4)節(jié)約成本。Signal Tap II集成在Quartus II軟件中,無需另外付費;(5)能通過設置以確定前后觸發(fā)捕
23、捉信號信息的比例.</p><p> 除此之外,應用Signal Tap II還能解決各種各樣的問題,如外部存儲器的雙向數(shù)據(jù)口的實時波形檢測、驅(qū)動模塊的并串轉(zhuǎn)換波形等。</p><p> 3 智能搶答器系統(tǒng)的設計與實現(xiàn)</p><p> 3.1 搶答器系統(tǒng)設計要求 </p><p> 本文是設計的一個四路智力競賽搶答器,利用V
24、HDL設計搶答器的各個模塊,并使用EDA 工具對各模塊進行仿真驗證。智力競賽搶答器的設計分為四個模塊:鑒別鎖存模塊;答題計時模塊;答題超時提醒模塊以及顯示模塊。把各個模塊整合后,通過電路的輸入輸出對應關系連接起來。設計成一個有如下功能的搶答器:</p><p> ?。?)設計一個四組人參加的智力競賽搶答計時器,它具有四路搶答輸入,主持人按下復位鍵后,系統(tǒng)復位進入搶答狀態(tài),計時顯示初始值; </p>
25、<p> ?。?)某組首先按下?lián)尨疰I,該路搶答信號,競賽搶答器能夠設別最先搶答的信號,鎖定該信號,同時揚聲器響起,參賽小組的序號在數(shù)碼管上顯示;</p><p> ?。?)主持人對搶答結(jié)果進行確認,給出倒計時計數(shù)允許信號,開始回答問題,計時顯示器從初始值開始以秒為單位倒計時,計數(shù)至0時,停止計數(shù),揚聲器發(fā)出超時報警信號,以中止繼續(xù)回答問題;</p><p> ?。?)當主持人給出
26、倒計時計數(shù)禁止信號時,揚聲器停止鳴叫;</p><p> ?。?)參賽者在規(guī)定時間內(nèi)回答完問題,主持人給出倒計時計數(shù)禁止信號,以免揚聲器鳴叫,按下復位鍵,又可開始新一輪的搶答;</p><p> 3.2系統(tǒng)總體設計思想</p><p> 本設計為四路智能搶答器,所以這種搶答器要求有四路不同組別的搶答輸入信號,并能識別最先搶答的信號,直觀地通過數(shù)顯和蜂鳴等方式顯示
27、出組別;對回答問題所用的時間進行計時、顯示、超時報警、預置答題時間,同時該系統(tǒng)還應有復位、倒計時啟動功能。</p><p> 搶答過程:主持人按下系統(tǒng)復位鍵(RST),系統(tǒng)進入搶答狀態(tài),計時模塊輸出初始信號給數(shù)碼顯示模塊并顯示出初始值。當某參賽組搶先將搶答鍵按下時,系統(tǒng)將其余三路搶答信號封鎖,同時揚聲器發(fā)出聲音提示,組別顯示模塊送出信號給數(shù)碼顯示模塊,從而顯示出該搶答成功組臺號,并一直保持到下一輪主持人將系統(tǒng)清
28、零為止。主持人對搶答結(jié)果進行確認,隨后,計時模塊送出倒計時計數(shù)允許信號,開始回答問題,計時顯示器則從初始值開始以計時,計時至0時,停止計時,揚聲器發(fā)出超時報警信號,以中止未回答完問題。當主持人給出倒計時停止信號時,揚聲器停止鳴叫。若參賽者在規(guī)定時間內(nèi)回答完為題,主持人可給出倒計時計數(shù)停止信號,以免揚聲器鳴叫。主持人按下復位鍵,即RST為高電平有效狀態(tài),清除前一次的搶答組別,又可開始新的一輪的搶答。</p><p>
29、; 總系統(tǒng)框圖如圖3.1所示</p><p> 3.3子模塊的設計思想和實現(xiàn)</p><p> 根據(jù)對搶答器的功能要求,把要設計的系統(tǒng)劃分為4個功能模塊:搶答信號鑒別模塊、計時模塊,報警模塊和數(shù)碼顯示模塊 。</p><p> 3.3.1 搶答信號鑒別模塊的設計與實現(xiàn)</p><p> 搶答鑒別模塊用來準確直觀地判斷A、B、C、D四
30、組搶答者誰最先按下按鈕,并為顯示端送出信號,通過數(shù)顯和蜂鳴等途徑使觀眾能夠清楚地知道是哪一組搶答成功,是整個系統(tǒng)的核心部分。同時組別顯示端為下一模塊輸入信號,以方便主持人為該組搶答成功者進行確認。</p><p> 輸入信號:各組的搶答按鈕A、B、C、D,系統(tǒng)清零信號rst。</p><p> 輸出信號: 各組的搶答按鈕顯示端A1、B1、C1、D1,組別顯示端state[3..0]。&
31、lt;/p><p> 原理:第一個按下鍵的小組,搶答信號判定電路LOCK通過緩沖輸出信號的反饋將本參賽組搶先按下按鍵的信號鎖存,組別顯示和計時會保存到主持人對系統(tǒng)進行清零操作時為止。當rst=1時系統(tǒng)復位,使組別顯示信號G=0000,各組的指示燈信號A1=0,B1=0,C1=0,D1=0;當rst=0,即低電平有效,使其進入搶答鑒別狀態(tài),到CLK的上升沿到來時,以A組搶答成功為例,當輸入信號為A=1,B=0,C=0
32、,D=0,輸出信號G=1000,A1=1,即為鑒別出A組搶答成功,同時屏蔽其他組的輸入信號,以免發(fā)生錯誤。同理其他組別搶答成功也是這樣的鑒別過程。</p><p> 理論上來說,A、B、C、D四組搶答,應該有從0000—1111等16種可能情況,但是由于時鐘信號的頻率很高而且是在時鐘信號上升沿的狀況下才做出的鑒別,所以在這里兩組以上同時搶答成功的可能性非常小,因此可以只設計四種情況,即A、B、C、D分別為100
33、0、0100、0010、0001,這大大簡化了電路的設計復雜性。</p><p> 鑒別鎖存電路可以由VHDL程序來實現(xiàn),以下是一斷鑒別鎖存的VHDL程序:</p><p> process(rst,a,b,c,d,clk) </p><p> variable temp :std_logic_vector (3 downto 0);</p>&
34、lt;p><b> begin</b></p><p> if rst='1'then temp:="0000";speaker1<='0'; </p><p> elsif(a='1'and b='0'and c='0'and d='0
35、9;)then</p><p> a1<='1'; b1<='0';c1<='0';d1<='0';temp:="0001";speaker1<='1';</p><p> elsif(a='0'and b='1'and c=
36、'0'and d='0')then</p><p> a1<='0'; b1<='1';c1<='0';d1<='0';temp:="0010";speaker1<='1';</p><p> elsif(a='0
37、39;and b='0'and c='1'and d='0')then</p><p> a1<='0'; b1<='0';c1<='1';d1<='0';temp:="0011";speaker1<='1';</p>&
38、lt;p> elsif(a='0'and b='0'and c='0'and d='1')then</p><p> a1<='0';b1<='0';c1<='0';d1<='1';temp:="0100";speaker1<=
39、'1';</p><p> elsif (a='0'and b='0'and c='0'and d='0') then </p><p> a1<='0'; b1<='0';c1<='0';d1<='0';temp:=&
40、quot;0000";</p><p><b> end if;</b></p><p> if en='1' then speaker1<='0';</p><p><b> end if;</b></p><p> states<=t
41、emp;</p><p> end process;</p><p> 鑒別鎖存電路由VHDL程序?qū)崿F(xiàn)后,可以根據(jù)數(shù)碼管顯示判斷搶答成功組號的,其仿真圖如圖3.3.1所示。</p><p> 圖3.3.1 搶答信號鑒別模塊仿真圖</p><p><b> 引腳作用:</b></p><p>
42、; 系統(tǒng)輸入信號:各組的搶答按鈕A、B、C、D,系統(tǒng)清零信號CLR,CLK時鐘信號。</p><p> 系統(tǒng)的輸出信號: 各組的搶答按鈕顯示端A1、B1、C1、D1,組別顯示端控制信號state。</p><p><b> 仿真分析:</b></p><p> 當鑒別模塊的清零信號CLR為高電平時,無論A、B、C、D四組參賽者誰按下?lián)尨?/p>
43、按鈕,系統(tǒng)輸出均為零,同時組別顯示端G輸出信號也顯示為零;當清零信號CLR為低電平時,A、B、C、D四組參賽者誰先按下?lián)尨鸢粹o,組別顯示端就顯示該組別的號碼。假如A組按下?lián)尨鸢粹o時,組別輸出為0001,同時A組的顯示燈被點亮。</p><p> 3.3.2 計時模塊的設計與實現(xiàn)</p><p> 當搶答鑒別模塊成功判別出最先按下?lián)尨鸢粹o的參賽組后,在成功鑒別出哪組最先搶答后,主持人按下
44、計時信號,則進入計時狀態(tài)。10秒時間用兩個數(shù)碼管QA,QB顯示,其中QA表示10秒的個位,QB表示10秒的十位。采用兩個數(shù)碼管以方便隨時對預置的時間進行調(diào)整。計時模塊開始工作從預置初始值開始以秒計時,計時至0秒時停止,時間耗盡時,計時報警器會發(fā)出超時報警信號,以中止答題。</p><p> 該系統(tǒng)輸入信號有:系統(tǒng)清零信號CLR,計時使能端EN,系統(tǒng)時鐘信號CLK,系統(tǒng)輸出信號有:倒計時輸出端QA[3..0]、Q
45、B[3..0]。</p><p> 當清零信號CLR=1時,模塊輸出信號QA=0000 ,QB=0000。在CLR=0, EN=1時,通過時鐘信號CLK的上升沿來進行10秒到計時。當EN使能信號發(fā)出時,搶答蜂鳴器停止蜂鳴。</p><p> 計時電路可以由VHDL程序來實現(xiàn),以下是計時的VHDL程序:</p><p> variable tmpa: std_l
46、ogic_vector(3 downto 0);</p><p> variable tmpb: std_logic_vector(3 downto 0);</p><p><b> begin </b></p><p> if rst='1' then tmpa:="0000";tmpb:=&q
47、uot;0001"; speaker2<='0';--fuwei</p><p> elsif clk'event and clk='1' then</p><p> if en='1' then </p><p> if con='1'or(tmpa="000
48、0" and tmpb="0000")then</p><p> qa<=tmpa;qb<=tmpb; </p><p> elsif tmpa="0000" then</p><p> tmpa:="1001";</p><p> if tmpb=&q
49、uot;0000" then tmpb:="0010";</p><p> else tmpb:=tmpb-1;</p><p><b> end if;</b></p><p> else tmpa:=tmpa-1;</p><p><b> end if;</b&
50、gt;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> qa<=tmpa;qb<=tmpb;</p><p> if tmpa="0000" and tmpb="0000"
51、; then -- time over</p><p> speaker2<='1';</p><p> if s='1' then</p><p> speaker2<='0';</p><p><b> end if;</b></p>
52、<p><b> end if;</b></p><p> end process;</p><p> 答題計時電路由VHDL程序?qū)崿F(xiàn)后,其仿真圖如圖3.3.2所示。</p><p> 圖3.3.2 計時電路模塊仿真圖</p><p><b> 引腳作用:</b></p&
53、gt;<p> 系統(tǒng)輸入信號:系統(tǒng)清零信號CLR,系統(tǒng)時鐘信號CLK</p><p> 系統(tǒng)輸出信號:倒計時輸出端QA[3..0]、QB[3..0]。</p><p> 仿真分析:當系統(tǒng)清零信號CLR=1時,計時器的時鐘信號回到計時預置倒計時起始狀態(tài),此時倒計時輸出端QA=0000,QB=0000.當計時使能端EN=1,系統(tǒng)清零信號CLR=0,通過時鐘信號上升沿CLK來
54、進行10秒倒計時。</p><p> 當小組開始答題時,答題倒計時的數(shù)碼管顯示信號qa,qb會從初始值開始以秒為單位倒計時,計數(shù)至0時,停止計數(shù)。</p><p> 3.3.3答題超時提醒模塊</p><p> 計時顯示器從初始值開始以秒為單位倒計時,計數(shù)至0時,停止計數(shù),揚聲器發(fā)出超時報警信號,以中止繼續(xù)回答問題。當主持人再按下禁止鍵時,揚聲器停止報警。該系
55、統(tǒng)輸入信號有:聲音停止信號s,系統(tǒng)輸出信號有:倒計時輸出端speaker2。</p><p> process(clk)is</p><p> variable tmpa: std_logic_vector(3 downto 0);</p><p> variable tmpb: std_logic_vector(3 downto 0);</p>
56、<p><b> begin </b></p><p> if rst='1' then tmpa:="0000";tmpb:="0001"; speaker2<='0';--fuwei</p><p> elsif clk'event and clk=
57、9;1' then</p><p> if en='1' then </p><p> if con='1' or (tmpa="0000" and tmpb="0000" )then qa<=tmpa;qb<=tmpb; </p><p> elsif tmpa=&
58、quot;0000" then</p><p> tmpa:="1001";</p><p> if tmpb="0000" then tmpb:="0010";</p><p> else tmpb:=tmpb-1;</p><p><b> end i
59、f;</b></p><p> else tmpa:=tmpa-1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p>
60、; qa<=tmpa;qb<=tmpb;</p><p> if tmpa="0000" and tmpb="0000" then -- time over</p><p> speaker2<='1';</p><p> if s='1' then</p>
61、;<p> speaker2<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> 答題超時提醒電路由VHDL程序?qū)崿F(xiàn)后,其仿真圖如圖
62、3.3.3所示</p><p> 圖3.3.2答題警告模塊仿真圖</p><p> 系統(tǒng)輸入信號:及時使能EN,系統(tǒng)時鐘信號CLK</p><p> 系統(tǒng)輸出信號:倒計時輸出端QA[3..0]、QB[3..0]。</p><p> 仿真分析:當系統(tǒng)清零信號CLR=1時,計時器的時鐘信號回到計時預置倒計時起始狀態(tài),此時倒計時輸出端QA=
63、0000,QB=0001.若在指定時間內(nèi)沒有回答完問題,計時器倒計時到00,計時報警器speaker2為高電平。按下s使其停止報警。</p><p> 3.3.4 譯碼顯示模塊的設計與實現(xiàn)</p><p> 該模塊實際上是一個譯碼器,作用是用來顯示組別和時間,其主要原理是四位二進制BCD編碼轉(zhuǎn)換成七段二進制數(shù)字,以阿拉伯數(shù)字的形式輸出在數(shù)碼管上,使觀眾能夠更直觀的看到結(jié)果。譯碼器的譯碼
64、對照表3-1如下所示:</p><p> 表3-1 譯碼器的譯碼對照表</p><p> 備注 :在程序中只考慮0000-1001(即0-9)的情況,將其轉(zhuǎn)化為相應的七段顯示器的碼子,其他情況不予考慮。</p><p><b> 結(jié)束語</b></p><p> 本文主要介紹了利用VHDL語言設計智能搶答器的詳細
65、流程,并橫向介紹了一些關于此設計的背景知識,比如EDA的應用、QutartusrⅡ設計流程等等。在設計的過程中,文章通過對比傳統(tǒng)的自底向上的設計方法和和現(xiàn)代EDA的自頂向下的設計方法,突出了EDA設計方法的優(yōu)越性。</p><p> 在這次設計中,我們也遇到了一些問題,比如設置輸入信號不合適時,時序圖也會出現(xiàn)一些毛刺現(xiàn)象。同時,我也發(fā)現(xiàn)了自己的許多不足。首先,最初開發(fā)時,對系統(tǒng)沒有一個完整的思路,考慮不是很全面
66、,所以系統(tǒng)功能設計時,碰到不少困難,也耽擱了不少時間。其次,我發(fā)現(xiàn)自己對于書本上的很多知識還不夠熟悉,對開發(fā)工具的掌握還不算很全面,有很多我們需要掌握的知識還沒掌握,所以在設計編程、編譯以及仿真過程中走了不少彎路。再次,在論文的整理過程中,我對word文檔的操作技能不是很嫻熟,所以在以后的學習生活中,我會努力并盡量彌補我所缺少的一些相關知識,不斷提高自己的操作能力。</p><p><b> 參考文獻
67、</b></p><p> [1] 漢澤西.EDA技術與應用.北京:北京航空航天大學出版社,2004</p><p> [2] 侯伯亨,顧新. VHDL硬件描述語言與數(shù)字邏輯電路設計.西安:西安電子科技大學出版社,1997</p><p> [3] 黃任.編著VHDL入門、解惑、經(jīng)典實例、經(jīng)驗總結(jié).北京:北京航空航天大學出版社,2005</p
68、><p> [4] 羅朝霞,高書莉.CPLD/FPGA設計及應用.北京:人民郵電出版社, 2007.7.</p><p> [5] 陳云恰,保延翔.CPLD應用技術與數(shù)字系統(tǒng)統(tǒng)計.電子工業(yè)出版社, 2006.</p><p> [6] 李偉英,謝完成.基于EDA技術的搶答器的設計與實現(xiàn)【J】.科學技術與實現(xiàn), 2008.8(11).</p><
69、p> [7]譚會生,瞿遂存.EDA技術綜合應用實例與分析【M】.西安:西安電子科技大學出版社, 2004.</p><p> [8]姜雪松,吳鈺淳.VHDL設計實例與仿真.機械工業(yè)出版社, 2007.</p><p> [9]Altera Corporation.Altera Digital Library.Altera,2002.</p><p>
70、[10](美) Stephen Brown , Zvonko Vranesic 編著.Fundamengtals of Digital Logic with VHDL Design.McGraw—Hill Education(Asia),2002.8.</p><p><b> 附錄</b></p><p> library ieee;</p>&l
71、t;p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity eda is</p><p> port(rst: in std_logic;</p><p> a,b,c,d: in std_logic
72、;</p><p> a1,b1,c1,d1,speaker1,speaker2: out std_logic;</p><p> states: out std_logic_vector(3 downto 0); </p><p> en,clk,con:in std_logic;</p><p> s:in std_log
73、ic;</p><p> qa:out std_logic_vector(3 downto 0);</p><p> qb:out std_logic_vector(3 downto 0));</p><p><b> end eda;</b></p><p> architecture art of eda i
74、s</p><p> signal da: std_logic_vector(3 downto 0);</p><p> signal db: std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> process(rst,a,b,c,d,clk
75、) </p><p> variable temp :std_logic_vector (3 downto 0);</p><p><b> begin</b></p><p> if rst='1'then temp:="0000";speaker1<='0'; </p&g
76、t;<p> elsif(a='1'and b='0'and c='0'and d='0')then</p><p> a1<='1'; b1<='0';c1<='0';d1<='0';temp:="0001";speaker
77、1<='1';</p><p> elsif(a='0'and b='1'and c='0'and d='0')then</p><p> a1<='0'; b1<='1';c1<='0';d1<='0';temp
78、:="0010";speaker1<='1';</p><p> elsif(a='0'and b='0'and c='1'and d='0')then</p><p> a1<='0'; b1<='0';c1<='1
79、9;;d1<='0';temp:="0011";speaker1<='1';</p><p> elsif(a='0'and b='0'and c='0'and d='1')then</p><p> a1<='0'; b1<=
80、39;0';c1<='0';d1<='1';temp:="0100";speaker1<='1';</p><p> elsif (a='0'and b='0'and c='0'and d='0') then </p><p>
81、a1<='0'; b1<='0';c1<='0';d1<='0';temp:="0000";</p><p><b> end if;</b></p><p> if en='1' then speaker1<='0';
82、</p><p><b> end if;</b></p><p> states<=temp;</p><p> end process;</p><p> process(clk)is</p><p> variable tmpa: std_logic_vector(3 dow
83、nto 0);</p><p> variable tmpb: std_logic_vector(3 downto 0);</p><p><b> begin </b></p><p> if rst='1' then tmpa:="0000";tmpb:="0001"; s
84、peaker2<='0';--fuwei</p><p> elsif clk'event and clk='1' then</p><p> if en='1' then </p><p> if con='1' or (tmpa="0000" and tmp
85、b="0000" )then qa<=tmpa;qb<=tmpb; </p><p> elsif tmpa="0000" then</p><p> tmpa:="1001";</p><p> if tmpb="0000" then tmpb:="0010
86、";</p><p> else tmpb:=tmpb-1;</p><p><b> end if;</b></p><p> else tmpa:=tmpa-1;</p><p><b> end if;</b></p><p><b> e
87、nd if;</b></p><p><b> end if;</b></p><p> qa<=tmpa;qb<=tmpb;</p><p> if tmpa="0000" and tmpb="0000" then -- time over</p><
88、p> speaker2<='1';</p><p> if s='1' then</p><p> speaker2<='0';</p><p><b> end if;</b></p><p><b> end if;</b&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設計---搶答器
- eda課程設計---競賽搶答器
- eda數(shù)字搶答器課程設計
- eda課程設計報告--eda數(shù)字搶答器
- eda課程設計---競賽搶答器
- eda數(shù)字搶答器課程設計
- eda畢業(yè)課程設計--搶答器
- eda課程設計—四路搶答器
- 四路搶答器eda課程設計
- 四路搶答器eda課程設計
- 八路搶答器eda課程設計
- 八路搶答器-eda課程設計
- 六人搶答器eda課程設計
- eda課程設計四人搶答器
- 四路搶答器EDA課程設計.doc
- 八路搶答器eda課程設計vhdl
- eda課程設計報告--智力競賽搶答器
- eda課程設計---數(shù)字式競賽搶答器
- eda課程設計--數(shù)字式競賽搶答器設計
- eda課程設計之六人搶答器
評論
0/150
提交評論