




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、簡易電子琴的設計摘 要 隨著基于CPLD的EDA技術的發(fā)展和應用領域的擴大與深入,EDA技術在電子信息、通信、自動控制用計算機等領域的重要性日益突出。作為一個學電子信息專業(yè)的學生,我們必須不斷地了解更多的新產(chǎn)品信息,這就更加要求我們對EDA有個全面的認識。本程序設計的是簡易電子琴的設計。采用EDA作為開發(fā)工具,VHDL語言為硬件描述語言,MAX + PLUS II作為程序運行平臺,所開發(fā)的程序通過調(diào)試運行、波形仿真驗證,初步實現(xiàn)了設計目標。本程序使用的硬件描述語言VHDL,可以大大降低了硬件數(shù)字系統(tǒng)設計的入門級別,讓人感覺就是C語言的近親。通過老師的指導和自己的學習完成了預想的功能。1 引言1
2、.1 課程設計的目的鞏固和運用所學課程,理論聯(lián)系實際,提高分析、解決計算機技術實際問題的獨立工作能力,通過對一個簡易的八音符電子琴的設計,進一步加深對計算機原理以及數(shù)字電路應用技術方面的了解與認識,進一步熟悉數(shù)字電路系統(tǒng)設計、制作與調(diào)試的方法和步驟。鞏固所學課堂知識,理論聯(lián)系實際,提高分析、解決計算機技術實際問題的獨立工作能力。為了進一步了解計算機組成原理與系統(tǒng)結構,深入學習EDA技術,用VHDL語言去控制將會使我們對本專業(yè)知識可以更好地掌握。1.2 課程設計的內(nèi)容(1)設計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。(2)演奏時可以選擇是手動演奏(由鍵盤輸入)還是自動演奏已存入的樂曲
3、。(3)能夠自動演奏多首樂曲,且每首樂曲可重復演奏。2 開發(fā)工具簡介2.1 EDA技術EDA是電子設計自動化(Electronic Design Automation)縮寫,是90年代初從CAD(計算機輔助設計)、CAM(計算機輔助制造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發(fā)展而來的。EDA技術是以計算機為工具,根據(jù)硬件描述語言HDL( Hardware Description language)完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標芯片的適配編譯和編程下載等工作。典型的EDA工具中必須包含兩個特殊的軟件包,即綜合器和適
4、配器。綜合器的功能就是將設計者在EDA平臺上完成的針對某個系統(tǒng)項目的HDL、原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得我們欲實現(xiàn)功能的描述文件。綜合器在工作前,必須給定所要實現(xiàn)的硬件結構參數(shù),它的功能就是將軟件描述與給定的硬件結構用一定的方式聯(lián)系起來。也就是說,綜合器是軟件描述與硬件實現(xiàn)的一座橋梁。綜合過程就是將電路的高級語言描述轉(zhuǎn)換低級的、可與目標器件FPGA/CPLD相映射的網(wǎng)表文件。適配器的功能是將由綜合器產(chǎn)生的王表文件配置與指定的目標器件中,產(chǎn)生最終的下載文件,如JED文件。適配所選定的目標器件(FPGA/CPLD芯片)必須屬于在綜合器中已指定的
5、目標器件系列。硬件描述語言HDL是相對于一般的計算機軟件語言,如:C、PASCAL而言的。HDL語言使用與設計硬件電子系統(tǒng)的計算機語言,它能描述電子系統(tǒng)的邏輯功能、電路結構和連接方式。設計者可利用HDL程序來描述所希望的電路系統(tǒng),規(guī)定器件結構特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結構,并實現(xiàn)相應邏輯功能的的門級或更底層的結構網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。2.2硬件描述語言VHDLVHDL的英文全名是Very-High-Speed Integrated Cir
6、cuit Hardware Description Language,誕生于1982年。1987年底,VHDL被IEEE和美國國防部確認為標準硬件描述語言 。自IEEE公布了VHDL的標準版本,IEEE-1076(簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設計環(huán)境,或宣布自己的設計工具可以和VHDL接口。此后VHDL在電子設計領域得到了廣泛的接受,并逐步取代了原有的非標準的硬件描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版本,(簡稱93版)。現(xiàn)在,VHDL和Veri
7、log作為IEEE的工業(yè)標準硬件描述語言,又得到眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬件描述語言。有專家認為,在新的世紀中,VHDL于Verilog語言將承擔起大部分的數(shù)字系統(tǒng)設計任務。VHDL主要用于描述數(shù)字系統(tǒng)的結構,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風格與句法是十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完
8、成后,其他的設計就可以直接調(diào)用這個實體。這種將設計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設計的基本點。應用VHDL進行工程設計的優(yōu)點是多方面的。 (1) 與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統(tǒng)設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規(guī)模電子系統(tǒng)的重要保證。 (2) VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設計早期就能查驗設計系統(tǒng)的功能可行性,隨時可對設計進行仿真模擬。 (3) VHDL語句的行為描述能力和程序結構決定了他具有支持大規(guī)模設計的分解和已有設計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效
9、,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。(4)對于用VHDL完成的一個確定的設計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述設計轉(zhuǎn)變成門級網(wǎng)表。 (4) VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結構,也不必管理最終設計實現(xiàn)的目標器件是什么,而進行獨立的設計。2.3 VHDL的設計流程: (1) 設計輸入根據(jù)電路設計所提出的要求,將程序輸入到VHDL編輯器中去編輯。 (2) 功能級模擬用VHDL,模擬器對編輯后的程序進行模擬,如果達不到設計要求,則可以重新修改程序,直到通過功能模擬。 (3) 邏輯綜合與優(yōu)化 將通過功能模擬的程序放到VHDL編譯
10、器中,進行邏輯綜合與優(yōu)化。 (4) 門級模擬對電路用VHDL。仿真器仿真??蓪﹂T級電路的延時、定時狀態(tài)、驅(qū)動能力等進行仿真。如不符合要求,可重復步驟(3),再門級模擬,直到符合要求止。 (5) 版圖生成 用相應的軟件處理后,就可以拿去制版。3 設計過程3.1設計規(guī)劃 根據(jù)系統(tǒng)設計要求,系統(tǒng)設計采用自頂向下的設計方法,系統(tǒng)的整體組裝設計原理圖如圖3-1所示,它由樂曲自動演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三部分組成。圖3-1 系統(tǒng)的整體組裝設計原理圖3.2 各模塊的原理及其程序(1)樂曲自動演奏模塊樂曲自動演奏模塊(AUTO.VHD)的作用是產(chǎn)生8位發(fā)聲控制輸入信號/當進行自動演奏時,由存儲在此
11、模塊中的8位二進制數(shù)作為發(fā)聲控制輸入,從而自動演奏樂曲。VHDL源程序(AUTO.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY AUTO ISPORT ( CLK : IN STD_LOGIC; AUTO : IN STD_LOGIC;CLK2 : BUFFER STD_LOGIC;INDEX2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);INDEX0 : OUT STD_LOGIC_VECT
12、OR(7 DOWNTO 0);END AUTO;ARCHITECTURE BEHAVIORAL OF AUTO ISSIGNAL COUNT0: INTEGER RANGE 0 TO 31;BEGIN PULSE0 :PROCESS(CLK,AUTO)VARIABLE COUNT :INTEGER RANGE 0 TO 8;BEGINIF AUTO ='1' THEN COUNT := 0;CLK2<='0'ELSIF(CLK'EVENT AND CLK ='1')THENCOUNT :=COUNT +1;IF COUNT =4 T
13、HEN CLK2 <='1'ELSIF COUNT =8 THEN CLK2<='0' COUNT:=0;END IF ;END IF ;END PROCESS;MUSIC:PROCESS(CLK2)BEGIN IF (CLK2'EVENT AND CLK2='1')THENIF (COUNT0=31)THEN COUNT0<=0;ELSECOUNT0<=COUNT0+1;END IF ;END IF ;END PROCESS;COM1:PROCESS(COUNT0,AUTO,INDEX2)BEGIN IF AUT
14、O ='0' THEN CASE COUNT0 ISWHEN 0=>INDEX0<="00000100" -3WHEN 1=>INDEX0<="00000100" -3WHEN 2=>INDEX0<="00000100" -3WHEN 3=>INDEX0<="00000100" -3WHEN 4=>INDEX0<="00010000" -5WHEN 5=>INDEX0<="00010000"
15、; -5WHEN 6=>INDEX0<="00010000" -5WHEN 7=>INDEX0<="00100000" -6WHEN 8=>INDEX0<="10000000" -8WHEN 9=>INDEX0<="10000000" -8WHEN 10=>INDEX0<="10000000" -8WHEN 11=>INDEX0<="00000100" -3WHEN 12=>INDEX0<=&
16、quot;00000010" -2WHEN 13=>INDEX0<="00000010" -2WHEN 14=>INDEX0<="00000001" -1WHEN 15=>INDEX0<="00000001" -1WHEN 16=>INDEX0<="00010000" -5WHEN 17=>INDEX0<="00010000" -5WHEN 18=>INDEX0<="00001000" -4WH
17、EN 19=>INDEX0<="00001000" -4WHEN 20=>INDEX0<="00001000" -4WHEN 21=>INDEX0<="00000100" -3WHEN 22=>INDEX0<="00000010" -2WHEN 23=>INDEX0<="00000010" -2WHEN 24=>INDEX0<="00010000" -5WHEN 25=>INDEX0<=&qu
18、ot;00010000" -5WHEN 26=>INDEX0<="00001000" -4WHEN 27=>INDEX0<="00001000" -4WHEN 28=>INDEX0<="00000100" -3WHEN 29=>INDEX0<="00000100" -3WHEN 30=>INDEX0<="00000010" -2WHEN 31=>INDEX0<="00000010" -2 WHE
19、N OTHERS =>NULL;END CASE;ELSE INDEX0<=INDEX2;END IF;END PROCESS;END BEHAVIORAL;(2) 音調(diào)發(fā)生模塊音調(diào)發(fā)生模塊的作用是產(chǎn)生音階的分頻預置值。當8位發(fā)聲控制輸入信號中的某一位為高電平時,則對應某一音節(jié)的數(shù)值將輸出,該數(shù)值即為該音階的分頻預置值,分頻預置值控制數(shù)控分頻模塊進行分頻,由此可得到每個音階對應的頻率。VHDL源程序(TONE.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_
20、LOGIC_UNSIGNED.ALL;ENTITY TONE IS PORT (INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); HIGH: OUT STD_LOGIC; TONE0: OUT INTEGER RANGE 0 TO 2047);END TONE;ARCHITECTURE ART OF TONE IS BEGIN SEARCH : PROCESS(INDEX)BEGINCASE INDEX IS WHEN "00000001"=>TONE0 &l
21、t;=773;CODE<="1001111"HIGH<='1'WHEN "00000010"=>TONE0 <=912;CODE<="0010010"HIGH<='1'WHEN "00000100"=>TONE0 <=1036;CODE<="0000110"HIGH<='1'WHEN "00001000"=>TONE0 <=1116;CODE<=&qu
22、ot;1001100"HIGH<='1'WHEN "00010000"=>TONE0 <=1197;CODE<="0100100"HIGH<='1'WHEN "00100000"=>TONE0 <=1290;CODE<="0100000"HIGH<='0'WHEN "01000000"=>TONE0 <=1372;CODE<="0001111"HI
23、GH<='0'WHEN "10000000"=>TONE0 <=1410;CODE<="0000000"HIGH<='0'WHEN OTHERS =>TONE0<=2047;CODE<="0000001"HIGH<='0' END CASE; END PROCESS;END ART;(3) 數(shù)控分頻模塊數(shù)控分頻模塊是對時基脈沖進行分頻,得到與1、2、3、4、5、6、7七個音符相對應的頻率。VHDL源程序(FENPIN.VHD)LIBR
24、ARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FENPIN IS PORT(CLK1: IN STD_LOGIC; TONE1: IN INTEGER RANGE 0 TO 2047; SPKS: OUT STD_LOGIC);END ENTITY FENPIN;ARCHITECTURE ART OF FENPIN ISSIGNAL PRECLK:STD_LOGIC;SIGNAL FULLSPKS:STD_LOGIC;BEGINPR
25、OCESS(CLK1) VARIABLE COUNT:INTEGER RANGE 0 TO 8;BEGIN IF (CLK1'EVENT AND CLK1='1')THENCOUNT:=COUNT +1;IF COUNT=2 THENPRECLK<='1'ELSIF COUNT =4 THEN PRECLK<='0'COUNT:=0;END IF ;END IF ;END PROCESS;PROCESS(PRECLK,TONE1)VARIABLE COUNT11:INTEGER RANGE 0 TO 2047;BEGIN IF
26、 (PRECLK'EVENT AND PRECLK='1')THENIF COUNT11<TONE1 THEN COUNT11:=COUNT11+1;FULLSPKS<='1'ELSECOUNT11:=0;FULLSPKS<='0'END IF ;END IF ;END PROCESS;PROCESS(FULLSPKS)VARIABLE COUNT2 :STD_LOGIC:='0'BEGIN IF (FULLSPKS'EVENT AND FULLSPKS='1')THEN COUN
27、T2:=NOT COUNT2;IF COUNT2='1'THENSPKS<='1'ELSE SPKS<='0'END IF ;END IF;END PROCESS;END ART;(4) 頂層設計VHDL源程序(DIANZIQIN.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DIANZIQIN ISPORT(CLK32MHZ: IN STD_LOGIC;H
28、ANDTOAUTO:IN STD_LOGIC;CODE1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-音符顯示信號INDEX1: IN STD_LOGIC_VECTOR(7 DOWNTO 0);-鍵盤輸入信號HIGH1: OUT STD_LOGIC;-高低音節(jié)信號SPKOUT: OUT STD_LOGIC);-音頻信號END;ARCHITECTURE ART OF DIANZIQIN ISCOMPONENT AUTOPORT(CLK: IN STD_LOGIC; AUTO: IN STD_LOGIC; INDEX2: IN STD_LOGIC_VECTOR(7 DOW
29、NTO 0); INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;COMPONENT TONEPORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); HIGH: OUT STD_LOGIC; TONE0: OUT INTEGER RANGE 0 TO 2047);END COMPONENT;COMPONENT FENPINPORT(CLK1: IN STD_LOGIC; TONE1:IN INTEGER RANGE 0 TO 2047; SPKS: OUT STD_LOGIC);END COMPONENT;SIGNAL TONE2:INTEGER RANGE 0 TO 2047;SIGNAL INDX:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINU0:AUTOPORTMAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO);U1:TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1);U2:FENPI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關注透析患者心理護理
- 朱熹兒童教育思想體系
- LSD1-IN-42-生命科學試劑-MCE
- JNJ-37822681-生命科學試劑-MCE
- 護理安全年終總結報告
- 護理心內(nèi)科科普
- 隴南市事業(yè)單位招聘筆試真題2024
- 肩袖損傷診斷流程
- 美國學生憲法教育體系解析
- 班級心理健康教育總結報告
- DB50-T 1727.2-2024 零散天然氣橇裝回收安全技術規(guī)程 第2部分:壓縮天然氣
- 店面工程裝修合同書
- DB33T 1149-2018 城鎮(zhèn)供排水有限空間作業(yè)安全規(guī)程
- 反肩關節(jié)置換術的護理
- 內(nèi)蒙古交通集團有限公司社會化招聘考試試卷及答案2022
- 國家開放大學《當代中國政治制度》期末考試題庫
- 智能智能服務系統(tǒng)開發(fā)合同
- 2025屆新高考語文古詩文默寫100題匯編(含答案解析)
- 征信異議申訴合同(2篇)
- 中醫(yī)小兒貼敷培訓課件
- 自殺患者應急預案
評論
0/150
提交評論