課程設(shè)計---基于vhdl語言的8路搶答器設(shè)計_第1頁
已閱讀1頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《通信電路EDA》課程設(shè)計報告</p><p><b>  **</b></p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  城南學院 計算機與通信工程系 通信工程專業(yè)</p><p>  基于VHDL語言的8路搶答器設(shè)計</p><

2、p>  摘 要 本課程設(shè)計分為主體電路和擴展電路兩部分共同實現(xiàn)搶答器的鎖存、顯示與報警功能。在本次設(shè)計中,系統(tǒng)開發(fā)平臺為MAX plusⅡ,硬件描述語言是VHDL。競賽者可以分為8組,搶答時各組對主持人提出的問題要在最短的時間內(nèi)做出判斷,并按下?lián)尨鸢存I回答問題。當?shù)谝粋€人按下按鍵后,則在顯示器上顯示該組的號碼,對應(yīng)的燈亮,同時電路將其他各組按鍵封鎖,使其不起作用。若搶答時間內(nèi)無人搶答,則報警燈亮?;卮鹜陠栴}后,由主持人將所有按

3、鍵恢復(fù),重新開始下一輪搶答。并且依據(jù)設(shè)計方案和設(shè)計平臺完成了程序編寫和程序調(diào)試,通過運行程序及時序波形的仿真有效驗證了設(shè)計的正確性,初步實現(xiàn)了設(shè)計目標。</p><p>  關(guān)鍵詞 鎖存、顯示;搶答器;MAX plus Ⅱ;VHDL。</p><p>  Abstract:This course design is divided into two main circuit and exp

4、ansion circuit realized partly joint inverter latch responder, display and alarm function. In this design, system developing platform for MAX plus Ⅱ, hardware description language is VHDL. Competitors may be divided into

5、 eight groups, vies to answer first when each to the host puts forward the problems in the shortest possible time to make judgments, and press the buttons vies to answer the question. When the first man press but</p&g

6、t;<p>  Keywords: latch, display, Scare-answering manometers; MAX plus Ⅱ; VHDL. </p><p><b>  目錄</b></p><p><b>  1 引 言1</b></p><p>  1.1 課程設(shè)計目的1<

7、/p><p>  1.2 課程設(shè)計具體要求及功能1</p><p>  2 EDA和MAX plusⅡ簡介2</p><p>  2.1 EDA簡介2</p><p>  2.2 MAX plusⅡ2</p><p><b>  3 設(shè)計方案4</b></p><p&g

8、t;  3.1 搶答器控制系統(tǒng)的設(shè)計思路4</p><p>  3.2 搶答器的系統(tǒng)結(jié)構(gòu)及工作原理4</p><p>  3.3 具體實現(xiàn)6</p><p><b>  4 系統(tǒng)仿真19</b></p><p>  4.1 頂層模塊及管腳介紹19</p><p>  4.2 仿真結(jié)果分析

9、20</p><p><b>  小結(jié)21</b></p><p><b>  參考文獻22</b></p><p><b>  附錄23</b></p><p><b>  1 引 言</b></p><p>  隨著科

10、學技術(shù)的不斷發(fā)展,促使人們學科學、學技術(shù)、學知識的手段多種多樣。搶答器作為一種工具,已廣泛應(yīng)用于各種競賽場合。本課程設(shè)計以8路搶答器為理念,實現(xiàn)優(yōu)先搶答、判決、鎖存及數(shù)碼管顯示等功能。</p><p>  在本次計中,系統(tǒng)開發(fā)平臺為MAX plusⅡ[2] 。MAX plusⅡ是Altera公司提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大可編程邏輯器件的供應(yīng)商之一。Max plusⅡ界面友好,使

11、用便捷,被譽為業(yè)界最易用易學的EDA軟件。在Max plusⅡ上可以完成設(shè)計輸入、元件適配、時序仿真和功能仿真、編程下載整個流程,它提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計環(huán)境,是設(shè)計者能方便地進行設(shè)計輸入、快速處理和器件編程。</p><p>  在本次設(shè)計中,采用的硬件描述語言是VHDL[1](Very-High-Speed Integrated Circuit Hardware Description Language)

12、。VHDL語言是一種用于電路設(shè)計的高級語言?! HDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風格以及語法是十分類似于一般的計算機高級語言。</p><p>  1.1 課程設(shè)計目的</p><p>  學習ALTERA公司的FPGA/CPLD的結(jié)構(gòu)、特點和性能。學習集成開發(fā)軟件MAX plus II/Quartus II的

13、使用及設(shè)計過程。熟悉EDA工具設(shè)計數(shù)字電路設(shè)計方法,掌握VHDL硬件描述語言設(shè)計方法。根據(jù)給定題目設(shè)計數(shù)字電路,來加深對可編程邏輯器件的理解和掌握。</p><p>  1.2 課程設(shè)計具體要求及功能</p><p>  在所選擇器件內(nèi)完成八路搶答器的設(shè)計,要求設(shè)計完成后芯片具有搶答器的全部功能、包括顯示和操作接口。搶答器要求有八路搶答輸入,搶答邏輯設(shè)計合理(具有搶答鎖定),搶答編號顯示,

14、搶答成功指示,搶答完成后狀態(tài)復(fù)位。在相應(yīng)的器件平臺上完成設(shè)計的輸入、編譯、綜合或適配通過。</p><p>  8路搶答器控制系統(tǒng)是娛樂活動中經(jīng)常使用的重要基礎(chǔ)設(shè)備之一,根據(jù)搶答要求,系統(tǒng)所需實現(xiàn)的功能如下:</p><p>  (1) 主持人按鍵清零,數(shù)碼顯示0,蜂鳴器不叫,進入搶答狀態(tài)。</p><p>  (2) 主持人發(fā)出開始命令,8人開始搶答。其中一人先按

15、下?lián)尨疰I,蜂鳴器發(fā)出鳴叫,數(shù)碼顯示該人號碼,其他人再按鍵,系統(tǒng)不再響應(yīng),直至主持人按鍵清零,下一次搶答開始。</p><p>  2 EDA及MAX plus Ⅱ簡介</p><p><b>  2.1 EDA簡介</b></p><p>  EDA(Electronics Design Automation)技術(shù)是隨著集成電路和計算機技術(shù)的飛

16、速發(fā)展應(yīng)運而生的一種高級、快速、有效的電子設(shè)計自動化工具。它是為解決自動控制系統(tǒng)設(shè)計而提出的。EDA在通信行業(yè)(電信)里的另一個解釋是企業(yè)數(shù)據(jù)架構(gòu),EDA給出了一個企業(yè)級的數(shù)據(jù)架構(gòu)的總體視圖,并按照電信企業(yè)的特征,進行了框架和層級的劃分。</p><p>  EDA技術(shù)就是以計算機為工具,設(shè)計者在EDA軟件平臺上,用硬件描述語言HDL完成設(shè)計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線

17、和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計的效率和可操作性,減輕了設(shè)計者的勞動強度。 </p><p>  利用EDA工具,電子設(shè)計師可以從概念、算法、協(xié)議等開始設(shè)計進行八路搶答器的系統(tǒng),大量工作可以通過計算機完成,并可以將搶答器從電路設(shè)計、性能分析到設(shè)計出IC版圖或PCB版圖的整個過程的計算機上自動處理完成。現(xiàn)在對EDA的概念或范疇用得很寬。包括在機

18、械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學、軍事等各個領(lǐng)域,都有EDA的應(yīng)用。目前EDA技術(shù)已在各大公司、企事業(yè)單位和科研教學部門廣泛使用。</p><p>  2.2 MAX plus Ⅱ簡介</p><p>  Max plusⅡ是Altera公司提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大可編程邏輯器件的供應(yīng)商之一。Max plusⅡ界面友好,使用便捷,被譽為

19、業(yè)界最易用易學的EDA軟件。在Max plusⅡ上可以完成設(shè)計輸入、元件適配、時序仿真和功能仿真、編程下載整個流程,它提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計環(huán)境,是設(shè)計者能方便地進行設(shè)計輸入、快速處理和器件編程。Max plusⅡ的編譯器還提供了強大的邏輯綜合與優(yōu)化功能,使用戶比較容易地將設(shè)計集成到器件中。</p><p><b>  ●設(shè)計輸入</b></p><p>  MA

20、X plus II軟件的設(shè)計輸入方式有多種,主要包括原理圖輸入方式、文本輸入方式、波形設(shè)計輸入方式、層次設(shè)計輸入方式和底層設(shè)計輸入方式。因此,設(shè)計人員可以根據(jù)自己的實際情況靈活選擇使用。</p><p><b>  ●設(shè)計編譯</b></p><p>  MAX plus II編譯一個設(shè)計時,Compiler在設(shè)計文件中讀取信息并產(chǎn)生編程文件和仿真文件,Message

21、 Processor(信息處理程序)可自動定位錯誤。</p><p><b>  ●設(shè)計校驗</b></p><p>  設(shè)計校驗過程包括設(shè)計仿真和定時分析,仿真起的作用是測試邏輯操作和設(shè)計功能的完備性;Timing Analyzer(定時分析程序)可分析設(shè)計的定時和延時情況。</p><p><b>  ●器件編程 </b&g

22、t;</p><p>  MAX plus II Programmer是使用Compiler生成的編程文件對Altera器件進行編程的。它可以用來對器件編程、校驗和試驗,是對設(shè)計功能進行的測試。Altera公司器件的編程方法有許多種,可根據(jù)具體情況選擇使用。編譯生成的配置文件經(jīng)計算機并行通信口接到Altera專用編程電纜上,再接到器件的編程接口[6],利用應(yīng)用軟件提供的編程軟件,Programmer即可對器件進行

23、配置。這種方法的優(yōu)點是配置方便、迅速,便于修改。</p><p>  MAX plus2在Windows 2000/XP上一旦安裝完畢,經(jīng)過設(shè)置即可使用硬件下載功能。在Windows 2000上除了安裝軟件外,為了使用ByteBlaster(MV)下載功能,還必須安裝硬件驅(qū)動(Drivers)以支持MAX plus2對PC機并行口的操作。</p><p><b>  3設(shè)計方案&

24、lt;/b></p><p>  3.1 八路搶答器控制系統(tǒng)的設(shè)計思路</p><p>  搶答器同時供8名選手或8個代表隊比賽,分別用8個按鈕[a1]~[a8]。設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)Reset, 該開關(guān)由主持人控制。搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,揚聲器發(fā)出聲響提示,數(shù)碼顯示選手號碼。其他人再按鍵,系統(tǒng)進行了優(yōu)先鎖存,不再響應(yīng),優(yōu)先搶答選手的編號

25、一直保持到主持人將系統(tǒng)清除為止,下一次搶答開始。</p><p>  擴展功能:該電路具有犯規(guī)報警功能。當主持人未按下開關(guān)開始搶答前,參賽選手若按下開關(guān),則搶答系統(tǒng)發(fā)出蜂鳴聲報警并顯示犯規(guī)組別。</p><p>  3.2 搶答器的系統(tǒng)結(jié)構(gòu)及工作原理</p><p> ?。?)系統(tǒng)結(jié)構(gòu):如圖3.1所示為搶答器的結(jié)構(gòu)框圖,它由主體電路和擴展電路兩部分組成。主體電路完成

26、基本的搶答功能,即開始搶答后,當選手按動搶答鍵時,能顯示選手的編號,同時能封鎖輸入電路,禁止其他選手搶答。擴展電路完成檢測數(shù)碼管工作情況。其工作原理為:接通電源后,主持人將開關(guān)撥到"清除"狀態(tài),搶答器處于禁止狀態(tài),編號顯示器滅燈,定時器顯示設(shè)定時間;主持人將開關(guān)置于"開始"狀態(tài),宣布"開始"搶答器工作。定時器倒計時,揚聲器給出聲響提示。選手在定時時間內(nèi)搶答時,搶答器完成:優(yōu)先判

27、斷、編號鎖存、編號顯示、揚聲器提示。當一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由主持人再次操作"清除"和"開始"狀態(tài)開關(guān)。</p><p>  圖3.1 搶答器結(jié)構(gòu)框圖</p><p><b>  (2)工作流程:</b></p><p>  圖3.2搶答器工作流程&l

28、t;/p><p>  搶答器的基本工作原理:在搶答競賽或呼叫時,有多個信號同時或不同時送入主電路中,搶答器內(nèi)部的寄存器工作,并識別、記錄第一個號碼,同時內(nèi)部的定時器開始工作,記錄有關(guān)時間并產(chǎn)生超時信號。在整個搶答器工作過程中,顯示電路、語音電路等還要根據(jù)現(xiàn)場的實際情況向外電路輸出相應(yīng)信號。搶答器的工作流程分為、系統(tǒng)復(fù)位、正常流程、犯規(guī)流程等幾部分。</p><p><b>  3.3

29、 具體實現(xiàn)</b></p><p>  (1)搶答器的電路設(shè)計</p><p>  1、搶答器電路總體結(jié)構(gòu):如圖3.3所示為總體方框圖。接通電源后,后臺工作人員將檢測開關(guān)S置“檢測”狀態(tài),數(shù)碼管在正常清除下,顯示“”;當后臺工作人員將檢測開關(guān)S置“搶答”狀態(tài),主持按系統(tǒng)清除按鍵,搶答器處于禁止狀態(tài),編號顯示器滅燈;主持人松開,宣布“開始”,搶答器工作。選手按動搶答按鍵,搶答器完

30、成:優(yōu)先判斷、編號鎖存、編號顯示。當一輪搶答之后,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。如果再次搶答必須由主持人再次按動系統(tǒng)清除按鍵。</p><p>  圖3.3 搶答器總體方框圖</p><p>  2、優(yōu)先判斷與編號鎖存電路:其電路如圖3.4所示。電路選用優(yōu)先編碼器 74LS148 和鎖存器 74LS279 來完成。該電路主要完成兩個功能:一是分辨出選手按鍵的先后,并鎖存

31、優(yōu)先搶答者的編號;二是禁止其他選手按鍵,其按鍵操作無效。工作過程:系統(tǒng)清除按鍵按動時,74LS279的四個RS觸發(fā)器的置0端均為0,使四個觸發(fā)器均被置0。1Q為0,使74LS148的使能端 =0,74LS148處于允許編碼狀態(tài),同時1Q為0,使74LS48的滅燈輸入端 =0,數(shù)碼管無顯示。這時搶答器處于準備搶答狀態(tài)。</p><p>  當系統(tǒng)清除按鍵松開時,搶答器處于等待狀態(tài)。當有選手將按鍵開關(guān)按下時,搶答器將

32、接受并顯示搶答結(jié)果,假設(shè)按下的是S4,則74LS148的編碼輸出為011,此代碼送入74LS279鎖存后,使4Q3Q2Q=100,亦即74LS148的輸入為0100;又74LS148的優(yōu)先編碼標志輸出 為0,使1Q=1,即 =1,74LS148處于譯碼狀態(tài),譯碼的結(jié)果顯示為“4”。同時1Q=1,使74LS148的 =1,74LS148處于禁止狀態(tài),從而封鎖了其他按鍵的輸入。此外,當優(yōu)先搶答者的按鍵松開再按下時,由于仍為1Q=1,使 =1

33、,74LS148仍處于禁止狀態(tài),確保不會接受二次按鍵時的輸入信號,保證了搶答者的優(yōu)先性。(74LS148為8線-3線優(yōu)先編碼器,圖3.5為74LS148和74LS279的引腳圖和真值表。)</p><p>  圖3.4 74LS148為8線-3線優(yōu)先編碼器</p><p>  圖3.5 74LS148和74LS279的引腳圖和真值表</p><p>  (2) 搶

34、答器的單元電路設(shè)計</p><p>  簡易邏輯數(shù)字搶答器由主體電路與擴展電路組成。優(yōu)先編碼電路、鎖存器、譯碼電路將參賽隊的輸入信號在顯示器上輸出;用控制電路和主持人開關(guān)啟動報警電路,以上兩部分組成主體電路。通過定時電路和譯碼電路將秒脈沖產(chǎn)生的信號在顯示器上輸出實現(xiàn)計時功能,構(gòu)成擴展電路?,F(xiàn)簡單介紹搶答器設(shè)計中的搶答電路、定時電路、報警電路、時序控制電路、顯示及譯碼電路。</p><p>

35、  1、搶答電路:參考電路如圖3.6所示。該電路完成兩個功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號,同時譯碼顯示電路顯示編號;二是禁止其他選手按鍵操作無效。</p><p>  工作過程:開關(guān)S置于“清除”端時,RS觸發(fā)器的端均為0,4個觸發(fā)器輸出置0,使74LS148的=0,使之處于工作狀態(tài)。當開關(guān)S置于“開始”時,搶答器處經(jīng)RS鎖存后,1Q=1,=1,74LS48處于工作狀態(tài),4Q3Q2Q=101

36、,經(jīng)譯碼顯示為“5”。此外,1Q=1,使74LS148=1,處于禁止狀態(tài),封鎖其他按鍵的輸入。當按鍵松開即按下時,74LS148的此時由于仍為1Q=1,使=1,所以74LS148仍處于禁止狀態(tài),確保不會出二次按鍵時輸入信號,保證了搶答者的優(yōu)先性。如有再次搶答需由主持人將S開關(guān)重新置于“清除”然后再進行下一輪搶答。(LS148為8線-3線優(yōu)先編碼器。)</p><p><b>  圖3.6 搶答電路<

37、;/b></p><p>  2、定時電路:由節(jié)目主持人根據(jù)搶答題的難易程度,設(shè)定一次搶答的時間,通過預(yù)置時間電路對計數(shù)器進行預(yù)置,計數(shù)器的時鐘脈沖由秒脈沖電路提供??深A(yù)置時間的電路選用十進制同步加減計數(shù)器74LS192進行設(shè)計,具體電路如圖3.7所示。本設(shè)計是以555構(gòu)成震蕩電路,由74LS192來充當計數(shù)器,構(gòu)成搶答器的倒計時電路。該電路簡單,無需用到晶振,芯片都是市場上容易購得的。設(shè)計功能完善,能實現(xiàn)

38、直接清零、啟動。</p><p><b>  圖3.7 定時電路</b></p><p>  3、報警電路:由555定時器和三極管構(gòu)成的報警電路如圖3.8所示。其中555構(gòu)成多諧振蕩器,振蕩頻率fo=1.43/[(RI+2R2)C],其輸出信號經(jīng)三極管推動揚聲器。PR為控制信號,當PR為高電平時,多諧振蕩器工作,反之,電路停振。</p><p>

39、;<b>  圖3.8 報警電路</b></p><p>  4、時序控制電路:時序控制電路是搶答器設(shè)計的關(guān)鍵,它要完成以下三項功能:</p><p>  (a) 主持人將控制開關(guān)撥到"開始"位置時,揚聲器發(fā)聲,搶答電路和定時電路進人正常搶答工作狀態(tài)。</p><p>  (b) 當參賽選手按動搶答鍵時,揚聲器發(fā)聲,搶答電路

40、和定時電路停止工作。</p><p>  (c) 當設(shè)定的搶答時間到,無人搶答時,揚聲器發(fā)聲,同時搶答電路和定時電路停止工作。</p><p>  根據(jù)上面的功能要求,設(shè)計的時序控制電路如圖 3.9所示。圖中,門G1 的作用是控制時鐘信號CP的放行與禁止,門G2的作用是控制74LS148的輸人使能端 。圖4-3的工作原理是:主持人控制開關(guān)從"清除"位置撥到"開

41、始"位置時,來自于圖4-1中的74LS279的輸出 1Q=0,經(jīng)G3反相, A=1,則時鐘信號CP能夠加到74LS192的CPD時鐘輸入端,定時電路進行遞減計時。同時,在定時時間未到時,則"定時到信號"為1,門G2的輸出=0,使 74LS148處于正常工作狀態(tài),從而實現(xiàn)功能①的要求。當選手在定時時間內(nèi)按動搶答鍵時,1Q=1,經(jīng) G3反相, A=0,封鎖 CP信號,定時器處于保持工作狀態(tài);同時,門G2的輸出=

42、1,74LS148處于禁止工作狀態(tài),從而實現(xiàn)功能②的要求。當定時時間到時,則"定時到信號"為0,=1,74LS148處于禁止工作狀態(tài),禁止選手進行搶答。同時, 門G1處于關(guān)門狀態(tài),封鎖 CP信號,使定時電路保持00狀態(tài)不變,從而實現(xiàn)功能③的要求。集成單穩(wěn)觸發(fā)器74LS121用于控制報警電路及發(fā)聲的時間。</p><p>  圖3.9 時序控制電路</p><p>  5

43、、顯示與譯碼電路:七段顯示譯碼器與數(shù)碼管如下圖3.10 7段顯示譯碼所示,74LS48將鎖存器74LS279的信號譯碼,輸出給數(shù)碼管。當后臺工作人員將S置于GND,=0,使燈測試輸入端(圖中3號)=1,這時測試數(shù)碼管工作情況;當后臺工作人員將S置于Vcc,=1,使燈測試輸入端(圖中3號)=1,這時正常譯碼。(74LS48為4線-七段譯碼器/驅(qū)動器,下圖3.11為邏輯圖)</p><p>  圖3.10 7段顯示譯

44、碼器與數(shù)碼管</p><p>  圖3.11 74LS48邏輯圖</p><p>  (3) 基于VHDL的實體設(shè)計:</p><p><b>  1、程序設(shè)計</b></p><p><b>  編碼程序:</b></p><p>  LIBRARY ieee;</p

45、><p>  USE ieee.std_logic_1164.ALL;</p><p>  ENTITY change IS</p><p>  PORT(q1,q2,q3,q4,q5,q6,q7,q8: IN STD_LOGIC;</p><p>  clr : IN STD_LOGIC;</p><p>  m: OU

46、T STD_LOGIC_vector(3 downto 0);</p><p>  en: OUT STD_LOGIC);</p><p>  END change;</p><p>  ARCHITECTURE a OF change IS</p><p><b>  BEGIN</b></p><

47、p>  process(q1,q2,q3,q4,q5,q6,q7,q8,clr)</p><p>  variable temp:STD_LOGIC_vector(7 downto 0);</p><p><b>  begin</b></p><p>  temp:=q1&q2&q3&q4&q5&

48、q6&q7&q8;</p><p>  case temp is</p><p>  when"01111111"=>m<="0001";</p><p>  when"10111111"=>m<="0010";</p><p&

49、gt;  when"11011111"=>m<="0011";</p><p>  when"11101111"=>m<="0100";</p><p>  when"11110111"=>m<="0101";</p>&

50、lt;p>  when"11111011"=>m<="0110";</p><p>  when"11111101"=>m<="0111";</p><p>  when"11111110"=>m<="1000";</p&g

51、t;<p>  when others=>m<="1111";</p><p><b>  end case;</b></p><p>  en <= temp(7) AND temp(6) AND temp(5) AND temp(4) AND temp(3) AND temp(2) AND temp(1) AND

52、 temp(0) AND clr;</p><p>  end process;</p><p><b>  END a;</b></p><p>  對應(yīng)的管腳圖和仿真圖如下:</p><p>  圖3.12 編碼模塊管腳圖</p><p>  圖3.13 編碼模塊仿真圖</p>

53、<p><b>  鎖存程序:</b></p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.ALL;</p><p>  USE ieee.std_logic_unsigned.ALL;</p><p>  ENTITY lock IS</p

54、><p>  PORT(s1: IN STD_LOGIC;</p><p>  s2: IN STD_LOGIC;</p><p>  s3: IN STD_LOGIC;</p><p>  s4: IN STD_LOGIC;</p><p>  s5: IN STD_LOGIC;</p><p>

55、  s6: IN STD_LOGIC;</p><p>  s7: IN STD_LOGIC;</p><p>  s8: IN STD_LOGIC;</p><p>  clr: INSTD_LOGIC;</p><p>  q1,q2,q3,q4,q5,q6,q7,q8: OUTSTD_LOGIC);</p><p

56、><b>  END lock;</b></p><p>  ARCHITECTURE a OF lock IS</p><p><b>  BEGIN</b></p><p>  process(s1,s2,s3,s4,s5,s6,s7,s8,clr)</p><p><b>  

57、begin</b></p><p>  if(clr ='0') then</p><p>  q1<='1';q2<='1';</p><p>  q3<='1';q4<='1';</p><p>  q5<='

58、1';q6<='1';</p><p>  q7<='1';q8<='1';</p><p><b>  else</b></p><p>  q1<=s1;q2<=s2;</p><p>  q3<=s3;q4<=s4;&

59、lt;/p><p>  q5<=s5;q6<=s6;</p><p>  q7<=s7;q8<=s8;</p><p><b>  end if;</b></p><p>  end process;</p><p><b>  END a;</b><

60、;/p><p>  對應(yīng)的管腳圖和仿真圖如下:</p><p>  圖3.14 鎖存模塊管腳圖</p><p>  圖3.15 鎖存模塊仿真圖</p><p>  搶答成功揚聲器發(fā)聲相關(guān)程序:</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_

61、1164.ALL;</p><p>  USE ieee.std_logic_unsigned.ALL;</p><p>  ENTITY cnt IS</p><p>  PORT(clk,en: in STD_LOGIC;</p><p>  sound1:out STD_LOGIC);</p><p><b

62、>  END cnt;</b></p><p>  ARCHITECTURE a OF cnt IS</p><p><b>  BEGIN</b></p><p>  process(en,clk)</p><p><b>  begin</b></p><p

63、>  if(clk'event and clk='1') then</p><p>  if(en='1') then</p><p>  sound1<='1';</p><p><b>  else </b></p><p>  sound1<

64、='0';</p><p>  end if;end if;</p><p>  end process;</p><p><b>  END a;</b></p><p>  對應(yīng)的管腳圖和仿真圖如下:</p><p>  圖3.16 搶答成功揚聲器發(fā)聲模塊管腳圖</p&g

65、t;<p>  圖3.17 搶答成功揚聲器發(fā)聲模塊仿真圖</p><p>  數(shù)碼管顯示管相關(guān)程序:</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.ALL;</p><p>  USE ieee.std_logic_unsigned.ALL;</p>

66、;<p>  ENTITY display IS</p><p>  PORT(m: INSTD_LOGIC_VECTOR(3 downto 0);</p><p>  BCD: out STD_LOGIC_VECTOR(7 downto 0));</p><p>  END display;</p><p>  ARCHIT

67、ECTURE a OF display IS</p><p><b>  BEGIN</b></p><p>  PROCESS(m) </p><p><b>  BEGIN</b></p><p><b>  CASE m IS</b></p>

68、;<p>  WHEN "0000" => BCD <="00111111";</p><p>  WHEN "0001" => BCD <="00000110";</p><p>  WHEN "0010" => BCD <=&quo

69、t;01011011";</p><p>  WHEN "0011" => BCD <="01001111";</p><p>  WHEN "0100" => BCD <="01100110";</p><p>  WHEN "0101

70、" => BCD <="01101101";</p><p>  WHEN "0110" => BCD <="01111101";</p><p>  WHEN "0111" => BCD <="00000111";</p>&

71、lt;p>  WHEN "1000" => BCD <="01111111";</p><p>  WHEN "1001" => BCD <="01101111";</p><p>  WHEN OTHERS => BCD <="00000000"

72、;;</p><p><b>  END CASE;</b></p><p>  END PROCESS; </p><p><b>  END a;</b></p><p>  對應(yīng)的管腳圖和仿真圖如下:</p><p>  圖3.18 數(shù)碼管顯示管模塊管腳圖</p&

73、gt;<p>  圖3.19 數(shù)碼管顯示管模塊仿真圖</p><p><b>  2、編譯管腳設(shè)置:</b></p><p>  程序輸入完成后然后選擇用于編程的目標芯片:選擇菜單 “Assign”→“Device”, 窗口中的 Device Family 是器件序列欄, 先在此欄中選擇 MAX7000S。然后選擇 EMP7128SLC84- 15 器件

74、, 按 OK,就可以進行編譯了,經(jīng)“MAX+PLUSE II”中的“Compiler”菜單編譯,以驗證設(shè)計結(jié)果是否符合要求,如果有問題,則返回原設(shè)計文件再次進行修改, 直到正確為止。</p><p>  圖3.20 編碼管腳</p><p>  編譯無誤后經(jīng)“MAX+PLUSE II”中的“FLOORPLAN EDITOR” 菜單,進行輸入、輸出管腳設(shè)置,將元件端口放置到 EPM7128

75、SLC84- 15芯片適當?shù)腎/O 口,并用手工調(diào)整按上圖所示設(shè)置。</p><p><b>  4 系統(tǒng)仿真</b></p><p>  4.1 頂層模塊及管腳介紹</p><p>  編譯成功后進行仿真。首先建立波形文件。波形文件建好 并存盤后。選擇菜單“Max plusII”→“simulator”,啟動仿真操作,結(jié)束后觀察仿真波形如圖4

76、.2所示。從仿真波形看, 符合設(shè)計要求(對應(yīng)的管腳圖和仿真圖如下)。</p><p>  圖4.1 頂層文件管腳圖</p><p>  圖4.2 頂層仿真波形圖</p><p>  s1,s2,s3,s4,s5,s6,s7,s8輸入</p><p>  q1,q2,q3,q4,q5,q6,q7,q8鎖存輸出</p><p&

77、gt;  M編碼輸出和BCD顯示輸入</p><p><b>  clk時鐘控制信號</b></p><p>  clr 0,清零 1為開始搶答</p><p><b>  en搶答成功</b></p><p>  BCD數(shù)碼管顯示輸出</p><p>  4.2 仿真結(jié)果分

78、析</p><p>  搶答必須發(fā)聲在一個時鐘周期里且保證clr=1時才有效,而對應(yīng)數(shù)碼顯示管模塊可得知,若當“s1”搶答則數(shù)碼管為"00111111"對應(yīng)顯示“06”,s1搶答成功且揚聲器發(fā)聲,搶答完成,其他號碼搶答同理。</p><p>  圖4.2的仿真圖表示為:在第一個有效時鐘周期里為s3搶答成功,第二個有效時鐘周期為s6搶答成功,第三個有效時鐘周期為s8搶答成

79、功,第四個有效時鐘周期為s2搶答成功,第五個有效時鐘周期為s7搶答成功。則數(shù)碼管顯示分別為4F、7D、7F、5B、07。仿真無誤,由本次仿真結(jié)果可知該設(shè)計成功的實現(xiàn)了8路搶答器的搶答功能。</p><p><b>  小結(jié)</b></p><p>  本次設(shè)計是在指導老師陳沅濤的指導下完成的。陳老師是帶我們進入VHDL世界的人,僅僅3個星期讓我們了解VHDL的世界,這

80、是我這次課程設(shè)計能成功的最主要原因。在設(shè)計的過程中,陳老師還給予了指導,并提供了很多與該設(shè)計相關(guān)的重要信息,培養(yǎng)了我們對課程設(shè)計的興趣,豐富了我們的知識。這都將非常有利于我們今后的學習和工作。在此表示衷心的感謝!</p><p>  在課程設(shè)計的這段時間里,我認為收獲還是很多的,不但進一步掌握了數(shù)字電子技術(shù)的基礎(chǔ)知識及一門專業(yè)仿真軟件的基本操作,還提高了自己的設(shè)計能力及動手能力,同時對于搶答器來了個系統(tǒng)的總結(jié)。更

81、多的是讓我看清了自己,明白了凡事需要耐心,實踐是檢驗學習的唯一標準。本次設(shè)計在程序上花費的時間是最久的,我們上網(wǎng)找資料,上圖書館,盡可能的了解關(guān)于八路搶答器的知識,在設(shè)計的過程中也遇到了很多問題,理論知識的不足在這次課設(shè)中表現(xiàn)的很明顯。但這都將有助于我今后的學習,端正自己的學習態(tài)度,從而更加努力的學習??傊ㄟ^本次課程設(shè)計不但讓我不僅學到了一些知識,而且也提高了我的綜合能力。使我在各方面都得到了鍛煉,非常感謝給予幫助的同學,也非常感謝

82、我們的陳老師和單老師,使我們這次的課程設(shè)計任務(wù)圓滿完成。</p><p><b>  參考文獻</b></p><p>  [1]邢建平,曾繁泰.VHDL程序設(shè)計教程[M].北京:清華大學出版社,2005年,11月.</p><p>  [2]甘登岱,田富鵬,朱利娜. EDA培訓教程[M].北京:機械工業(yè)出版社,2005年,3月.</p&

83、gt;<p>  [3] 楊頌華. 電子線路EDA仿真技術(shù)[M].西安:西安交通大學出版社,2008年,2月.</p><p>  [4] 蔣小燕,俞偉均,張立臣.EDA技術(shù)及VHDL [M].南京:東南大學出版社,2008年,12月.</p><p>  [5] 劉欲曉.EDA技術(shù)與VHDL電路開發(fā)應(yīng)用實踐[M].北京:電子工業(yè)出版社,2009年,4月.</p>

84、<p>  [6] 王冬梅,張建秋.《八路搶答器設(shè)計與實現(xiàn)》[J]. 佳木斯大學學報(自然科學版), 2009,(06).22-26.</p><p>  [7] 丁建偉.《搶答器電路設(shè)計》[J].蘭州工業(yè)高等??茖W校學報,2008,(04).13-17.</p><p><b>  附錄1:程序</b></p><p>

85、;<b>  元器件清單:</b></p><p><b>  編碼模塊程序:</b></p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.ALL;</p><p>  ENTITY change IS // 程序

86、名稱:change</p><p>  PORT(q1,q2,q3,q4,q5,q6,q7,q8: IN STD_LOGIC; // 定義出入端q1~q8</p><p>  clr : IN STD_LOGIC; // 定義輸入端clr</p><p>  m: OUT STD_LOGIC_vector(3 downto 0

87、); // 定義輸出端m</p><p>  en: OUT STD_LOGIC); // 定義輸出端en</p><p>  END change;</p><p>  ARCHITECTURE a OF change IS</p><p><b>  BEGIN</b></p&

88、gt;<p>  process(q1,q2,q3,q4,q5,q6,q7,q8,clr)</p><p>  variable temp:STD_LOGIC_vector(7 downto 0);</p><p><b>  begin</b></p><p>  temp:=q1&q2&q3&q4&am

89、p;q5&q6&q7&q8;</p><p>  case temp is</p><p>  when"01111111"=>m<="0001"; // 當temp=01111111時對應(yīng)的q1搶答,m顯示1</p><p>  when"10111111"=

90、>m<="0010"; // 當temp=10111111時對應(yīng)的q2搶答,m顯示2</p><p>  when"11011111"=>m<="0011"; // 當temp=11011111時對應(yīng)的q3搶答,m顯示3</p><p>  when"11101111"

91、;=>m<="0100"; // 當temp=11101111時對應(yīng)的q4搶答,m顯示4</p><p>  when"11110111"=>m<="0101"; // 當temp=11110111時對應(yīng)的q5搶答,m顯示5</p><p>  when"11111011&qu

92、ot;=>m<="0110"; // 當temp=11111011時對應(yīng)的q6搶答,m顯示6</p><p>  when"11111101"=>m<="0111"; // 當temp=11111101時對應(yīng)的q7搶答,m顯示7</p><p>  when"11111110&

93、quot;=>m<="1000"; // 當temp=11111110時對應(yīng)的q8搶答,m顯示8</p><p>  when others=>m<="1111"; // 當temp為其他情況則m顯示F</p><p><b>  end case;</b></p>

94、<p>  en <= temp(7) AND temp(6) AND temp(5) AND temp(4) AND temp(3) AND temp(2) AND temp(1) AND temp(0) AND clr;</p><p>  end process;</p><p><b>  END a;</b></p><

95、;p><b>  鎖存模塊程序:</b></p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.ALL;</p><p>  USE ieee.std_logic_unsigned.ALL;</p><p>  ENTITY lock IS

96、 // 程序名稱:lock</p><p>  PORT(s1: IN STD_LOGIC; // 定義輸入端s1</p><p>  s2: IN STD_LOGIC; // 定義輸入端s2</p><p>  s3: IN STD_LOGIC; // 定義輸入端s3</p><

97、;p>  s4: IN STD_LOGIC; // 定義輸入端s4</p><p>  s5: IN STD_LOGIC; // 定義輸入端s5</p><p>  s6: IN STD_LOGIC; // 定義輸入端s6</p><p>  s7: IN STD_LOGIC; // 定義輸入端s

98、7</p><p>  s8: IN STD_LOGIC; // 定義輸入端s8</p><p>  clr: INSTD_LOGIC; </p><p>  q1,q2,q3,q4,q5,q6,q7,q8: OUTSTD_LOGIC); // 定義輸出端q1~q8</p><p><b>

99、;  END lock;</b></p><p>  ARCHITECTURE a OF lock IS</p><p><b>  BEGIN</b></p><p>  process(s1,s2,s3,s4,s5,s6,s7,s8,clr)</p><p><b>  begin</b&

100、gt;</p><p>  if(clr ='0') then // 整個if語句實現(xiàn)鎖存功能,當clr=0時,s1~s8鎖??;當clr=1q時,s1~s8解鎖,q1~q8對應(yīng)輸出s1~s8的值</p><p>  q1<='1';q2<='1'; </p><p>  q3<=&#

101、39;1';q4<='1';</p><p>  q5<='1';q6<='1';</p><p>  q7<='1';q8<='1';</p><p><b>  else</b></p><p>  

102、q1<=s1;q2<=s2;</p><p>  q3<=s3;q4<=s4;</p><p>  q5<=s5;q6<=s6;</p><p>  q7<=s7;q8<=s8;</p><p><b>  end if;</b></p><p> 

103、 end process;</p><p><b>  END a;</b></p><p>  搶答成功揚聲器發(fā)聲模塊程序:</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.ALL;</p><p>  USE ieee.std

104、_logic_unsigned.ALL;</p><p>  ENTITY cnt IS // 程序名稱:cut</p><p>  PORT(clk,en: in STD_LOGIC; // 定義輸入:clk,en</p><p>  sound1:out STD_LOGIC); // 定義輸出:sound1

105、</p><p><b>  END cnt;</b></p><p>  ARCHITECTURE a OF cnt IS</p><p><b>  BEGIN</b></p><p>  process(en,clk)</p><p><b>  begin&

106、lt;/b></p><p>  if(clk'event and clk='1') then // 當搶答控制開關(guān)打開即:clk=1時</p><p>  if(en='1') then // 當en=1搶答成功</p><p>  sound1<='1&#

107、39;; // 揚聲器sound1<='1' 發(fā)聲</p><p><b>  else </b></p><p>  sound1<='0'; // 否則不發(fā)聲</p><p>  end if;end if;</p><p

108、>  end process;</p><p><b>  END a;</b></p><p>  數(shù)碼管顯示管對應(yīng)程序:</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.ALL;</p><p>  USE ieee.s

109、td_logic_unsigned.ALL;</p><p>  ENTITY display IS // 程序名稱:display</p><p>  PORT(m: INSTD_LOGIC_VECTOR(3 downto 0); // 定義輸入端m</p><p>  BCD: out ST

110、D_LOGIC_VECTOR(7 downto 0)); // 定義輸出端 BCD</p><p>  END display;</p><p>  ARCHITECTURE a OF display IS</p><p><b>  BEGIN</b></p><p>  PROCESS(m)

111、 </p><p><b>  BEGIN</b></p><p><b>  CASE m IS</b></p><p>  WHEN "0000" => BCD <="00111111"; // 當m=0時,輸出BCD=3F</p><p

112、>  WHEN "0001" => BCD <="00000110"; // 當m=1時,輸出BCD=06</p><p>  WHEN "0010" => BCD <="01011011"; //當m=2時,輸出BCD=5B</p><p>  WHEN "

113、;0011" => BCD <="01001111"; //當m=3時,輸出BCD=4F</p><p>  WHEN "0100" => BCD <="01100110"; //當m=4時,輸出BCD=66</p><p>  WHEN "0101" =>

114、BCD <="01101101"; //當m=5時,輸出BCD=6D</p><p>  WHEN "0110" => BCD <="01111101"; //當m=6時,輸出BCD=7D</p><p>  WHEN "0111" => BCD <="000

115、00111"; //當m=7時,輸出BCD=07</p><p>  WHEN "1000" => BCD <="01111111"; //當m=8時,輸出BCD=7F</p><p>  WHEN "1001" => BCD <="01101111"; //當

116、m=9時,輸出BCD=6F</p><p>  WHEN OTHERS => BCD <="00000000"; //當m為其他數(shù)時,輸出BCD=00</p><p><b>  END CASE;</b></p><p>  END PROCESS; </p><p>&

117、lt;b>  END a;</b></p><p>  頂層文件模塊對應(yīng)程序:</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.all; </p><p>  LIBRARY work;</p><p>  ENTITY qiangd

118、aqi IS // 程序名稱:qiangdaqi</p><p><b>  PORT</b></p><p><b>  (</b></p><p>  clr : IN STD_LOGIC; // 定義輸入端 clr</p><p>  clk :

119、 IN STD_LOGIC; // 定義輸入端時鐘信號 clk</p><p>  s1 : IN STD_LOGIC; // 定義搶答信號輸入端 s1</p><p>  s2 : IN STD_LOGIC; // 定義搶答信號輸入端 s2</p><p>  s3 : IN STD_LOGIC; /

120、/ 定義搶答信號輸入端 s3</p><p>  s4 : IN STD_LOGIC; // 定義搶答信號輸入端 s4</p><p>  s5 : IN STD_LOGIC; // 定義搶答信號輸入端 s5</p><p>  s6 : IN STD_LOGIC; // 定義搶答信號輸入端 s6</p>

121、<p>  s7 : IN STD_LOGIC; // 定義搶答信號輸入端 s7</p><p>  s8 : IN STD_LOGIC; // 定義搶答信號輸入端 s8</p><p>  BCD : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); // 定義輸出端數(shù)碼顯示管BCD</p><p&g

122、t;  SOUND : OUT STD_LOGIC // 定義輸出端揚聲器SOUND</p><p><b>  );</b></p><p>  END qiangdaqi;</p><p>  ARCHITECTURE bdf_type OF qiangdaqi IS </p><p>  

123、COMPONENT change</p><p>  PORT(q1 : IN STD_LOGIC; // 定義輸入端q1 </p><p>  q2 : IN STD_LOGIC; // 定義輸入端q2</p><p>  q3 : IN STD_LOGIC; // 定義輸入端q3</p><p>  q4 :

124、 IN STD_LOGIC; // 定義輸入端q4</p><p>  q5 : IN STD_LOGIC; // 定義輸入端q5</p><p>  q6 : IN STD_LOGIC; // 定義輸入端q6</p><p>  q7 : IN STD_LOGIC; // 定義輸入端q7</p><p>  q

125、8 : IN STD_LOGIC; // 定義輸入端q8</p><p>  clr : IN STD_LOGIC; // 定義輸入端clr</p><p>  en : OUT STD_LOGIC; // 定義輸出端en</p><p>  m : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) //定義輸出端m&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論