VHDL簡易電子琴設(shè)計_第1頁
VHDL簡易電子琴設(shè)計_第2頁
VHDL簡易電子琴設(shè)計_第3頁
VHDL簡易電子琴設(shè)計_第4頁
VHDL簡易電子琴設(shè)計_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、簡易電子琴的設(shè)計摘要隨著基于CPLDJED徽術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,ED能術(shù)在電子信息、通信、自動控制用計算機等領(lǐng)域的重要性日益突出。作為一個學(xué)電子信息專業(yè)的學(xué)生,我們必須不斷地了解更多的新產(chǎn)品信息,這就更加要求我們對EDM個全面的認(rèn)識。本程序設(shè)計的是簡易電子琴的設(shè)計。采用ED肝為開發(fā)工具,VHD語言為硬件描述語言,MA+PLUSII作為程序運行平臺,所開發(fā)的程序通過調(diào)試運行、波形仿真驗證,初步實現(xiàn)了設(shè)計目標(biāo)。本程序使用的硬件描述語言VHDL可以大大降低了硬件數(shù)字系統(tǒng)設(shè)計的入門級別,讓人感覺就是CS言的近親。通過老師的指導(dǎo)和自己的學(xué)習(xí)完成了預(yù)想的功能。1引言1.1 課程設(shè)計的目的鞏固和

2、運用所學(xué)課程,理論聯(lián)系實際,提高分析、解決計算機技術(shù)實際問題的獨立工作能力,通過對一個簡易的八音符電子琴的設(shè)計,進(jìn)一步加深對計算機原理以及數(shù)字電路應(yīng)用技術(shù)方面的了解與認(rèn)識,進(jìn)一步熟悉數(shù)字電路系統(tǒng)設(shè)計、制作與調(diào)試的方法和步驟。鞏固所學(xué)課堂知識,理論聯(lián)系實際,提高分析、解決計算機技術(shù)實際問題的獨立工作能力。為了進(jìn)一步了解計算機組成原理與系統(tǒng)結(jié)構(gòu),深入學(xué)習(xí)EDAft術(shù),用VHD印言去控制將會使我們對本專業(yè)知識可以更好地掌握。1.2 課程設(shè)計的內(nèi)容(1)設(shè)計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。(2)演奏時可以選擇是手動演奏(由鍵盤輸入)還是自動演奏已存入的樂曲。(3)能夠自動演奏多首樂

3、曲,且每首樂曲可重復(fù)演奏。2開發(fā)工具簡介2.1EDA技術(shù)EDA是電子設(shè)計自動化(ElectronicDesignAutomation)縮寫,是90年代初從CAD(計算機輔助設(shè)計)、CAM(計算機輔助制造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發(fā)展而來的。EDA技術(shù)是以計算機為工具,根據(jù)硬件描述語言HDL(HardwareDescriptionlanguage)完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標(biāo)芯片的適配編譯和編程下載等工作。典型的EDA工具中必須包含兩個特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設(shè)計者在EDA平

4、臺上完成的針對某個系統(tǒng)項目的HDL、原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得我們欲實現(xiàn)功能的描述文件。綜合器在工作前,必須給定所要實現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用一定的方式聯(lián)系起來。也就是說,綜合器是軟件描述與硬件實現(xiàn)的一座橋梁。綜合過程就是將電路的高級語言描述轉(zhuǎn)換低級的、可與目標(biāo)器件FPGA/CPLD相映射的網(wǎng)表文件。適配器的功能是將由綜合器產(chǎn)生的王表文件配置與指定的目標(biāo)器件中,產(chǎn)生最終的下載文件,如JED文件。適配所選定的目標(biāo)器件(FPGA/CPLD芯片)必須屬于在綜合器中已指定的目標(biāo)器件系列。硬件描述語言HDL是相對于

5、一般的計算機軟件語言,如:C、PASCAL而言的。HDL語言使用與設(shè)計硬件電子系統(tǒng)的計算機語言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計者可利用HDL程序來描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實現(xiàn)相應(yīng)邏輯功能的的門級或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。2.2硬件描述語言一VHDLVHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescripti

6、onLanguage,誕生于1982年。1987年底,VHDL®IEEE和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。自IEEE公布了VHDLB標(biāo)準(zhǔn)版本,IEEE-1076(簡稱87版)之后,各ED心司相繼推出了自己的VHD毆計環(huán)境,或宣布自己的設(shè)計工具可以和VHDIS口。此后VHDLS電子設(shè)計領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言。1993年,IEEE對VHDLa行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL勺內(nèi)容,公布了新版本的VHDL即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡稱93版)?,F(xiàn)在,VHDLffiVerilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,

7、又得到眾多ED心司的支持,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,VHDLTVerilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計任務(wù)。VHDL±要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL勺語言形式和描述風(fēng)格與句法是十分類似于一般的計算機高級語言。VHDLB程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個

8、實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHD膝統(tǒng)設(shè)計的基本點。應(yīng)用VHDL!行工程設(shè)計的優(yōu)點是多方面的。(1)與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。(2) VHD用富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進(jìn)行仿真模擬。(3) VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工

9、作才能實現(xiàn)。(4)對于用VHD比成的一個確定的設(shè)計,可以利用EDAT具進(jìn)行邏輯綜合和優(yōu)化,并自動的把VHDLffi述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。(4) VHDL對設(shè)計的描述具有相對獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計實現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨立的設(shè)計。2.3VHDL的設(shè)計流程:(1) 設(shè)計輸入根據(jù)電路設(shè)計所提出的要求,將程序輸入到VHDLS輯器中去編輯。(2) 功能級模擬用VHDL模擬器對編輯后的程序進(jìn)行模擬,如果達(dá)不到設(shè)計要求,則可以重新修改程序,直到通過功能模擬。(3) 邏輯綜合與優(yōu)化將通過功能模擬的程序放到VHDLS譯器中,進(jìn)行邏輯綜合與優(yōu)化。(4) 門級模擬對電路用VHDL

10、仿真器仿真??蓪﹂T級電路的延時、定時狀態(tài)、驅(qū)動能力等進(jìn)行仿真。如不符合要求,可重復(fù)步驟(3),再門級模擬,直到符合要求止。(5) 版圖生成用相應(yīng)的軟件處理后,就可以拿去制版。3設(shè)計過程3.1 設(shè)計規(guī)劃根據(jù)系統(tǒng)設(shè)計要求,系統(tǒng)設(shè)計采用自頂向下的設(shè)計方法,系統(tǒng)的整體組裝設(shè)計原理圖如圖3-1所示,它由樂曲自動演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三部分組成。圖3-1系統(tǒng)的整體組裝設(shè)計原理圖3.2 各模塊的原理及其程序(1)樂曲自動演奏模塊樂曲自動演奏模塊(AUTO.VHD的作用是產(chǎn)生8位發(fā)聲控制輸入信號/當(dāng)進(jìn)行自動演奏時,由存儲在此模塊中的8位二進(jìn)制數(shù)作為發(fā)聲控制輸入,從而自動演奏樂曲。VHDL

11、4;程序(AUTO.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYAUTOISPORT(CLK:INSTD_LOGIC;AUTO:INSTD_LOGIC;CLK2:BUFFERSTD_LOGIC;INDEX2:INSTD_LOGIC_VECTOR(7DOWNTO0);INDEX0:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDAUTO;ARCHITECTUREBEHAVIORALOFAUTOISSIGNALC

12、OUNT0:INTEGERRANGE0TO31;BEGINPULSE0:PROCESS(CLK,AUTO)VARIABLECOUNT:INTEGERRANGE0TO8;BEGINIFAUTO='1'THENCOUNT:=0;CLK2<='0'ELSIF(CLK'EVENTANDCLK='1')THENCOUNT:=COUNT+1;IFCOUNT=4THENCLK2<='1'ELSIFCOUNT=8THENCLK2<='0'COUNT:=0;ENDIF;ENDIF;ENDPROCESS;MU

13、SIC:PROCESS(CLK2)BEGINIF(CLK2'EVENTANDCLK2='1')THENIF(COUNT0=31)THENCOUNT0<=0;ELSECOUNT0<=COUNT0+1;ENDIF;ENDIF;ENDPROCESS;COM1:PROCESS(COUNT0,AUTO,INDEX2)BEGINIFAUTO='0'THENCASECOUNT0ISWHEN0=>INDEX0<="00000100”;-3WHEN1=>INDEX0<="00000100”;-3WHEN2=>I

14、NDEX0<="00000100"-3WHEN3=>INDEX0<="00000100"-3WHEN4=>INDEX0<="00010000”;-5WHEN5=>INDEX0<="00010000”;-5WHEN6=>INDEX0<="00010000”;-5WHEN7=>INDEX0<="00100000”;-6WHEN11=>INDEX0<="00000100"-3WHEN12=>INDEX0<=&qu

15、ot;00000010"-2WHEN13=>INDEX0<="00000010"-2WHEN14=>INDEX0<="00000001"-1WHEN15=>INDEX0<="00000001"-1WHEN16=>INDEX0<="00010000”;-5WHEN17=>INDEX0<="00010000”;-5WHEN18=>INDEX0<="00001000”;-4WHEN19=>INDEX0<="0

16、0001000”;-4WHEN20=>INDEX0<="00001000”;-4WHEN21=>INDEX0<="00000100”;-3WHEN22=>INDEX0<="00000010”;-2WHEN23=>INDEX0<="00000010”;-2WHEN24=>INDEX0<="00010000”;-5WHEN25=>INDEX0<="00010000”;-5WHEN26=>INDEX0<="00001000”;-4WHEN27=&g

17、t;INDEX0<="00001000”;-4WHEN28=>INDEX0<="00000100”;-3WHEN29=>INDEX0<="00000100”;-3WHEN30=>INDEX0<="00000010”;-2WHEN31=>INDEX0<="00000010”;-2WHENOTHERS=>NULL;ENDCASE;ELSEINDEX0<=INDEX2;ENDIF;ENDPROCESS;ENDBEHAVIORAL;(2)音調(diào)發(fā)生模塊音調(diào)發(fā)生模塊的作用是產(chǎn)生音階的分頻預(yù)置

18、值。當(dāng)8位發(fā)聲控制輸入信號中的某一位為高電平時,則對應(yīng)某一音節(jié)的數(shù)值將輸出,該數(shù)值即為該音階的分頻預(yù)置值,分頻預(yù)置值控制數(shù)控分頻模塊進(jìn)行分頻,由此可得到每個音階對應(yīng)的頻率。VHDL®程序(TONE.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYTONEISPORT(INDEX:INSTD_LOGIC_VECTOR(7DOWNTO0);CODE:OUTSTD_LOGIC_VECTOR(6DOWNTO0);HIGH:OU

19、TSTD_LOGIC;TONE0:OUTINTEGERRANGE0TO2047);ENDTONE;ARCHITECTUREARTOFTONEISBEGINSEARCH:PROCESS(INDEX)BEGINCASEINDEXISWHEN"00000001"=>TONE0<=773;CODE<="1001111”;HIGH<='1'WHEN"00000010"=>TONE0<=912;CODE<="0010010”;HIGH<='1'WHEN"00

20、000100"=>TONE0<=1036;CODE<="0000110”;HIGH<='1'WHEN"00001000"=>TONE0<=1116;CODE<="1001100”;HIGH<='1'WHEN"00010000"=>TONE0<=1197;CODE<="0100100”;HIGH<='1'WHEN"00100000"=>TONE0<=1290;CODE

21、<="0100000”;HIGH<='0'WHEN"01000000"=>TONE0<=1372;CODE<="0001111”;HIGH<='0'WHENOTHERS=>TONE0<=2047;CODE<="0000001”;HIGH<='0'ENDCASE;ENDPROCESS;ENDART;(3)數(shù)控分頻模塊數(shù)控分頻模塊是對時基脈沖進(jìn)行分頻,得到與1、2、3、4、5、6、7七個音符相對應(yīng)的頻率。VHDL®程序(FENPIN

22、.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFENPINISPORT(CLK1:INSTD_LOGIC;TONE1:ININTEGERRANGE0TO2047;SPKS:OUTSTD_LOGIC);ENDENTITYFENPIN;ARCHITECTUREARTOFFENPINISSIGNALPRECLK:STD_LOGIC;SIGNALFULLSPKS:STD_LOGIC;BEGINPROCESS(CLK1)VARIABLE

23、COUNT:INTEGERRANGE0TO8;BEGINIF(CLK1'EVENTANDCLK1='1')THENCOUNT:=COUNT+1;IFCOUNT=2THENPRECLK<='1'ELSIFCOUNT=4THENPRECLK<='0'COUNT:=0;ENDIF;ENDIF;ENDPROCESS;PROCESS(PRECLK,TONE1)VARIABLECOUNT11:INTEGERRANGE0TO2047;BEGINIF(PRECLK'EVENTANDPRECLK='1')THENIFCO

24、UNT11<TONE1THENCOUNT11:=COUNT11+1;FULLSPKS<='1'ELSECOUNT11:=0;FULLSPKS<='0'ENDIF;ENDIF;ENDPROCESS;PROCESS(FULLSPKS)VARIABLECOUNT2:STD_LOGIC:='0'BEGINIF(FULLSPKS'EVENTANDFULLSPKS='1')THENCOUNT2:=NOTCOUNT2;IFCOUNT2='1'THENSPKS<='1'ELSESPK

25、S<='0'ENDIF;ENDIF;ENDPROCESS;ENDART;(4)頂層設(shè)計VHDL®程序(DIANZIQIN.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDIANZIQINISPORT(CLK32MHZ:INSTD_LOGIC;HANDTOAUTO:INSTD_LOGIC;CODE1:OUTSTD_LOGIC_VECTOR(6DOWNTO廿錚顯示信號INDEX1:INSTD_LOG

26、IC_VECTOR(7DOWNTO0健盤輸入信號HIGH1:OUTSTD_LOGIC;-高彳氐音節(jié)信號SPKOUT:OUTSTD_LOGIC);f頻信號END;ARCHITECTUREARTOFDIANZIQINISCOMPONENTAUTOPORT(CLK:INSTD_LOGIC;AUTO:INSTD_LOGIC;INDEX2:INSTD_LOGIC_VECTOR(7DOWNTO0);INDEX0:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDCOMPONENT;COMPONENTTONEPORT(INDEX:INSTD_LOGIC_VECTOR(7DOWNTO0);CO

27、DE:OUTSTD_LOGIC_VECTOR(6DOWNTO0);HIGH:OUTSTD_LOGIC;TONE0:OUTINTEGERRANGE0TO2047);ENDCOMPONENT;COMPONENTFENPINPORT(CLK1:INSTD_LOGIC;TONE1:ININTEGERRANGE0TO2047;SPKS:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALTONE2:INTEGERRANGE0TO2047;SIGNALINDX:STD_LOGIC_VECTOR(7DOWNTO0);BEGINU0:AUTOPORTMAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO);U1:TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1);U2:FENPINPORTMAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SP

溫馨提示

  • 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

提交評論