基于DSP的AES/EBU音频信号解码方案
摘要:本文详细分析了AES/EBU音频信号的编码、格式结构,结合调频同步广播激励器的设计,提出基于DSP的AES/EBU音频信号解码方案,并给出了实现方案的解码电路和程序流程。
关键词:AES/EBU 编码 解码 DSP 数字调频调制器
一、AES/EBU音频信号的编码
1、AES简介
目前用于专业和广播设备间传输的数字信号通常为AES/EBU格式。AES/EBU专业音频接口协议是音频工程协会和欧洲广播联盟共同制定的标准,它是传输和接收数字音频信号的数字设备接口协议,是专业数字音频系统首要互连方案。
2、AES音频信号的编码
AES/EBU数字音频接口标准使用一个称为双相标识(Biphase mark)的调频(FM)通道编码以调制串行数据,使之无直流(DC-Free)和自同步(Self-clocking)。其波形图如图1所示。
图1 双相标识码
其编码规则是无论码元为“1”或“0”,在每个数据比特周期的开始都有一个电平转换,而且每个码元“1”的中间有一个跳变,为归零码,对于码元“0”,在整个比特周期之内保持电平不变。双相标志码编码的数据流中不会出现两个连续的“1”或“0”。
AES/EBU音频A/D转换的取样频率分别是32kHz、44. 1kHz、48kHz。每次量化采用18比特、20比特或24比特,目前采用较多的是20比特量化,24比特量化可以用于影片记录、CD原版制作。
3、AES音频信号的格式结构
AES/EBU数字音频信号的结构如图2。一个音频样值是一个经周期取样、量化和以2的补码方式数字化表示的信号。每个取样字被格式化成为一帧(frame),1帧的数据在个音频采样周期内被传送出去。一帧包括两子帧,各包含两声道的取样。子帧结构4 bit前同步字,4 bit辅助数据,20bit音频数据样本加lbit音频样本有效位,1 bit用户数据位,1 bit通道状态位和1 bit奇偶校验位共32 bit。192帧一起复用成块(block ),再由块构成AES数字音频流。
图2 AES/EBU音频信号结构图
(1)前同步字
占用4bits,用于音频子帧、帧、块的同步和识别,为了区别于帧内其它数据,不采用双相标志编码。可用X、Y、Z表示它的3种编码组合。其中:
● Z:块的开始标志,也是块中第一帧(帧序号为0)通道A的标志。
● X:块中除第一帧外其它各帧中通道A的标志。
● Y:块的各帧中通道B的标志。
(2)附属数据(AUX)
占用4bits。作用如下:20bits量化时,用作附属数据通道(如用于工作联络);24bits量化时,用作24bits中的低4bits。
(3)音频样值
占用20bits,表示一个声道的音频取样值,具体内容如下:20bits量化时,作为20bits A/D取样值的补码;24bits量化时,作为24bits A/D取样值高20bits的补码。
(4)音频样值有效标志(V)
0:表示该子帧音频数据为可解码的模拟音频。1:表示音频样值有错误发生,该子帧不适合解码。
(5)用户数据(U)
在一个块内有效,每个子帧包含用户数据的1bit,共192bits,24Byte。可将它们用来传送该通道音频信号的附加信息(如用作版权信息)。
(6)通道状态(C)
用以指示该通道的工作状态。在一个块内有效,每个子帧包含用户数据的1bit,共192bits,24Byte。
(7)奇偶校验(P)
奇偶校验位是将子帧中除前同步符以外的其余所有bits组成一个偶校验(偶数个1),用以该子帧中的误码检错。
二、基于DSP的调频立体声激励器AES音频接口解调方案
调频立体声激励器实现从音频输入立体声编码、数据处理直至射频数字调制(DDS方式)输出87~108MHz调频(FM)信号的全数字过程。系统不但具有因建在软件平台(数字处理)之上而带来的灵活性和兼容性,同时更具有因使用DSP技术而带来的高性能指标。系统将输入的AES/EBU数据流解调,然后经采样频率转换器,经预加重、数字滤波、延时等处理后生成数字立体声音频信号。在AES/EBU口输入的信号如果受到干扰,可以通过模拟输入口输入模拟音频信号(可以是复合、单声道、SCA信号),经预加重、数字滤波、延时等处理后生成数字立体声音频信号。
在此基础上我们提出AES信号解调方案如图3所示。
图3 AES解调方案
如图中描述,AES解调的主要由以下几个步骤组成。
1、时钟提取。从AES数据流中提取出原始编码时钟。
2、同步。根据同步时钟,完成块、帧、子帧同步。
3、双相标志码解码。将双相标志码编码的AES数据流解调成原始AES数据流,并放在块缓冲区中。
4、块域信息提取。包括通道状态、用户数据2个部分。它们分布在1个块内的各个子帧中,在块域内有效。
5、帧域信息提取。帧由2个子帧组成,二者采用相同的格式,分别代表左、右两声道,所以提取时过程相同。对于每一个子帧,首先判断音频样值有效标志,它表示该子帧是否适合解码,然后根据奇偶校验位进行子帧中除前同步字以外的奇偶校验,如果校验失败,说明传输过程中该子帧有错误发生。校验通过后即可进行声道音频样值的提取。有以下两种情况:
a) 量化是20bits,则音频样值就是子帧内的20bits音频样值数据;
b) 量化是24bits,则音频样值是由子帧内的20bits作为其高20bits,附属数据的4bits作为其低4bits组成的24bits数据。
2、解调模块硬件设计
AES解调模块完成AES输入信号的解调,DSP的McBSP(多通道缓冲串口)用于实现与AES数字音频输入端的连接。全部解调过程由DSP独立执行,输出结果是左、右声道模拟取样值,以及各种附加信息。取样值供立体声编码模块进行立体声编码时使用,附加信息除用于解调过程的相关控制之外,还供立体声编码模块读取,从而了解声道音频的参数等信息,另外,这些信息还可用于界面显示,供用户参考。
用于AES解调的连接框图如图4所示。
图4 AES解调模块原理图
3、解调模块程序设计
根据AES解调总体实现方案,基于DSP的AES解调程序流程图如下:
详细程序略,下面给出主要函数:
(1)初始化函数:int Initializtion(void)
函数功能说明:初始化DSP芯片,包括中断、定时、串口等内部资源;初始化外围电路,包括与DSP相连的功能芯片参数设置,I/O端口设置;初始化全局变量。
(2)时钟提取函数:long GetClock(void)
函数功能说明:根据输入的经过双相标志码编码的AES信道数据流跳变间隔,提取出原始AES音频数据流编码时钟。返回值表示用DSP机器周期个数表示双相标志码编码时钟周期。
(3)同步过程函数:int synchronize(long clock)
函数功能说明:根据双相标志码编码时钟,在AES音频块范围内实现块、帧、子帧同步。
(4)双相标志码解码函数:int Decode(long clock, Char *buffer)
函数功能说明:在时钟的控制下,对输入的AES信道码流进行双相标志码解码,并将AED音频块大小的数据放于缓冲区内。
(5)通道状态提取函数:int ChannelState(Char* buffer, Char cState)
(6)用户数据提取函数:int UserData(Char* buffer, Char uData)
(7)子帧分析与音频样值提取函数:int ParseData(Char* buffer, Long aesDate)
四、总结
本文详细分析了AES/EBU音频信号的编码、格式结构,结合调频同步广播激励器的设计,提出基于DSP的AES/EBU音频信号解码方案,并给出了实现方案的解码硬件结构设计和关键程序函数,整机测试的效果达到了预期的技术指标,证明了方案设计的合理性。
|