McBSP中内置了硬件电路支持以μ律或A律格式对数据进行压缩和扩展。
μ律/A律压缩解压编码是CCITT(Consultative Committee for International Telegraph and Telephone,国际电报与电话顾问委员会)最早推出的G.711语音压缩/解压编码的一种格式的主要内容。其中,欧洲和中国等采用A律压缩/解压编码,动态范围为13位;美国和日本等采用μ律压缩/解压编码,动态范围为14位。
为了更好地实现压扩,CPU或DMA控制器与McBSP之间传输的数据应当至少是16位。
μ律和A律格式都是将数据编码为8位的代码单元。由于压缩后或是扩展前的数据总是8位,因此相应的(R/X)WDLEN1/2控制位必须清除为0,以表明是8位的串行数据流。当压扩被使能时,如果帧中任何一个相位的数据单元长度小于8位,数据压扩仍将按照8位长度进行。
当使用压扩时,发送的数据将依照指定的压扩律进行编码,接收的数据会被解码为补码格式。(R/X)CR中的(R/X)COMPAND位控制压扩的使能,并选择所需的格式。
图4-25是DSP进行数据压缩/解压的简单流程,DSP将传输来的压缩后的数据解压成数据进行分析、处理;将处理后的数据按照要求压缩成8位压缩数据格式输出到相应设备,然后对解压后的其他设备读取。
图4-25 数据压缩/解压流程
以LAW16为例,图4-26为μ律(A律)数据解压图。因为G.711的μ律(A律)压缩律只能对14位(13位)数据操作,DSP将压缩的8位数据解压成16位的DSP通用数据格式,其中高14位(13位)为解压后的数据,低2位(3位)补0。这时,DSP将解压后的数据放在缓冲串口的发送寄存器中,只要运行发送指令缓冲口就会将数据发送出去。缓冲串口对接收数据的解压过程和压缩过程完全相反。
图4-26 μ律(A律)数据解压图(www.xing528.com)
对于接收过程,在RBR1中的8位压缩数据被扩展为左对齐的16位数据,保存在DRR1中。注意,当使用压缩扩展时,SPCR1的RJUST位被忽略。RBR中的8位压缩数据被扩展成为一个左对齐的16位数据LAW16后,还可以进一步通过设置SPCR中的RJUST位段将其调整为32位,见表4-33。
表4-33 DDR中扩展数据的对齐
DSP内部的多通道缓冲串口(McBSP)带有硬件实现的μ律(A律)压缩/解压,用户只需要在相应寄存器中中设置就可以了。
在进行A律压缩时,采样后的12位数据,默认其最高位为符号位,压缩时要保持最高位即符号位不变,原数据的后11位要压缩成7位。这7位码由3位段落码和4位段内码组成。具体的压缩变换后的数据根据后11位数据大小决定。具体的编译码表见表4-34。
表4-34 McBSPA律压缩编译码表
压缩后数据的最高位(第7位)表示符号,量阶分别为1、1、2、4、6、8、16、32、64,由压缩后数据的第6位到第4位决定,第3位到第0位是段内码。压缩后数据有一定的失真。有些数据不能表示出来,只能取最接近该数据的压缩值。如图4-27所示为数据压缩编码实例,数据125,压缩后的值为00111111。
图4-27 数据压缩编码实例
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。