




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、簡(jiǎn)易電子琴的 VHDL設(shè)計(jì)與實(shí)現(xiàn)一 設(shè)計(jì)課題與任務(wù)要求:設(shè)計(jì)制作一個(gè)簡(jiǎn)易電子琴演奏器。原理概述:根據(jù)聲樂知識(shí),產(chǎn)生音樂的兩個(gè)因素是音樂頻率的持續(xù)時(shí)間,音樂的十二平均率規(guī)定,每?jī)蓚€(gè)八音度之間的頻率相差一倍,在兩個(gè)八音度之間,又可分為12個(gè)半音。每?jī)蓚€(gè)半音的頻率比為4。另外,音名 A (樂譜中的低音6)的頻率為440HZ音名B到C之間,E到F 之間為半音,其余為全音。由此可以計(jì)算出樂譜中從低音1到高音1之間每個(gè)音名的頻率如下表所示。表1簡(jiǎn)譜中的音名與頻率的關(guān)系音名頻率(Hz)音名頻率(Hz)音名頻率(Hz)低音1261.63中音1523.25咼音11046.50低音2293.67中音2587.33
2、咼音21174.66低音3329.63中音3659.25咼音31318.51低音4349.23中音4698.46咼音41396.92低音5391.99中音5783.99咼音51567.98低音6440中音6880咼音61760低音7493.88中音7987.76咼音71975.52基本要求:1、用8 X 8點(diǎn)陣顯示“ 1 2 3 4 5 6 7 ”七個(gè)音符構(gòu)成的電子琴鍵盤。其中點(diǎn)陣的第一列 用一個(gè)LED點(diǎn)亮表示音符“1”,第二列用二個(gè)LED點(diǎn)亮表示音符“2”,依此類推, 如下圖所示。OOOOOOOO00*9 oooo ooooo* oooooo44spkoutA Rt-I u圖3 頂層設(shè)計(jì)Ke
3、yplay模塊設(shè)計(jì):將輸入 key6.O, mode編碼為 index_key4.O。index_key4.O的高兩位表示 高、中、低音,00表示低音,01表示中音、11表示高音。index_key4.0低三位 表示音調(diào),001表示do, 010表示re,以此類推,000表示不發(fā)音。這樣可以實(shí)現(xiàn) 對(duì)不同按鍵模式下的編碼,而這些編碼會(huì)為后續(xù)模塊例如seg7, lattice所使用。1hdeK_keykeyplay :nit j de圖4keyplay模塊設(shè)計(jì)autoplay模塊設(shè)計(jì):把50MHz的輸入時(shí)鐘分頻為16Hz,作為節(jié)拍。將要自動(dòng)演奏的歌曲預(yù)先寫為 index_auto 的格式(inde
4、x_auto格式與index_key格式相同)。以16Hz的頻率將index_auto輸出。這里 需要用到計(jì)數(shù)器,此計(jì)數(shù)器的長(zhǎng)度由演奏的歌曲長(zhǎng)度而定。In.dei_autautoplay 圖5autoplay模塊設(shè)計(jì)查表及顯示模塊table設(shè)計(jì):(1) 輸入按鍵button,replay用于選擇模式。由于是琴鍵式,不能根據(jù)button本身的 值來選擇模式。button為1且replay為0則把index_auto賦給內(nèi)部信號(hào)index, button為0且replay為0則把index_key賦給它,button為0且replay為1則把 in dex_store 賦給它。(2) 用index
5、來查表,獲得分頻系數(shù)tone,輸出。(3) 同時(shí)根據(jù)index獲得編碼表示的高、中、低音的音調(diào),輸出給數(shù)碼管和點(diǎn)陣。Index kevIndex autnIndex storeelktabletonerep 1 nybuttontable模塊設(shè)計(jì)分頻模塊fen pin設(shè)計(jì):輸入分頻系數(shù)to neo設(shè)置內(nèi)部信號(hào)i用于計(jì)數(shù),clk_data作為分頻結(jié)果。,每次elk上升沿檢測(cè)i是 否等于tone,相等則把i清零,并使clk_data翻轉(zhuǎn),否則i自增1。(2)把clk_data賦給輸出信號(hào)buzz,由buzz驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。1B JellLbuzzP-=fenpin3-ton圖7fen pin模塊設(shè)
6、計(jì)seg7數(shù)碼管模塊設(shè)計(jì):由button和replay進(jìn)行調(diào)用選擇,選擇采用 index_key或index_auto或者 index_store作為對(duì)應(yīng)的信號(hào)index輸入。(1)index分別對(duì)應(yīng)不同的數(shù)碼管顯示輸出。IndrfjHiTc ldrsic -Tctteat扎bB d弩贏;dpsegmentnxxieseg7模塊設(shè)計(jì)圖8lattice數(shù)碼管模塊設(shè)計(jì):由button和replay進(jìn)行調(diào)用選擇,選擇采用 index_key或index_auto或者 index_store作為對(duì)應(yīng)的信號(hào)index輸入index分別對(duì)應(yīng)不同的點(diǎn)陣輸出顯示IndexIndexIndex keyComla
7、tticeclrlattice模塊設(shè)計(jì)lieStore存儲(chǔ)模塊設(shè)計(jì):Store模塊使用了 store1和replay控制錄音和錄音播放的選擇。這里使用了一個(gè) 二維數(shù)組來存儲(chǔ)輸入的按鍵信息,然后錄音播放時(shí)可以按照輸入的頻率進(jìn)行對(duì)應(yīng) 的播放。三、仿真波形及仿真分析lattice模塊仿真:習(xí) Fif Eiit VFew Projwt 里signwwnts ProcKsirq TmIs Winda# Help-j K母b Majitr Time SeriBSmi彳FioHcrJCmrft1剛就ii.a+n;Sint-Errt|r1iceirlai?ice - dbce - imuhtjon R?par
8、i - &mdd!inn XVavrTornii;era/Kl FlIi訶ASlmulfftion Repi fe+ j| Legal Notict 歸 Row$umi*w |ffl How Settirg |J Simulator gQ Surnma 身露 Settings 豹 Sirrdatk I 爭(zhēng)_15irrdatk 身基INI U開g gW Messagfira寸日IUHOH疔冃呼7斷1LD U皿吃M L3廿ML5Lb襯LT祎LBy -.Q 3 -.2 1 -切El 13 E- T b -.S) - - - 3 - 1) IM-.T . bl - 4-.I-.DI:; 5 niXIX
9、IIIXIAlII11t廠邸帥煩郵功審舊:馬B:xinniJ:ir廠可聞廠冏伽(ri序訂r廠辟何任獅廠回:(,rLrJ11l iJi-L11J11n_1_J LL1rii rL111111L11_I1.:.1l_ .11.1L01)嗣Y圄51】i HE I-加胡1X 創(chuàng)K【】m J腳】53 t:羽Ll 】KT 1 歸 If【旳【叩】sr1L1rLDJK CEi: Ml )( i X 22 J: 0:;;餌 J( 3I -n Jt Po)L * XrjlK jHKsage: Ddlll* llraifJ匾捉1jFbr He. pr卿 Fl*d rNUM波形分析:這里我只選擇性地選取了鍵盤輸入的對(duì)
10、應(yīng)點(diǎn)陣顯示, 首先鍵盤輸入時(shí)button 信號(hào)為低電平,所以可以從仿真圖中看到button信號(hào)為低電平,且此時(shí)的復(fù)位信 號(hào)無效,為低電平,此時(shí)key輸入信號(hào)有效。在對(duì)應(yīng)的時(shí)鐘時(shí)鐘信號(hào)輸入下,當(dāng)鍵盤輸入信號(hào)key對(duì)應(yīng)相應(yīng)的輸入時(shí),點(diǎn)陣的行列也會(huì)有對(duì)應(yīng)的輸出。由于行的 輸出是掃描信號(hào),所以對(duì)應(yīng)時(shí)鐘輸入,點(diǎn)陣的行信號(hào)在對(duì)應(yīng)的時(shí)鐘分頻下,分別對(duì)應(yīng)一行輸出低電平有效,表示掃描至該行,下一個(gè)時(shí)鐘分頻對(duì)應(yīng)下一行的低電 平輸出。而對(duì)應(yīng)列掃描,根據(jù)key輸入的情況,分別對(duì)應(yīng)列掃描的電平輸出。如圖,例如輸入 do 時(shí),有 lie 11011111, row 01100000。fenpin模塊仿真:爭(zhēng) 臼 E* 里
11、兇甲T AMKrmvrta Dcnaip Toah WF-dowff ND CS L 口 at/攀零越 4*氣聳疏時(shí)彎 叭1 也I u)| 毋 Swdaliwi- sUunWnSuM31M ktU4C driita TlftlEkCR 加eT祕(mì)曲Illrri土和換 IMIM血I14214mSik |E械譽(yù)乓*;略乳VIEEriUX h-4 .M:L_l U U U U L_l U U LIlln n rjirULW-inrutnrtrrirLrLWLWuLnrtnnrLmnRTinrLnrLrTirLmjiRWuLnnrnrLrjuirLuirLinrULnrLrvuirLU1|r)I( 1對(duì)
12、(ii| g |舒35;3|)r;( T| 、;議 |1 T|ht|斜工ClSlyai切l(wèi)i.3XI-.2li11II-.0liisirrelA0”,4】ki-.3ii-.!Ai IAiitVtlu15 LTJ血?jiǎng)h1咄伽伽啊順伽伽血伽mwnnimrmmHfflm_-Lr_rLr_-L-_rLr_rLrLrLr_rLrLrLrLrLr_-L-LrLr_rLLTLr_rLrLrL-1L3L9JJ如圖,對(duì)應(yīng)時(shí)鐘上升沿若有按鍵,則記錄;replay有效后,可以看到index_store 有對(duì)應(yīng)的賦值,表示有效的按鍵信息已經(jīng)被存儲(chǔ)。可以看到根據(jù)手動(dòng)錄入的index-key 情況,對(duì)應(yīng) replay 時(shí)的
13、 index_store輸出分別為 10001,10110,01011Seg7模塊仿真:脣丄也血mJlOSutHeiwi*.的燉SlwlEnd |如圖所示,對(duì)應(yīng)的 cat輸出為時(shí)鐘掃描信號(hào),所著時(shí)鐘變化,cat0,cat1,cat2,cat3,cat4,cat5依次出現(xiàn)低電平,表示對(duì)應(yīng)的選通管有效,而 A,B,C,D,E,F,G,DP則 根據(jù)輸入的key而變,可以看到,對(duì)應(yīng)mi的輸入的時(shí)候,數(shù)碼管A,B,C,D,E,F,G,DP 分別對(duì)應(yīng)1,1,1,1,0,0,1,0,恰好可以顯示數(shù)碼管上的3字樣。四、源程序(要有注釋)electrorga n. vhl-頂層文件library IEEE;us
14、e IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity electrorgan is-作為頂層文件,它包含實(shí)現(xiàn)功能用到的所有端口port ( clk :in std_logic;key:in std_logic_vector(6 downto 0);mode:i n std_logic_vector(1 dow nto 0);cat:out std_logic_vector(5 downto 0);clr:in std_logic;butt on:i n stdo
15、 gic;replay:in std_logic;spkout :out std_logic;store1: in std_logic;Atop:OUT std_logic;Btop:OUT std_logic;Ctop:OUT std_logic;Dtop:OUT std_logic;Etop:OUT std_logic;Ftop:OUT std_logic;Gtop:OUT std_logic;DPtop:OUT std_logic;lietop:out std_logic_vector(7 downto 0); -列 comtop:out std_logic_vector(7 downt
16、o 0);-行 end electrorgan;architecture behave of electrorgan iscomponent autoplay -這里聲明了頂層文件中包含的各模塊 port ( clk: in std_logic;clr:in std_logic;index_auto : out std_logic_vector(4 downto 0); end component;component store is port(index_key : in std_logic_vector(4 downto 0);clk : in std_logic; clr : in st
17、d_logic; store1: in std_logic; replay:in std_logic;index_store : out std_logic_vector(4 downto 0); end component;component fenpin port(clk:in std_logic;tone:in integer range 0 to 100000; buzz:out std_logic); end component;component lattice port(clk:in std_logic;lie:out std_logic_vector(7 downto 0);
18、-列 com:out std_logic_vector(7 downto 0);-行 index_auto : in std_logic_vector(4 downto 0); index_key : in std_logic_vector(4 downto 0); clr:in std_logic;replay:in std_logic; index_store : in std_logic_vector(4 downto 0); button :in std_logic);End component;component tableport(index_auto:in std_logic_v
19、ector(4 downto 0); index_key:in std_logic_vector(4 downto 0); button :in std_logic;clr:in std_logic;replay:in std_logic;index_store : in std_logic_vector(4 downto 0);tone:out integer range 0 to 100000);end component;component keyplayport(key:in std_logic_vector(6 downto 0); mode:in std_logic_vector(
20、1 downto 0); index_key:out std_logic_vector(4 downto 0) );end component;component seg7PORT(mode:in std_logic_vector(1 downto 0); cat:out std_logic_vector(5 downto 0); index_key:IN std_logic_vector(4 downto 0); index_auto:IN std_logic_vector(4 downto 0); replay:in std_logic;index_store : in std_logic
21、_vector(4 downto 0); button :in std_logic;clk:in std_logic;A:OUT std_logic; B:OUT std_logic; C:OUT std_logic; D:OUT std_logic; E:OUT std_logic; F:OUT std_logic; G:OUT std_logic;DP:OUT std_logic );end component;signal index_auto_top :std_logic_vector(4 downto 0); signal index_key_top :std_logic_vecto
22、r(4 downto 0); signal index_store_top :std_logic_vector(4 downto 0); signal tone_top :integer range 0 to 100000;begin-這里聲明了各模塊的端口與頂層端口的映射關(guān)系u1:autoplay port map(clk=clk,clr=clr,index_auto=index_auto_top);u2:fenpin port map(clk=clk,tone=tone_top,buzz=spkout);u3:table port map(replay=replay,index_store
23、=index_store_top,index_auto=index_auto_top,clr= clr,index_key=index_key_top,tone=tone_top,button=button);u4:keyplay port map(key=key,index_key=index_key_top,mode=mode);u5:seg7 port map(replay=replay,index_key=index_key_top,cat=cat,index_store=index_store_ top, clk=clk,button=button,mode=mode,index_a
24、uto=index_auto_top,A=Atop,B= Btop,C=Ctop,D=Dtop,E=Etop,F=Ftop,G=Gtop,DP=DPtop);u6:lattice port map(replay=replay,index_auto=index_auto_top,index_store=index_store_top,clr= clr,index_key=index_key_top,button=button,lie=lietop,com=comtop,clk=clk)Ju7:store port map(index_key=index_key_top,clr=clr,clk=c
25、lk,index_store=index_store_top, store1=store1,replay=replay);end behave;autoplay.vhl- 自動(dòng)播放模塊library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity autoplay isport (clk: in std_logic;clr:in std_logic;-這里聲明了一個(gè)復(fù)位端口index_auto : out std_logic_vector(4
26、 downto 0);end;architecture behave of autoplay issignal count :integer range 0 to 136;- 可根據(jù)樂曲長(zhǎng)度改變signal jiepai: std_logic;signal j: integer range 0 to 1562500;beginjiepai1: process(clk)-分頻產(chǎn)生 16Hz 的節(jié)拍begin if clk event and clk = 1 then if j = 1562500 then j = 0;jiepai = not jiepai; elsej = j+1;end if
27、;end if;end process jiepai1;process(jiepai,clr)begin if(clr=0) then-這里相當(dāng)于一個(gè)計(jì)數(shù)器-可根據(jù)樂曲長(zhǎng)度改變if jiepaievent and jiepai=1 then if count=136 then count=0; else count=count+1; end if;end if;else count index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_au
28、toindex_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_autoindex_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto in
29、dex_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index
30、_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto index_auto ind
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高端實(shí)驗(yàn)室裝修工程及配套服務(wù)合同
- 二零二五年度離婚協(xié)議書:女方放棄撫養(yǎng)費(fèi)及子女探望權(quán)約定
- 2025年度銀行資金監(jiān)管與知識(shí)產(chǎn)權(quán)運(yùn)營(yíng)合同
- 2025年度高級(jí)研發(fā)人員聘用協(xié)議書合同
- 2025年度環(huán)境污染損害賠償協(xié)議書
- 二零二五年度退股風(fēng)險(xiǎn)評(píng)估與管理協(xié)議
- 2025至2031年中國(guó)甲醛采樣儀行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)支路減壓閥行業(yè)投資前景及策略咨詢研究報(bào)告
- 裝修合同范本哪里
- 展覽公司勞務(wù)合同范本
- 壓裂評(píng)價(jià)中常見曲線分析
- (新版)網(wǎng)絡(luò)攻防知識(shí)考試題庫(含答案)
- 2023年湖北省技能高考文化綜合試題及答案
- 自然辯證法概論課件:第一章馬克思主義自然觀
- 廣東粵教版第3冊(cè)上信息技術(shù)課件第5課神奇的變化-制作形狀補(bǔ)間動(dòng)畫(課件)
- 連鎖藥店運(yùn)營(yíng)管理
- (中職)中職生禮儀實(shí)用教材完整版PPT最全教程課件整套教程電子講義(最新)
- 民航旅客運(yùn)輸完整版ppt-全體教學(xué)教程課件最新
- JJF (石化) 007-2018 鉛筆硬度計(jì)校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 《中醫(yī)兒科學(xué)》課件生理病因病理特點(diǎn)
- 迪士尼樂園主題PPT模板
評(píng)論
0/150
提交評(píng)論