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

下載本文檔

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

文檔簡介

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

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

3、鍵恢復,重新開始下一輪搶答。并且依據設計方案和設計平臺完成了程序編寫和程序調試,通過運行程序及時序波形的仿真有效驗證了設計的正確性,初步實現了設計目標。</p><p>  關鍵詞 鎖存、顯示;搶答器;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 課程設計目的1<

7、/p><p>  1.2 課程設計具體要求及功能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 設計方案4</b></p><p&g

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

29、 具體實現</b></p><p>  (1)搶答器的電路設計</p><p>  1、搶答器電路總體結構:如圖3.3所示為總體方框圖。接通電源后,后臺工作人員將檢測開關S置“檢測”狀態(tài),數碼管在正常清除下,顯示“”;當后臺工作人員將檢測開關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,數碼管無顯示。這時搶答器處于準備搶答狀態(tài)。</p><p>  當系統(tǒng)清除按鍵松開時,搶答器處于等待狀態(tài)。當有選手將按鍵開關按下時,搶答器將

32、接受并顯示搶答結果,假設按下的是S4,則74LS148的編碼輸出為011,此代碼送入74LS279鎖存后,使4Q3Q2Q=100,亦即74LS148的輸入為0100;又74LS148的優(yōu)先編碼標志輸出 為0,使1Q=1,即 =1,74LS148處于譯碼狀態(tài),譯碼的結果顯示為“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、答器的單元電路設計</p><p>  簡易邏輯數字搶答器由主體電路與擴展電路組成。優(yōu)先編碼電路、鎖存器、譯碼電路將參賽隊的輸入信號在顯示器上輸出;用控制電路和主持人開關啟動報警電路,以上兩部分組成主體電路。通過定時電路和譯碼電路將秒脈沖產生的信號在顯示器上輸出實現計時功能,構成擴展電路?,F簡單介紹搶答器設計中的搶答電路、定時電路、報警電路、時序控制電路、顯示及譯碼電路。</p><p>

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

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

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

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

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

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

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

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

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

44、碼器與數碼管</p><p>  圖3.11 74LS48邏輯圖</p><p>  (3) 基于VHDL的實體設計:</p><p><b>  1、程序設計</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>  對應的管腳圖和仿真圖如下:</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>  對應的管腳圖和仿真圖如下:</p><p>  圖3.14 鎖存模塊管腳圖</p><p>  圖3.15 鎖存模塊仿真圖</p><p>  搶答成功揚聲器發(fā)聲相關程序:</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>  對應的管腳圖和仿真圖如下:</p><p>  圖3.16 搶答成功揚聲器發(fā)聲模塊管腳圖</p&g

65、t;<p>  圖3.17 搶答成功揚聲器發(fā)聲模塊仿真圖</p><p>  數碼管顯示管相關程序:</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>  對應的管腳圖和仿真圖如下:</p><p>  圖3.18 數碼管顯示管模塊管腳圖</p&

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

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

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

76、.2所示。從仿真波形看, 符合設計要求(對應的管腳圖和仿真圖如下)。</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數碼管顯示輸出</p><p>  4.2 仿真結果分

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

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

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

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

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

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

84、<p>  [6] 王冬梅,張建秋.《八路搶答器設計與實現》[J]. 佳木斯大學學報(自然科學版), 2009,(06).22-26.</p><p>  [7] 丁建偉.《搶答器電路設計》[J].蘭州工業(yè)高等專科學校學報,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時對應的q1搶答,m顯示1</p><p>  when"10111111"=

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

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

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

93、quot;=>m<="1000"; // 當temp=11111110時對應的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語句實現鎖存功能,當clr=0時,s1~s8鎖住;當clr=1q時,s1~s8解鎖,q1~q8對應輸出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 // 當搶答控制開關打開即: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>  數碼管顯示管對應程序:</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為其他數時,輸出BCD=00</p><p><b>  END CASE;</b></p><p>  END PROCESS; </p><p>&

117、lt;b>  END a;</b></p><p>  頂層文件模塊對應程序:</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); // 定義輸出端數碼顯示管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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論