當前位置:首頁 » 軟體設計 » 電子琴的設計

電子琴的設計

發布時間: 2020-12-15 15:06:16

『壹』 簡易電子琴設計

^網上的一個
http://blog.sina.com.cn/s/blog_49013b4801009rfc.html~type=v5_one&label=rela_prevarticle

其它問題網路回hi聯系答( ^_^ )

『貳』 簡易電子琴設計

它的原理是:簡單的說就是按鍵觸發信號發給處理器,再由處理器調用音色庫音色通過功放電路輸出或者通過數碼介面進行數字輸出。控制面板上的按鈕來選擇處理器對音色、音量、輸出方式、伴奏的控制。

玩具和簡單的老式電子琴就簡單得多,按鍵做為開關接通內部發聲單元,進行固定頻率的發聲。或者由初級的單片機處理發聲頻率。

電子琴的工作原理一般有FM(調頻)模式和PCM(采樣)模式。

現在常用的電子琴的常見品牌有YANMAHA 和CASIO,海南的樂手比較喜歡使用YAMAHA的產品,因為它的設置比較合理,現場使用非常

方便;音色比較真實,使用效果更佳。

單獨用一具電子琴,就可以現場作出類似一支完整樂隊的效果。所以現在一些演出場合中,比較流行一具電子琴(有些會再加上一具合成器)的單人編制(簡稱單編),或一具電子琴和一把吉他的雙人編制(簡稱雙編)。搞單編需要樂手具備較高的電子琴操作和演奏水平。本版中的「啊方十指琴魔」就是這樣的單編高手之一。搞單編或雙編對電子琴的要求也較高,在YAMAHA的電子琴系列中,一般要PSR 410以上級別的產品才能達到樂手們常說的「能用」的水平。

電振盪樂

以電振盪作為激勵聲源的樂器,稱為電振盪樂器


目前人們能見到的各種電子琴、電子合成器、電子鼓機等都屬於電振盪
樂器。
說明:當演奏者按下鍵盤中的某一琴鍵時,琴鍵下面的電路就將信號傳
送給振盪器
1
和振盪器2,產生相應的音高振盪頻率;手指觸鍵的力度信號
也會同時傳給包絡發生器
1
和包絡發生器2,並通知濾波器和放大器產生相
應的音量及音色的變化;最後,聲音信號通過放大器輸出。圖中低頻振盪器
的作用,是能夠根據演奏者的需要,對所有其它部分——振盪器、濾波器和
放大器——進行調制,從而使合成器能夠發出顫音的效果。

目前,國外生產的電子合成器以及較高檔的電子琴都有MIDI
介面,相互
間可串接使用。目前較流行的使用方法是用一台計算機通過MIDI
介面來控制
所有相關的電子樂器和音響效果發生器,從而能夠方便地產生豐富多彩的音
樂音響效果。

『叄』 電子琴的設計原理

用AT89C51單片機做比較簡單配上按鍵鍵盤,三極體驅動一個喇叭就能實現,下面是我調試過的單片機程序供參考

;DIAN ZI QIN 電子琴
SPK EQU P1.0
FKEY EQU 20H.0
DI EQU 71H
GAO EQU 72H
KEY_NO EQU 73H
NO EQU 74H
TC EQU 75H
OUTBIT EQU 08002H
OUTSEG EQU 08004H
IN EQU 08001H

ORG 0000H
JMP BEGIN
ORG 0BH
JMP TO_INT

BEGIN:
MOV TMOD,#00000000B
MOV IE ,#10000010B
MOV R4,#1
MOV R3,#1
CALL PLAY

MOV R4,#2
MOV R3,#1
CALL PLAY

JMP RUN
JMP $

PLAY:
CALL LOAD_VALUE
CALL SOUND_ON
PL1:
MOV R5,#30
CALL DELAY
DJNZ R3,PL1
CALL SOUND_OFF
MOV R5,#3
CALL DELAY
RET

PLAY_SONG1:
MOV TC,#0
PA0:
MOV DPTR,#SONG1
MOV A,TC
MOVC A,@A+DPTR
MOV R4,A
CJNE A,#0FFH,PA1
RET
PA1:
MOV DPTR,#LEN
MOV A,TC
MOVC A,@A+DPTR
MOV R3,A
CALL PLAY
INC TC
JMP PA0
RET

PLAY_SONG2:
MOV TC,#0
PB0:
MOV DPTR,#SONG2
MOV A,TC
MOVC A,@A+DPTR
MOV R4,A
CJNE A,#0FFH,PB1
RET
PB1:
MOV DPTR,#LEN
MOV A,TC
MOVC A,@A+DPTR
MOV R3,A
CALL PLAY
INC TC
JMP PB0
RET

SOUND_ON:
SETB TR0
RET

SOUND_OFF:
CLR TR0
RET

LOAD_VALUE:
MOV DPTR,#HI_LIST
MOV A,R4
MOVC A,@A+DPTR
MOV GAO,A
MOV DPTR,#LO_LIST
MOV A,R4
MOVC A,@A+DPTR
MOV DI,A
RET

TO_INT:
MOV TL0,DI
MOV TH0,GAO
CPL SPK
RETI

HI_LIST:
DB 0,226,229,232,233,236,238,240
LO_LIST:
DB 0,4,13,10,20,3,8,6

SONG1: DB 1,2,3,4,5,6,7,0FFH
SONG2: DB 7,6,5,4,3,2,1,0FFH
LEN: DB 2,2,2,2,2,2,2,0FFH

DELAY:
MOV R6,#50
D1:MOV R7,#50
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,DELAY
RET

TABLE_DIG:
DB 16H,15H,14H,0FFH
DB 13H,12H,11H,10H
DB 0DH,0CH,09H,0AH
DB 0EH,03H,06H,0FH
DB 08H,02H,05H,0BH
DB 00H,01H,04H,07H

SCAN:
MOV DPTR ,#OUTBIT
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#IN
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET

GET_KEY:
MOV DPTR,#OUTBIT
MOV P2,DPH
MOV R0,#LOW(IN)
MOV R1,#00100000B
MOV R2,#6
KLOOP:
MOV A,R1
CPL A
MOVX @DPTR,A
CPL A
RR A
MOV R1,A
MOVX A,@R0
CPL A
ANL A,#0FH
JNZ GOON1
DJNZ R2,KLOOP
MOV R2,#0FFH
SJMP EXIT
GOON1:
MOV R1,A
MOV A,R2
DEC A
RL A
RL A
MOV R2,A
MOV A,R1
MOV R1,#4
LOOPC:
RRC A
JC EXIT
INC R2
DJNZ R1,LOOPC
EXIT:
MOV A,R2
MOV DPTR,#TABLE_DIG
MOVC A,@A+DPTR
MOV R2,A
MOV KEY_NO,A
RET

SO:
MOV R3,#1
CALL PLAY
RET

SOP:
CJNE A,#1,A1
MOV R4,#1
CALL SO
RET
A1:
CJNE A,#2,A2
MOV R4,#2
CALL SO
RET
A2:
CJNE A,#3,A3
MOV R4,#3
CALL SO
RET
A3:
CJNE A,#4,A4
MOV R4,#4
CALL SO
RET
A4:
CJNE A,#5,A5
MOV R4,#5
CALL SO
RET
A5:
CJNE A,#6,A6
MOV R4,#6
CALL SO
RET
A6:
CJNE A,#7,A7
MOV R4,#7
CALL SO
RET
A7:
CJNE A,#0FH,A8
CALL PLAY_SONG1
RET
A8:
CJNE A,#0BH,A9
CALL PLAY_SONG2
RET
A9:
RET

RUN:
LOOP:
CALL SCAN
JZ LOOP
CALL GET_KEY
MOV A,KEY_NO
CALL SOP
LJMP LOOP
END

『肆』 簡易電子琴設計

它的原理是:簡單的說就是按鍵觸發信號發給處理器,再由處理器調用音色庫音色通過功放電路輸出或者通過數碼介面進行數字輸出。控制面板上的按鈕來選擇處理器對音色、音量、輸出方式、伴奏的控制。

玩具和簡單的老式電子琴就簡單得多,按鍵做為開關接通內部發聲單元,進行固定頻率的發聲。或者由初級的單片機處理發聲頻率。

電子琴的工作原理一般有FM(調頻)模式和PCM(采樣)模式。

現在常用的電子琴的常見品牌有YANMAHA 和CASIO,海南的樂手比較喜歡使用YAMAHA的產品,因為它的設置比較合理,現場使用非常

方便;音色比較真實,使用效果更佳。

單獨用一具電子琴,就可以現場作出類似一支完整樂隊的效果。所以現在一些演出場合中,比較流行一具電子琴(有些會再加上一具合成器)的單人編制(簡稱單編),或一具電子琴和一把吉他的雙人編制(簡稱雙編)。搞單編需要樂手具備較高的電子琴操作和演奏水平。本版中的「啊方十指琴魔」就是這樣的單編高手之一。搞單編或雙編對電子琴的要求也較高,在YAMAHA的電子琴系列中,一般要PSR 410以上級別的產品才能達到樂手們常說的「能用」的水平。

電振盪樂

以電振盪作為激勵聲源的樂器,稱為電振盪樂器


目前人們能見到的各種電子琴、電子合成器、電子鼓機等都屬於電振盪
樂器。
說明:當演奏者按下鍵盤中的某一琴鍵時,琴鍵下面的電路就將信號傳
送給振盪器
1
和振盪器2,產生相應的音高振盪頻率;手指觸鍵的力度信號
也會同時傳給包絡發生器
1
和包絡發生器2,並通知濾波器和放大器產生相
應的音量及音色的變化;最後,聲音信號通過放大器輸出。圖中低頻振盪器
的作用,是能夠根據演奏者的需要,對所有其它部分——振盪器、濾波器和
放大器——進行調制,從而使合成器能夠發出顫音的效果。

目前,國外生產的電子合成器以及較高檔的電子琴都有MIDI
介面,相互
間可串接使用。目前較流行的使用方法是用一台計算機通過MIDI
介面來控制
所有相關的電子樂器和音響效果發生器,從而能夠方便地產生豐富多彩的音
樂音響效果。
不知你用什麼設計,即時單片機,也是個很大的項目,這里說不清

『伍』 基於單片機的電子琴設計

有個抄適襲用的:
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/d025718ab4fa7bdefc1f10b7.html

『陸』 簡易8按鍵電子琴設計實驗

簡易電子琴的設計

摘 要 隨著基於CPLD的EDA技術的發展和應用領域的擴大與深入,EDA技術在電子信息、通信、自動控制用計算機等領域的重要性日益突出。作為一個學電子信息專業的學生,我們必須不斷地了解更多的新產品信息,這就更加要求我們對EDA有個全面的認識。本程序設計的是簡易電子琴的設計。採用EDA作為開發工具,VHDL語言為硬體描述語言,MAX + PLUS II作為程序運行平台,所開發的程序通過調試運行、波形模擬驗證,初步實現了設計目標。本程序使用的硬體描述語言VHDL,可以大大降低了硬體數字系統設計的入門級別,讓人感覺就是C語言的近親。通過老師的指導和自己的學習完成了預想的功能。

關鍵詞 電子琴;課程設計;EDA;VHDL

1 引言

1.1 課程設計的目的
鞏固和運用所學課程,理論聯系實際,提高分析、解決計算機技術實際問題的獨立工作能力,通過對一個簡易的八音符電子琴的設計,進一步加深對計算機原理以及數字電路應用技術方面的了解與認識,進一步熟悉數字電路系統設計、製作與調試的方法和步驟。鞏固所學課堂知識,理論聯系實際,提高分析、解決計算機技術實際問題的獨立工作能力。為了進一步了解計算機組成原理與系統結構,深入學習EDA技術,用VHDL語言去控制將會使我們對本專業知識可以更好地掌握。
1.2 課程設計的內容
(1)設計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。
(2)演奏時可以選擇是手動演奏(由鍵盤輸入)還是自動演奏已存入的樂曲。
(3)能夠自動演奏多首樂曲,且每首樂曲可重復演奏。

2 開發工具簡介

2.1 EDA技術
EDA是電子設計自動化(Electronic Design Automation)縮寫,是90年代初從CAD(計算機輔助設計)、CAM(計算機輔助製造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發展而來的。EDA技術是以計算機為工具,根據硬體描述語言HDL( Hardware Description language)完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優化、布局布線、模擬以及對於特定目標晶元的適配編譯和編程下載等工作。典型的EDA工具中必須包含兩個特殊的軟體包,即綜合器和適配器。綜合器的功能就是將設計者在EDA平台上完成的針對某個系統項目的HDL、原理圖或狀態圖形描述,針對給定的硬體系統組件,進行編譯、優化、轉換和綜合,最終獲得我們欲實現功能的描述文件。綜合器在工作前,必須給定所要實現的硬體結構參數,它的功能就是將軟體描述與給定的硬體結構用一定的方式聯系起來。也就是說,綜合器是軟體描述與硬體實現的一座橋梁。綜合過程就是將電路的高級語言描述轉換低級的、可與目標器件FPGA/CPLD相映射的網表文件。
適配器的功能是將由綜合器產生的王表文件配置與指定的目標器件中,產生最終的下載文件,如JED文件。適配所選定的目標器件(FPGA/CPLD晶元)必須屬於在綜合器中已指定的目標器件系列。
硬體描述語言HDL是相對於一般的計算機軟體語言,如:C、PASCAL而言的。HDL語言使用與設計硬體電子系統的計算機語言,它能描述電子系統的邏輯功能、電路結構和連接方式。設計者可利用HDL程序來描述所希望的電路系統,規定器件結構特徵和電路的行為方式;然後利用綜合器和適配器將此程序編程能控制FPGA和CPLD內部結構,並實現相應邏輯功能的的門級或更底層的結構網表文件或下載文件。目前,就FPGA/CPLD開發來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。
2.2硬體描述語言—VHDL
VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,誕生於1982年。1987年底,VHDL被IEEE和美國國防部確認為標准硬體描述語言 。自IEEE公布了VHDL的標准版本,IEEE-1076(簡稱87版)之後,各EDA公司相繼推出了自己的VHDL設計環境,或宣布自己的設計工具可以和VHDL介面。此後VHDL在電子設計領域得到了廣泛的接受,並逐步取代了原有的非標準的硬體描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統描述能力上擴展VHDL的內容,公布了新版本的VHDL,即IEEE標準的1076-1993版本,(簡稱93版)。現在,VHDL和Verilog作為IEEE的工業標准硬體描述語言,又得到眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬體描述語言。有專家認為,在新的世紀中,VHDL於Verilog語言將承擔起大部分的數字系統設計任務。
VHDL主要用於描述數字系統的結構,行為,功能和介面。除了含有許多具有硬體特徵的語句外,VHDL的語言形式和描述風格與句法是十分類似於一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統)分成外部(或稱可是部分,及埠)和內部(或稱不可視部分),既涉及實體的內部功能和演算法完成部分。在對一個設計實體定義了外部界面後,一旦其內部開發完成後,其他的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統設計的基本點。應用VHDL進行工程設計的優點是多方面的。
(1) 與其他的硬體描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統設計領域最佳的硬體描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。
(2) VHDL豐富的模擬語句和庫函數,使得在任何大系統的設計早期就能查驗設計系統的功能可行性,隨時可對設計進行模擬模擬。
(3) VHDL語句的行為描述能力和程序結構決定了他具有支持大規模設計的分解和已有設計的再利用功能。符合市場需求的大規模系統高效,高速的完成必須有多人甚至多個代發組共同並行工作才能實現。(4)對於用VHDL完成的一個確定的設計,可以利用EDA工具進行邏輯綜合和優化,並自動的把VHDL描述設計轉變成門級網表。
(4) VHDL對設計的描述具有相對獨立性,設計者可以不懂硬體的結構,也不必管理最終設計實現的目標器件是什麼,而進行獨立的設計。
2.3 VHDL的設計流程:
(1) 設計輸入根據電路設計所提出的要求,將程序輸入到VHDL編輯器中去編輯。
(2) 功能級模擬用VHDL,模擬器對編輯後的程序進行模擬,如果達不到設計要求,則可以重新修改程序,直到通過功能模擬。
(3) 邏輯綜合與優化 將通過功能模擬的程序放到VHDL編譯器中,進行邏輯綜合與優化。
(4) 門級模擬對電路用VHDL。模擬器模擬。可對門級電路的延時、定時狀態、驅動能力等進行模擬。如不符合要求,可重復步驟(3),再門級模擬,直到符合要求止。
(5) 版圖生成 用相應的軟體處理後,就可以拿去製版。

設計過程
3.1設計規劃
根據系統設計要求,系統設計採用自頂向下的設計方法,系統的整體組裝設計原理圖如圖3-1所示,它由樂曲自動演奏模塊、音調發生模塊和數控分頻模塊三部分組成。

圖3-1 系統的整體組裝設計原理圖
3.2 各模塊的原理及其程序
(1)樂曲自動演奏模塊
樂曲自動演奏模塊(AUTO.VHD)的作用是產生8位發聲控制輸入信號/當進行自動演奏時,由存儲在此模塊中的8位二進制數作為發聲控制輸入,從而自動演奏樂曲。
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 IS
PORT ( CLK : IN STD_LOGIC;
AUTO : IN STD_LOGIC;
CLK2 : BUFFER STD_LOGIC;
INDEX2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
INDEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END AUTO;
ARCHITECTURE BEHAVIORAL OF AUTO IS
SIGNAL COUNT0: INTEGER RANGE 0 TO 31;
BEGIN
PULSE0 :PROCESS(CLK,AUTO)
VARIABLE COUNT :INTEGER RANGE 0 TO 8;
BEGIN
IF AUTO ='1' THEN
COUNT := 0;CLK2<='0';
ELSIF(CLK'EVENT AND CLK ='1')THEN
COUNT :=COUNT +1;
IF COUNT =4 THEN
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')THEN
IF (COUNT0=31)THEN
COUNT0<=0;
ELSE
COUNT0<=COUNT0+1;
END IF ;
END IF ;
END PROCESS;
COM1:PROCESS(COUNT0,AUTO,INDEX2)
BEGIN
IF AUTO ='0' THEN
CASE COUNT0 IS
WHEN 0=>INDEX0<="00000100"; --3
WHEN 1=>INDEX0<="00000100"; --3
WHEN 2=>INDEX0<="00000100"; --3
WHEN 3=>INDEX0<="00000100"; --3
WHEN 4=>INDEX0<="00010000"; --5
WHEN 5=>INDEX0<="00010000"; --5
WHEN 6=>INDEX0<="00010000"; --5
WHEN 7=>INDEX0<="00100000"; --6
WHEN 8=>INDEX0<="10000000"; --8
WHEN 9=>INDEX0<="10000000"; --8
WHEN 10=>INDEX0<="10000000"; --8
WHEN 11=>INDEX0<="00000100"; --3
WHEN 12=>INDEX0<="00000010"; --2
WHEN 13=>INDEX0<="00000010"; --2
WHEN 14=>INDEX0<="00000001"; --1
WHEN 15=>INDEX0<="00000001"; --1
WHEN 16=>INDEX0<="00010000"; --5
WHEN 17=>INDEX0<="00010000"; --5
WHEN 18=>INDEX0<="00001000"; --4
WHEN 19=>INDEX0<="00001000"; --4
WHEN 20=>INDEX0<="00001000"; --4
WHEN 21=>INDEX0<="00000100"; --3
WHEN 22=>INDEX0<="00000010"; --2
WHEN 23=>INDEX0<="00000010"; --2
WHEN 24=>INDEX0<="00010000"; --5
WHEN 25=>INDEX0<="00010000"; --5
WHEN 26=>INDEX0<="00001000"; --4
WHEN 27=>INDEX0<="00001000"; --4
WHEN 28=>INDEX0<="00000100"; --3
WHEN 29=>INDEX0<="00000100"; --3
WHEN 30=>INDEX0<="00000010"; --2
WHEN 31=>INDEX0<="00000010"; --2
WHEN OTHERS =>NULL;
END CASE;
ELSE INDEX0<=INDEX2;
END IF;
END PROCESS;
END BEHAVIORAL;
(2) 音調發生模塊
音調發生模塊的作用是產生音階的分頻預置值。當8位發聲控制輸入信號中的某一位為高電平時,則對應某一音節的數值將輸出,該數值即為該音階的分頻預置值,分頻預置值控制數控分頻模塊進行分頻,由此可得到每個音階對應的頻率。

VHDL源程序(TONE.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_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)
BEGIN
CASE INDEX IS
WHEN "00000001"=>TONE0 <=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<="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";HIGH<='0';
WHEN "10000000"=>TONE0 <=1410;CODE<="0000000";HIGH<='0';
WHEN OTHERS =>TONE0<=2047;CODE<="0000001";HIGH<='0';
END CASE;
END PROCESS;
END ART;
(3) 數控分頻模塊
數控分頻模塊是對時基脈沖進行分頻,得到與1、2、3、4、5、6、7七個音符相對應的頻率。

VHDL源程序(FENPIN.VHD)
LIBRARY 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 IS
SIGNAL PRECLK:STD_LOGIC;
SIGNAL FULLSPKS:STD_LOGIC;
BEGIN
PROCESS(CLK1)
VARIABLE COUNT:INTEGER RANGE 0 TO 8;
BEGIN
IF (CLK1'EVENT AND CLK1='1')THEN
COUNT:=COUNT +1;
IF COUNT=2 THEN
PRECLK<='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 (PRECLK'EVENT AND PRECLK='1')THEN
IF COUNT11<TONE1 THEN
COUNT11:=COUNT11+1;FULLSPKS<='1';
ELSE
COUNT11:=0;FULLSPKS<='0';
END IF ;
END IF ;
END PROCESS;
PROCESS(FULLSPKS)
VARIABLE COUNT2 :STD_LOGIC:='0';
BEGIN
IF (FULLSPKS'EVENT AND FULLSPKS='1')THEN
COUNT2:=NOT COUNT2;
IF COUNT2='1'THEN
SPKS<='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 IS
PORT(CLK32MHZ: IN STD_LOGIC;
HANDTOAUTO:IN STD_LOGIC;
CODE1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--音符顯示信號
INDEX1: IN STD_LOGIC_VECTOR(7 DOWNTO 0);--鍵盤輸入信號
HIGH1: OUT STD_LOGIC;--高低音節信號
SPKOUT: OUT STD_LOGIC);--音頻信號
END;
ARCHITECTURE ART OF DIANZIQIN IS
COMPONENT AUTO
PORT(CLK: IN STD_LOGIC;
AUTO: IN STD_LOGIC;
INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END COMPONENT;
COMPONENT TONE
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 COMPONENT;
COMPONENT FENPIN
PORT(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);
BEGIN
U0:AUTOPORTMAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO);
U1:TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1);
U2:FENPIN PORT MAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT);
END ART;

4 波形模擬
(1)樂曲自動演奏模塊的模擬(如圖4-1所示)

圖4-1樂曲自動演奏模塊的模擬圖
(2)音調發生模塊的模擬(如圖4-2)

圖4-2 音調發生模塊的模擬圖
(3)數控分頻模塊的模擬(如圖4-3)

圖4-3數控分頻模塊模擬圖
(4)簡易電子琴整個系統的模擬(如圖4-4)

圖4-4簡易電子琴整個系統的模擬圖

5 結束語
經過努力,簡易電子琴的設計基本上完成了。在整個設計過程中,包括前期中期和後期,我都有著許多不同的體會:
1) 這個設計的基本是接觸一門新的語言並加以應用,對於我來說,沒有想到的是入手的速度比我的預料快,在以前編程的基礎上,從接觸到開始動手編程的時間得到了很大的縮短。知識的接收速度在很大的程度上決定了動手的時間。
2) VHDL的編程與C語言的編程有著本質的不同,然而以往形成的舊編程習慣在VHDL編程中依然起著很大的作用。一通百通,不是沒有道理的。對於學習新的知識並予以應用的信心,顯得更足了。
3) VHDL的設計關鍵是電路邏輯設計,而一個程序的關鍵是總體設計。對於硬體設計接觸不多的我們清楚這一點也許不無好處。
4)通過這個程序設計讓我學會一種新的語言,對數字系統結構也有了更進一步的了解和認識,對我以後的學習有很大的幫助。希望其他人在看再做類似設計時有所借鑒。
通過幾天的課程設計,我對資料庫軟體EDA技術、VHDL、等系列知識都有了一定的了解。使用EDA技術開發頁面的能力也有了很大提高。
在整個設計過程中,有很多人對任務的完成給予了重要的支持和幫助。感謝老師給了我本次設計的機會並提供指導;感謝許多同學在我此課程設計遇到問題時給我的幫助使我能夠順利地進行設計的工作;論壇中有很多認識不認識的朋友也都為我的設計提出了很寶貴的建議,同樣在這里感謝他們。

參考文獻
《VHDL與數字電路設計》.盧毅,賴傑.科學出版社
《VHDL語言100例詳解——北京理工大學ASIC研究所》.北京理工大學ASIC研究所.清華大學出版社
《VHDL程序設計》(第二版). 曾繁泰等.清華大學出版社
《VHDL入門與應用》陳雪松,滕立中.人民郵電出版社
《VHDL簡明教程》.王小軍.清華大學出版社

『柒』 基於matlab的數字電子琴設計 要求實現1234567的音樂聲

這個應該參考音頻處理工具箱,模擬這幾個信號

熱點內容
美發店認證 發布:2021-03-16 21:43:38 瀏覽:443
物業糾紛原因 發布:2021-03-16 21:42:46 瀏覽:474
全國著名不孕不育醫院 發布:2021-03-16 21:42:24 瀏覽:679
知名明星確診 發布:2021-03-16 21:42:04 瀏覽:14
ipad大專有用嗎 發布:2021-03-16 21:40:58 瀏覽:670
公務員協議班值得嗎 發布:2021-03-16 21:40:00 瀏覽:21
知名書店品牌 發布:2021-03-16 21:39:09 瀏覽:949
q雷授權碼在哪裡買 發布:2021-03-16 21:38:44 瀏覽:852
圖書天貓轉讓 發布:2021-03-16 21:38:26 瀏覽:707
寶寶水杯品牌 發布:2021-03-16 21:35:56 瀏覽:837