eda課程設(shè)計(jì)---搶答器_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  1 引言</b></p><p>  EDA技術(shù)是指以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理及智能化技術(shù)的最新成果,進(jìn)行電子產(chǎn)品的自動(dòng)設(shè)計(jì)。</p><p>  利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開始設(shè)計(jì)電子系統(tǒng),大量工作可以通過計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版

2、圖的整個(gè)過程的計(jì)算機(jī)上自動(dòng)處理完成。</p><p>  現(xiàn)在對(duì)EDA的概念或范疇用得很寬。包括在機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個(gè)領(lǐng)域,都有EDA的應(yīng)用。目前EDA 技術(shù)已在各大公司、企事業(yè)單位和科研教學(xué)部門廣泛使用。例如在飛機(jī)制造過程中,從設(shè)計(jì)、性能測(cè)試及特性分析直到飛行模擬,都可能涉及到EDA技術(shù)。</p><p>  傳統(tǒng)的設(shè)計(jì)方法采用自底向上的設(shè)計(jì)方法

3、,一般先按電子系統(tǒng)的具體功能要求進(jìn)行功能劃分,然后對(duì)每個(gè)子模塊畫出真值表,用卡諾圖進(jìn)行手工邏輯簡(jiǎn)化,寫出布爾表達(dá)式,畫出相應(yīng)的邏輯線路圖,再據(jù)此選擇元器件,設(shè)計(jì)電路板,最后進(jìn)行實(shí)測(cè)與調(diào)試,由于無法進(jìn)行硬件系統(tǒng)功能仿真,如果某一過程存在錯(cuò)誤,查找和修改十分不便,所以這是一種費(fèi)時(shí)、費(fèi)力的設(shè)計(jì)方法,而現(xiàn)代電子設(shè)計(jì)技術(shù)(EDA)是自頂向下且先進(jìn)高效的。在電子產(chǎn)品的設(shè)計(jì)理念、設(shè)計(jì)方式、系統(tǒng)硬件構(gòu)成、設(shè)計(jì)的重用性、知識(shí)產(chǎn)權(quán)、設(shè)計(jì)周期等方面,EDA技

4、術(shù)具有一定的優(yōu)勢(shì)。所以本次設(shè)計(jì)的搶答器拋棄了傳統(tǒng)的設(shè)計(jì)方法,選擇了采用主流的EDA技術(shù)進(jìn)行設(shè)計(jì)。</p><p>  智力競(jìng)賽是“快樂學(xué)習(xí)”這一教育模式的典范,它采用在規(guī)定的一段時(shí)間內(nèi)搶答和必答等方式,在給人們的生活帶來樂趣的同時(shí),也使參與者和觀眾在愉悅的氛圍中學(xué)到一些科學(xué)知識(shí)和生活知識(shí),因此很受大家的喜歡。智力搶答器在智力競(jìng)賽中起到很重要的角色,能夠準(zhǔn)確、公正、直觀地判斷出首輪搶答者,并且通過搶答器的數(shù)碼顯示和

5、警示蜂鳴等方式指示出首輪搶答者。</p><p>  2 VHDL硬件描述語言及硬件平臺(tái)QuartusII概述</p><p>  2.1VHDL硬件描述語言</p><p>  VHDL全名Very-High-Speed Integrated Circuit HardwareDescription Language,誕生于1982年。1987年底,VHDL被IEE

6、E和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言 。自IEEE-1076(簡(jiǎn)稱87版)之后,各EDA公司相繼推出自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,簡(jiǎn)稱93版。VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,得到眾多EDA公司支持,在電子工程領(lǐng)域,已成為

7、事實(shí)上的通用硬件描述語言。</p><p>  2.1.1 VHDL簡(jiǎn)介</p><p>  VHDL語言是一種用于電路設(shè)計(jì)的高級(jí)語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計(jì)的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計(jì)語言 。</p><p>  VHDL翻譯成中文就是超高速集成電路硬件描述語言,主要是應(yīng)用在數(shù)字電路的設(shè)計(jì)中。目前,它

8、在中國的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計(jì)中。當(dāng)然在一些實(shí)力較為雄厚的單位,它也被用來設(shè)計(jì)ASIC。</p><p>  VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風(fēng)格以及語法是十分類似于一般的計(jì)算機(jī)高級(jí)語言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端

9、口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。</p><p>  與其他硬件描述語言相比,VHDL具有以下特點(diǎn):</p><p>  1.功能強(qiáng)大、設(shè)計(jì)靈活</p><p>  VHDL具有功能強(qiáng)

10、大的語言結(jié)構(gòu),可以用簡(jiǎn)潔明確的源代碼來描述復(fù)雜的邏輯控制。它具有多層次的設(shè)計(jì)描述功能,層層細(xì)化,最后可直接生成電路級(jí)描述。VHDL支持同步電路、異步電路和隨機(jī)電路的設(shè)計(jì),這是其他硬件描述語言所不能比擬的。VHDL還支持各種設(shè)計(jì)方法,既支持自底向上的設(shè)計(jì),又支持自頂向下的設(shè)計(jì);既支持模塊化設(shè)計(jì),又支持層次化設(shè)計(jì)。</p><p>  2.支持廣泛、易于修改</p><p>  由于VHDL已

11、經(jīng)成為IEEE標(biāo)準(zhǔn)所規(guī)范的硬件描述語言,目前大多數(shù)EDA工具幾乎都支持VHDL,這為VHDL的進(jìn)一步推廣和廣泛應(yīng)用奠定了基礎(chǔ)。在硬件電路設(shè)計(jì)過程中,主要的設(shè)計(jì)文件是用VHDL編寫的源代碼,因?yàn)閂HDL易讀和結(jié)構(gòu)化,所以易于修改設(shè)計(jì)。</p><p>  3.強(qiáng)大的系統(tǒng)硬件描述能力</p><p>  VHDL具有多層次的設(shè)計(jì)描述功能,既可以描述系統(tǒng)級(jí)電路,又可以描述門級(jí)電路。而描述既可以采

12、用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混合級(jí)描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準(zhǔn)確地建立硬件電路模型。VHDL支持預(yù)定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來較大的自由度,使設(shè)計(jì)人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。</p><p>  4.獨(dú)立于器件的設(shè)計(jì)、與工藝無關(guān)</p><p>  設(shè)計(jì)人員用VHDL進(jìn)行設(shè)計(jì)時(shí),不需要首先考慮選擇完成設(shè)計(jì)的器件,就可

13、以集中精力進(jìn)行設(shè)計(jì)的優(yōu)化。當(dāng)設(shè)計(jì)描述完成后,可以用多種不同的器件結(jié)構(gòu)來實(shí)現(xiàn)其功能。</p><p><b>  5.很強(qiáng)的移植能力</b></p><p>  VHDL是一種標(biāo)準(zhǔn)化的硬件描述語言,同一個(gè)設(shè)計(jì)描述可以被不同的工具所支持,使得設(shè)計(jì)描述的移植成為可能。</p><p><b>  6.易于共享和復(fù)用</b><

14、;/p><p>  VHDL采用基于庫(Library)的設(shè)計(jì)方法,可以建立各種可再次利用的模塊。這些模塊可以預(yù)先設(shè)計(jì)或使用以前設(shè)計(jì)中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設(shè)計(jì)中進(jìn)行復(fù)用,可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間進(jìn)行交流和共享,減少硬件電路設(shè)計(jì)。</p><p>  2.1.2 VHDL優(yōu)勢(shì)</p><p>  1.與其他的硬件描述語言相比,VHDL具有

15、更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。</p><p>  2.VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。</p><p>  3.VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和

16、已有設(shè)計(jì)的再利用功能。符合市場(chǎng)需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個(gè)代發(fā)組共同并行工作才能實(shí)現(xiàn)。</p><p>  4.對(duì)于用VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)的把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門級(jí)網(wǎng)表。</p><p>  5.VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)

17、計(jì)。</p><p>  2.2硬件平臺(tái)QuartusII概述</p><p>  2.2.1 Quartus II介紹</p><p>  Quartus II是Altera 公司單芯片可編程系統(tǒng)(SOPC) 設(shè)計(jì)的綜合性環(huán)境,也是適合SOPC的最全面的設(shè)計(jì)環(huán)境。它擁有現(xiàn)場(chǎng)可編程門陣列(FPGA) 和復(fù)雜可編程邏輯器件(CPLD) 設(shè)計(jì)的所有階段的解決方案。Qua

18、rtus II 設(shè)計(jì)軟件改進(jìn)了性能、提升了功能性、解決了潛在的設(shè)計(jì)延遲等,在工業(yè)領(lǐng)域率先提供FPGA與mask-programmed devices開發(fā)的統(tǒng)一工作流程。同時(shí),Altera的Quartus II可編程邏輯軟件還屬于第四代PLD開發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持VHDL、Verilog的設(shè)計(jì)流程,其內(nèi)部嵌有VHDL、Verilog邏輯綜合器。同樣,Quartus II具備仿真功能,同時(shí)也支持第三方的

19、仿真工具。Quartus II支持層次化設(shè)計(jì),可以在一個(gè)新的編輯輸入環(huán)境中對(duì)使用不同</p><p>  輸入設(shè)計(jì)方式完成的模塊進(jìn)行調(diào)用,從而解決了原理圖與HDL混合輸入設(shè)計(jì)的問題,并且在設(shè)計(jì)輸入之后,Quartus II的編譯器將給出設(shè)計(jì)輸入的錯(cuò)誤報(bào)告。</p><p>  在設(shè)計(jì)實(shí)驗(yàn)過程中有以下幾點(diǎn)需要注意:</p><p>  1.在編程時(shí)要注意信號(hào)與變量的區(qū)

20、別,并能正確定義和應(yīng)用。</p><p>  2.在創(chuàng)建工程時(shí),要注意工程名和文件名和實(shí)體名要保持一致;</p><p>  3.設(shè)計(jì)結(jié)束時(shí)間時(shí)最好是時(shí)間周期的15倍,否則可能會(huì)出現(xiàn)時(shí)序圖圖像重疊不好識(shí)別的現(xiàn)象;</p><p>  4.仿真中,適當(dāng)進(jìn)制的轉(zhuǎn)換有時(shí)候可以更使觀察者更明顯地看出來時(shí)序圖的功能。</p><p>  2.2.2 Q

21、uartus II的設(shè)計(jì)優(yōu)勢(shì)應(yīng)用舉例</p><p>  隨著邏輯設(shè)計(jì)復(fù)雜性的不斷增加,僅依賴于軟件方式的仿真測(cè)試來了解設(shè)計(jì)系統(tǒng)的硬件功能已經(jīng)遠(yuǎn)遠(yuǎn)不夠了,而需要重復(fù)進(jìn)行硬件系統(tǒng)測(cè)試的測(cè)試也變得更為困難。嵌入式邏輯分析儀SignalTapII的使用就解決了這一問題。它可以隨設(shè)計(jì)文件一并下載于目標(biāo)芯片中,用以捕捉目標(biāo)芯片內(nèi)部系統(tǒng)信號(hào)節(jié)點(diǎn)處的信息或總線上的數(shù)據(jù)流,而又不影響原硬件系統(tǒng)的正常工作?!?】嵌入式邏輯分析儀S

22、ignalTapII有很多的優(yōu)點(diǎn):(1)允許對(duì)設(shè)計(jì)層次的模塊的信號(hào)節(jié)點(diǎn)進(jìn)行測(cè)試,可以使用多時(shí)鐘驅(qū)動(dòng);(2)利用Signal Tap II成功的采集了FPGA內(nèi)部信號(hào)的波形,不占用額外的I/O引腳;(3)Signal Tap II為硬件板級(jí)調(diào)試工具,它采集的波形是工程下載后的實(shí)時(shí)波形,方便設(shè)計(jì)者查找引起設(shè)計(jì)缺陷的原因;(4)節(jié)約成本。Signal Tap II集成在Quartus II軟件中,無需另外付費(fèi);(5)能通過設(shè)置以確定前后觸發(fā)捕

23、捉信號(hào)信息的比例.</p><p>  除此之外,應(yīng)用Signal Tap II還能解決各種各樣的問題,如外部存儲(chǔ)器的雙向數(shù)據(jù)口的實(shí)時(shí)波形檢測(cè)、驅(qū)動(dòng)模塊的并串轉(zhuǎn)換波形等。</p><p>  3 智能搶答器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  3.1 搶答器系統(tǒng)設(shè)計(jì)要求 </p><p>  本文是設(shè)計(jì)的一個(gè)四路智力競(jìng)賽搶答器,利用V

24、HDL設(shè)計(jì)搶答器的各個(gè)模塊,并使用EDA 工具對(duì)各模塊進(jìn)行仿真驗(yàn)證。智力競(jìng)賽搶答器的設(shè)計(jì)分為四個(gè)模塊:鑒別鎖存模塊;答題計(jì)時(shí)模塊;答題超時(shí)提醒模塊以及顯示模塊。把各個(gè)模塊整合后,通過電路的輸入輸出對(duì)應(yīng)關(guān)系連接起來。設(shè)計(jì)成一個(gè)有如下功能的搶答器:</p><p> ?。?)設(shè)計(jì)一個(gè)四組人參加的智力競(jìng)賽搶答計(jì)時(shí)器,它具有四路搶答輸入,主持人按下復(fù)位鍵后,系統(tǒng)復(fù)位進(jìn)入搶答狀態(tài),計(jì)時(shí)顯示初始值; </p>

25、<p> ?。?)某組首先按下?lián)尨疰I,該路搶答信號(hào),競(jìng)賽搶答器能夠設(shè)別最先搶答的信號(hào),鎖定該信號(hào),同時(shí)揚(yáng)聲器響起,參賽小組的序號(hào)在數(shù)碼管上顯示;</p><p> ?。?)主持人對(duì)搶答結(jié)果進(jìn)行確認(rèn),給出倒計(jì)時(shí)計(jì)數(shù)允許信號(hào),開始回答問題,計(jì)時(shí)顯示器從初始值開始以秒為單位倒計(jì)時(shí),計(jì)數(shù)至0時(shí),停止計(jì)數(shù),揚(yáng)聲器發(fā)出超時(shí)報(bào)警信號(hào),以中止繼續(xù)回答問題;</p><p>  (4)當(dāng)主持人給出

26、倒計(jì)時(shí)計(jì)數(shù)禁止信號(hào)時(shí),揚(yáng)聲器停止鳴叫;</p><p> ?。?)參賽者在規(guī)定時(shí)間內(nèi)回答完問題,主持人給出倒計(jì)時(shí)計(jì)數(shù)禁止信號(hào),以免揚(yáng)聲器鳴叫,按下復(fù)位鍵,又可開始新一輪的搶答;</p><p>  3.2系統(tǒng)總體設(shè)計(jì)思想</p><p>  本設(shè)計(jì)為四路智能搶答器,所以這種搶答器要求有四路不同組別的搶答輸入信號(hào),并能識(shí)別最先搶答的信號(hào),直觀地通過數(shù)顯和蜂鳴等方式顯示

27、出組別;對(duì)回答問題所用的時(shí)間進(jìn)行計(jì)時(shí)、顯示、超時(shí)報(bào)警、預(yù)置答題時(shí)間,同時(shí)該系統(tǒng)還應(yīng)有復(fù)位、倒計(jì)時(shí)啟動(dòng)功能。</p><p>  搶答過程:主持人按下系統(tǒng)復(fù)位鍵(RST),系統(tǒng)進(jìn)入搶答狀態(tài),計(jì)時(shí)模塊輸出初始信號(hào)給數(shù)碼顯示模塊并顯示出初始值。當(dāng)某參賽組搶先將搶答鍵按下時(shí),系統(tǒng)將其余三路搶答信號(hào)封鎖,同時(shí)揚(yáng)聲器發(fā)出聲音提示,組別顯示模塊送出信號(hào)給數(shù)碼顯示模塊,從而顯示出該搶答成功組臺(tái)號(hào),并一直保持到下一輪主持人將系統(tǒng)清

28、零為止。主持人對(duì)搶答結(jié)果進(jìn)行確認(rèn),隨后,計(jì)時(shí)模塊送出倒計(jì)時(shí)計(jì)數(shù)允許信號(hào),開始回答問題,計(jì)時(shí)顯示器則從初始值開始以計(jì)時(shí),計(jì)時(shí)至0時(shí),停止計(jì)時(shí),揚(yáng)聲器發(fā)出超時(shí)報(bào)警信號(hào),以中止未回答完問題。當(dāng)主持人給出倒計(jì)時(shí)停止信號(hào)時(shí),揚(yáng)聲器停止鳴叫。若參賽者在規(guī)定時(shí)間內(nèi)回答完為題,主持人可給出倒計(jì)時(shí)計(jì)數(shù)停止信號(hào),以免揚(yáng)聲器鳴叫。主持人按下復(fù)位鍵,即RST為高電平有效狀態(tài),清除前一次的搶答組別,又可開始新的一輪的搶答。</p><p>

29、;  總系統(tǒng)框圖如圖3.1所示</p><p>  3.3子模塊的設(shè)計(jì)思想和實(shí)現(xiàn)</p><p>  根據(jù)對(duì)搶答器的功能要求,把要設(shè)計(jì)的系統(tǒng)劃分為4個(gè)功能模塊:搶答信號(hào)鑒別模塊、計(jì)時(shí)模塊,報(bào)警模塊和數(shù)碼顯示模塊 。</p><p>  3.3.1 搶答信號(hào)鑒別模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  搶答鑒別模塊用來準(zhǔn)確直觀地判斷A、B、C、D四

30、組搶答者誰最先按下按鈕,并為顯示端送出信號(hào),通過數(shù)顯和蜂鳴等途徑使觀眾能夠清楚地知道是哪一組搶答成功,是整個(gè)系統(tǒng)的核心部分。同時(shí)組別顯示端為下一模塊輸入信號(hào),以方便主持人為該組搶答成功者進(jìn)行確認(rèn)。</p><p>  輸入信號(hào):各組的搶答按鈕A、B、C、D,系統(tǒng)清零信號(hào)rst。</p><p>  輸出信號(hào): 各組的搶答按鈕顯示端A1、B1、C1、D1,組別顯示端state[3..0]。&

31、lt;/p><p>  原理:第一個(gè)按下鍵的小組,搶答信號(hào)判定電路LOCK通過緩沖輸出信號(hào)的反饋將本參賽組搶先按下按鍵的信號(hào)鎖存,組別顯示和計(jì)時(shí)會(huì)保存到主持人對(duì)系統(tǒng)進(jìn)行清零操作時(shí)為止。當(dāng)rst=1時(shí)系統(tǒng)復(fù)位,使組別顯示信號(hào)G=0000,各組的指示燈信號(hào)A1=0,B1=0,C1=0,D1=0;當(dāng)rst=0,即低電平有效,使其進(jìn)入搶答鑒別狀態(tài),到CLK的上升沿到來時(shí),以A組搶答成功為例,當(dāng)輸入信號(hào)為A=1,B=0,C=0

32、,D=0,輸出信號(hào)G=1000,A1=1,即為鑒別出A組搶答成功,同時(shí)屏蔽其他組的輸入信號(hào),以免發(fā)生錯(cuò)誤。同理其他組別搶答成功也是這樣的鑒別過程。</p><p>  理論上來說,A、B、C、D四組搶答,應(yīng)該有從0000—1111等16種可能情況,但是由于時(shí)鐘信號(hào)的頻率很高而且是在時(shí)鐘信號(hào)上升沿的狀況下才做出的鑒別,所以在這里兩組以上同時(shí)搶答成功的可能性非常小,因此可以只設(shè)計(jì)四種情況,即A、B、C、D分別為100

33、0、0100、0010、0001,這大大簡(jiǎn)化了電路的設(shè)計(jì)復(fù)雜性。</p><p>  鑒別鎖存電路可以由VHDL程序來實(shí)現(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ù)碼管顯示判斷搶答成功組號(hào)的,其仿真圖如圖3.3.1所示。</p><p>  圖3.3.1 搶答信號(hào)鑒別模塊仿真圖</p><p><b>  引腳作用:</b></p><p>

42、;  系統(tǒng)輸入信號(hào):各組的搶答按鈕A、B、C、D,系統(tǒng)清零信號(hào)CLR,CLK時(shí)鐘信號(hào)。</p><p>  系統(tǒng)的輸出信號(hào): 各組的搶答按鈕顯示端A1、B1、C1、D1,組別顯示端控制信號(hào)state。</p><p><b>  仿真分析:</b></p><p>  當(dāng)鑒別模塊的清零信號(hào)CLR為高電平時(shí),無論A、B、C、D四組參賽者誰按下?lián)尨?/p>

43、按鈕,系統(tǒng)輸出均為零,同時(shí)組別顯示端G輸出信號(hào)也顯示為零;當(dāng)清零信號(hào)CLR為低電平時(shí),A、B、C、D四組參賽者誰先按下?lián)尨鸢粹o,組別顯示端就顯示該組別的號(hào)碼。假如A組按下?lián)尨鸢粹o時(shí),組別輸出為0001,同時(shí)A組的顯示燈被點(diǎn)亮。</p><p>  3.3.2 計(jì)時(shí)模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  當(dāng)搶答鑒別模塊成功判別出最先按下?lián)尨鸢粹o的參賽組后,在成功鑒別出哪組最先搶答后,主持人按下

44、計(jì)時(shí)信號(hào),則進(jìn)入計(jì)時(shí)狀態(tài)。10秒時(shí)間用兩個(gè)數(shù)碼管QA,QB顯示,其中QA表示10秒的個(gè)位,QB表示10秒的十位。采用兩個(gè)數(shù)碼管以方便隨時(shí)對(duì)預(yù)置的時(shí)間進(jìn)行調(diào)整。計(jì)時(shí)模塊開始工作從預(yù)置初始值開始以秒計(jì)時(shí),計(jì)時(shí)至0秒時(shí)停止,時(shí)間耗盡時(shí),計(jì)時(shí)報(bào)警器會(huì)發(fā)出超時(shí)報(bào)警信號(hào),以中止答題。</p><p>  該系統(tǒng)輸入信號(hào)有:系統(tǒng)清零信號(hào)CLR,計(jì)時(shí)使能端EN,系統(tǒng)時(shí)鐘信號(hào)CLK,系統(tǒng)輸出信號(hào)有:倒計(jì)時(shí)輸出端QA[3..0]、Q

45、B[3..0]。</p><p>  當(dāng)清零信號(hào)CLR=1時(shí),模塊輸出信號(hào)QA=0000 ,QB=0000。在CLR=0, EN=1時(shí),通過時(shí)鐘信號(hào)CLK的上升沿來進(jìn)行10秒到計(jì)時(shí)。當(dāng)EN使能信號(hào)發(fā)出時(shí),搶答蜂鳴器停止蜂鳴。</p><p>  計(jì)時(shí)電路可以由VHDL程序來實(shí)現(xiàn),以下是計(jì)時(shí)的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>  答題計(jì)時(shí)電路由VHDL程序?qū)崿F(xiàn)后,其仿真圖如圖3.3.2所示。</p><p>  圖3.3.2 計(jì)時(shí)電路模塊仿真圖</p><p><b>  引腳作用:</b></p&

53、gt;<p>  系統(tǒng)輸入信號(hào):系統(tǒng)清零信號(hào)CLR,系統(tǒng)時(shí)鐘信號(hào)CLK</p><p>  系統(tǒng)輸出信號(hào):倒計(jì)時(shí)輸出端QA[3..0]、QB[3..0]。</p><p>  仿真分析:當(dāng)系統(tǒng)清零信號(hào)CLR=1時(shí),計(jì)時(shí)器的時(shí)鐘信號(hào)回到計(jì)時(shí)預(yù)置倒計(jì)時(shí)起始狀態(tài),此時(shí)倒計(jì)時(shí)輸出端QA=0000,QB=0000.當(dāng)計(jì)時(shí)使能端EN=1,系統(tǒng)清零信號(hào)CLR=0,通過時(shí)鐘信號(hào)上升沿CLK來

54、進(jìn)行10秒倒計(jì)時(shí)。</p><p>  當(dāng)小組開始答題時(shí),答題倒計(jì)時(shí)的數(shù)碼管顯示信號(hào)qa,qb會(huì)從初始值開始以秒為單位倒計(jì)時(shí),計(jì)數(shù)至0時(shí),停止計(jì)數(shù)。</p><p>  3.3.3答題超時(shí)提醒模塊</p><p>  計(jì)時(shí)顯示器從初始值開始以秒為單位倒計(jì)時(shí),計(jì)數(shù)至0時(shí),停止計(jì)數(shù),揚(yáng)聲器發(fā)出超時(shí)報(bào)警信號(hào),以中止繼續(xù)回答問題。當(dāng)主持人再按下禁止鍵時(shí),揚(yáng)聲器停止報(bào)警。該系

55、統(tǒng)輸入信號(hào)有:聲音停止信號(hào)s,系統(tǒng)輸出信號(hào)有:倒計(jì)時(shí)輸出端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>  答題超時(shí)提醒電路由VHDL程序?qū)崿F(xiàn)后,其仿真圖如圖

62、3.3.3所示</p><p>  圖3.3.2答題警告模塊仿真圖</p><p>  系統(tǒng)輸入信號(hào):及時(shí)使能EN,系統(tǒng)時(shí)鐘信號(hào)CLK</p><p>  系統(tǒng)輸出信號(hào):倒計(jì)時(shí)輸出端QA[3..0]、QB[3..0]。</p><p>  仿真分析:當(dāng)系統(tǒng)清零信號(hào)CLR=1時(shí),計(jì)時(shí)器的時(shí)鐘信號(hào)回到計(jì)時(shí)預(yù)置倒計(jì)時(shí)起始狀態(tài),此時(shí)倒計(jì)時(shí)輸出端QA=

63、0000,QB=0001.若在指定時(shí)間內(nèi)沒有回答完問題,計(jì)時(shí)器倒計(jì)時(shí)到00,計(jì)時(shí)報(bào)警器speaker2為高電平。按下s使其停止報(bào)警。</p><p>  3.3.4 譯碼顯示模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  該模塊實(shí)際上是一個(gè)譯碼器,作用是用來顯示組別和時(shí)間,其主要原理是四位二進(jìn)制BCD編碼轉(zhuǎn)換成七段二進(jìn)制數(shù)字,以阿拉伯?dāng)?shù)字的形式輸出在數(shù)碼管上,使觀眾能夠更直觀的看到結(jié)果。譯碼器的譯碼

64、對(duì)照表3-1如下所示:</p><p>  表3-1 譯碼器的譯碼對(duì)照表</p><p>  備注 :在程序中只考慮0000-1001(即0-9)的情況,將其轉(zhuǎn)化為相應(yīng)的七段顯示器的碼子,其他情況不予考慮。</p><p><b>  結(jié)束語</b></p><p>  本文主要介紹了利用VHDL語言設(shè)計(jì)智能搶答器的詳細(xì)

65、流程,并橫向介紹了一些關(guān)于此設(shè)計(jì)的背景知識(shí),比如EDA的應(yīng)用、QutartusrⅡ設(shè)計(jì)流程等等。在設(shè)計(jì)的過程中,文章通過對(duì)比傳統(tǒng)的自底向上的設(shè)計(jì)方法和和現(xiàn)代EDA的自頂向下的設(shè)計(jì)方法,突出了EDA設(shè)計(jì)方法的優(yōu)越性。</p><p>  在這次設(shè)計(jì)中,我們也遇到了一些問題,比如設(shè)置輸入信號(hào)不合適時(shí),時(shí)序圖也會(huì)出現(xiàn)一些毛刺現(xiàn)象。同時(shí),我也發(fā)現(xiàn)了自己的許多不足。首先,最初開發(fā)時(shí),對(duì)系統(tǒng)沒有一個(gè)完整的思路,考慮不是很全面

66、,所以系統(tǒng)功能設(shè)計(jì)時(shí),碰到不少困難,也耽擱了不少時(shí)間。其次,我發(fā)現(xiàn)自己對(duì)于書本上的很多知識(shí)還不夠熟悉,對(duì)開發(fā)工具的掌握還不算很全面,有很多我們需要掌握的知識(shí)還沒掌握,所以在設(shè)計(jì)編程、編譯以及仿真過程中走了不少彎路。再次,在論文的整理過程中,我對(duì)word文檔的操作技能不是很嫻熟,所以在以后的學(xué)習(xí)生活中,我會(huì)努力并盡量彌補(bǔ)我所缺少的一些相關(guān)知識(shí),不斷提高自己的操作能力。</p><p><b>  參考文獻(xiàn)

67、</b></p><p>  [1] 漢澤西.EDA技術(shù)與應(yīng)用.北京:北京航空航天大學(xué)出版社,2004</p><p>  [2] 侯伯亨,顧新. VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì).西安:西安電子科技大學(xué)出版社,1997</p><p>  [3] 黃任.編著VHDL入門、解惑、經(jīng)典實(shí)例、經(jīng)驗(yàn)總結(jié).北京:北京航空航天大學(xué)出版社,2005</p

68、><p>  [4] 羅朝霞,高書莉.CPLD/FPGA設(shè)計(jì)及應(yīng)用.北京:人民郵電出版社, 2007.7.</p><p>  [5] 陳云恰,保延翔.CPLD應(yīng)用技術(shù)與數(shù)字系統(tǒng)統(tǒng)計(jì).電子工業(yè)出版社, 2006.</p><p>  [6] 李偉英,謝完成.基于EDA技術(shù)的搶答器的設(shè)計(jì)與實(shí)現(xiàn)【J】.科學(xué)技術(shù)與實(shí)現(xiàn), 2008.8(11).</p><

69、p>  [7]譚會(huì)生,瞿遂存.EDA技術(shù)綜合應(yīng)用實(shí)例與分析【M】.西安:西安電子科技大學(xué)出版社, 2004.</p><p>  [8]姜雪松,吳鈺淳.VHDL設(shè)計(jì)實(shí)例與仿真.機(jī)械工業(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論