AC-Link數字音頻VHDL編/解碼的FPGA設計
提出一種利用FPGA實(shí)現AC-Link數字音頻處理的設計方案.AC-Link音頻編解碼系統以VHDL模塊進(jìn)行設計,經(jīng)過(guò)波形仿真和結果驗證后,將程序下載到FPGA中實(shí)現1這種設計方法可以縮短設計周期,提高設計的可靠性和效率。
引言
數字音頻處理是指為真實(shí)再現聲音的逼真效果而對音頻進(jìn)行的編解碼處理技術(shù),它是寬帶網(wǎng)絡(luò )多媒體、移動(dòng)多媒體通信的關(guān)鍵技術(shù).Audio Codec′97(音頻數字信號編/解碼器)是其中一種用于聲音錄放的技術(shù)標準,簡(jiǎn)稱(chēng)AC′97. AC′97采用雙集成結構,即Digital Controller(數字信號控制器)和Audio Codec(音頻編解碼),使模/數轉換器ADC和數?模轉換器DAC轉換模塊獨立,盡可能降低EMI(電磁干擾)的影響。
利用FPGA,可以實(shí)現復雜的邏輯控制,對大量音頻數據做并行處理.FPGA提供可編程時(shí)鐘發(fā)生器,滿(mǎn)足音視頻處理要求的時(shí)鐘范圍寬、相位抖動(dòng)(Phase Jitter)小的要求,并為系統提供可控延時(shí)。
1 AC-Link音頻編/解碼原理
AC-Link是連接Digital Controller和Audio Codec的5線(xiàn)串行時(shí)分多路I/O接口,固定時(shí)鐘頻率48kHz由串行位時(shí)鐘12.288MHz經(jīng)256分頻而來(lái),支持一個(gè)控制器和最多4個(gè)編碼器. AC-Link只能傳輸48kHz固定取樣率的PCM(脈沖編碼調制)信號,字長(cháng)從16Bit到20Bit,其它取樣率的PCM信號須經(jīng)過(guò)SRC(取樣率轉換)轉換成48kHz。
AC-Link接口時(shí)序如圖1所示,輸入輸出音頻數據和控制寄存器的讀寫(xiě)命令組織在一幀里,一個(gè)輸入或輸出分割成12個(gè)時(shí)隙,每個(gè)時(shí)隙為20位采樣分辨率.控制器把12.288MHz時(shí)鐘256分頻,產(chǎn)生一個(gè)SYNC信號,此信號用于標志一個(gè)輸入(輸出)幀的開(kāi)始。
圖1 雙向AC-Link數據幀及時(shí)隙分配
由圖1可知,每個(gè)輸入(輸出)幀除了有12個(gè)20位的數據/命令(數據/狀態(tài))復用時(shí)隙外,還有一個(gè)特殊的16位的幀首時(shí)隙,此時(shí)隙主要用來(lái)標志此幀是否可用,如果此幀可用,那么此幀中對應時(shí)隙中為有效數據。
如圖2所示,PCM通過(guò)抽樣、量化、編碼三個(gè)步驟將連續變化的模擬信號轉換為數字編碼,PCM編碼是最高保真水平編碼,音質(zhì)好但體積大.AC-Link能夠傳輸48KHz固定取樣率的PCM信號,字長(cháng)可以從16Bit到20Bit,其它取樣率的PCM信號必須先經(jīng)過(guò)SRC(Sample Rate Conversion,取樣率轉換)轉換成48KHz。
圖2 AC-Link音頻編解碼過(guò)程
如果PCM信號的字長(cháng)低于DAC的,那么Controller會(huì )自動(dòng)將PCM信號進(jìn)行移位,使其MSB( Most Significant Bit,最高有效位)對齊,低位補0.如果PCM信號的字長(cháng)高于DAC的,那么必須先通過(guò)Dither(抖動(dòng))降低字長(cháng)后或者直接就經(jīng)過(guò)AC-Link接口傳輸到Codec,如果DAC字長(cháng)不夠AC-Link接口的高,那么它會(huì )自動(dòng)將AC-Link接口超過(guò)字字長(cháng)的LSBs(Least Significant Bit,最低有效位)去掉.DAC輸出的是階梯狀或者是脈沖狀信號,還必須經(jīng)過(guò)LPF(Low Pass Filter,低通濾波器)濾波整形恢復為原來(lái)的音頻信號。
2 FPGA音頻編/解碼系統結構
FPGA音頻編/解碼系統以ACEX1K和AD1881芯片為核心,如圖3所示。
圖3 FPGA音頻編/解碼系統圖
ACEX1K-FPAG有147個(gè)用戶(hù)可用I/O,系統門(mén)數最多257000,邏輯門(mén)100000.內部有4992個(gè)邏輯單元(LE),有12個(gè)嵌入式存儲塊(EAB),即49125位雙口RAM.使用EAB構成的RAM、ROM、雙口RAM和FIFO等結構可大大提高基于查找表(LUT)的算術(shù)運算、數字信號處理性能.在A(yíng)C-Link音頻編解碼系統中,FPGA控制模塊根據后向控制流,為音頻編碼模塊提供多路幀同步信號。
AD1881是A/D、D/A接口芯片,支持AC′97標準接口,實(shí)現全雙工16位立體聲的音頻編?解碼,采樣率7K~48KHz.系統復位完成FPGA 程序加載后,由FPGA的I2C總線(xiàn)模塊對AD1881初始化,初始化結束后等待采集命令.初始化成功后,AD1881實(shí)時(shí)處理模擬音頻信號。
用FPGA實(shí)現AC-Link聲卡的D/A變換功能所需要的資源并不多,用一片ACEX1K100芯片做D/A轉換,只消耗了30%左右的資源,在具體應用中,有時(shí)并不需要校驗位及出錯信號,則占用系統資源更少。
3 AC-Link音頻編/解碼的VHDL設計
FPGA中的AC音頻編/解碼設計是通過(guò)VHDL編程實(shí)現的.VHDL是一種應用非常廣泛的硬件描述語(yǔ)言,它的語(yǔ)言覆蓋面廣,描述能力強;可以描述最抽象的系統級,也可以描述最精確的邏輯級、門(mén)級. AC-Link系統采用結構化VHDL進(jìn)行設計的整個(gè)系統是一個(gè)VHDL語(yǔ)言文件,包括幾個(gè)BLOCK語(yǔ)言.下面分別介紹各模塊實(shí)現的功能。
(1)sreg1.vhd,調用一個(gè)并行輸入、串行輸出的模塊,模塊的核心程序如下:
if(clk’event and clk=‘1’)then —時(shí)鐘下降沿
if(s1=‘0’)then —S1并行輸入允許
tmpreg<=datain;
else
for i in sreg_width-1 down to 1 loop —串行移位輸出
tmpreg(i)<-tmpreg(i-1);
and loop;
tmpreg(0)<=se;
程序中,S1用來(lái)為sreg模塊作為并行輸入允許端.該信號在每個(gè)時(shí)隙的第一個(gè)數據位時(shí)出現,在此時(shí),該時(shí)隙的數據被置入sreg模塊,然后該模塊開(kāi)始串行移位輸出,以后的各個(gè)時(shí)隙也按此過(guò)程工作。
(2)調用并行輸入、串行輸出模塊,設計AC-Link.vhd.AC-Link的D/A轉換控制器向編碼器寫(xiě)數據,然后這些數據D/A轉換成模擬信號,最后經(jīng)功放輸出
程序中對時(shí)隙的分配是采用IF_THEN_ELSEIF_THEN_ELSE_ENDIF語(yǔ)句實(shí)現,當計數器小于16時(shí)是第0時(shí)隙,以后每隔20個(gè)計數為一個(gè)時(shí)隙.使用CASE語(yǔ)句在不同時(shí)隙,輸出賦以相應的數據。
對于A(yíng)C-Link輸入幀,如果控制器想從編碼器讀取數據或狀態(tài),就在bit_clk的上升沿把SYNC置高,編碼器在bit_clk下降沿采樣到 SYNC變化,然后在上升沿開(kāi)始發(fā)送數據.控制器在每個(gè)bit_clk的下降沿采樣數據,同時(shí)SYNC保持16個(gè)bit_clk周期的高電平。
對于A(yíng)C-Link輸出幀,如果控制器要向編碼器輸出數據或命令時(shí),則在bit_clk的上升沿先把SYNC置高,然后在每一個(gè)bit_clk的上升沿發(fā)送一位數據,SYNC與bit_clk的上升沿同步.編碼器在bit_clk的下降沿采樣到SYNC的變化,由此編碼器知道控制器要與它通信,在下一個(gè) bit_clk的下降沿編碼器開(kāi)始采樣數據,此后每一個(gè)bit_clk的下降沿采樣一位數據.控制器發(fā)送數據是在bit_clk的上升沿,而編碼器采樣數據是在bit_clk的下降沿.同時(shí)SYNC也要保持16個(gè)bit_clk周期的高電平。
下列程序用于產(chǎn)生16個(gè)的bit_clk周期的高電平的SYNC信號,SYNC是bit_clk的256分頻,有16個(gè)周期是高電平,其余時(shí)間是低電平。
if(conv_integer(counter)<16)then
sync<=‘1’;
counter:=counter+1;
else
sync<=‘0’;
counter:=counter+1;
endif;
進(jìn)行VHDL設計時(shí),最好各模塊單獨進(jìn)行并及時(shí)仿真驗證,以便盡早發(fā)現問(wèn)題.系統中其它模塊在此不再敘述.
圖4 AC-Link輸出仿真圖
AC-Link接口的仿真圖如圖4所示,實(shí)現了其D/A轉換功能,仿真通過(guò)以后,可將程序下載到FPGA中實(shí)現,同時(shí)直接與通令機連接起來(lái)進(jìn)行調試,并利用計算機進(jìn)行調試獲得成功,計算機的通信軟件可用VB或Delpi等可視化軟件來(lái)編制。
4 結論
AC-Link音頻編/解碼系統的是在FPGA平臺上用VHDL設計的.AC-Link設計采用自頂向下的設計方法,通過(guò)建立VHDL行為模型和進(jìn)行 VHDL行為仿真,可及早發(fā)現設計中潛在的問(wèn)題,縮短設計周期,提高設計的可靠性和效率.實(shí)踐證明,仿真結果和FPGA實(shí)現符合AC-Link控制和編碼要求.
fpga相關(guān)文章:fpga是什么
低通濾波器相關(guān)文章:低通濾波器原理
評論