基于ADSP2187的HDTV音频编码器系统
摘 要 设计并实现了基于ADSP2187处理器的高清晰度电视信源编码系统中的音频编码器。编码器由实时编码和PES打包构成,实时编码完成立体声数字音频的编码压缩,压缩的码流符合ISO/IEC11183-3 MPEG-2标准,同时还接收Dolby AC-3 ES流输入。PES打包完成MPEG-2与AC-3 ES流的PES打包。文中阐述了编码器的工作原理及设计思想,描述了该编码器硬件系统结构,分析了硬件设计的时序。 关键词:音频编码器;ADSP2187;PES打包
MPEG-2的音频标准是在MPEG-1音频标准的基础上扩展而来的。MPEG-1在低数据率传送时会听到与信号相关的编码噪声,而MPEG-2的突出贡献就是在低数据率情况下对音频质量的提高,包括多通道立体声(环绕声)和多语言节目。MPEG-2音频标准已经得到了广泛的应用,其中高清晰度电视中的音频编码就是这些应用中的一个热点。
高清晰度电视的音频子系统包括音频编码/解码功能,介于音频输入/输出和传送子系统之间。一个音频节目源由音频编码器编码并产生音频基本码流(ES 流),传送子系统将ES流数据打成PES(Packetsized elementary system)包,然后再把它进一步打成传送包(Transport packet)。传送子系统将传送包变换成调制信号传输到接收机。本文设计的高清晰度电视信源编码系统中的音频编码器由实时音频编码及PES打包、传送组成。实时编码主要采用MPEG-2算法,编码器系统同时兼顾Dolby AC-3编码。MPEG-2编码算法实时实现的硬件核心采用AD公司的AD-SP2187来完成,AC-3编码则由杜比公司提供的Dolby DP569来完成。因此系统在硬件设计上包括MPEG-2编码电路及PES打包电路,AC-3编码器输出ES流的PES打包电路。
1 音频编码系统设计
高清晰度电视的音频编码器设计,要求能够在主控单元的控制下完成立体声数字音频的编码压缩,压缩的码流符合ISO/IEC11183-3 MPEG-2标准,同时可接收Dolby AC-3 ES流输入,并完成MPEG-2及AC-3 ES码流的PES打包,再将音频PES流输出到复用器。图1是系统的原理结构图。
图1中的数字音频输入和AC-3编码输出的ES流是符合AES/EBU标准的。编码器输出为音频PES流,PES打包使用的PTS(Presentationtime stamps)值由复用器提供。主控单元控制编码器工作。
1.1 音频编码系统的硬件设计
音频编码系统的硬件结构如图2所示。
整个系统由音频接收器CS8412,采样频率转换器AD1890,编码器核心ADSP2187,高速FI-FO,双端口RAM以及EPLD器件组成。其中,CS8412能够自动将输入数字音频的左右声道时钟、音频数据及数据对应的时钟分离。采样频率转换器AD1890接收CS8412分离的时钟和数据,将采样率变换为编码器所需的44.1 kHz或48 kHz。经过采样频率变换后的音频数据在ADSP2187中完成全部的编码。编码完成后的ES流数据输出到EPLD完成PES打包。为了使输出的数据与实时加入的包信息的时序配合上,设计中在二者之间用高速FIFO作为缓存。此外,EPLD除了完成ES流打包成PES流外,还完成硬件系统所有接口逻辑的设计。
主控单元与ADSP2187之间的数据交换,以及初始化时,主控单元向ADSP2187加载编码程序则通过双端口RAM完成。
1.1.1 系统时钟电路的设计
由于输入到音频编码器的采样频率必须锁定于27 MHz的系统时钟,因此必须由27 MHz系统时钟产生出AD1890工作所需的采样频率。同时,DSP系统设计属于高速电路设计,必须考虑信号完整性,延时一致性等问题。在整个系统板上各种信号时钟应尽量由同一时钟源产生,所以AD1890的工作主时钟(16 MHz)也由27 MHz系统时钟变换产生。这里采用由两片锁相环器件AV9110,一片AV9170以及EPLD组成的锁相环系统来实现27 MHz时钟变换,产生16 MHz时钟和48 kHz采样频率。
锁相环系统设计中先采用AV9170将27MHz系统主时钟倍频,倍频后的时钟信号经E-PLD分频产生一个2 MHz的时钟,然后再将这个2 MHz的时钟经另一片AV9170倍频产生32MHz和16 MHz两种时钟。16 MHz时钟就作为AD1890工作的主时钟。32 MHz时钟经过AV9110进行编程产生一个24.576 MHz的频率,该时钟频率通过在EPLD中进行512分频后就可产生AD1890所需的48 kHz采样频率了,同时也保证了该频率与27 MHz时钟频率是同步的。
1.1.2 数据通道的设计
DSP实时编码的同时,还需将已完成的编码作实时的输出。由于DSP的运算速度是MIPS数量级的,这就需要在DSP输出数据与实时打包之间加一级缓存。异步FIFO是实现这一功能的最佳选择。设计中选用IDT7206作为缓存器件。在工作时,DSP不停地向FIFO写入数据,直到FIFO处于半满状态,这时向FIFO发出读信号。读出一个固定长度(如一帧)的数据后,读信号禁止,然后判FIFO半满标志位的状态,直到下一次半满出现后,再向FIFO 发读信号。需要注意,FIFO的读信号周期一定要比DSP写周期快,否则上述工作方式不成立。
1.2 PES打包设计
音频的基本码流在进行传送层处理之前,要被打成可变长度的数据分组(PES),PES包的包头含有一个开始代码前缀和流的标识ID,用于标识该PES所传送的基本流,此外还有包长和许多可选字段,其中最重要的是显示时间(PTS),它在包的音频压缩数据开始时出现。音频编码器的PTS值由系统复用器实时提供,它是33 bit,由27 MHz时钟驱动的计数器,如图3所示。
图3中,DCLK为27 MHz系统时钟,DD为串行PTS值,数据高位在前,DVLD为与PTS值对应的有效信号。27 MHz时钟的上升沿对应数据的稳定期。每次发送33 bit的PTS值,重复频率90kHz。传送系统开始工作后,要用移位寄存器将串行数据转为并行,再用帧同步信号锁存PTS值。PES打包完成后,向复用器系统输出音频帧起始信号,数据时钟以及打包数据。图4是PES打包的系统结构框图。
DSP在编码时,在每一个音频帧前都会加入16位的包头信息,这个包头信息可以作为一帧开始的同步信号。因此在打PES包时,要先搜索这个包头信息以产生 PTS锁存用的帧同步信号。图5为PES打包的时序仿真,采用VHDL编程完成,Altera的MAX7256设计实现。
图5中AD[7..0]值为0xFFFDC400时表示帧同步头的信息,当搜索到这一字串时,在这一数据对应的位置上产生搜头标志信号CN。为了获得实时PTS值,从CN这个标志开始,计数一帧,用计数的进位信号作为帧同步信号AVLD,由于音频的PTS值每次刷新的频率为90 kHz,也就是说音频PTS值的变化相对于系统时钟频率是缓慢的,因此每次打包输出前,用AVLD采样并锁存已经转为并行数据的PTS值是能够保证其实时性的。当AVLD有效后,输出到复用器的数据总线AD[7..0]上则插入总共14 Byte的PES包信息值,包括用AVLD锁存的实时输入的PTS值。为了保证编码输出的音频数据不丢失,在插入PES包信息时,需将FIFO的读信号禁止以使音频数据紧随包信息数据后面,这样一个完整的音频PES包就打包完成了。
2 AC-3编码输出打包设计
AC-3编码输出打包设计原理与MPEG-2的相似,只是在搜索包头时较为复杂一些,因为AC-3编码输出的帧头信息字在一帧数据中并不是唯一的,在搜索包头的同时,需要对帧长计数,如果前后两帧搜索到的信息字之间的帧长是固定的,说明搜索到的是正确的头信息,否则为伪信息字。此外,Dolby编码器DP569的输出是突发(burst)模式,在一帧数据中,有效数据集中于前部,其余的全部为零,具体地说,在输出的一帧中,共有9 830 400个位时钟(bit clock),在这么多的时钟中,仅有25%的时钟是对应AC-3的有效数据。而有效数据中,AC-3编码数据又处于有效数据字(32 bit)的高16位,这就需要除了将有效数据从一帧中提取出来外,还必须将每个有效数据字的低16位去掉。
3 结论
本文讨论了基于ADSP2187处理器的高清晰度电视音频编码器的硬件设计与实现。编码器除了能提供符合ISO/IEC13818-3 MPEG-2音频标准的高质量编码外,还完成了MPEG-2与AC-3 ES流的PES打包设计,对复用器中音视频压缩数据复用的设计作了简化。通过主观测试实验,MPEG-2与AC-3解码后恢复的声音接近听不出音质的损害。该音频编码器现已应用于国家数字电视试验区的HDTV信源编码器设备中。
|