基于ADSP2187的HDTV音頻編碼器系統(tǒng)
關(guān)鍵詞:音頻編碼器;ADSP2187;PES打包
MPEG-2的音頻標(biāo)準(zhǔn)是在MPEG-1音頻標(biāo)準(zhǔn)的基礎(chǔ)上擴展而來的。MPEG-1在低數(shù)據(jù)率傳送時會聽到與信號相關(guān)的編碼噪聲,而MPEG-2的突出貢獻(xiàn)就是在低數(shù)據(jù)率情況下對音頻質(zhì)量的提高,包括多通道立體聲(環(huán)繞聲)和多語言節(jié)目。MPEG-2音頻標(biāo)準(zhǔn)已經(jīng)得到了廣泛的應(yīng)用,其中高清晰度電視中的音頻編碼就是這些應(yīng)用中的一個熱點[1~3]。
高清晰度電視的音頻子系統(tǒng)包括音頻編碼/解碼功能,介于音頻輸入/輸出和傳送子系統(tǒng)之間。一個音頻節(jié)目源由音頻編碼器編碼并產(chǎn)生音頻基本碼流(ES 流),傳送子系統(tǒng)將ES流數(shù)據(jù)打成PES(Packetsized elementary system)包,然后再把它進(jìn)一步打成傳送包(Transport packet)。傳送子系統(tǒng)將傳送包變換成調(diào)制信號傳輸?shù)浇邮諜C。本文設(shè)計的高清晰度電視信源編碼系統(tǒng)中的音頻編碼器由實時音頻編碼及PES打包、傳送組成。實時編碼主要采用MPEG-2算法[4],編碼器系統(tǒng)同時兼顧Dolby AC-3編碼[5,6]。MPEG-2編碼算法實時實現(xiàn)的硬件核心采用AD公司的AD-SP2187來完成[7],AC-3編碼則由杜比公司提供的Dolby DP569來完成。因此系統(tǒng)在硬件設(shè)計上包括MPEG-2編碼電路及PES打包電路,AC-3編碼器輸出ES流的PES打包電路。
1 音頻編碼系統(tǒng)設(shè)計
高清晰度電視的音頻編碼器設(shè)計,要求能夠在主控單元的控制下完成立體聲數(shù)字音頻的編碼壓縮,壓縮的碼流符合ISO/IEC11183-3 MPEG-2標(biāo)準(zhǔn),同時可接收Dolby AC-3 ES流輸入,并完成MPEG-2及AC-3 ES碼流的PES打包,再將音頻PES流輸出到復(fù)用器。圖1是系統(tǒng)的原理結(jié)構(gòu)圖。
圖1中的數(shù)字音頻輸入和AC-3編碼輸出的ES流是符合AES/EBU標(biāo)準(zhǔn)的。編碼器輸出為音頻PES流,PES打包使用的PTS(Presentationtime stamps)值由復(fù)用器提供。主控單元控制編碼器工作。
1.1 音頻編碼系統(tǒng)的硬件設(shè)計
音頻編碼系統(tǒng)的硬件結(jié)構(gòu)如圖2所示。
整個系統(tǒng)由音頻接收器CS8412,采樣頻率轉(zhuǎn)換器AD1890,編碼器核心ADSP2187,高速FI-FO,雙端口RAM以及EPLD器件組成。其中,CS8412能夠自動將輸入數(shù)字音頻的左右聲道時鐘、音頻數(shù)據(jù)及數(shù)據(jù)對應(yīng)的時鐘分離。采樣頻率轉(zhuǎn)換器AD1890接收CS8412分離的時鐘和數(shù)據(jù),將采樣率變換為編碼器所需的44.1 kHz或48 kHz。經(jīng)過采樣頻率變換后的音頻數(shù)據(jù)在ADSP2187中完成全部的編碼。編碼的細(xì)節(jié)見文[4]。編碼完成后的ES流數(shù)據(jù)輸出到EPLD完成PES打包。為了使輸出的數(shù)據(jù)與實時加入的包信息的時序配合上,設(shè)計中在二者之間用高速FIFO作為緩存。此外,EPLD除了完成ES流打包成PES流外,還完成硬件系統(tǒng)所有接口邏輯的設(shè)計。
主控單元與ADSP2187之間的數(shù)據(jù)交換,以及初始化時,主控單元向ADSP2187加載編碼程序則通過雙端口RAM完成。
1.1.1 系統(tǒng)時鐘電路的設(shè)計
由于輸入到音頻編碼器的采樣頻率必須鎖定于27 MHz的系統(tǒng)時鐘,因此必須由27 MHz系統(tǒng)時鐘產(chǎn)生出AD1890工作所需的采樣頻率。同時,DSP系統(tǒng)設(shè)計屬于高速電路設(shè)計,必須考慮信號完整性,延時一致性等問題。在整個系統(tǒng)板上各種信號時鐘應(yīng)盡量由同一時鐘源產(chǎn)生,所以AD1890的工作主時鐘(16 MHz)也由27 MHz系統(tǒng)時鐘變換產(chǎn)生。這里采用由兩片鎖相環(huán)器件AV9110,一片AV9170以及EPLD組成的鎖相環(huán)系統(tǒng)來實現(xiàn)27 MHz時鐘變換,產(chǎn)生16 MHz時鐘和48 kHz采樣頻率。
鎖相環(huán)系統(tǒng)設(shè)計中先采用AV9170將27MHz系統(tǒng)主時鐘倍頻,倍頻后的時鐘信號經(jīng)E-PLD分頻產(chǎn)生一個2 MHz的時鐘,然后再將這個2 MHz的時鐘經(jīng)另一片AV9170倍頻產(chǎn)生32MHz和16 MHz兩種時鐘。16 MHz時鐘就作為AD1890工作的主時鐘。32 MHz時鐘經(jīng)過AV9110進(jìn)行編程產(chǎn)生一個24.576 MHz的頻率,該時鐘頻率通過在EPLD中進(jìn)行512分頻后就可產(chǎn)生AD1890所需的48 kHz采樣頻率了,同時也保證了該頻率與27 MHz時鐘頻率是同步的。
1.1.2 數(shù)據(jù)通道的設(shè)計
DSP實時編碼的同時,還需將已完成的編碼作實時的輸出。由于DSP的運算速度是MIPS數(shù)量級的,這就需要在DSP輸出數(shù)據(jù)與實時打包之間加一級緩存。異步FIFO是實現(xiàn)這一功能的最佳選擇。設(shè)計中選用IDT7206作為緩存器件。在工作時,DSP不停地向FIFO寫入數(shù)據(jù),直到FIFO處于半滿狀態(tài),這時向FIFO發(fā)出讀信號。讀出一個固定長度(如一幀)的數(shù)據(jù)后,讀信號禁止,然后判FIFO半滿標(biāo)志位的狀態(tài),直到下一次半滿出現(xiàn)后,再向FIFO 發(fā)讀信號。需要注意,F(xiàn)IFO的讀信號周期一定要比DSP寫周期快,否則上述工作方式不成立。
1.2 PES打包設(shè)計
音頻的基本碼流在進(jìn)行傳送層處理之前,要被打成可變長度的數(shù)據(jù)分組(PES),PES包的包頭含有一個開始代碼前綴和流的標(biāo)識ID,用于標(biāo)識該PES所傳送的基本流,此外還有包長和許多可選字段,其中最重要的是顯示時間(PTS),它在包的音頻壓縮數(shù)據(jù)開始時出現(xiàn)。音頻編碼器的PTS值由系統(tǒng)復(fù)用器實時提供,它是33 bit,由27 MHz時鐘驅(qū)動的計數(shù)器,如圖3所示。
圖3中,DCLK為27 MHz系統(tǒng)時鐘,DD為串行PTS值,數(shù)據(jù)高位在前,DVLD為與PTS值對應(yīng)的有效信號。27 MHz時鐘的上升沿對應(yīng)數(shù)據(jù)的穩(wěn)定期。每次發(fā)送33 bit的PTS值,重復(fù)頻率90kHz。傳送系統(tǒng)開始工作后,要用移位寄存器將串行數(shù)據(jù)轉(zhuǎn)為并行,再用幀同步信號鎖存PTS值。PES打包完成后,向復(fù)用器系統(tǒng)輸出音頻幀起始信號,數(shù)據(jù)時鐘以及打包數(shù)據(jù)。圖4是PES打包的系統(tǒng)結(jié)構(gòu)框圖。
DSP在編碼時,在每一個音頻幀前都會加入16位的包頭信息,這個包頭信息可以作為一幀開始的同步信號。因此在打PES包時,要先搜索這個包頭信息以產(chǎn)生 PTS鎖存用的幀同步信號。圖5為PES打包的時序仿真,采用VHDL編程完成,Altera的MAX7256設(shè)計實現(xiàn)。
圖5中AD[7..0]值為0xFFFDC400時表示幀同步頭的信息,當(dāng)搜索到這一字串時,在這一數(shù)據(jù)對應(yīng)的位置上產(chǎn)生搜頭標(biāo)志信號CN。為了獲得實時PTS值,從CN這個標(biāo)志開始,計數(shù)一幀,用計數(shù)的進(jìn)位信號作為幀同步信號AVLD,由于音頻的PTS值每次刷新的頻率為90 kHz,也就是說音頻PTS值的變化相對于系統(tǒng)時鐘頻率是緩慢的,因此每次打包輸出前,用AVLD采樣并鎖存已經(jīng)轉(zhuǎn)為并行數(shù)據(jù)的PTS值是能夠保證其實時性的。當(dāng)AVLD有效后,輸出到復(fù)用器的數(shù)據(jù)總線AD[7..0]上則插入總共14 Byte的PES包信息值,包括用AVLD鎖存的實時輸入的PTS值。為了保證編碼輸出的音頻數(shù)據(jù)不丟失,在插入PES包信息時,需將FIFO的讀信號禁止以使音頻數(shù)據(jù)緊隨包信息數(shù)據(jù)后面,這樣一個完整的音頻PES包就打包完成了。
AC-3編碼輸出打包設(shè)計原理與MPEG-2的相似,只是在搜索包頭時較為復(fù)雜一些,因為AC-3編碼輸出的幀頭信息字在一幀數(shù)據(jù)中并不是唯一的,在搜索包頭的同時,需要對幀長計數(shù),如果前后兩幀搜索到的信息字之間的幀長是固定的,說明搜索到的是正確的頭信息,否則為偽信息字。此外,Dolby編碼器DP569的輸出是突發(fā)(burst)模式,在一幀數(shù)據(jù)中,有效數(shù)據(jù)集中于前部,其余的全部為零,具體地說,在輸出的一幀中,共有9 830 400個位時鐘(bit clock),在這么多的時鐘中,僅有25%的時鐘是對應(yīng)AC-3的有效數(shù)據(jù)。而有效數(shù)據(jù)中,AC-3編碼數(shù)據(jù)又處于有效數(shù)據(jù)字(32 bit)的高16位,這就需要除了將有效數(shù)據(jù)從一幀中提取出來外,還必須將每個有效數(shù)據(jù)字的低16位去掉。
3 結(jié) 論
本文討論了基于ADSP2187處理器的高清晰度電視音頻編碼器的硬件設(shè)計與實現(xiàn)。編碼器除了能提供符合ISO/IEC13818-3 MPEG-2音頻標(biāo)準(zhǔn)的高質(zhì)量編碼外,還完成了MPEG-2與AC-3 ES流的PES打包設(shè)計,對復(fù)用器中音視頻壓縮數(shù)據(jù)復(fù)用的設(shè)計作了簡化。通過主觀測試實驗,MPEG-2與AC-3解碼后恢復(fù)的聲音接近聽不出音質(zhì)的損害。該音頻編碼器現(xiàn)已應(yīng)用于國家數(shù)字電視試驗區(qū)的HDTV信源編碼器設(shè)備中。
參考文獻(xiàn)
1 Painter T,Spanias A.Perceptualcoding ofdigitalau-dio[J].Proceedings of the IEEE,2000,88(4):451~504
2 Hoekstra E.Design and implementation ofa DSPbasedMPEG-1 audio encoder[J].IEEE Transactions onConsumer Electronics,1999,45(1):1~35
3 Kim Sung-Youn.A real-time implementation of theMPEG-2 audio encoder[J].IEEE Transactions onConsumer Electronics,1997,43(3):593~597
4 ISO/IEC International Standard 13818-3[S].CodingofMoving Pictures and Associated Audio Information,IS,1995
5 DigitalAudio Compression Standard(AC-3)[S].Unit-ed States Advanced Television System Committee (ATSC),A/52,1995
6 劉曉華.Dolby Digital音頻壓縮技術(shù)的研究和仿真[J].電聲技術(shù),1998,2:2~7
評論