VHDL音樂播放器
《VHDL音樂播放器》由會員分享,可在線閱讀,更多相關(guān)《VHDL音樂播放器(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
洛 陽 理 工 學(xué) 院 課 程 設(shè) 計 報 告 課程名稱 EDA技術(shù)與VHDL 設(shè)計題目 音樂播放器的設(shè)計與仿真 專 業(yè) 通信工程 班 級 B1105 學(xué) 號 B1105 姓 名 完成日期 2014年12月22日 前言 隨著科學(xué)技術(shù)的進步,電子器件和電子系統(tǒng)設(shè)計方法日新月異,電子設(shè)計自動化(ElectronicsDesignAutomation,EDA)技術(shù)正是適應(yīng)了現(xiàn)代電子產(chǎn)品設(shè)計的要求,吸收了多學(xué)科最新成果而形成的一門新技術(shù)。現(xiàn)如今掌握EDA技術(shù)是電子信息類專業(yè)的學(xué)生、工程技術(shù)人員所必備的基本能力和技能。 傳統(tǒng)電子電路的設(shè)計,首先要對系統(tǒng)進行分析,然后按功能對系統(tǒng)進行劃分,接下來就要選擇特定芯片,焊接成PCB電路板,最后對成品PCB電路板進行調(diào)試。這樣的設(shè)計沒有靈活性可言,搭成的系統(tǒng)需要的芯片種類多且數(shù)目大,而且對于電路圖的設(shè)計和電路板的設(shè)計都需要很大的工作量,工作難度也很高。隨著可編程器件和EDA技術(shù)的發(fā)展,傳統(tǒng)設(shè)計的劣勢被克服,采用可編程邏輯器件基于芯片的設(shè)計方法,期間的內(nèi)部邏輯和引腳可以由設(shè)計者自行決定,提高了設(shè)計的靈活性和工作效率;同時,將系統(tǒng)集成在一個芯片上的設(shè)計,使系統(tǒng)具有體積小、功耗低、可靠性高等特點。 EDA技術(shù)即電子設(shè)計自動化技術(shù),它是以可編程邏輯器件(PLD)為載體,以硬件描述語言(HDL)為主要的描述方式,以EDA軟件為主要的開發(fā)軟件的電子設(shè)計過程。它主要采用“自頂向下”的設(shè)計方法,設(shè)計流程主要包括:設(shè)計輸入、綜合、仿真、適配、下載。EDA技術(shù)主要有以下特征: (1)高層綜合的理論和方法取得進展,從而將EDA設(shè)計層次由RT級提高到了系統(tǒng)級,并推出了系統(tǒng)級綜合優(yōu)化工具,縮短了復(fù)雜ASIC的設(shè)計周期。 (2)采用硬件描述語言來描述10萬門以上的設(shè)計,并形成了VHDL和Verilog-HDL兩種標(biāo)準(zhǔn)硬件描述語言。 (3)采用平面規(guī)劃技術(shù)對邏輯綜合和物理版圖設(shè)計聯(lián)合管理,做到在邏輯設(shè)計綜合早期階段就考慮到物理設(shè)計信息的影響。 (4)可測性綜合設(shè)計。 (5)為帶有嵌入式IP核的ASIC設(shè)計提供軟、硬件協(xié)同設(shè)計工具。 (6)建立并設(shè)計工具框架結(jié)構(gòu)的集成化設(shè)計環(huán)境,以適應(yīng)當(dāng)今ASIC規(guī)模大而復(fù)雜、數(shù)字與模擬電路并存、硬件與軟件設(shè)計并存、產(chǎn)品上市速度快等特點。 總而言之,EDA技術(shù)的出現(xiàn),給電子信息產(chǎn)業(yè)帶來了革命性的變革。 一. 設(shè)計任務(wù)及要求 本次課程設(shè)計要求使用EDA工具,設(shè)計實現(xiàn)簡易音樂播放器,理解音名與頻率的關(guān)系及數(shù)控分頻原理,經(jīng)過對整體進行模塊化分析、編程、綜合、仿真及最終下載,完整實現(xiàn)簡易音樂器的播放功能。 用VHDL語言設(shè)計樂音的節(jié)拍與音符產(chǎn)生電路;用VHDL語言設(shè)計分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生電路;用VHDL語言設(shè)計可控分頻器電路;理解簡易音樂播放器總體設(shè)計方案。 掌握基本的VHDL語言;理解音樂播放電路設(shè)計方案。掌握用VHDL語言設(shè)計節(jié)拍與音符產(chǎn)生電路;掌握用VHDL語言設(shè)計分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生電路;掌握用VHDL語言設(shè)計可控分頻器電路。設(shè)計結(jié)果:原理圖與原程序、電路仿真圖、能在實訓(xùn)系統(tǒng)上播放悅耳動聽的音樂。 二. 設(shè)計實現(xiàn) 2.1 準(zhǔn)備知識 在本次設(shè)計中采用了《梁祝》 《茉莉花》 《蟲兒飛》作為要播放的樂曲,根據(jù)聲樂知識,組成樂曲的每個音符的發(fā)音頻率值及其持續(xù)的時間是樂曲能連續(xù)演奏所需的兩個基本要素,獲取這兩個要素所對應(yīng)的數(shù)值以及通過純硬件的手段來利用這些數(shù)值實現(xiàn)所希望樂曲的演奏效果是本實驗的關(guān)鍵。 該演奏電路演奏的樂曲是“梁?!逼?,其最小的節(jié)拍為1拍。將1拍的時長定為0.25秒,則只需要再提供一個4Hz的時鐘頻率即可產(chǎn)生1拍的時長,演奏的時間控制通過ROM查表的方式來完成。對于占用時間較長的節(jié)拍,如全音符為4拍(重復(fù)4),2/4音符為2拍(重復(fù)2),1/4音符為1拍(重復(fù)1)。 由于音階頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將得到的分頻數(shù)四舍五入取整。若基準(zhǔn)頻率過低,則由于分頻系數(shù)過小,四舍五入取整后的誤差較大,若基準(zhǔn)頻率過高,雖然誤碼差變小,但分頻結(jié)構(gòu)將變大。實際的設(shè)計應(yīng)綜合考慮兩方面的因素,在盡量減小頻率誤差的前提下取舍合適的基準(zhǔn)頻率。本設(shè)計中選取4MHz的基準(zhǔn)頻率。表2-1為簡譜中音名與頻率的對應(yīng)關(guān)系。 表2.1 樂譜編碼和樂音頻率 音符 編碼 頻率f 分頻數(shù)10^6/f 計數(shù)值(10^6/2f)-1 低 音 1 1 262 10^6/262 1907 2 2 294 10^6/294 1699 3 3 330 10^6/330 1514 4 4 349 10^6/349 1431 5 5 392 10^6/392 1274 6 6 440 10^6/440 1135 7 7 494 10^6/494 1011 中 音 1 8 523 10^6/523 955 2 9 587 10^6/587 850 3 10 659 10^6/659 757 4 11 698 10^6/698 715 5 12 784 10^6/784 636 6 13 880 10^6/880 567 7 14 988 10^6/988 505 高音 1 15 1047 10^6/1047 476 2.2樂曲演奏電路的結(jié)構(gòu)示意 2.3樂曲演奏電路的子結(jié)構(gòu) 頂層結(jié)構(gòu)所包含的模塊分別有地址計數(shù)器模塊(ADDR)、樂音分頻器模塊(SPEAKER)、數(shù)據(jù)存儲器(YP)以下便是對各個子模塊的分析。 2.3.1 地址計數(shù)器模塊 1. 地址計數(shù)器功能 在此模塊中設(shè)置了一個9位二進制計數(shù)器(計數(shù)最大值為512),這個計數(shù)器的計數(shù)頻率選為4Hz,即每一計數(shù)值的停留時間為0.25s,恰好為當(dāng)全音符設(shè)為1s時。例如,《梁祝》樂曲的第一個音符為“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即為1s時間,相應(yīng)地所對應(yīng)“1”音符分頻預(yù)置數(shù)為1409在ADDR的輸入端停留了1s。隨著ADDR中的計數(shù)器按4Hz的時鐘頻率做加法計數(shù)時,樂譜逐次被選取,《梁?!窐非烷_始自然連續(xù)的演奏起來了。 2. 程序代碼 LIBRARY ieee; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDR IS PORT (clk : IN STD_LOGIC; A : BUFFER STD_LOGIC_VECTOR(8 DOWNTO 0)); END; ARCHITECTURE ONE OF ADDR IS BEGIN PROCESS (clk) BEGIN IF (clkevent AND clk = 1) THEN A <= A + 1; END IF; END PROCESS; END; 3. 地址計數(shù)器符號圖 圖2.1 地址計數(shù)器符號圖 4. 仿真波形圖 圖2.2 地址計數(shù)器波形圖 圖2.3 地址計數(shù)器波形圖 2.3.2 樂音分頻器 1. 樂音分頻器模塊的功能 此模塊的功能首先是提供決定所發(fā)音符的分頻預(yù)置數(shù),而此數(shù)在輸入端口停留的時間即為此音符的節(jié)拍值。電路中設(shè)置了《梁祝》 《茉莉花》 《蟲兒飛》樂曲全部音符所對應(yīng)的分頻預(yù)置數(shù),每一音符的停留時間由音樂節(jié)拍和音調(diào)發(fā)生器模塊clk輸入頻率決定,在此為4Hz。 2.樂音分頻器模塊的VHDL源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity speaker is port(clk : in std_logic;--1mhz TN : in std_logic_vector(3 downto 0);--樂譜編碼 spks : out std_logic); end; architecture rts of speaker is signal FM : std_logic; signal count : integer range 0 to 2047; signal temp : integer range 0 to 2048; begin process (TN) begin case TN is when "0000" => temp<=2048; when "0001" => temp<=1907; when "0010" => temp<=1699; when "0011" => temp<=1514; when "0101" => temp<=1275; when "0110" => temp<=1136; when "0111" => temp<=1011; when "1000" => temp<=955; when "1001" => temp<=851; when "1010" => temp<=758; when "1100" => temp<=637; when "1101" => temp<=567; when "1110" => temp<=505; when "1111" => temp<=477; when others => temp<=2048; end case; end process; process(clk) begin if(clkevent and clk=1) then count<=count+1; if(count=temp) then FM<=not FM;count<=0;end if; end if; end process; spks<=FM; end; 3. 樂音分頻器符號圖 圖2.4 樂音分頻器符號圖 4. 樂音分頻器波形圖 圖2.5 樂音2的波形圖 圖2.6 樂音3的波形圖 2.3.3 數(shù)據(jù)存儲器 從菜單里的Tools選擇MegaWizard Plug-In Manager…,按照向?qū)瓿蒖OM的定制,ROM初始化文件見附錄。 圖2.7數(shù)據(jù)存儲器設(shè)計圖 2.3.3 數(shù)據(jù)仿真 1. 符號圖 圖2.8 存儲器和地址計數(shù)器符號圖 2. 波形圖 圖2.9 存儲器存入的數(shù)據(jù) 存儲器存入了《梁?!? 《茉莉花》 《蟲兒飛》 三首音樂,最小編程單元是八分音符即每個數(shù)字占0.37秒。每首歌結(jié)束之后空0.37*8*2 = 6秒。三首歌共424個地址,即0.37*424 = 155秒,即兩分半左右。 2.3.4 時鐘分頻器 1. 二十分頻器 程序代碼: library ieee; use ieee.std_logic_1164.all; entity fenpin20 is port(clk : in std_logic; --輸入20MHZ信號 out1 : out std_logic);-- 輸出1MHZ end; architecture one of fenpin20 is signal T1 : integer range 0 to 10-1; signal F1M : std_logic; begin process(clk) begin if(clkevent and clk=1) then T1<=T1+1; if(T1=9) then F1M<= not F1M;T1<=0;end if; end if; end process; out1<=F1M; end; 符號圖: 圖2.10 分頻器符號圖 波形圖: 圖2.11 分頻器波形圖 波形圖意義: 此分頻器是20分頻,即把頻率分成其本身頻率的1/20。波形圖中clk周期設(shè)置為1ns,則cout1的周期是20ns實現(xiàn)20分頻。 2. 1M分頻4hz 程序代碼: library ieee; use ieee.std_logic_1164.all; entity FENPIN4HZ is port(clk : in std_logic; --輸入1MHZ信號 F : out std_logic);-- 輸出4HZ end; architecture one of FENPIN4HZ is signal T1 : integer range 0 to 124999; signal F1M : std_logic; begin process(clk) begin if(clkevent and clk=1) then T1<=T1+1; if(T1=124999) then F1M<= not F1M;T1<=0;end if; end if; end process; F <= F1M; end; 符號圖: 圖2.12 分頻器符號圖 波形圖: 圖2.13 分頻器波形圖 三. 整體仿真 3.1 符號圖 圖3.1 整體符號圖 心得體會 通過這幾天的課程設(shè)計,使我對VHDL語言有了更加深刻的了解,在書本上學(xué)的理論知識能夠運用到了實踐中,而課程設(shè)計做的成功,增加了我學(xué)習(xí)EDA的興趣,不論在以后的學(xué)習(xí)中還是工作中,EDA肯定是我們必不可少的設(shè)計工具。通過此次課程設(shè)計我已經(jīng)可以按計劃將要求把簡易音樂演奏器設(shè)計出來,并能實現(xiàn)所要的功能。 在設(shè)計過程中,我遇到了許多問題,通過自己上網(wǎng)、查閱資料、問同學(xué)老師,解決了各個問題,并設(shè)計出所需要的要求的程序代碼。在設(shè)計過程中,我了解到設(shè)計程序代碼的基本過程,首先建立子模塊,并對各個模塊進行仿真,調(diào)試,直到實現(xiàn)所要的功能為止。再用元件例化對頂層文件進行仿真,調(diào)試,到仿真圖正確止。最后將程序代碼下載到FPGA實驗箱上。 總的來說,通過實驗,我激發(fā)了EDA學(xué)習(xí)的興趣,也對這門課程有了更深的理解,對EDA設(shè)計軟件QuarterⅡ的使用也更加熟練。更重要的是在此次實驗過程中,更好的培養(yǎng)了我們的具體實驗的能力。又因為在在實驗過程中有許多實驗現(xiàn)象,需要我們仔細的觀察,并且分析現(xiàn)象的原因。特別有時當(dāng)實驗現(xiàn)象與我們預(yù)計的結(jié)果不相符時,就更加的需要我們仔細的思考和分析了,并且進行適當(dāng)?shù)恼{(diào)節(jié)。 參考文獻 [1] 張順興.數(shù)字電路與系統(tǒng)設(shè)計.第1版.南京:東南大學(xué)出版社,2004 [2] 王玉秀.電工電子基礎(chǔ)實驗.第1版.南京:東南大學(xué)出版社,2006 [3] 孫肖子.模擬電子技術(shù)基礎(chǔ).第1版.西安:西安電子科技大學(xué)出版社,2001.1 [4] 謝自美.電子線路設(shè)計?實驗?測試.第2版.武昌:華中科技大學(xué)出版社,2000.7 [5] 張豫滇.電子電路課程設(shè)計.第1版.南京:河海大學(xué)出版社,2005.8 [6] 沈明山.EDA技術(shù)及可編程器件應(yīng)用實訓(xùn),科學(xué)出版社,2004.6(4):318-326 [7] 劉婷婷,李軍.電子設(shè)計自動化(EDA).北京師范大學(xué)出版社,2007,9(2):250-257 [8] 趙明富,李立軍.EDA技術(shù)基礎(chǔ),北京大學(xué)出版社,2007.5(5):221-224 附錄: Addr +0 +1 +2 +3 +4 +5 +6 +7 梁祝 0 3 3 3 3 5 5 5 6 8 8 8 8 9 6 8 5 5 16 12 12 12 15 13 12 10 12 24 9 9 9 9 9 9 9 9 32 7 7 6 6 5 5 5 6 40 9 9 9 10 7 7 6 6 48 5 5 5 6 8 8 9 9 56 3 3 8 8 6 5 6 8 64 5 5 5 5 5 5 5 5 72 10 10 10 12 7 7 9 9 80 6 8 5 5 5 5 0 0 88 3 5 5 3 5 6 7 9 96 6 6 6 6 6 6 5 6 104 8 8 8 9 12 12 12 10 112 9 9 10 9 8 8 6 5 120 3 3 3 3 8 8 8 8 128 6 8 6 5 3 5 6 8 136 5 5 5 5 5 5 0 0 144 0 0 0 0 0 0 0 0 空6秒 152 0 0 0 0 0 0 0 0 160 10 10 10 12 13 15 15 13 茉莉花 168 12 12 12 13 12 12 12 12 176 10 10 10 12 13 15 15 13 184 12 12 12 13 12 12 12 12 192 12 12 12 12 12 12 10 12 200 12 13 13 13 12 12 12 12 208 10 10 9 10 12 12 10 9+ 216 8 8 8 9 8 8 8 8 224 10 9 8 10 9 9 9 10 232 12 12 13 15 12 12 12 12 240 9 9 10 12 9 10 8 6 248 5 5 5 5 6 6 8 8 256 9 9 9 10 8 8 8 6 264 5 5 5 5 5 5 0 0 272 0 0 0 0 0 0 0 0 空6秒 280 0 0 0 0 0 0 0 0 288 10 10 10 10 11 11 12 12 蟲兒飛 296 10 10 10 10 9 9 9 9 304 8 8 8 8 9 9 10 10 312 10 10 10 7 7 7 7 7 320 6 6 10 10 9 9 9 9 328 6 6 10 10 9 9 9 9 336 6 6 10 10 9 9 9 8 344 8 8 8 8 8 8 8 8 352 10 9 12 12 12 12 11 10 360 9 9 9 9 12 11 10 9 368 12 12 12 10 9 9 9 9 376 6 6 10 10 9 9 9 9 384 6 6 10 10 9 9 9 9 392 11 10 11 10 9 9 9 9 400 11 10 11 10 15 15 9 8 408 8 8 8 8 8 8 8 8 416 0 0 0 0 0 0 0 0 空3秒- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
15 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- VHDL 音樂 播放
鏈接地址:http://ioszen.com/p-10338867.html