版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項目4簡易電子琴設(shè)計方案本項目介紹基于FPGA最小系統(tǒng)板,用VHDL程序設(shè)計制作簡易電子琴。通過簡易電子琴控制器電路的VHDL程序設(shè)計,熟悉VHDL程序平行語句的使用,實現(xiàn)多進(jìn)程間信號的通訊。教學(xué)目標(biāo)項目4簡易電子琴設(shè)計方案技能目標(biāo)知識目標(biāo)素質(zhì)目標(biāo)(1)能將實際的數(shù)字系統(tǒng)需求轉(zhuǎn)化為數(shù)字電子系統(tǒng)硬件語言描述。(2)能采用VHDL程序設(shè)計分頻電路。(3)能熟練使用ModelSim軟件對設(shè)計電路進(jìn)行功能仿真與時序仿真。(4)會創(chuàng)建與編輯功能仿真測試文件。(5)能用蜂鳴器、數(shù)碼管、開關(guān)等元件設(shè)計數(shù)字系統(tǒng)的輸入與輸出。(1)掌握VHDL程序平行語句的特點。(2)熟悉簡單信號賦值語句格式。(3)熟悉條件信號選擇語句的格式。(4)熟悉多進(jìn)程語句的格式。(5)掌握多進(jìn)程語句間信號的傳遞
。(1)培養(yǎng)通過書籍、網(wǎng)絡(luò)獲得相關(guān)信息開展自主學(xué)習(xí)的能力。(2)培養(yǎng)具制訂計劃及執(zhí)行計劃的能力。(3)培養(yǎng)勤于動手、樂于實踐的習(xí)慣。任務(wù)描述項目4簡易電子琴設(shè)計方案簡易電子琴功能要求:能夠?qū)崿F(xiàn)某一大調(diào)音樂的演奏功能,同時,在演奏時能夠顯示該大調(diào)每個音符的簡譜值及區(qū)分相同簡譜值的音高。設(shè)計要求:在QuartusPrime20.1軟件平臺上用VHDL程序設(shè)計簡易電子琴控制器電路,用ModelSim-Altera2020.1仿真軟件仿真檢查設(shè)計結(jié)果;選用FPGA最小系統(tǒng)板、按鈕開關(guān)、數(shù)碼管、LED燈、蜂鳴器等硬件資源進(jìn)行硬件驗證。設(shè)計方案項目4簡易電子琴設(shè)計方案
基于FPGA最小系統(tǒng)板的簡易電子琴用2個按鈕開關(guān)的組合控制大調(diào)的不同八度音輸入;7個按鈕開關(guān)控制同一八度音的7個音符輸入;用3LED表示發(fā)出音符不同八度音,用數(shù)碼管顯示音符的簡譜值,用蜂鳴器發(fā)聲。簡易電子琴工作過程:琴鍵信號通過輸入電路輸入基于FPGA設(shè)計的簡易電子琴控制器;簡易電子琴控制器將FPGA最小系統(tǒng)板的板載基頻,根據(jù)輸入信號不同,分頻為不同音符的頻率,通過輸出端驅(qū)動蜂鳴器發(fā)聲;同時,簡易電子琴控制器輸出驅(qū)動顯示簡譜數(shù)值的數(shù)碼管信號和區(qū)分不同八度音的3LED電平。1.輸入電路設(shè)計項目4簡易電子琴設(shè)計方案(1)琴鍵信號輸入電路設(shè)計:用按鈕開關(guān)控制“1234567”7個琴鍵信號的輸入,當(dāng)按鈕開關(guān)閉合時,向FPGA輸入高電平,指示發(fā)光二極管發(fā)光;當(dāng)按鈕開關(guān)斷開時,向FPGA輸入低電平,指示二極管不發(fā)光。7個琴鍵信號輸入電路的原理圖如圖4.1所示。圖4.1琴鍵信號輸入電路原理圖1.輸入電路設(shè)計項目4簡易電子琴設(shè)計方案(2)控制不同八度音信號輸入電路設(shè)計:用2個按鈕開關(guān)的組合來控制3個不同音高的八度音,如圖4.2所示。當(dāng)c1、c2均不閉合時,發(fā)低八度音;當(dāng)c1閉合、c2不閉合時,發(fā)原音;當(dāng)c1不閉合、c2閉合時,發(fā)高八度音。圖4.2控制不同八度音信號的輸入電路原理圖2.VHDL控制器設(shè)計項目4簡易電子琴設(shè)計方案(1)相同大調(diào)不同八度音頻率。鋼琴上每個琴鍵對應(yīng)一定的音名,每個音名對應(yīng)一定的頻率。本項目設(shè)計D大調(diào)具有3個八度音的簡易電子琴。表4.2列出了D大調(diào)3個八度音的音名、頻率及對應(yīng)的簡譜。項目4簡易電子琴設(shè)計方案(2)各音符頻率的產(chǎn)生
不同音符的頻率可通過對基準(zhǔn)頻率分頻產(chǎn)生。本設(shè)計輸入基準(zhǔn)頻率為FPGA最小系統(tǒng)板載晶振產(chǎn)生的50MHz頻率??紤]到預(yù)置數(shù)2進(jìn)制計數(shù)器分頻的位數(shù)關(guān)系,對50MHz基準(zhǔn)頻率先進(jìn)行50分頻,分頻為1MHz的基頻,然后用帶預(yù)置數(shù)的12位2進(jìn)制計數(shù)器分頻,帶預(yù)置數(shù)計數(shù)器分頻所產(chǎn)生的是非等占空比脈沖信號,該非等占空比脈沖信號,不具有驅(qū)動蜂鳴器的能力,故需對此脈沖信號再次進(jìn)行2分頻,使輸出頻率成為等占空比的信號,以推動蜂鳴器發(fā)聲。計算可控分頻器的分頻系數(shù)表達(dá)式,Tone=212-(50000000/50*2f),其中f值為音符的頻率。項目4簡易電子琴設(shè)計方案(2)各音符頻率的產(chǎn)生根據(jù)各音符的頻率及計算公式可計算出D大調(diào)3個八度各音符的分頻系數(shù),如表4.3所示。項目4簡易電子琴設(shè)計方案(2)各音符頻率的產(chǎn)生根據(jù)各音符的頻率及計算公式可計算出D大調(diào)3個八度各音符的分頻系數(shù),如表4.3所示。項目4簡易電子琴設(shè)計方案(2)各音符頻率的產(chǎn)生根據(jù)各音符的頻率及計算公式可計算出D大調(diào)3個八度各音符的分頻系數(shù),如表4.3所示。項目4簡易電子琴設(shè)計方案(3)控制器的VHDL程序設(shè)計根據(jù)前面的分析,簡易電子琴控制器的VHDL程序設(shè)計如下:進(jìn)程1:用琴鍵輸入電平,控制不同八度音,輸入信號轉(zhuǎn)換為對應(yīng)琴鍵的分頻系數(shù)、3LED電平、數(shù)碼管驅(qū)動信號。進(jìn)程2:將50MHZ的頻率分頻為1MHz頻率。進(jìn)程3:在進(jìn)程1分頻系數(shù)信號的控制下,通過可預(yù)置分頻系數(shù)的計數(shù)器,將1MHz的頻率分頻為各音符脈沖信號。進(jìn)程4:將進(jìn)程3各音符脈沖信號2分頻后輸出驅(qū)動蜂鳴器。3.輸出電路設(shè)計項目4簡易電子琴設(shè)計方案(1)顯示不同八度音發(fā)光二極管電路顯示不同八度音的發(fā)光二極管輸出電路原理圖,如圖4.3所示。圖4.3顯示不同八度音的發(fā)光二極管輸出電路項目4簡易電子琴設(shè)計方案(2)數(shù)碼管顯示驅(qū)動電路數(shù)碼管顯示驅(qū)動輸出電路原理圖,如圖4.4所示。圖4.4數(shù)碼管顯示輸出電路原理圖項目4簡易電子琴設(shè)計方案(3)蜂鳴器驅(qū)動電路蜂鳴器驅(qū)動電路原理圖,如圖4.5所示。圖4.5蜂鳴器輸出電路原理圖設(shè)計流程項目4簡易電子琴設(shè)計方案VHDL是硬件描述語言,其描述語句包括順序語句與并行語句,并行語句最能體現(xiàn)VHDL作為硬件設(shè)計語言的特點。各種并行語句在結(jié)構(gòu)體中是同時并發(fā)執(zhí)行的,其執(zhí)行順序與書寫的順序無關(guān)。結(jié)構(gòu)體中常見的并行語句有簡單信號賦值語句、條件信號選擇語句、進(jìn)程語句。項目4VHDL程序的平行語句1.簡單信號賦值語句簡單信號賦值語句,在進(jìn)程內(nèi)部使用時屬于順序語句,但是,在進(jìn)程外的結(jié)構(gòu)體中使用時屬于并行語句。簡單信號賦值語句的使用格式:
信號<=表達(dá)式;簡單信號賦值語句由4部分組成:左操作數(shù)信號、賦值操作符“<=”、表達(dá)式和分號“;”;左操作數(shù)必須是信號,不能是輸入端口信號;表達(dá)式可以是算術(shù)表達(dá)式,也可以是邏輯表達(dá)式,還可以是關(guān)系表達(dá)式,但表達(dá)式中不能含有輸出端口信號;目標(biāo)信號與信號的賦值源必須長度一致、類型一致。項目4VHDL程序的平行語句2.條件信號選擇語句條件信號選擇語句的作用是根據(jù)指定的條件表達(dá)式的多種可能進(jìn)行相應(yīng)的賦值。條件信號選擇語句有when/else與with/select/when兩種形式。(1)when/else條件信號選擇語句格式:信號<=表達(dá)式1when賦值條件1else表達(dá)式2when賦值條件2else …
表達(dá)式nwhen賦值條件nelse表達(dá)式n+1;項目4VHDL程序的平行語句【例4.1】when/else條件信號選擇語句應(yīng)用項目4VHDL程序的平行語句例4.1程序?qū)崿F(xiàn)了條件選擇的邏輯功能。當(dāng)sel="00"時,輸出q的波形與i0一樣;當(dāng)sel="01"時,輸出q的波形與i1一樣;當(dāng)sel="10"時,輸出q的波形與i2一樣;當(dāng)sel="11"時,輸出q的波形與i3一樣。libraryieee;useieee.std_logic_1164.all;entityuseselectisport(sel:instd_logic_vector(1downto0);i0,i1,i2,i3:instd_logic;q:outstd_logic);enduseselect;architecturebehaveofuseselectisbeginq<=i0whensel="00"else--注意else后沒有分號i1whensel="01"elsei2whensel="10"elsei3;endbehave;(2)with/select/when條件信號選擇語句with/select/when條件信號選擇語句,也是根據(jù)分支條件選擇相應(yīng)的表達(dá)式對目標(biāo)信號進(jìn)行賦值。但with/select/when條件信號選擇語句的分支不能有重復(fù),必須是唯一的,也不允許有條件覆蓋不全的情況。選擇信號賦值語句的使用格式為:with表達(dá)式select信號<=表達(dá)式1when條件1,表達(dá)式2when條件2,…表達(dá)式nwhen條件n,表達(dá)式n+1whenothers;項目4VHDL程序的平行語句【例4.2】with/select/when條件信號選擇語句應(yīng)用項目4VHDL程序的平行語句例4.2程序?qū)崿F(xiàn)了條件選擇的邏輯功能。當(dāng)sel="00"時,輸出q的波形與i0一樣;當(dāng)sel="01"時,輸出q的波形與i1一樣;當(dāng)sel="10"時,輸出q的波形與i2一樣;當(dāng)sel="11"時,輸出q的波形與i3一樣。libraryieee;useieee.std_logic_1164.all;entityuseselectisport(sel:instd_logic_vector(1downto0);i0,i1,i2,i3:instd_logic;q:outstd_logic);enduseselect;architecturebehaveofuseselectisbeginwithselselectq<=i0when"00",--注意此處是逗號不是分號i1when"01",i2when"10",i3whenothers;--最后是分號endbehave;3.多進(jìn)程語句
在一個結(jié)構(gòu)體中多個process語句是并行執(zhí)行的,但是每個進(jìn)程內(nèi)部的語句是順序執(zhí)行的。進(jìn)程語句的基本格式如下:[進(jìn)程名:]process[(敏感信號表)]進(jìn)程說明部分;
begin順序語句1;
順序語句2;
順序語句3; …endprocess[進(jìn)程名];
項目4VHDL程序的平行語句進(jìn)程語句說明:進(jìn)程語句中的進(jìn)程名是進(jìn)程語句的標(biāo)識符,它是一個可選項;敏感信號列表至少需要有一個敏感信號,否則,該進(jìn)程將被永遠(yuǎn)掛起;也可以使用wait語句來代替敏感信號列表。process語句有如下特點:①可以和其他進(jìn)程語句同時執(zhí)行,并可以存取結(jié)構(gòu)體和實體中所定義的信號。②進(jìn)程內(nèi)部的所有語句都按照順序執(zhí)行。③為啟動進(jìn)程,在進(jìn)程中必須包含一個敏感信號的列表或wait語句。④進(jìn)程之間可通過信號實現(xiàn)通信。
項目4VHDL程序的平行語句【例4.3】用進(jìn)程語句描述一個按BCD碼計數(shù)的六十進(jìn)制計數(shù)器項目4VHDL程序的平行語句BCD碼計數(shù)的六十進(jìn)制計數(shù)器VHDL程序包含了三個進(jìn)程p1、p2、p3,三個進(jìn)程并行執(zhí)行?!纠?.3】用進(jìn)程語句描述一個按BCD碼計數(shù)的六十進(jìn)制計數(shù)器項目4VHDL程序的平行語句p1進(jìn)程為十進(jìn)制計數(shù)器,計數(shù)脈沖“clk”上升沿時,計數(shù)值發(fā)生改變?!纠?.3】用進(jìn)程語句描述一個按BCD碼計數(shù)的六十進(jìn)制計數(shù)器項目4VHDL程序的平行語句p2進(jìn)程為六進(jìn)制計數(shù)器,每當(dāng)個位數(shù)計數(shù)到9時,在計數(shù)脈沖“clk”下一周期的上升沿,十位數(shù)計數(shù)器進(jìn)行計數(shù);p2進(jìn)程需要用到p1的個位計數(shù)值,進(jìn)程間的通訊通過信號“bcd_1_n”進(jìn)行?!纠?.3】用進(jìn)程語句描述一個按BCD碼計數(shù)的六十進(jìn)制計數(shù)器項目4VHDL程序的平行語句p3進(jìn)程為產(chǎn)生進(jìn)位信號的進(jìn)程,當(dāng)個位數(shù)為9、十位數(shù)為5時,在計數(shù)脈沖“clk”下一周期的上升沿,產(chǎn)生一個進(jìn)位信號。p3進(jìn)程需要用到p1的個位計數(shù)值和p2的十位計數(shù)值。進(jìn)程間的通訊通過信號“bcd_1_n”、“bcd_10_n”進(jìn)行?!纠?.3】用進(jìn)程語句描述一個按BCD碼計數(shù)的六十進(jìn)制計數(shù)器BCD碼計數(shù)的六十進(jìn)制計數(shù)器的VHDL程序功能仿真波形,如圖4.19所示。項目4VHDL程序的平行語句圖4.9BCD碼計數(shù)的六十進(jìn)制計數(shù)器仿真波形圖項目4簡易電子琴編程下載編程下載的目的是將設(shè)計所生成的文件通過計算機(jī)下載到目標(biāo)器件,驗證設(shè)計是否滿足實際要求或能否在實際中應(yīng)用。簡易電子琴硬件測試基于EP4CE6E22C8-FPGA最小系統(tǒng)板,用2個按鈕開關(guān)的組合控制大調(diào)的不同八度音輸入;7個按鈕開關(guān)控制同一八度音的7個音符輸入;用3LED表示發(fā)出音符不同八度音,用共陰數(shù)碼顯示音符的簡譜值,用蜂鳴器發(fā)聲。項目4簡易電子琴編程下載1.簡易電子琴控制器基于FPGA利用VHDL程序設(shè)計完成的簡易電子琴控制器輸入輸出端口,如圖4.13所示?!綾lk】為系統(tǒng)時鐘信號輸入端,與FPGA最小系統(tǒng)板所提供的50MHz時鐘信號相連接。【key[8..0]】為琴鍵信號輸入端【smg[6..0]】為簡譜值顯示信號輸出端【led[2..0]】為高低音指示信號輸出端【speaker】為音頻信號輸出端硬件電路連接圖4.13簡易電子琴控制器輸入輸出端口項目4簡易電子琴編程下載2.輸入電路選擇按鈕開關(guān)b7-b1作為同一八度音的7個音符的琴鍵;按鈕開關(guān)c2、c1組合控制大調(diào)的不同八度音。簡易電子琴輸入原理圖如圖4.14所示。圖4.14簡易電子琴輸入原理圖項目4簡易電子琴編程下載圖4.15簡易電子琴輸入PCB圖2.輸入電路選擇按鈕開關(guān)b7-b1作為同一八度音的7個音符的琴鍵;按鈕開關(guān)c2、c1組合控制大調(diào)的不同八度音。簡易電子琴輸入PCB圖如圖4.15所示。項目4簡易電子琴編程下載圖4.16簡易電子琴輸入模塊實物圖2.輸入電路選擇按鈕開關(guān)b7-b1作為同一八度音的7個音符的琴鍵;按鈕開關(guān)c2、c1組合控制大調(diào)的不同八度音。簡易電子琴輸入模塊實物圖如圖4.16所示。項目4簡易電子琴編程下載3.輸出電路輸出用3LED表示發(fā)出音符不同八度音,用數(shù)碼管顯示音符的簡譜值,用蜂鳴器發(fā)聲。簡易電子琴輸出原理圖,如圖4.17所示。圖4.17簡易電子琴輸出原理圖項目4簡易電子琴編程下載圖4.18簡易電子琴輸出PCB圖3.輸出電路輸出用3LED表示發(fā)出音符不同八度音,用數(shù)碼管顯示音符的簡譜值,用蜂鳴器發(fā)聲。簡易電子琴輸出PCB圖,如圖4.18所示。項目4簡易電子琴編程下載圖4.19簡易電子琴輸出模塊實物圖3.輸出電路輸出用3LED表示發(fā)出音符不同八度音,用數(shù)碼管顯示音符的簡譜值,用蜂鳴器發(fā)聲。簡易電子琴輸出模塊實物圖,如圖4.19所示。項目4簡易電子琴編程下載4.各元件連接輸入輸出元器件琴鍵按鈕、數(shù)碼管、發(fā)光二極管、蜂鳴器與EP4CE6E22C8-FPGA最小系統(tǒng)板的20×2雙排直插針連接原理圖,如圖4.20所示。圖4.20簡易電子琴各元件連接原理圖項目4簡易電子琴編程下載圖4.20
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酉陽脫硝合同
- 電腦產(chǎn)品維護(hù)服務(wù)合同
- 公交站候車亭廣告合作經(jīng)營合同
- 美容院合作合同
- 年門面租賃合同書精簡版
- 安裝監(jiān)控合同范本
- 廢品收購承包合同
- 燈箱廣告制作安裝合同
- 電動車購銷合同
- 頂管施工合同中的工程延期3篇
- 黃土高原水土流失說課
- 河北省石家莊市藥品零售藥店企業(yè)藥房名單目錄
- 《來自地球的力》名師教案
- 食堂虧損分析報告范文5篇
- 錨桿錨索鉆機(jī)操作規(guī)程
- 《錄音技術(shù)與藝術(shù)》課程教學(xué)大綱
- 部編版七年級語文上下冊教材解讀分析精編ppt
- InternationalSettlementsLecture3InternationalClearingSystems
- (完整版)景觀園林工程施工規(guī)范和技術(shù)要求
- (完整版)六年級轉(zhuǎn)述句練習(xí)題
- 蘇武傳作文素材整理-
評論
0/150
提交評論