1. 用51單片機處理音頻信號
介紹基於DSP和FPGA的專業級音頻處理開發板資料
介紹基於DSP和FPGA的專業級音頻處理開發板資料
採用TMS320C5409和Cyclone EP1C3T144C8 FPGA、作為主處理器、協處理器。採用24bit高精度音頻專用AD/DA轉換晶元,特別適合應用於電台、錄音室等專業級音頻處理設備開發。
該開發板是面向專業級音頻開發而設計的硬體平台,主要集成了ALTERA的EP1C3,STC的MCU和cirrus公司的高保真度音頻AD/DA,音頻經AD/DA轉換後的信噪比達到90dB,完全達到專業音頻處理的水平。
硬體資源:
◆TMS320VC5409-100:32K字片內RAM,3個McBSP口,8bit的HPI口(支持
16bit非復用模式),支持外部匯流排到內部存儲器的DMA操作,相對5402,5409的資
源要豐富一些,特別在多位高速音頻信號處理中,外部DMA特性能使處理速度提高
很多.
◆EP1C3T144C8: 2910個LE,內置13個獨立的128X36bit的RAM塊,104個可用
I/O口,內置PLL. 大量的管腳和內置RAM(可做各種FIFO)為擴展專業視頻介面提
供了足夠的硬體資源.
◆SST39VF160/1601:2M Bytes flash晶元(1M*16bit),能容納大量程序。 提供從該flash晶元Bootload DSP程序的例子代碼。
◆Bootload SPI EEPROM CSI25256:32K*8bit,支持在線下載DSP程序,不須通過JTAG介面;
◆Sram:ISSI的IS61LV6416;64K*16bit;
◆點陣LCD介面:支持128*64的點陣屏;
◆128*64屏(綠底黑字,藍底白字):61202或K0107晶元組;該屏為用戶另選配
的器件.
◆音頻AD/DA:Crystal公司的專業級音頻AD/DA轉換器,最高支持精度為24bit寬,
采樣率為96K.綜合信噪比超過90db.
◆STC89C58RD+:32K位元組的單片機,為DSP提供良好和低價的用戶介面,同時也為
DSP做高速信號處理節省了寶貴的時間,使DSP不必忙於做用戶介面的工作.
◆預留HPI口,可方便與上位機通訊。
軟體資源:
DSP定時中斷的匯編程序和C語言程序;
McBSP程序;
16位並行介面的Bootload程序和實現過程;
SPI介面通過McBSP2介面Bootload的程序和過程,McBSP0配置程序;
音頻頻譜分析的演示程序:音頻信號經FFT實時轉換後送到LCD顯示的目標文件;
多段均衡器設計過程的介紹;
CSL庫應用的介紹;
應用CSL庫進行DMA配置的介紹;
單片機相應的原代碼,包括在線下載串口bootload程序的代碼;
FPGA的原碼;
該音頻信號處理套件以高速DSP為核心信號處理器,FPGA為信號處理的協處理器,處理包括視音頻時序對齊和部分硬解碼過程,MCU為用戶介面協處理器,實現LCD顯示和鍵盤操作,該開發板是為專業音頻信號處理度身訂做的,同時它可以為靜態圖象處理提供廉價的開發平台.
4層PCB板設計,具有更強的抗干擾性和進一步降低了系統的雜訊.
基於DSP和FPGA的專業音頻處理開發板的特點:
1、 該音頻處理平台的最高處理能力為96kHz,24 bits,綜合信噪比達到90dB,而音頻CD的極限值為44.1 kHz,16 bits,該平台的的音頻處理質量要遠遠優於CD音頻,主要用於專業音頻如電台,電視台等要求較高的場合上的設備開發。
2、 使用cirrus公司性價比較高的音頻處理晶元,差分輸入輸出,有很高的共模抑制能力,AD通道帶片外運放前置驅動,DA通道帶片外運放後級驅動和有源濾波,大大提高了系統的信噪比和驅動能力。
3、 該開發板源於已成功開發且量產的專業化音頻處理設備,我們結合實際的開發流程,使用DSP-FPGA-MCU的設計框架,做到了用DSP做演算法處理,FPGA做邏輯和時序對齊處理,MCU做用戶介面。這種架構能很好的發揮DSP的高速處理性能,而不需耗費資源去管理介面,特別在跟專業視頻AD/DA如SAA7114和SAA7121介面的時候,FPGA做埠操作和時序對齊就遠遠勝於DSP了,用戶利用該系統做視頻處理時,只需在FPGA中提取出有效的視頻數據和開通PING和PONG兩級FIFO,然後在DSP中利用DMA操作將數據PING-PONG進DSP就可以了。而EP1C3為我們提供了足夠的RAM做緩沖FIFO,該功能為實際開發提供了很大方便,我們結合實際對DSP,FPGA, MCU管腳做了適當的擴充。用戶可以方便地擴展自己的PCB板。
4、 該開發板提供了兩種bootload方式,16bit並行flash和8bit串列EEPROM方式,提供整個bootload過程的源代碼和上位機軟體。串列EEPROM bootload方式提供了在線下載功能,通過計算機串口直接實現了DSP 16進制文件的燒寫,省卻了HPI介面bootload時對MCU重新編程的繁瑣操作,同時將HPI口預留給用戶使用。
5、 板上預留了點陣LCD介面,同時提供縱模LCD 12864的MCU驅動程序。音頻處理類的產品一般需要一個比較大的LCD顯示處理前後的音頻數據信息,如輸入音頻的幅度波形,頻譜圖,處理後輸出的幅度波形和頻譜圖等。在做均衡器處理時,通過點陣LCD,就能描出用戶需要的各頻段的增益曲線,這在產品開發中是非常有用的。
6、 該開發板定位在專業音頻處理上,跟一般的DSP學習板有較大的區別,它提供了豐富的片級處理資源。為用戶提供一個良好的二次開發平台,特別適合研究生和公司做音頻或靜態圖像處理項目時使用。
FAQ:
1、該開發套件提供多少東西?
核心板+開關電源+音頻線+串口線+開發資料光碟
2、5409相對於5402性能上有哪些改進和不同?
5409有32K*16bit片內RAM,較5402大1倍,5409有3個McBSP口,較5402多1個McBSP2口,其中McBSP2支持串列EEPROM bootload。支持非復用模式的16bit HPI介面,5402不支持。支持外部匯流排到內部RAM的DMA傳輸,5402不支持。但5409隻有1個時鍾Timer0,5402有2個時鍾。
3、該平台做高速音頻處理的依據是什麼?
我們在該平台上開發過多段音頻均衡器(基於IIR濾波器)和音頻頻譜分析及單峰干擾檢測消除等項目,均取得較好的效果,只要在軟體架構上做適當的配置,如利用FPGA和DSP結合做DMA數據傳輸通道,將DSP從數據傳輸中解放出來,同時關鍵程序使用匯編和C結合的方式編程,就能獲得較高的處理性能。
4、使用串口bootload和使用並口flashrom bootload有什麼優缺點?
我們提供2種方式的bootload方式的目的是讓用戶有更多的選擇,一般在串口資源足夠的話就用串口bootload方式,但5409有個問題是它只支持32k*8bit的串口EEPROM,因而當程序大於32K時就考慮用並口方式了。
5、能不能在FPGA晶元EP1C3中植入NIOS系統?
可以的,但是因為沒有對EP1C3做 flashrom和sdram擴展,如果單純在EPCS1中定製程序的話,程序容量就非常有限了。
詳情請登陸 www.21control.com
=================================================================
這個是51單片機實驗及實踐教程,從入門到精通,附有匯編,C源程序
http://www.51kaifa.com/bbs/viewthread.php?tid=154
注冊一下就可以下載
2. 51單片機實現音頻信號的頻譜顯示 有硬體電路嗎
思路:外來音頻信號經過51單片機,在單片機中進行頻譜分析,並將結果顯示在LCD為外部存儲器的讀寫提供控制信號,既提供讀信號和諧信號,這些可以從時序圖上
3. 如何用51單片機實現音頻信號的頻譜顯示
這個很復雜,需要用到快速傅立葉轉換
4. 如何通過單片機讀取音頻並通過LED顯示出來
用AD,然後自己做演算法,驅動LED就可以了
5. 用51單片機實現音樂播放的原理是什麼
需要寫一段程序。
如果是簡單的音樂,編樂譜推蜂鳴器就可以;如果是mp3/wav之類的音樂,需要晶元自帶解碼模塊,或者使用外部解碼晶元,還需要dac將聲音推出來。
聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機某個口線的「高」電平或低電平,則在該口線上就能產生一定頻率的矩形波,接上喇叭就能發出一定頻率的聲音,若再利用延時程序控制「高」「低」電平的持續時間,就能改變輸出頻率,從而改變音調。要准確奏出一首曲子,必須准確地控制樂曲節奏,即一音符的持續時間。音符的節拍我們可以用定時器T0來控制,送入不同的初值,就可以產生不同的定時時間。便如某歌曲的節奏為每分鍾94拍,即一拍為0.64秒。
6. 用89C51單片機怎麼做出音頻頻譜。然後用一排LED小燈珠顯示。小生剛學單片機。大神們能給相應的程序參考
傅立葉轉換,將采樣到的數據使用LED燈排對應輸出即可。比如8*8的LED排,那麼,你可以使用74HC595來做驅動,采樣128個點。那麼,第一個點開啟第一眾排的LED,然後送數據顯示,然後第二點送第二排的LED,然後送數據顯示,依次類推....來回循環就可以實現啦。
7. 如何把音頻加入單片機
不同的單片機有不同的操作方法。
簡單點的,可能只需要把幾個頻率特徵碼作為數組存儲到存儲器中,供發音系統調用即可。
復雜些的,需要先錄音,再轉換格式,最後翻譯為源碼中的二進制文件。
也有可能單片機本身的系統支持音頻文件,可以在通訊或上位機支持下,直接將文件發送過去即可。
這個過程涉及到對單片機的編程或程序本身的設計,不同單片機、不同操作系統或不同人員有不同的思路。
8. 如何用51單片機實現音頻信號的頻譜顯示(在LCD上顯示)
12864可以作為顯示器件
頻譜分析涉及到FFT,如果你這個不會,那還是再學習學習吧。
簡單原理: 通過快速FFT將音頻分析成多個正弦波的組合,正弦波的頻率就是高音低音,振幅就是音量的大小。
FFT運算量比較大,普通51難以接受,要選用1T的高速51,
聲音信號要通過ad進行采樣,然後將其進行分析,所以要選用一個精度高速度快的ad,一般高檔51中ad可以勝任這個工作
聲音信號在ad采樣之前需要調整成合適振幅的信號
9. 誰能給我介紹下 單片機音樂播放器 是怎麼實現 播放音樂 功能的 其原理 重謝
電路連接很簡單,我用的是P3.0埠接個蜂鳴器就可以了(你可以根據你的具體硬體連接去改下
音樂程序的設計原理和程序如下:
設計原理
⑴ 總體原理:
樂曲中不同的音符,實質就是不同頻率的聲音。通過單片機產生不同的頻率的脈沖信號,經過放大電路,由蜂鳴器放出,就產生了美妙和諧的樂曲。
⑵ 單片機產生不同頻率脈沖信號的原理:
1)要產生音頻脈沖,只要算出某一音頻的脈沖(1/頻率),然後將此周期除以2,即為半周期的時間,利用定時器計時這個半周期的時間,每當計時到後就將輸出脈沖的I/O反相,然後重復計時此半周期的時間再對I/O反相,就可以在I/O腳上得到此頻率的脈沖。
2)利用8051的內部定時器使其工作在計數器模式MODE1下,改變計數值TH0及TL0以產生不同頻率的方法如下:
例如,頻率為523Hz,其周期天/523 S=1912uS,因此只要令計數器計時956uS/1us=956,在每計數956次時就將I/O反接,就可得到中音DO(532Hz)。
計數脈沖值與頻率的關系公式如下:
N=Fi/2/Fr
(N:計數值,Fi:內部計時一次為1uS,故其頻率為1MHz,Fr:要產生的頻率 )
⑶ 其計數值的求法如下:
T=65536-N=65536-Fi/2/Fr
計算舉例:
設K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計數值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1047=65059
⑷ C調個音符頻率與計數值T的對照表如下表所示:
表9.1 C調各音符頻率與計數值T的對照表
音符 頻率(Hz) 簡譜碼T值 音符 頻率(Hz) 簡譜碼T值
低1DO 262 63628 #4FA# 740 64860
#1DO# 277 63731 中5SO 784 64898
低2RE 294 63835 #5SO# 831 64923
#2RE# 311 63928 中6LA 880 64968
低3M 330 64103 #6 932 64994
低4FA 349 64103 中7SI 988 65030
#4FA# 370 64260 高1DO 1046 65058
低5SO 392 64260 #1DO# 1109 65085
#5SO# 415 64331 高2RE 1175 65110
低6LA 440 64400 #2RE# 1245 65124
#6 466 64463 高3M 1318 65157
低7SI 494 64524 高4FA 1397 65178
中1DO 523 64580 #4FA# 1480 65198
⑸ 每個音符使用1個位元組,位元組的高4位代表音符的高低,低4位代表音符的節拍,下表為節拍碼的對照。但如果1拍為0.4秒,1/4拍是0.1秒,只要設定延遲時間就可求得節拍的時間。假設1/4節拍為1DELAY,則1拍應為4DELAY,以此類推。所以只要求得1/4拍的DELAY時間,其餘的節拍就是它的倍數,如下表為1/4和1/8節拍的時間設定。
表9.2 節拍碼對照表
1/4節拍 1/8節拍
節拍碼 節拍數 節拍碼 節拍數
1 1/4拍 1 1/8拍
2 2/4拍 2 1/4拍
3 3/4拍 3 3/8拍
4 1拍 4 1/2拍
5 1又1/4拍 5 5/8拍
6 1又1/2拍 6 3/4拍
7 1又3/4拍 7 7/8拍
8 2拍 8 1拍
9 2又1/4拍 9 1又1/8拍
A 2又1/2拍 A 1又1/4拍
B 2又3/4拍 B 1又3/8拍
C 3拍 C 1又1/2拍
D 3又1/4拍 D 1又5/8拍
E 3又1/2拍 E 1又3/4拍
F 3又3/4拍 F 1又7/8拍
表9.3 各調節拍的時間設定表
1/4節拍 1/8節拍
曲調值 DELAY 曲調值 DELAY
調4/4 125毫秒 調4/4 62毫秒
調3/4 187毫秒 調3/4 94毫秒
調2/4 250毫秒 調2/4 125毫秒
⑹ 建立音樂的步驟:
1)先把吧樂譜的音符找出,然後由上表建立T值表的順序。
2)把T值表建立在TABLE1,構成發音符的計數值放在「TABLE」。
3)簡譜碼(音符)為高位,節拍為(節拍數)為低4位,音符節拍碼放在程序的「TABLE」處。
表9.4 簡譜對應的簡譜碼、T值、節拍數
簡譜 發音 簡譜碼 T值 節拍碼 節拍數
5 低5SO 1 64260 1 1/4拍
6 低6LA 2 64400 2 2/4拍
7 低7SI 3 64524 3 3/4拍
1 中1DO 4 64580 4 1拍
2 中2RE 5 64684 5 1又1/4拍
3 中3M 6 64777 6 1又2/4拍
4 中4FA 7 64820 7 1又3/4拍
5 中5SO 8 64898 8 2拍
6 中6LA 9 64968 9 2又1/4拍
7 中7SI A 65030 A 2又2/4拍
1 高1DO B 65058 B 2又3/4拍
2 高2RE C 65110 C 3拍
3 高3M D 65157 D 3又1/4拍
4 高4FA E 65178 E 3又2/4拍
5 高5SO F 65217 F 3又3/4拍
不發音 0
1/4拍的延遲時間=187毫秒
DELAY: MOV R7,#2
D2: MOV R4,#187
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
RET
4.程序範例
ORG 0000H ;主程序起始地址
SJMP START ;跳至主程序
ORG 000BH ;TIMER0中斷起 始地址
LJMP TIM0 ;跳至TIMER0中斷子程序
START: MOV TMOD,#01H ;設T0在M1
MOV IE,#82H ;中斷使能
START0:MOV 30H,#00 ;取簡譜碼指針
NEXT: MOV A,30H ;簡譜碼指針載入A
MOV DPTR,#TAB ;至TAB取簡譜碼
MOVC A,@A+DPTR ;
MOV R2,A ;渠道的簡譜碼暫存於R2
JZ END0 ;是否渠道00(結束碼)
ANL A,#0FH ;不是,則取低4位(節拍碼)
MOV R5,A ;將節拍碼存入R5
MOV A,R2 ;將取到的簡譜碼再載入A
SWAP A ;高低4位交換
ANL A,#0FH ;取低4位(音符碼)
JNZ SING ;取到的音符碼是否為0?
CLR TR0 ;開始,則不發音
SJMP D1 ;跳至D1
SING: DEC A ;取到的音符碼減1(不含0)
MOV 22H,A ;存入(22H)
RL A ;乘2
MOV DPTR,#TAB1 ;至TABLE1取相對的高位位元組計數值
MOVC A,@A+DPTR ;
MOV TH0,A ;取到的高位位元組存入TH0
MOV 21H,A ;取到的高位位元組存入(21H)
MOV A,22H ;在載入取到的音符碼
RL A ;乘2
INC A ;加1
MOVC A,@A+DPTR ;至TABLE1取相對的低位位元組計數值
MOV TL0,A ;取到的低位位元組存入TL0
MOV 20H,A ;取到的低位位元組存入(20H)
SETB TR0 ;啟動TIMER0
D1: LCALL DELAY ;其本單位時間1/4拍187毫秒
INC 30H ;取簡譜碼指針加1
JMP NEXT ;取下一個簡譜碼
END0: CLR TR0 ;停止TIMER0
JMP START0 ;重復循環
TIM0: PUSH ACC ;將A的值暫存於堆棧
PUSH PSW ;將PSW的值暫存於堆棧
MOV TL0,20H ;重設計數值
MOV TH0,21H ;
CPL P3.0 ;將P3.0位反相,控制蜂鳴器發聲
POP PSW ;至堆棧取回PSW的值
POP ACC ;至堆棧取回A的值
RETI
DELAY:MOV R7,#02
D2: MOV R4,#187
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
RET
TAB1: ;決定節拍
DW 64260,64400,64521,64580
DW 64684,64777,64820,64898
DW 64968,65030,65058,65110
DW 65157,65178,65217
TAB: ;樂曲名稱《梁祝》
DB 02H,82H,62H,52H,48H,02H,52H,32H,22H,18H
DB 83H,91H,72H,62H,51H,61H,71H,61H,83H,61H
DB 81H,51H,61H,71H,61H,51H,46H,82H,32H,52H
DB 22H,42H,16H,21H,41H,18H,0E4H,13H,21H,43H
DB 51H,21H,41H,12H,83H,81H,61H,81H,58H,53H
DB 61H,31H,22H,13H,21H,42H,52H,0E2H,42H,21H
DB 11H,91H,41H,18H,63H,81H,32H,52H,21H,41H,
DB 16H,0E4H,11H,21H,31H,51H,26H,11H,21H,43H
DB 51H,82H,62H,52H,61H,51H,42H,21H,11H,0E4H
DB 44H,21H,41H,21H,11H,0E1H,11H,21H,41H,18H
DB 61H,81H,51H,61H,51H,41H,32H,21H,41H,18H
DB 08H,0H,04H ;曲子最後靜音5拍長的時間
DB 00H ;樂曲結束
END
10. 單片機播放音樂的原理
單片機發音原理:利用定時器或PWM功能,輸出PWM,經一級有源濾波後放大驅動揚聲器。
單片機演奏音樂基本是單音頻率,它不包含相應幅度的諧波頻率,
也就是說不能象電子琴那樣能奏出多種音色的聲音,但一定要弄清楚兩個概念即可,也就是「音調」和「節拍」 。音調 表示一個音符唱多高的頻率。節拍 表示一個音符唱多長的時間
1.要生產音頻脈沖,只要算出某一音頻的周期(1/頻率),然後將此周期除以2,即為半周期的時間.利用定時器計時這個半周期時間,每當計時到後就將輸出脈沖的I/O反相,然後重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。
2. 利用8051的內部定時器使用其工作在計數器模式MODE1下,改變計數值THO及TLO以產生不同頻率的方法。