基于FPGA和DSP的音頻采集卡的實(shí)現
摘要:本文介紹了一種基于FPGA和DSP的多通道音頻采集卡的設計和實(shí)現方案,該卡能夠工作在多種采樣率下并可以使用DSP中不同的音頻算法用于滿(mǎn)足不同場(chǎng)合,并通過(guò)PC104接口將處理后的數據上傳至主機。采集卡已應用在船舶航行數據紀錄儀VDR中。
關(guān)鍵詞:FPGA;DSP;PC104;多采樣率;音頻數據壓縮;航行數據記錄儀VDR
0 引言
一個(gè)多通道數字音頻系統必須考慮兩個(gè)問(wèn)題:采集到聲音的質(zhì)量問(wèn)題和最終數字化后的音頻存儲的問(wèn)題。由奈奎斯特定理知,如果要保證把采集到的音頻信號完全無(wú)失真的恢復出來(lái),采樣率就必須至少是需采集音頻信號頻寬的2倍。由于現在大多數音頻CODEC采用了Delta-Sigma Modulator,在保證采樣率合適的情況下,聲音質(zhì)量一般是可以滿(mǎn)足要求的。在船舶航行記錄儀中,音頻的頻寬是150hz-6000hz,因此我們可以采用16khz的采樣率和16位的量化位數。
按照這樣的采樣率,單路的音頻碼率為256kbps,24小時(shí)音頻的數據量就高達2.76GB。為了減少最終存儲器的存儲空間,需要對原始的音頻數據進(jìn)行壓縮處理。一般來(lái)說(shuō)有損壓縮比無(wú)損壓縮的壓縮比要高的多,但是同時(shí)會(huì )造成音質(zhì)的下降。系統設計時(shí)應該進(jìn)行適當的平衡。
本文設計的基于FPGA和DSP的多通道音頻采集卡,采用Altera公司的Cyclone系列FPGA簡(jiǎn)化邏輯控制和提高硬件速度;采用TI公司的TMS320VC 5416實(shí)現音頻壓縮算法,在滿(mǎn)足了音頻性能指標的同時(shí)減少了最終的音頻數據量,滿(mǎn)足了系統的設計要求。
1 系統硬件結構
1.1主要芯片選型
(1) 音頻CODEC芯片PCM3008
在音頻CODEC芯片的選型上采用了Texas Instruments公司的PCM3008。這款音頻CODEC芯片采用了16bit的△-∑ADC和DAC。其中立體聲ADC具有單端電壓輸入,內置抗混疊濾波器。優(yōu)異的性能還表現在其ADC的總諧波失真加噪聲低至-84dB,信噪比高達88dB,動(dòng)態(tài)范圍至88dB,其內置的1/64 Decimation數字濾波器使得信號在通帶內波動(dòng)僅有0.05dB,阻帶衰減可至-65dB。低壓工作,低功耗。其采樣率為8khz-48khz可選。數據傳輸為同步串口方式,操作方便。
(2)FPGA芯片EP1C6Q240
FPGA采用Altera公司的Cyclone系列的 EP1C6Q240實(shí)現各器件的接口控制。Cyclone系列的FPGA是Altera公司針對低成本高性能的應用而推出的,具有很高的性?xún)r(jià)比。EP1C6Q240的最大可用IO數量185;片內92Kbit的RAM可以配為單雙口RAM,ROM,FIFO等各式存儲模塊;兩個(gè)高精度鎖相環(huán),方便地為片內的各個(gè)模塊提供所需時(shí)鐘;5980個(gè)LE(邏輯單元),為接口電路的實(shí)現提供豐富的邏輯資源。Altera公司的QuartusⅡ集成開(kāi)發(fā)環(huán)境簡(jiǎn)便易用,內含大量IP核,其內嵌的Signal TapⅡ邏輯分析儀更是為用戶(hù)的調試提供了很大方便。
(3)DSP芯片TMS320VC5416
DSP芯片采用TI公司的TMS320VC5416。TMS320VC5416是TI公司5000系列中高性能低功耗的定點(diǎn)DSP,它建立在C54x DSP核基礎上。TMS320VC5416是一款16位定點(diǎn)高性能數字信號處理器, 其主要特性有: 速率最高達160MIPS; 3 條16位數據存儲器總線(xiàn)和1條程序存儲器總線(xiàn); 1 個(gè)40位桶形移位器和2 個(gè)40位累加器; 1 個(gè)1717乘法器和1 個(gè)40位專(zhuān)用加法器; 最大8M 16位的擴展尋址空間, 內置128 k 16位的RAM 和16 k 16位的ROM; 3 個(gè)多通道緩沖串口(McBSP);其豐富的外設和強大的運算能力,使得TMS320VC5416可以進(jìn)行實(shí)時(shí)的多路音頻處理。在壓縮的實(shí)現上,使用通用DSP芯片TMS320VC5416與使用專(zhuān)用的硬件壓縮芯片相比,不僅可以節約成本,還可以方便地實(shí)現系統的升級和靈活的配置。
圖1
1.2 系統設計思路
硬件結構設計如圖1所示。多路音頻信號首先通過(guò)調理部分,進(jìn)入音頻CODEC PCM3008,通過(guò)BCK,LRCK,DOUT三根信號線(xiàn)將音頻數據送入DSP的 RAM內,DSP會(huì )按照一定的順序將一幀音頻數據整理好放在一個(gè)數據緩存里,并對其中的每路音頻數據依次調用音頻壓縮算法,在下一幀音頻數據到達該緩存區前將數據通過(guò)FPGA中的SRAM控制器發(fā)送到SRAM中,并告知PC104主機采集過(guò)程完畢。PC104主機通過(guò)FPGA內的PC104接口模塊,將緩存SRAM中的數據讀取出來(lái)。
2 FPGA的功能模塊設計
FPGA的設計采用模塊化的設計思想。主要模塊按功能劃分如圖2所示。SRAM控制器采用了乒乓機制,一片處于讀數據的狀態(tài),另一片處于寫(xiě)數據的狀態(tài),每15秒鐘在PC104主機的控制下切換一次。這種操作方式時(shí)序設計簡(jiǎn)潔可靠,易于做到音頻數據連續操作。收到PC104主機發(fā)出的切換命令后,待兩片SRAM都處于空閑的時(shí)候,完成兩片SRAM的讀寫(xiě)切換。切換的同時(shí),SRAM的讀寫(xiě)的地址都會(huì )復位,而且會(huì )保存剛才15秒內的數據量信息,保證每個(gè)15秒讀和寫(xiě)都是從零地址開(kāi)始的,同時(shí)也方便讀取數據。切換成功后,給出數據就緒的信號,指示主機可以讀取數據。PC104接口模塊負責采集卡與上位機的通訊和數據傳輸。
完成兩片SRAM的讀寫(xiě)切換。切換的同時(shí),SRAM的讀寫(xiě)的地址都會(huì )復位,而且會(huì )保存剛才15內的數據量信息,保證每個(gè)15秒讀和寫(xiě)都是從零地址開(kāi)始的,同時(shí)也方便讀取數據。切換成功后,給出數據就緒的信號,指示主機可以讀取數據。PC104接口模塊負責采集卡與上位機的通訊和數據傳輸。
圖2
3 DSP硬件和軟件設計
3.1 DSP的硬件設計
DSP采用McBSP與音頻CODEC通信,系統框圖(雙路音頻接收框圖)如圖3所示,McBSP依靠三個(gè)信號實(shí)現接收數據:數據線(xiàn)DR、幀同步線(xiàn)FSR和移位時(shí)鐘線(xiàn)CLKR。DR引腳完成從音頻CODEC中接收音頻數據,由CLKR、FSR實(shí)現時(shí)鐘和幀同步的控制。接收數據時(shí),來(lái)自DR引腳的數據在FSR和CLKR作用下,從數據寄存器DRR中讀出數據。CLKR、FSR既可以由內部采樣率發(fā)生器產(chǎn)生,也可以由外部設備驅動(dòng)。該音頻系統中,CLKR、FSR信號均來(lái)自于FPGA。
為了減輕CPU負擔,音頻數據的傳遞采用了DMA機制。 TMS320VC5416有6個(gè)可獨立編程的DMA通道,每個(gè)DMA通道受各自的5個(gè)16位寄存器控制:源地址寄存器DMSRC、目的地址寄存器DMDST、單元計數寄存器DMCTR、同步事件和幀計數寄存器DMSFC、發(fā)送模式控制寄存器DMMCR。
通過(guò)設置DMA1通道與McBSP1通道結合來(lái)讀取PCM3008轉換完的數據為例:選擇McBSP1通道的接收寄存器DRR11(41h)為DMA傳送數據的首地址,并選擇源地址工作在訪(fǎng)問(wèn)后不調整方式,選擇DMA通道同步事件McBSP1接收事件為DMA同步事件,來(lái)實(shí)現DMA和McBSP的結合。PCM3008轉換完的數據按McBSP1的設置被送到TMS320VC5416內部接收寄存器DRR11中,再由DMA將DRR11中的數讀到指定數據存儲區來(lái)完成數據采集。DMA在傳送外部來(lái)的數據時(shí)不會(huì )影響CPU的正常運行,當DMA采集完一組規定個(gè)數的數據后產(chǎn)生一個(gè)DMA中斷事件中斷CPU,來(lái)通知CPU對其進(jìn)行相應的處理,此時(shí)DMA可以按照設定繼續采集下一組數據,實(shí)現了數據采集與CPU處理的并行操作。
圖3
3.2 軟件設計流程
程序流程如圖4所示,系統上電后首先初始化CPU,McBSP,DMA寄存器,然后打開(kāi)中斷,當所有DMA的傳輸完成后,給出一個(gè)狀態(tài)標志,通知CPU音頻數據準備好,CPU將原始的音頻數據集中在一個(gè)緩存中并開(kāi)始調用音頻處理算法依次處理每路音頻數據,并將處理后的音頻數據通過(guò)總線(xiàn)發(fā)送出去。然后繼續等待處理下一幀音頻數據,周而復始。
圖4
3.3 音頻壓縮算法
由于該系統音頻所要求的信號頻率的范圍是150hz-6000hz,因此必須采用一種寬頻音頻算法,我們設計了一種寬帶語(yǔ)音編碼。碼率24kbps~64Kbps可變。其主要參數如表1:表1 音頻編碼的主要參數
參數 | 數值 |
音頻采樣率 | 16Khz |
比特率 | 24Kbps~64Kbps |
音頻帶寬 | 50Hz-7Khz |
音頻幀長(cháng) | 20ms |
算法延遲 | 40ms |
RAM(定點(diǎn)) | <7.5KB |
ROM | ~20KB |
MI/s | ~15 |
5 結論
本文設計的多通道音頻采集卡可以實(shí)現8路麥克風(fēng)信號,2路VHF(甚高頻)信號的采集與處理。24小時(shí)生成的數據量不足1.6GB,并且聲音質(zhì)量滿(mǎn)足IEC 61996-2中關(guān)于音頻要求的指標,該多通道音頻采集卡已經(jīng)成功地應用到船載航行數據記錄儀中,并且通過(guò)了中國船級社(CCS)的檢驗,裝配該多通道音頻采集卡的VDR系統已經(jīng)投入實(shí)用。
本文作者創(chuàng )新點(diǎn):采用了自主的音頻編碼算法設計,并用DSP芯片實(shí)現,在數據存儲和讀取上采用了巧妙的乒乓設計。
參考文獻:
[1]邱效祝, 李志宏, 喻方平; 船舶航行記錄儀試驗測試系統設計,船海工程 , 2006,05。
[2] 安穎,劉麗娜;基于DSP的高速信號采集與處理系統的設計,微計算機信息,2005,01。
[3] 喻方平; 船載航行數據記錄儀(VDR)研究設計,中國航海,2002,02。
[4] 常勇,丘效祝;船載航行數據記錄儀系統串行總線(xiàn)接口設計,中國水運,2004.4。
評論