![EDA實驗講義(2010版)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/152f4ecf-0dc3-4ac5-a719-617f537248ab/152f4ecf-0dc3-4ac5-a719-617f537248ab1.gif)
![EDA實驗講義(2010版)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/152f4ecf-0dc3-4ac5-a719-617f537248ab/152f4ecf-0dc3-4ac5-a719-617f537248ab2.gif)
![EDA實驗講義(2010版)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/152f4ecf-0dc3-4ac5-a719-617f537248ab/152f4ecf-0dc3-4ac5-a719-617f537248ab3.gif)
![EDA實驗講義(2010版)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/152f4ecf-0dc3-4ac5-a719-617f537248ab/152f4ecf-0dc3-4ac5-a719-617f537248ab4.gif)
![EDA實驗講義(2010版)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/152f4ecf-0dc3-4ac5-a719-617f537248ab/152f4ecf-0dc3-4ac5-a719-617f537248ab5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、EDA實驗講義林連冬 編著電子工程學院2010丁開慧S-213EDA實驗講義目錄一、EDA實驗系統(tǒng)概述二、實驗內容實驗一、基本邏輯電路的設計實驗二、組合邏輯電路 實驗三、VHDL與原理圖混合方式設計電路(樂曲演奏電路)實驗四、數(shù)字電子表實驗五、有限狀態(tài)機的VHDL語言設計方法(交通燈控制器)實驗六、序列檢測器一、EDA實驗講義概述EDA技術概述 :現(xiàn)代電子設計技術的核心是EDA(Electronic Design Automation)技術。EDA技術就是依賴功能強大的計算機,在EDA工具軟件上,對以硬件描述語言HDL(Hardware Description Language)為系統(tǒng)邏輯描述
2、手段完成的設計文件,自動地完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合、結構綜合(布局布線),以及邏輯優(yōu)化和仿真測試,直至實現(xiàn)既定的電子線路系統(tǒng)功能。EDA 技術使得設計者的工作僅限于利用軟件的方式,即利用硬件描述語言和EDA軟件來完成對系統(tǒng)硬件功能的實現(xiàn)。 一個完整的、典型的EDA設計流程既是自頂向下設計方法的具體實施途徑,也是EDA工具軟件本身的組成結構。本實驗以MAXPLUSII做為主要設計工具,并結合實驗箱上的硬件電路設計實驗課程,講解如何用EDA技術進行數(shù)字電路的設計。一、CPLD/FPGA可編程器件的設計過程框圖 可編程器件的設計過程與單片機的開發(fā)過程類似,同樣包括程序的編輯、編譯適
3、配、仿真調試及下載實現(xiàn)的幾個部分,具體流程如下圖所示。 CPLD/FPGA設計過程圖NONOyes層次化設計圖形輸入文本輸入C盤建目錄建立項目文件選擇器編譯仿真分析管腳分配重新編譯下載或編譯驗證邏輯正確yes設計正確形成下載文件設計輸入設計實現(xiàn) 設計生成 硬件下載 二、硬件安裝及使用說明 本實驗開發(fā)系統(tǒng)在出廠時以按用戶要求配備好了相關的主芯片適配器、編程電纜、實驗指導書、連接導線及相關軟件。II、III、IV型實驗箱均自帶開關電源,用戶只需接入220V電源即可。本實驗裝置無須添加其它設備,僅須與計算機連接便可進行所有實驗。硬件安裝及使用中需要注意的幾個實驗步驟如下:1、 打開實驗箱,檢查并核實
4、設備完好及附件齊全;2、 檢查下載編程電纜標識:不同公司的編程電纜是不同的,如Altera公司的編程電纜出廠時標有Altera字Lattice公司的電纜有兩種:一種是數(shù)字器件編程電纜,標有Lattice字樣;另一種是模擬芯片編程電纜,其上標有PAC字樣,其它廠家類似。使用時一定要注意編程電纜不能混用,否則程序不能正確下載。同一廠家的CPLD/FPGA芯片的下載電纜是一樣的。3、 安裝下載編程電纜:確保安裝的下載編程電纜與當前實驗箱上適配器芯片相一致,然后將其25針的接插頭連接到計算機的并行口上,另一端連接到實驗箱的JTAG編程座上,并確保電纜兩端接觸良好。注意,IV型實驗箱上有兩個編程接口,標
5、有DIGATAL字樣、一個是模擬芯片接口,標有ANALOG字樣,注意不要接錯。I、II、III型實驗箱均只有一個數(shù)字芯片編程接口,位于實驗箱的左上角。4、 開啟實驗箱電源,電源指示燈亮。本電源為五伏開關電源,有短路和自恢復等功能。如電源指示燈不亮,請檢查是否已接入220V電源或其它原因所致。5、 硬件安裝結束,打開實驗箱電源,此時便可進行軟件編程下載。程序正常下載時,其編程接口下邊的狀態(tài)指示燈處于閃爍狀態(tài),如不能正確下載,請檢查是硬件問題還是軟件設置問題?6、 實驗時嚴禁帶電接插,以防損壞電路芯片。如有異常請及時切斷電源并排除故障。三、軟件簡介及安裝(一) Max+plus 教學軟件是免費的,
6、軟件支持VHDL語言的所有功能,安裝時你需要到Altera公司的網頁去申請一個授權軟件(軟件安裝部分有詳細說明),本授權文件或來自于代理商(即License.dat文件)只有在你的軟件中安裝了License.dat文件以后方可啟動使用此Maxplus 軟件。教學軟件支持多種設計輸入(原理圖編輯、符號法編輯、VHDL語言編輯、波形編輯)、功能仿真和時序分析。(二) 軟件安裝 該設計軟件運行在Windows95/98操作系統(tǒng)下,計算機配置最好不低586(CPU/200M、內存/32M、硬盤/2G)的機器。軟件的安裝步驟如下;(1) 將光盤插入計算機光驅,假定您光驅號為E;(2) 打開光驅E: Ma
7、x+plus 9.5fullsetup.exe文件; (3) 點擊運行setup.exe文件;(4) 按Next,并選擇yes 接受協(xié)議;(5) 選擇適當?shù)陌惭b方式(一般選擇默認安裝即可),并按下Next。(6) 單擊Browse按鈕,選擇安裝路徑(假設為d:),按下Next,直到安裝完成。這時該軟件自動在d:生成Max+plus 等文件。(7) 將光盤隨即附送的LICENSE.DAT 文件拷貝至安裝后的D Max+plus 軟件包根目錄下即可。注意:LICENSE.DAT文件來自于Altera網站授權或代理商授權。(8) 點擊Windows程序組下的altera Max+plus 9.5圖標
8、,啟動本軟件,注意:第一次啟動軟件會有幾個對話框口,提示沒有安裝License文件或軟件狗,并附有其公司網址及如何申請License授權文件等說明。(9) 選擇并點擊OptionsLicense setup 菜單,單擊License setup,使用Browse瀏覽器指出License.dat文件所在路徑。即拷貝License.dat文件后的路徑d: Max+plus License.dat。(10) 單擊ok 按鈕確認即可,至此你已經成功的完成了整個軟件的安裝。注意:本安裝過程以其9.5版本為例介紹的,其它如10.0等版本安裝過程類似.實驗一、基本邏輯電路的設計 (1)實驗目的 :熟悉利用M
9、AXPLUSII的原理圖輸入方法設計簡單組合電路的思想,掌握層次化設計的方法,并通過一個1位全加器的設計把握利用EDA軟件進行電子線路設計的詳細流程。學會對實驗箱上的FPGA/CPLD進行編程下載,硬件仿真驗證自己的設計項目。(2)實驗原理:一個一位全加器可以由兩個一位的半加器組成。在實際的設計中我們可以先設計兩個半加器作為元件然后再在一個更高的原理圖設計層次里調用之。(3)實驗設備:EDA IV型實驗箱。(4)實驗步驟 : 步驟1 :為本項工程設計建立文件夾。 任何一項設計都是一項工程(Project),都必須首先為此工程建立一個放置此工程相關的文件的文件夾,此文件夾將被EDA軟件默認為工作
10、庫。一般不同的設計項目最好放在相應的文件夾中,一個設計項目可以包含多個設計文件。 假設本設計的文件夾名為MY_PRJCT,路徑為D:MY_PRJCT(注意:MAXPLUSII不支持中文,所以項目名稱和路徑都應以英文命名) 。 步驟2 :輸入設計項目和存盤a) 打開MAXPLUSII,選擇菜單“File” “New”在彈出的對話框中選擇“Graphic Editor file”,按“OK”后打開原理圖編輯器。b) 在新打開的窗口出雙擊鼠標左鍵,打開元件庫,添加元件。c) 選擇菜單“File” “Save As” ,將文件取名為:h_adder.gdf(文件名不能以數(shù)字和中文開頭),并存到D:MY
11、_PRJCT 下。并完成原理圖設計(原理圖如下圖)。AND2 NOT XNOR INPUT OUTPUTd) 將設計項目設置成當前工程文件(Project) 編譯、仿真和測試只針對當前工程文件,所以想要編譯某一項目前應先將其設為當前工程文件。方法見下圖。e) 選擇目標器件并編譯 。 為了獲得與目標器件對應的、精確的時序仿真文件,在對文件編譯前必須選定最后實現(xiàn)本項目的目標器件,菜單命令如下“Assign” “Device”。在彈出的對話框中做如下設定。(Device Family:ACEX1k Device: EP1K100QC208-3)開始編譯:選擇菜單“MAX+plusII” “Compi
12、ler” “Start”,編譯結果如下。 f) 時序仿真 接下來應該測試設計項目的正確性,即進行仿真,具體步驟如下:(1)建立波形文件。選擇菜單“File” “New ” “Waveform Editer file” ,打開波形編輯器。(2)輸入信號節(jié)點。在上圖所示的波形編輯窗的上方選擇菜單“Node” “Enter Node from SNF” “List”這時在左列表框將列出該設計的所有信號節(jié)點。利用“=”按鈕選中需要觀察的信號節(jié)點,然后單擊“OK”。(3)設置波形參量。 參量1 :“Option” “Snap to Grid” 參量2 :“File” “End Time” ,如可選34u
13、s(34微秒)以便有足夠長的觀察時間 (4)加上輸入信號。(如下圖) (5)波形文件存盤。以默認名字存盤即可,執(zhí)行仿真命令前必須先執(zhí)行保存操作。 (6)運行仿真器。選擇主菜單“MAX+plusII” “Simulator ” “Start” (7)觀察仿真結果。如果不符合設計預案則更改設計,再重新仿真,直至達到設計要求。 (8)包裝元件入庫。 重新打開半加器設計文件h_adder.gdf ,選擇菜單“File” “Create Default Symbol”選項將當前文件變成一個包裝好的單一元件(Symbol),并被放置在工程指定的目錄中以備后用。g) 引腳鎖定。 如果以上的仿真測試正確無誤,
14、就應該將設計編程下載到選定的目標器件中去作硬件測試,以便了解設計項目的正確性。這就需要進行引腳鎖定和編程下載兩個步驟。選定菜單“Max+plusII” “Floorplan Editor”鎖定引腳。如下圖(注意鎖定引腳后一定要重新編譯一次,并且引腳最好分配到標有I/O的端口,引腳的分布情況和實驗箱上芯片周圍的引腳分布一樣)h) 編程下載。(1)下載方式設定?!癕ax+plusII” “Programmer” “Options” “Hardware Setup” “ByteBlaster(MV)”。 此編程方式對應計算機的并口下載通道。 (2)添加下載文件?!癑TAG”->“multi-D
15、evice JTAG Chain Setup.” “Select Programming File”->選擇擴展名為“*.sof”的文件,單擊確定-“add”-“ok”。 (3)下載。如下圖所示單擊“Configure”按鈕,到此為止,完整的設計流程已經結束。VHDL文本輸入的設計可參考這一流程。 i) 設計頂層文件 可以將前面的工作看成是完成了一個底層元件的設計,并被包裝入庫?,F(xiàn)在利用已經設計好的半加器,完成頂層項目全加器的設計,步驟可參考以上設計流程:(原理圖如下)(j)設計流程歸納。步驟1:建立工作庫文件夾步驟6:啟動編譯步驟7:建立仿真波形文件步驟5:選擇目標器件步驟4:將設計項
16、目設置成Project步驟3:存盤,注意原理圖/文本取名步驟2:輸入設計項目原理圖/VHDL代碼步驟8:仿真測試和波形分析步驟11:硬件測試步驟9:引腳鎖定并編譯步驟10:編程下載/配置五、實驗過程與分析1、分別畫出半加器和全加器的原理圖2、寫出加法器的各個端口延遲數(shù)據(jù)表;3、寫出全加器硬件測試結果(用真值表的形式給出答案)。六、實驗結果總結:1、思考題目:設計一個四位的全加器,并實驗驗證。在實驗報告中給出此設計的原理圖及適當?shù)恼f明;實驗二、組合邏輯電路一、實驗目的:1.掌握組合邏輯電路的設計方法.2.掌握組合邏輯的靜態(tài)測試方法.3.加深理解FPGA設計的過程,掌握用VHDL語言設計數(shù)字電路的
17、方法。二、實驗原理:1. 將與4位二進制數(shù)相對應的BCD編碼的內容顯示在一位七段數(shù)碼管上。2采用掃描顯示的原理, 在8個數(shù)碼管上同時顯示BCD譯碼器的輸出結果。點亮一個七段數(shù)碼管,用譯碼器就可以了。但是當需要點亮多個七段數(shù)碼管的時候,由于FPGA的I/O口不能夠提供足夠大的驅動電流去點亮多個七段數(shù)碼管,因此只能利用掃描顯示電路來實現(xiàn)掃描顯示。三、實驗設備:1.輸入信號接撥碼開關.2.輸出信號接七段數(shù)碼管顯示電路。3.主芯片: EP1K100QC208-3。四、實驗步驟:1.七段數(shù)碼管顯示器:(1).原理及原理圖: 為了能以十進制數(shù)碼直觀地顯示數(shù)字系統(tǒng)的運行數(shù)據(jù),目前廣泛地使用了七段字符顯示器或
18、稱做七段數(shù)碼管。這種字符顯示器由七段可發(fā)光的線段拼合而成。常見的七段字符顯示器有半導體數(shù)碼管和液晶顯示器兩種。本實驗中用到的是半導體數(shù)碼管。這種數(shù)碼管的每個線段都是一個發(fā)光二極管(Light Emitting Diode,簡稱LED),因而也把它叫做LED數(shù)碼管或LED七段顯示器。(2).管腳圖:程序一:數(shù)碼管的靜態(tài)顯示電路(完成BCD譯碼器功能)- *LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-*ENTITY Seg7 isPORT
19、(NUMIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);SELOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);SEGOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END Seg7;-*ARCHITECTURE a OF Seg7 ISSIGNAL NUM : STD_LOGIC_VECTOR( 3 DOWNTO 0);SIGNAL SEG: STD_LOGIC_VECTOR( 6 DOWNTO 0);BEGIN Connection : BlockBeginSELOUT <= "000&qu
20、ot;SEGOUT(6 DOWNTO 0) <= SEG;SEGOUT(7) <= '1'NUM<=NUMIN;End Block Connection;SEVEN_SEGMENT : BlockBegin-gfedcbaSEG <= "0111111" WHEN NUM = 0 ELSE"0000110" WHEN NUM = 1 ELSE"1011011" WHEN NUM = 2 ELSE"1001111" WHEN NUM = 3 ELSE"1100110&
21、quot; WHEN NUM = 4 ELSE"1101101" WHEN NUM = 5 ELSE"1111101" WHEN NUM = 6 ELSE"0000111" WHEN NUM = 7 ELSE"1111111" WHEN NUM = 8 ELSE"1101111" WHEN NUM = 9 ELSE"1110111" WHEN NUM = 10 ELSE"1111100" WHEN NUM = 11 ELSE"0111001&qu
22、ot; WHEN NUM = 12 ELSE"1011110" WHEN NUM = 13 ELSE"1111001" WHEN NUM = 14 ELSE"1110001" WHEN NUM = 15 ELSE"0000000"End Block SEVEN_SEGMENT;END a; 2、利用掃描顯示的原理設計多位數(shù)碼管的顯示驅動電路,要求將開關輸入的二進制數(shù)字信號譯成BCD編碼后在八個數(shù)碼管上同時顯示出來,例程參考程序2,注意理解如何使用計數(shù)器進行分頻電路的設計。例程2:LIBRARY IEEE;USE I
23、EEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Seg7_Dsp isPORT( CP: IN STD_LOGIC; SEGOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); SELOUT: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);NUMIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);END Seg7_Dsp;ARCHITECTURE a OF Seg7_Dsp ISSIGNAL NUM
24、 : STD_LOGIC_VECTOR( 3 DOWNTO 0);SIGNAL SEG: STD_LOGIC_VECTOR( 6 DOWNTO 0);SIGNAL SEL: STD_LOGIC_VECTOR( 5 DOWNTO 0);BEGINConnection : BlockBeginSELOUT <= SEL; SEGOUT(6 DOWNTO 0) <= SEG;SEGOUT(7) <= '1'NUM <= NUMIN;End Block Connection;Free_Counter : Block- 計數(shù)器 - 產生掃描信號 Signal Q:
25、 STD_LOGIC_VECTOR(24 DOWNTO 0);SignalS : STD_LOGIC_VECTOR(2 DOWNTO 0);BeginPROCESS (CP)- 計數(shù)器計數(shù) BeginIF CP'Event AND CP='1' thenQ <= Q+1;END IF;END PROCESS;S <= Q(15 DOWNTO 13);SEL <= "000" WHEN S=0 ELSE"001" WHEN S=1 ELSE"010" WHEN S=2 ELSE"011
26、" WHEN S=3 ELSE"100" WHEN S=4 ELSE"101";End Block Free_Counter;SEVEN_SEGMENT : Block- Binary Code -> Segment 7 CodeBegin -gfedcbaSEG <= "0111111" WHEN NUM = 0 ELSE "0000110" WHEN NUM = 1 ELSE "1011011" WHEN NUM = 2 ELSE"1001111"
27、WHEN NUM = 3 ELSE"1100110" WHEN NUM = 4 ELSE"1101101" WHEN NUM = 5 ELSE"1111101" WHEN NUM = 6 ELSE "0000111" WHEN NUM = 7 ELSE "1111111" WHEN NUM = 8 ELSE"1101111" WHEN NUM = 9 ELSE"1110111" WHEN NUM = 10 ELSE"1111100" W
28、HEN NUM = 11 ELSE"0111001" WHEN NUM = 12 ELSE"1011110" WHEN NUM = 13 ELSE"1111001" WHEN NUM = 14 ELSE"1110001" WHEN NUM = 15 ELSE"0000000"End Block SEVEN_SEGMENT;END a;四、 實驗結果總結:1、計算例程2掃描信號的頻率大小并說明選擇該頻率作掃描信號的原因(設基頻為5MHZ)。2、寫出計算掃描頻率的公式。3、參考例程3-2改寫程序,用
29、8個數(shù)碼管做顯示輸出。并在報告中給出修改后的代碼(需標注清楚修改例程代碼的地方)。實驗三 VHDL與原理圖混合方式設計電路(樂曲演奏電路)一、實驗原理樂曲演奏廣泛用于自動答錄裝置、手機鈴聲、集團電話、及智能儀器儀表設備。在EDA開發(fā)平臺上利用VHDL語言設計數(shù)控分頻器電路,利用數(shù)控分頻的原理設計樂曲硬件演奏電路,并定制LPM-ROM存儲音樂數(shù)據(jù),以“梁祝”樂曲為例,將音樂數(shù)據(jù)存儲到LPM-ROM,就達到了以純硬件的手段來實現(xiàn)樂曲的演奏效果。只要修改LPM-ROM所存儲的音樂數(shù)據(jù),將其換成其他樂曲的音樂數(shù)據(jù),再重新定制LPM-ROM,連接到程序中就可以實現(xiàn)其它樂曲的演奏。3.1 音樂演奏電路原理
30、先介紹一下硬件電路的發(fā)聲原理。聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制FPGA某個引腳輸出一定頻率的矩形波,接上揚聲器就能發(fā)出相應頻率的聲音。樂曲中的每一音符對應著一個確定的頻率,要想FPGA發(fā)出不同音符的音調,實際上只要控制它輸出相應音符的頻率即可。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應的頻,就可以在揚聲器上連續(xù)地發(fā)出各個音符的音調。而要準確地演奏出一首樂曲,僅僅讓揚聲器能夠發(fā)生是不夠的,還必須準確地控制樂曲的節(jié)奏,即樂曲中每個音符的發(fā)生頻率及其持續(xù)時間是樂曲能夠連續(xù)演奏的兩個關鍵因素。3.2 音符頻率的獲得 多個不同頻率的信號可通過對某個基準頻率進
31、行分頻器獲得。由于各個音符的頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將計算機得到的分頻系數(shù)四舍五入取整。若基準頻率過低,則分頻系數(shù)過小,四舍五入取整后的誤差較大。若基準頻率過高,雖然可以減少頻率的相對誤差,但分頻結構將變大。實際上應該綜合考慮這兩個方面的因素,在盡量減少誤差的前提下,選取合適的基準頻率。本文中選取750KHz的基準頻率。由于現(xiàn)有的高頻時鐘脈沖信號的頻率為12MHz,故需先對其進行16分頻,才能獲得750KHz的基準頻率。對基準頻率分頻后的輸出信號是一些脈寬極窄的尖脈沖信號(占空比=1/分頻系數(shù))。為提高輸出信號的驅動能力,以使揚聲器有足夠的功率發(fā)音,需要再通過一個分頻器將
32、原來的分頻器的輸出脈沖均衡為對稱方波(占空比=1/2),但這時的頻率將是原來的1/2。由于最大分頻系數(shù)是1274,故分頻器采用11位二進制計數(shù)器能滿足要求,樂曲中的休止符,只要將分頻系數(shù)設為0,即初始值=211-1=2047,此時揚聲器不會發(fā)聲。3.3 樂曲節(jié)奏的控制 梁祝樂曲,最小的節(jié)拍為1/4拍,若將1拍的時間定為1秒,則只需要提供一個4Hz的時鐘頻率即可產生1/4拍的時長(0.25秒),對于其它占用時間較長的節(jié)拍(必為1/4拍的整數(shù)倍)則只需要將該音符連續(xù)輸出相應的次數(shù)即可。 計數(shù)時鐘信號作為輸出音符快慢的控制信號,時鐘快時輸出節(jié)拍速度就快,演奏的速度也就快,時鐘慢時輸出節(jié)拍的速度就慢,
33、演奏的速度自然降低。3.4 樂譜發(fā)生器本實驗將樂譜中的音符數(shù)據(jù)存儲在LPM-ROM中,如“梁?!睒非械牡谝粋€音符為“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒的時間,相應地,音符“3”就要在LPM-ROM中連續(xù)的四個地址上都存儲。當一個4Hz的時鐘來時,相應地就從LPM-ROM中輸出一個音符數(shù)據(jù)。3.5 樂曲演奏電路原理框圖 當一個4Hz的時鐘脈沖來到時,樂譜發(fā)生器模塊輸出一個音符數(shù)據(jù)給分頻系數(shù)模塊,分頻系數(shù)模塊輸出此音符相應的分頻系數(shù),將分頻系數(shù)送給數(shù)控分頻器模塊,當12MHz的時鐘脈沖來到時,數(shù)控分頻器就根據(jù)分頻系數(shù)輸出相應的頻率(即此音符所對應的發(fā)生頻率)給揚聲器,揚聲器就可發(fā)出對應
34、音符的聲音來.連續(xù)的4Hz的時鐘脈沖就將樂譜發(fā)生器里所存儲的音符數(shù)據(jù)一個接一個的送給了分頻系數(shù)模塊,再經過數(shù)控分頻模塊,最后揚聲器一個接一個的發(fā)出音符數(shù)據(jù)所對應的聲音來。曲子也就流暢的播放出來了.綜上所述,得到樂曲演奏電路的原理框圖如圖3-1所示圖3-1二、實驗內容:根據(jù)頂層原理圖,共分為地址發(fā)生器模塊、分頻預置數(shù)模塊、數(shù)控分頻模塊這三個模塊。而music模塊是存放樂曲中的音符數(shù)據(jù),在我們的頂層原理圖中并沒有顯示出來,地址發(fā)生器模塊作為music模塊中所定制的音符數(shù)據(jù)ROM的地址發(fā)生器,分頻預置數(shù)模塊提供分頻預置數(shù)即給數(shù)控分頻模塊提供計數(shù)初值。數(shù)控分頻模塊根據(jù)分頻預置數(shù)輸出各個音符所對應的頻率
35、。3.2.1 地址發(fā)生器的VHDL設計地址發(fā)生器模塊設置了一個8位二進制計數(shù)器(計數(shù)最大值為138),作為音符數(shù)據(jù)ROM的地址發(fā)生器。每來一個時鐘脈沖信號(Clk),8位二進制計數(shù)器就計數(shù)一次,ROM文件中的地址也就隨著遞增,音符數(shù)據(jù)ROM中的音符也就一個接一個連續(xù)的取出來了。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs ISPORT (clk: IN STD_LOGIC; ToneIndex:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);E
36、ND;ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC_ROMPORT (address: IN STD_LOGIC_VECTOR(7 DOWNTO 0); inclock: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT;SIGNAL Counter: STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINCNT8: PROCESS(clk,Counter)BEGINIF Counter=138 THEN Counter<="00000
37、000"ELSIF (clk'EVENT AND clk='1') THEN Counter<=Counter+1;END IF;END PROCESS; u1:MUSIC_ROM PORT MAP(address=>Counter,q=>ToneIndex,inclock=>clk);END one;程序的功能是每來一個時鐘,地址值遞增1,并將這個地址上所存儲的音符數(shù)據(jù)輸出。當Clk來了一個時鐘脈沖,輸出相應地址上的音符3,地址值遞增1;接下來的三個時鐘脈沖來時,輸出也是音符3,地址連續(xù)遞增3次;再下一個脈沖來時,輸出為音符5等等都符
38、合模塊中的音符數(shù)據(jù)文件中的地址/數(shù)據(jù)表。3.2.2 分頻預置數(shù)模塊的VHDL設計模塊的功能是輸出各個音符所對應的分頻預置數(shù),當index是“0000”,tone輸出為2047,即休止符的分頻預置數(shù);當index是“0101”時, tone輸出為1197即低音5的分頻預置數(shù);當index是“1111”時, tone輸出為1728即高音1的分頻預置數(shù)等等其它狀態(tài)時,tone分別輸出相應音符的分頻預置數(shù)。library ieee;use ieee.std_logic_1164.all;entity tonetaba isport(index: in std_logic_vector(3 downto
39、 0); code: out std_logic_vector(3 downto 0); high: out std_logic; tone: out std_logic_vector(10 downto 0);end entity tonetaba;architecture one of tonetaba isbeginsearch:process(index)begincase index iswhen"0000"=>tone<="11111111111"code<="0000"high<='0
40、39;-2047;when"0001"=>tone<="01100000101"code<="0001"high<='0'- 773;when"0010"=>tone<="01110010000"code<="0010"high<='0'- 912;when"0011"=>tone<="10000001100"code<="001
41、1"high<='0'-1036;when"0101"=>tone<="10010101101"code<="0101"high<='0'-1197;when"0110"=>tone<="10100001010"code<="0110"high<='1'-1290;when"0111"=>tone<="10101011100
42、"code<="0111"high<='1'-1372;when"1000"=>tone<="10110000010"code<="0001"high<='1'-1410;when"1001"=>tone<="10111001000"code<="0010"high<='1'-1480;when"1010"=>to
43、ne<="11000000110"code<="0011"high<='1'-1542;when"1100"=>tone<="11001010110"code<="0101"high<='1'-1622;when"1101"=>tone<="11010000100"code<="0110"high<='1'-1668;whe
44、n"1111"=>tone<="11011000000"code<="0001"high<='1'-1728;when others=>null;end case;end process;end one;3.2.3數(shù)控分頻模塊的VHDL設計其時鐘(Clk)端輸入的是12MHz的信號,從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于驅動揚聲器,需另加一個D觸發(fā)器以均衡其占空比,這時的頻率就變?yōu)樵瓉淼?/2,剛好就是相應音符的頻率。數(shù)控分頻模塊中對Clk輸入信號的分頻比由11位預
45、置數(shù)tone10.0決定。Fout的輸出頻率將決定每一個音符的音調,這樣,分頻計數(shù)器的預置值tone10.0與Fout的輸出頻率就有了對應關系。例如在分頻預置數(shù)模塊中若取tone10.0=1036,將發(fā)出音符為“3”音的信號頻率。程序如下:use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speakera isport(clk: in std_logic; tone: in std_logic_vector(10 downto 0); spks: out std_logic);end entity speake
46、ra;architecture one of speakera issignal preclk,fullspks: std_logic;begindivideclk: process(clk)variable count4: std_logic_vector(3 downto 0);beginpreclk<='0'if count4>11 then preclk<='1'count4:="0000"elsif clk'event and clk='1' then count4:=count4+1;en
47、d if;end process;genspks: process(preclk,tone)-11variable count11: std_logic_vector(10 downto 0);beginif preclk'event and preclk='1'thenif count11=16#7ff#then count11:=tone;fullspks<='1'else count11:=count11+1;fullspks<='0'end if;end if;end process;delayspks: proces
48、s(fullspks)variable count2: std_logic;beginif fullspks'event and fullspks='1' then count2:=not count2;if count2='1' then spks<='1'else spks<='0'end if;end if;end process;end one;3.2.4 music_rom模塊Music_rom模塊存放樂曲中的音符數(shù)據(jù),它是利用LPM-ROM來實現(xiàn)的,將樂譜中相應的音符放在一個連續(xù)的地址上。它首先是編
49、寫音符數(shù)據(jù)文件,將樂譜中相應的音符存放在一個連續(xù)的地址上。因為1拍的時間定為1秒,提供的是4Hz的時鐘頻率(即1/4拍的整數(shù)倍),則需將這個音符存儲在相應次數(shù)的連續(xù)幾個地址上。然后對音符數(shù)據(jù)進行ROM定制,最后對定制好的ROM文件進行測試和仿真。width=4;depth=256;address_radix=dec;data_radix=dec;content begin00:3;01:3;02:3;03:3;04:5;05:5;06:5;130:5;131:5;132:5;133:5;134:5;135:5;136:0;137:0;138:0;end;其中WIDTH=4,表示數(shù)據(jù)輸出為寬為4
50、;DEPTH=256,表示共有256個4位數(shù)據(jù)點;ADDRESS-RADIX=DEC,表示地址信號用十進制;DATA-RADIX=DEC,表示輸出數(shù)據(jù)是十進制數(shù)。文件編輯好后,保存時取文件名為“mucic_rom.mif”,存盤的路徑為“D:testmucic”。3.2.5 LPM-ROM定制(1)進入MAXPLUSII,選菜單 file->megawizard plug-in manager,選擇“creat a new”,然后按“next”鍵,進入圖2所示界面。選擇LPM-ROM;最后在browse下的欄中鍵入路徑與輸出文件名:“D:test music music_rom.vhd”
51、,注意后綴vhd小寫。(2)單擊“next”鍵,將出現(xiàn)圖3所示的界面,選擇ROM數(shù)據(jù)位寬度為4,地址線寬為8,即設置此ROM能存儲8位二進制數(shù)據(jù)共64個,然后進入圖4所示的窗口(3)通過在圖4所示窗口的“browse”鈕,找到ROM中的加載文件路徑和文件名:“D:testmucic music.mif”,注意ROM元件的inclock是地址鎖存時鐘。3.2.6 頂層文件見圖1將所編寫的頂層文件程序設為當前工程,通過對程序進行編譯,仿真,確定工程沒有錯誤后經過引腳鎖定就可以下載到EDA試驗箱中了。通過試驗箱上的蜂鳴器我們可以聽到“梁?!钡臉非?。三、實驗結果總結:1、畫出系統(tǒng)的框圖,說明各個模塊的
52、作用。實驗四 電子表一、 實驗目的: 通過對電子表例程的分析、改進,掌握復雜電路的調試方法,元件例化語句的使用方法,熟悉大規(guī)模復雜時序電路的設計方法,掌握層次化的設計思路,通過此實驗能夠熟練的應用VHDL語言和EDA設計工具獨立的完成復雜設計。二、 實驗原理:下圖為數(shù)字電子表的原理圖。BCD (7-4) DBSCLR 時鐘顯示電路方框圖SEC 24進制計數(shù)器60進制計數(shù)器60進制計數(shù)器BCD à 七段譯碼電路BCD 選擇BCD(8)ßBIN(6)6 個七段數(shù)碼管掃描電路 S(3) SEG (8) NUM(4) BCD (3-0) ENB (0) ENB (1) ENB (2
53、) DBHDBMBIN ( 6 ) CYH CYS CYM 分頻器QCP 38譯碼三、 實驗設備:1、用實驗箱上的八個七段數(shù)碼管做電子表的顯示器,用撥碼開關做為輸入。(注意:要把20進制和60進制計數(shù)器的元件例化程序與電子表工程文件放在同一工程文件夾下),取實驗箱上晶振的5M頻率做為基頻。四、 實驗步驟:例1:24進制計數(shù)器的VHDL語言源代碼如下:(做完后,修改此代碼實現(xiàn)60進制計數(shù)器功能,然后將兩個計數(shù)器(60進制與24進制)程序文件與電子表的設計程序文件(即例2)保存在同一個文件夾下)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.ST
54、D_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER24 ISPORT(CP : IN STD_LOGIC;-時鐘脈沖 BIN : OUT STD_LOGIC_VECTOR (5 DOWNTO 0);-二進制 S : IN STD_LOGIC;-輸出啟動信號 CLR : IN STD_LOGIC;-清除信號 EC : IN STD_LOGIC;-使能計數(shù)信號 CY24 : OUT STD_LOGIC-計數(shù)24進位信號 );END COUNTER24;-*ARCHITECTURE a OF COUNTER24 ISSIGNAL Q : STD_LOGIC_VECTOR (4 DOWNTO 0) ;SIGNAL RST, DLY : STD_LOGIC;BEGINPROCESS (CP,RST)- 計數(shù)24 BEGINIF RST = '1' THENQ <= "00000"- 復位計數(shù)器 ELSIF CP'event AND CP = '1' THENDLY <= Q(4);IF EC = '1' THENQ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級上冊口算乘法導學案
- 小學五年級體育工作要點計劃月歷表范文(6篇)
- 三年級數(shù)學下冊第二單元口算除法
- 2024年秋七年級英語上冊Unit8FashionTask作業(yè)設計新版牛津版
- 2024-2025學年八年級科學上冊第3章生命活動的調節(jié)第3節(jié)神經調節(jié)教案新版浙教版
- 2024-2025學年四年級語文上冊第三單元民族之花6愛我中華備課教案北師大版
- 溫州醫(yī)科大學仁濟學院《局部解剖學A》2023-2024學年第二學期期末試卷
- 山東中醫(yī)藥大學《數(shù)字媒體與制作》2023-2024學年第二學期期末試卷
- 海南職業(yè)技術學院《生物工藝學實驗》2023-2024學年第二學期期末試卷
- 2024年02月廣東2024年江蘇銀行深圳分行社會招考筆試歷年參考題庫附帶答案詳解
- 運動技能學習與控制課件第一章運動技能學習與控制概述
- 固體廢棄物檢查記錄
- 工程設計費取費標準
- GB/T 5465.1-2009電氣設備用圖形符號第1部分:概述與分類
- 2023年遼寧鐵道職業(yè)技術學院高職單招(數(shù)學)試題庫含答案解析
- CAPP教學講解課件
- 自然環(huán)境的服務功能課件 高中地理人教版(2019)選擇性必修3
- 小耳畸形課件
- 新人教版初中初三中考數(shù)學總復習課件
- 機械制造有限公司組織架構圖模板
- 8.3 摩擦力 同步練習-2021-2022學年人教版物理八年級下冊(Word版含答案)
評論
0/150
提交評論