硬件電子琴電路模塊方案設(shè)計_第1頁
硬件電子琴電路模塊方案設(shè)計_第2頁
硬件電子琴電路模塊方案設(shè)計_第3頁
硬件電子琴電路模塊方案設(shè)計_第4頁
硬件電子琴電路模塊方案設(shè)計_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗四實驗四 硬件電子琴電路模塊設(shè)計硬件電子琴電路模塊設(shè)計基礎(chǔ)知識一、節(jié)拍 1、在音樂中,時間被分成均等的基本單位,每個單位叫做一個“拍子”或 稱一拍。 2、拍子的時值是以音符的時值來表示的,一拍的時值可以是四分音符(即以四分音符為一拍),也可以是二分音符(以二分音符為一拍)或八分音符(以八分音符為一拍)。例2/4,3/4等 3、拍子的時值是一個相對的時間概念 比如當(dāng)樂 曲的規(guī)定速度為每分鐘 60 拍時,每拍占用的時間是一秒,半拍是二分之一 秒;當(dāng)規(guī)定速度為每分鐘 120 拍時,每拍的時間是半秒,半拍就是四分之一 秒。 在本次實驗中,最小的節(jié)拍是1/4拍,規(guī)定速度是每拍1秒??梢缘玫剑谖覀儼?/p>

2、音符按照以1/4拍為單位存放到ROM里,而后以4HZ頻率讀取,則可以實現(xiàn)樂曲的節(jié)拍。基礎(chǔ)知識二、音符與頻率 樂曲中不同的音符實質(zhì)上表示的是不同頻率的聲音。 只要產(chǎn)生不同頻率的脈沖,再通過喇叭等播放出來即可。又由于方波容易用定時器產(chǎn)生,故使用方波脈沖?;A(chǔ)知識 要產(chǎn)生音頻脈沖:1、算出某一音頻的脈沖的周期(1/頻率)2、然后將此周期除以2,即為半周期的時間。3、利用定時器,計時這個半周期的時間,每當(dāng)計時到后,就將輸出脈沖的I/O反相。4、重復(fù)計時此半周期的時間再對I/O反相,就可以在I/O腳上得到此頻率的脈沖。 例如,頻率為523Hz, 其周期為1/523 S=1912uS, 因此只要令計數(shù)器計

3、時956,在每計數(shù)956次時就將I/O反接,就可得到中音DO(532Hz)。 其計數(shù)值N可以根據(jù)以下公式得到: 2N=Tr/Ti=Fi/Fr (Fi為內(nèi)部時鐘頻率,F(xiàn)r為對應(yīng)音符頻率) (Ti為內(nèi)部時鐘周期,Tr為對應(yīng)音符周期)音符與頻率對應(yīng)表 可以得到:如果以1MHZ為內(nèi)部時鐘頻率,要發(fā)出低7SI音(494HZ),我們需要計數(shù)2024個1MHZ時鐘周期,其中,當(dāng)計數(shù)到2024/2=1012個時鐘時,將脈沖翻轉(zhuǎn)一次。 結(jié)合前述的節(jié)拍,如果要發(fā)出低7SI音1拍,則只要持續(xù)494HZ方波1秒鐘即可,如果按1/4拍單位存放到ROM里,ROM的讀出時鐘是4HZ,那低7SI音應(yīng)該裝載幾個存儲單元?本實驗

4、用FPGA實現(xiàn)樂曲的播放原理 分四步1、將待播放的音樂音符存入ROM2、以4HZ頻率讀取ROM 3、根據(jù)1MHZ的內(nèi)部時鐘要求,將讀出的音符換算成應(yīng)計數(shù)的數(shù)值4、以1MHZ為內(nèi)部時鐘,實現(xiàn)符合要求的方波信號。硬件電子琴電路設(shè)計方案硬件電子琴電路設(shè)計方案模塊模塊Speaker 模塊模塊Speakera中的主要電路是中的主要電路是一個數(shù)控分一個數(shù)控分頻器頻器,它由一個初值可預(yù)置的加法計數(shù)器,它由一個初值可預(yù)置的加法計數(shù)器構(gòu)成,當(dāng)模塊構(gòu)成,當(dāng)模塊Speakera由端口由端口Tone獲得一獲得一個個2進(jìn)制數(shù)后,將以此值為計數(shù)器的預(yù)置數(shù)進(jìn)制數(shù)后,將以此值為計數(shù)器的預(yù)置數(shù),對端口,對端口Clk12MHZ輸

5、入的頻率進(jìn)行分頻,輸入的頻率進(jìn)行分頻,之后由之后由Spkout向揚聲器輸出發(fā)聲。向揚聲器輸出發(fā)聲。模塊模塊TONE 模塊模塊Tone是音階發(fā)生器,當(dāng)是音階發(fā)生器,當(dāng)8位發(fā)聲控制輸位發(fā)聲控制輸入入Index中某一位為高電平時,則對應(yīng)某一中某一位為高電平時,則對應(yīng)某一音階的數(shù)值將從端口音階的數(shù)值將從端口Tone輸出,作為獲得輸出,作為獲得該音階的分頻預(yù)置值;同時由該音階的分頻預(yù)置值;同時由Code輸出對輸出對應(yīng)該音階簡譜的顯示數(shù)碼,如應(yīng)該音階簡譜的顯示數(shù)碼,如5,并由,并由High輸出指示音階高輸出指示音階高8度顯示。度顯示。增加樂曲自動演奏電路增加樂曲自動演奏電路 在原設(shè)計的基礎(chǔ)上,增加一個在原

6、設(shè)計的基礎(chǔ)上,增加一個Notetabs模塊用于模塊用于產(chǎn)生節(jié)拍控制(產(chǎn)生節(jié)拍控制(Index數(shù)據(jù)存留時間)和音階選數(shù)據(jù)存留時間)和音階選擇信號,即在擇信號,即在Notetabs模塊放置一個樂曲曲譜真模塊放置一個樂曲曲譜真值表,樂曲曲譜真值表放置于名為值表,樂曲曲譜真值表放置于名為Music的的ROM模塊中。模塊中。 由一個計數(shù)器來生成讀取由一個計數(shù)器來生成讀取ROM所需的地址數(shù)據(jù),所需的地址數(shù)據(jù),對對ROM以以4HZ的頻率進(jìn)行讀取,實現(xiàn)控制此真值的頻率進(jìn)行讀取,實現(xiàn)控制此真值表的輸出,而由此計數(shù)器的計數(shù)時鐘信號作為樂表的輸出,而由此計數(shù)器的計數(shù)時鐘信號作為樂曲節(jié)拍控制信號,從而可以設(shè)計出一個純

7、硬件的曲節(jié)拍控制信號,從而可以設(shè)計出一個純硬件的樂曲自動演奏電路。樂曲自動演奏電路。 需要說明: 由于實驗板上,只有50MHZ有源晶振,故將用50MHZ進(jìn)行分頻實現(xiàn)12.5MHZ的時鐘,在后續(xù)模塊Speakera.v中再分頻得到近似1MHZ時鐘,要求自行設(shè)計50MHZ到12.5MHZ的分頻模塊:div_50_12M.v 系統(tǒng)需要4HZ頻率讀ROM,于是用50MHZ,分頻得到4HZ頻率。要求自行設(shè)計50MHZ到4HZ的分頻模塊:div_50_4HZ.v 由于這兩個分頻模塊仿真時間較長,故這部分不要求進(jìn)行仿真不要求進(jìn)行仿真。 1、構(gòu)建一個工程名為songer的工程由File-New Project

8、 Wizard,彈出對話框,設(shè)置文件夾目錄,Project名稱。注意,1 )不能將文件夾放置在軟件安裝目錄下,應(yīng)放在E盤或DATA盤上2)要求以自己的學(xué)號作為文件夾名正確選擇FPGA目標(biāo)器件和EDA工具,這次設(shè)計的仿真工具采用Modelsim。 分別輸入ToneTaba.v和Speakera.v的Verilog HDL文本,進(jìn)行綜合和功能仿真,理解、驗證模塊功能。仿真激勵文件生成 在New Source Wizard界面選擇Verilog Test Fixture,然后輸入測試文件名 選擇要測試的模塊 測試文件相關(guān)設(shè)置完成后,按Finish,ISE即給出測試模塊的框架 根據(jù)框架,考慮測試的完備

9、性,完善測試模塊 分別編寫Notetabs .v 、ToneTaba.v和div_50_12M.v的Verilog HDL測試文件,用Modelsim進(jìn)行功能仿真、時序仿真。觀察波形,理解模塊實現(xiàn)的功能。 下面討論如何調(diào)用ROM的IPcore實現(xiàn)對音樂的存儲。 IP核生成器的啟動方法有兩種,一種是在核生成器的啟動方法有兩種,一種是在【Projcet Navigator】中新建中新建Coregen IP類型的資源類型的資源(請參考第請參考第2章中工程的建立與章中工程的建立與管理管理);另一種是直接在;另一種是直接在Windows界面下運界面下運行行【開始開始】【程序程序】【Xilinx ISE

10、Design Suit 10.1】【ISE】【Accessories】【CORE Generator】命命令。令。 本次設(shè)計采用第一種方法。本次設(shè)計采用第一種方法。 首先打開電腦上的記事本,按照COE文件的格式要求輸入梁祝音樂或者自己編輯的音樂數(shù)據(jù),并存盤。COE文件內(nèi)容MEMORY_INITIALIZATION_RADIX = 10;MEMORY_INITIALIZATION_VECTOR= 3 , 3 , 3 , 3, 5, 5, 5,6, 8, 8, 8 , 9 , 6 , 8, 5, 5, 12,12,12, 15, 13 , 12 , 10 , 12, 9, 9, 9, 9, 9,

11、9, 9 , 0 , 9 , 9, 9, 10, 7, 7, 6, 6, 5 , 5 , 5 , 6, 8, 8, 9, 9, 3, 3, 8 , 8 , 6 , 5, 6, 8, 5, 5, 5, 5, 5 , 5 , 5 , 5, 10, 10, 10, 12, 7, 7, 9 , 9 , 6 , 8, 5, 5, 5, 5, 5, 5, 3 , 5 , 3 , 3, 5, 6, 7, 9, 6, 6, 6 , 6 , 6 , 6, 5, 6, 8, 8, 8, 9,12 ,12 ,12 ,10, 9, 9,10, 9,8, 8, 6 , 5 , 3 , 3, 3, 3, 8,8, 8,8

12、,6 , 8 ,6 , 5, 3, 5, 6,8, 5,5,5 ,5 , 5 ,5, 5,5,0, 0, 0; 選擇IP(CORE Generate & Architecture Wizard),輸入IPcore 名:Music 彈出的界面,選擇Memory Elementsingle Port Block Memory 選擇Read Only 存儲器位寬:Width 為4,深度:Depth為256 按Next繼續(xù)設(shè)定 鉤選Load Init File 點擊Load File按鍵,裝載初始文件Music.coe 點擊Generate按鍵生成ROM的IP CORE 通過在NoteTabs

13、.v文件中例化ROM文件,實現(xiàn)按照4HZ頻率循環(huán)讀取ROM的音樂節(jié)拍、頻率信號。編寫頂層文件songer.v ,將NoteTabs.vToneTaba.v、 Speakera.v、 div_50_12M.v和 div_50_4HZ.v組合為一個系統(tǒng),完成綜合。由于Speakera.v、 div_50_4HZ.v模塊的仿真時間過長,所以頂層模塊不需要仿真。引腳鎖定 NET clk_50M LOC = C9 ; NET Code1 LOC = F12 ; NET Code1 LOC = E12 ; NET Code1 LOC = E11 ; NET Code1 LOC = F11 ; NET High1 LOC = E9 ; NET reset LOC = D18|pulldown ; NET Spkout LOC = D7 ; 用發(fā)光管LD3LD0顯示Code3Code0表示琴音簡譜碼,發(fā)光管LD5顯示高8

溫馨提示

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

評論

0/150

提交評論