




已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
科信學院電子應用系統(tǒng)(三級項目)設計說明書(2015/2016學年第二學期)題 目 : 基于CPLD/FPGA的音樂播放器 _ _ 專業(yè)班級 : 電子信息工程13級1班 學 號: 130072115 學生姓名 : 張雨馨 指導教師 : 賈東立、李麗宏、馬永強、董克儉 設計周數(shù) : 3周 設計成績 : 2016年7月8日目錄1.概述.2 1.1課題研究背景.2 1.2課題研究意義.2 1.3關于VHDL.2 1.3課題目的.22.總體設計.3 2.1設計題目.3 2.2設計任務.3 2.3設計要求.3 2.4設計方案.3 2.5系統(tǒng)設計框圖.43.系統(tǒng)硬件設計.4 3.1原理圖.4 3.2音樂演奏電路原理.5 3.3音調的控制音符頻率的獲得.5 3.4樂曲節(jié)奏的控制音長的控制.6 3.5PCB板圖.64.系統(tǒng)設計說明.7 4.1流程圖.7 4.2程序代碼.75電路運行測試.12 5.1測試過程.12 5.2運行效果圖.136.課程設計遇到的問題.137.總結.138.參考文獻.141.概述1.1課題研究背景隨著科學技術的進步,電子器件和電子系統(tǒng)設計方法日新月異,電子設計自動化技術正是適應了現(xiàn)代電子產品設計的要求,吸收了多學科最新成果,而形成的一門新技術。現(xiàn)如今,掌握EDA技術是電子信息類專業(yè)的學生工程技術人員所必備的基本能力和技能。順應電子技術的發(fā)展趨勢,可編程邏輯器件和eda技術使設計方法發(fā)生了質的變化。應用EDA開發(fā)平臺,采用可編程邏輯器件CPLD/FPGA使硬件的功能可通過編程來實現(xiàn),這種新的基于芯片的設計方法能夠設計者有更多機會充分發(fā)揮創(chuàng)造性思維,實現(xiàn)多種復雜數(shù)字邏輯系統(tǒng)的功能,將原來由電路板完成的工作放到芯片的設計中進行,減少了連線和體積,提高了集成度,降低了干擾,大大減輕了電路設計PCB設計的工作量和難度,增強了設計的靈活性,有效地提高了工作效率,增加了系統(tǒng)的可靠性和穩(wěn)定性,提高了技術指標。傳統(tǒng)電子電路的設計,首先要對系統(tǒng)進行分析,然后按功能對系統(tǒng)進行劃分,接下來就要選定特定芯片,焊接成pcb電路板,最后對成本pcb電路板進行調。這樣的設計沒有靈活性可言,達成的系統(tǒng)需要的芯片種類多且數(shù)目大,而且對于電路圖的設計和電路板的設計都需要很大的工作量,工作難度也很高。然而,隨著可編程器件和eda技術的發(fā)展,傳統(tǒng)設計的劣勢被克服,采用可編程邏輯器件基于芯片的設計方法,其間的內部邏輯和引腳可以由設計者自行決定,大大提高了設計的靈活性,工作效率,將系統(tǒng)集成在一個芯片上的設計,使系統(tǒng)具有體積。1.2課題研究意義各種電子產品迅速地進入了我們的生活,我們處在一個被電子產品身處包圍的時代,在一個普通老百姓的家里,衣食住行,每一個產品的誕生都離不開EDA技術, 從彩色電視機到智能冰箱,到全自動洗衣機,電飯煲到微波爐,電磁爐,電子琴,再到個人隨身用的手機,mp3音樂播放器,都需要EDA技術提供支持。1.3關于VHDLVHDL是一種硬件描述語言,所以對電子電路和系統(tǒng)的行為進行描述,基于這種描述,結合相關的軟件工具,可以得到所期望的實際電路與系統(tǒng)。VHDL是非常高速集成電路硬件描述語言, 是可以描述硬件電路的功能、信號連接問題關系及定時關系的語言,它能比電路原理圖有效的表達硬件電路的特性。使用VHDL語言,可以借鑒,自上至下的將設計內容細化,最后完成系統(tǒng)硬件的整體設計。使用,VHDL語言描述的電路,可以進行綜合和仿真,然而,值得注意的是,盡管所有VHDL代碼都是可以仿真的,但并不是所有的代碼都能綜合。VHDL被廣泛使用的基本原因在于它是一種標準語言,是與工具和工藝無關的,從而可以方便的進行移植和重用。VHDL兩個最直接的應用領域是可編程邏輯器件和專用集成電路,其中可編程邏輯器件包括復雜可編程邏輯器件和現(xiàn)場可編程門陣列。關于VHDL最后要說明的是: 與常規(guī)的順序執(zhí)行的計算機程序不同,VHDL從根本上講是并發(fā)執(zhí)行的。VHDL中,只有在進程,函數(shù)和過程內部的語句才是,順序執(zhí)行的。1.4課題目的本設計是一個音樂播放器。設計目的是為了學習利用可編程邏輯器件CPLD/FPGA,來設計電子應用系統(tǒng)。學習和鞏固VHDL知識,使對已學過的基礎知識能有更深入的理解,學習QUARTUS II工具軟件的應用,學會獨立思考、獨立思考、獨立工作,以及提高對所學應用基本理論分析和解決實際問題的能力。2.總體設計2.1設計題目基于CPLD/FPGA的音樂播放器2.2設計任務1)根據(jù)技術要求和現(xiàn)有開發(fā)環(huán)境,分析設計題目。2)設計系統(tǒng)實現(xiàn)方案。3)設計并繪制原理圖。4)畫出功能模塊的程序流程圖。5)編寫實現(xiàn)程序。6)結合硬件調試、修改并完善程序。7)編寫課程設計報告。2.3設計要求利用開發(fā)板結合外圍設計電路,實現(xiàn)基于, CPLDFPGA的音樂播放器設計,并通過數(shù)碼管顯示聲、光報警。2.4設計方案1)使用Quartus II建立工程。2)用VHDL語言編譯、改正。3)分配引腳,重新編譯。4)下載,運行、修改。2.5系統(tǒng)設計框圖 系統(tǒng)設計框圖如圖1所示:晶振鍵盤按鈕MAX IIEPM240T100蜂鳴器數(shù)碼管圖1-系統(tǒng)設計框圖3.硬件設計3.1原理圖 原理圖如圖2所示:圖2-原理圖3.2音樂演奏電路原理先介紹一下硬件電路的發(fā)生原理,聲音的頻率范圍約在幾十到幾千赫茲,若能利用程序來控制FPGA這某個引腳輸出一定頻率的矩形波,接上揚聲器就能發(fā)出相應頻率的聲音。樂曲中的每一音符對應著一個確定的頻率,要想FPGA發(fā)出不同音符的音調, 實際上,只要控制他輸出相應音符的頻率即可。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應的頻,就可以在揚聲器上連續(xù)的發(fā)出各個聲音的音調。而要準確地演奏出一首樂曲,僅僅是揚聲器能夠發(fā)聲是不夠的,還必須準確地控制樂曲的節(jié)奏,既樂曲中每個音符的發(fā)聲頻率及其持續(xù)時間是樂曲能夠連續(xù)演奏的兩個關鍵因素。3.3音調的控制音符頻率的獲得頻率的高低決定了音調的高低,計算出簡譜中從低音一到高音一之間每個音名對應的頻率,所有不同頻率的信號都是從同一個基準頻率分頻得到的。多個不同頻率的信號可通過對某個基準頻率進行分頻器獲得。由于各個音符的頻率多為非整數(shù)而分頻系數(shù)又不能為小數(shù),故必須將計算機得到的分頻系數(shù),四舍五入取整。若基準頻率過低,則分頻系數(shù)過小,四舍五入取整后的誤差較大。若基準頻率過高,雖然可以減少頻率的相對誤差,但分頻結構將變大。實際上應用綜合考慮這兩個方面的因素在盡量減少誤差的前提下,選取合適的基準頻率。因此,要想FPGA發(fā)出不同音符的音調,實際上只要控制它輸出相應音符的頻率即可。3.4樂曲節(jié)奏的控制音長的控制音符的持續(xù)時間需要根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確定。因此,在想控制音符的音長,就必須知道樂曲的速度和每個音符所對應的節(jié)拍數(shù),在這個設計中所播放的樂曲的最短的音符為四分音符,如果將全音符的持續(xù)時間設為1秒鐘的話,那么一拍所應該持續(xù)的時間為0.25秒,則只需要在提供一個四赫茲的時間頻率即可產生四分音符的時長。要想讓系統(tǒng)知道現(xiàn)在應該播放哪個音符,而這個音符持續(xù)的時間應該是多少?就必須編寫樂曲文件,在樂曲文件中音符是按地址存放的,當系統(tǒng)工作時就按四赫茲的頻率依次讀取簡譜,當系統(tǒng)讀到某個音符的簡譜時就對應發(fā)這個音符的音調,持續(xù)時間為0.25秒,而如果在曲譜文件中這個音符為三拍音長,只要將該音符連續(xù)書寫3遍,這時系統(tǒng)獨院取文件的時候就會連續(xù)讀到3次,也就會發(fā)3個0.25秒的音長,這時我們聽上去就會持續(xù)了三排時間,通過這樣一個簡單的操作就可以控制音樂的音長了。3.5PCB板圖 PCB板圖如圖3所示:圖3-PCB板圖4.系統(tǒng)設計說明4.1流程圖 流程圖如圖4所示:主程序開始初始化歌曲顯示在數(shù)碼管依據(jù)按鍵碼播放該曲目是否有按鍵NY圖4-流程圖4.2程序代碼LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE MYPACKAGE ISTYPE led is ARRAY (0 TO 9) OF STD_LOGIC_VECTOR(7 DOWNTO 0); TYPE lednum is ARRAY (0 TO 7) OF integer range 0 to 15; CONSTANT datamode:led:=(XC0,XF9,XA4,XB0,X99,X92,X82,XF8,X80,X90); -數(shù)碼管字模 0 1 2 3 4 5 6 7 8 9COMPONENT Buzzer IS PORT (clk : IN std_logic; pitch :in integer range 0 to 20;Buzzer : BUFFER std_logic; key1,key2,key3,key4 :in STD_LOGIC); END COMPONENT; END MYPACKAGE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;LIBRARY WORK;USE WORK.MYPACKAGE.ALL;ENTITY music IS PORT ( clk : IN STD_LOGIC ;seg : out STD_LOGIC_vector (7 downto 0); posi : OUT STD_LOGIC_vector( 7 downto 0); key1,key2,key3,key4 : in STD_LOGIC;Buzzer1 : BUFFER std_logic ); END ENTITY music;ARCHITECTURE TESTAND OF music IS TYPE led is ARRAY (0 TO 9) OF STD_LOGIC_VECTOR(7 DOWNTO 0); TYPE lednum is ARRAY (7 downTO 0) OF integer range 0 to 15; signal datamod:led:=(XC0,XF9,XA4,XB0,X99,X92,X82,XF8,X80,X90); signal stop:std_logic:=1; SIGNAL data : lednum:=(1,0,0,0,0,0,0,0); SIGNAL data2 : lednum:=(2,0,0,0,0,0,0,0); SIGNAL data3 : lednum:=(3,0,0,0,0,0,0,0); TYPE musicpp is ARRAY (0 TO 63) OF integer range 0 to 20;-個數(shù),范圍 signal music1:musicpp:=( 10,10,10,10,11,11,12,12,10,10,10,10,9,9,9,9,8,8,8,8,9,9, 10,10,10,10,10,10,7,7,7,7,6,6,10,10,9,9,9,9,6,6, 10,10,9,9,9,9,6,6,10,10,9,9,9,8,8,8,8,8,8,8,8,8);-chongerfei signal music2:musicpp:=(10,10,12,13,10,10,10,8,9,9,9,8,9,9,10,12,10,10, 10,10,9,9,9,9,10,9,9,8,6,5,5,5,8,8, 8,9,10,10,10,9,10,9,10,12,9,9,9,9,9,10,10,10,9,10,9,10,12,9,9,9,9,9,9,9);-tianmimi signal music3:musicpp:=(12,12,12,10,12,15,15,15,15,13,13,15,15,12,12,12,12,12,12,8,9,10,10, 9,8,9,9,9,9,12,12,10,12,15,15,15,12,13,13,15,15,12,12,12, 12,12,12,9,10,11,11,11,7,7,8,8,8,8,8,8,8,8,8,8);-songbieSIGNAL data1 : lednum:=(0,0,0,0,0,0,0,1); signal pitch:integer range 0 to 20;signal zt:integer range 0 to 3; BEGIN process (clk) -用于顯示 variable count:integer range 0 to 65535; variable position:std_logic_vector (7 downto 0):=11111110; variable i:integer range 0 to 7; begin if clkevent and clk=1 then if count65535 then count:=count+1; else count:=0; i:=i+1; position:=position(6 downto 0) & position(7); if zt=1 then seg =datamod(data(i); end if; if zt=2 then seg =datamod(data2(i); end if; if zt=3 then seg =datamod(data3(i);end if; posi=position; end if; end if; end process; process (clk) -音樂播放 variable count:integer range 0 to 16777215:=0; variable i:integer range 0 to 63:=0; begin if(clkevent and clk=1)then count:=count+1; if count=0 then i:=i+1; if zt=1 then pitch=music1(i); end if; if zt=2 then pitch=music2(i); end if ; if zt=3 then pitch=music3(i); end if ; end if ; if data1(0)9 then data1(0)=data1(0)+1; else data1(0)=0;data1(1)=data1(1)+1; end if; if i=63 then data1(0)=0; data1(1)=0;i:=0; end if; end if; end process; process (key3,key2,key1) begin if( key3=0) then zt=3; end if; if( key2=0) then zt=2 ; end if; if(key1=0) then zt=1 ; end if; end process; u1:Buzzer PORT MAP(clk,pitch,buzzer1,key1,key2,key3,key4); END TESTAND; Library ieee;use ieee.std_logic_1164.all;ENTITY Buzzer IS PORT (clk : IN std_logic; pitch :in integer range 0 to 20;Buzzer : BUFFER std_logic;key1,key2,key3,key4 :in STD_LOGIC ); END Buzzer;ARCHITECTURE translated OF Buzzer ISTYPE pitchclass IS ARRAY(0 TO 21) OF INTEGER RANGE 0 to 101214 ;-音階頻率對照表constant pitchtable :pitchclass:=( 0,75815, 71581, 63775, 56818,50838,47755,42553, 37907, 35790, 31887, 28409,25419,23877,21276, 18953, 17895, 15948, 14204,12209,11988,10638 ); signal stop:std_logic:=1; BEGIN Process(clk,pitch) variable count:integer range 0 to 101214; Begin if(key4=0) then stop=not stop;end if;if pitchtable(pitch)/=0 then if(clkevent and clk=1)then count:=count+1; if(count=pitchtable(pitch) and stop=1 then count:=0; Buzzer=not Buzzer; end if; end if; else Buzzer=0; end if;if(stop=0) then Buzzer=1;end if;End Process;END translated;5電路運行測試5.1測試過程程序導入開發(fā)板,按K1播放第一首歌,按K2播放第二首歌,按K3播放第三首歌,按K4,停止播放歌曲。5.2運行效果圖 運行效果圖如圖5所示: 圖5-成品效果圖6.課程設計遇到的問題1)剛開始編程沒有清晰思路,和流程圖作參考,編程出現(xiàn)很多錯誤。2)在畫電路原理圖過程中,在庫里找一些器件時,因不知道它的對應的英文,因此還要一個一個的去找,浪費了大量時間。3)隨著樂譜的復雜程度加大,會加大編程的繁雜度,只能把將要演奏的樂譜存放在人為開辟的存儲空間里,這樣只需要在相應地址中讀出音符即可。7.總結不知不覺間課程設計就接近尾聲了,快要結束了,而VHDL是一門實用性非常強的編程語言,課程設計加深了我們對課程的理解,培養(yǎng)我們綜合運用所學知識,通過這次設計讓我更加深入了解CPLD/FPGA,不但使我對所學課程的內容有一個系統(tǒng)的了解,更是讓我們有發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要能力。雖然在做課程設計以前已經(jīng)系統(tǒng)的把VHDL語言課本認真的復習了一下,但是在剛開始時還是一頭霧水,不知道該應該從哪里下手。幸好在小組成員的相互努力下有條不紊的進行下去了,最終我發(fā)現(xiàn)設計程序重要的是要有一個清晰的思路,重中之重是嚴謹。剛開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農機服務在農業(yè)產業(yè)鏈中的增值服務模式探索考核試卷
- 2025年中國D(-)苯甘氨酸鄧鉀鹽數(shù)據(jù)監(jiān)測研究報告
- 2025年中國42度糧液數(shù)據(jù)監(jiān)測研究報告
- 2025年中國1,8-二氯蒽醌數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國高壓動力噴霧機市場分析及競爭策略研究報告
- 2025至2030年中國鍋爐風機市場分析及競爭策略研究報告
- 2025至2030年中國酸枝木木材市場分析及競爭策略研究報告
- 2025至2030年中國聚乙烯擠壓板市場分析及競爭策略研究報告
- 2025至2030年中國電熱油汀取暖器市場分析及競爭策略研究報告
- 2025至2030年中國焊接安全眼鏡市場分析及競爭策略研究報告
- 2023年最新的漢語言文學社會實踐調查報告
- 基于同態(tài)加密的高效密文檢索技術LEAF
- 《中華人民共和國職業(yè)分類大典》電子版
- 結構工程師績效考核評分表
- 防暴隊形訓練
- 基因組學期末復習資料(共22頁)
- 河南省道路運輸企業(yè)質量信譽考核申請表
- 某集團考勤管理制實施細則
- 小升初蘇教版六年級科學下冊復習資料好
- 未注公差的直徑尺寸公差IT
- HSG型工程液壓缸基于ANSYS的有限元分析
評論
0/150
提交評論