2.3 与AMBE2000相比较
与同类竞争产品语音压缩编解码器件AMBE2000相比CMX638具有以下特点:采用RALCWI算法,速度快,质量好且结构简单;片内集成增益放大器,A/D和D/A转换器,低通滤波器,能够直接处理模拟信号,提高信噪比;可选用外部语音CODEC,具有灵活性;压缩速率虽无AMBE2000的选项多,但配合压缩包时间长度和FEC功能,可应用于DMR TDMA和DMR FDMA及其他场合;封装引脚数少,易于使用和布线,且成本低。表1列出CMX638与AMBE2000的异同点。
3 CMX638工作原理
3.1 编解码过程
3.1.1 不带FEC的简单帧格式编解码
CMX638提供简单的编解码数据帧格式,其压缩速率包括2 050 b/s,2 400 b/s,2 750 b/s,此过程不带FEC,STD和DTMF功能。CMX638每隔20 ms采集160个16位数据(A/D转换器的采样率为8 kHz),当第一个20 ms结束后,开始编码运算,由于信号的异同会产生不同抖动延时,主机在40 ms的时刻读取第一帧数据。以后每隔20 ms操作一次,形成流水线作业。在解码过程中,在0 ms时刻主机向CMX638输入一帧数据后,CMX638开始解码运算,与编码相似也会出现算法抖动延时,第一个样本的输出时刻由内部寄存器IDD决定,其延时应确保输出连续有效的数据。图2为CMX638简单帧格式编解码过程。
3.1.2 带FEC的复杂帧格式编解码
CMX638可提供带前向纠错的编解码数据帧格式,其数据包长度为60 ms,包括3帧数据,其压缩速率为3 600 b/s。CMX638在0时刻开始采样,每隔20 ms进行编码运算,会出现抖动延时,每隔60 ms插入一次FEC编码(图3黑色部分),在80 ms时刻一个数据包稳定有效,主机读出数据,以后每隔60 ms操作一次。在解码过程中,主机向CMX638输入数据包后,开始对每一帧数据解码运算,并会出现抖动延时,设置适当的内部寄存器IDD,可在延时后输出连续有效的数据。图3是带FEC的复发帧格式编解码过程,其数据包压缩时间为60 ms。
3.2 数据帧格式
CMX638编码后输出的数据帧格式较简单,无帧头和其他控制标志信息,直接输出有效数据。当压缩速率为2 050b/s时,每隔20 ms产生一帧数据,有效数据位为41 bit,占用6字节,主机必须以字节为单位与CMX638交换数据,所以应该输入/输出6字节,其中最高字节先进先出,7个无效比特位不影响编解码。当压缩速率为2 400 b/s时,其工作原理与2 050 b/s压缩速率相同,有效数据为48 bit,恰好占用6字节,无无效比特位。当压缩速率为2 750 b/s,有效数据为55bit,占用7字节,1个无效比特位,必须输入/输出7字节。当压缩速率为3 600 b/s,带FEC功能,每隔60 ms产生包括3帧的数据包,有效数据为216 bit,采用硬比特格式,占用27字节。而采用软比特格式时,则占用108字节。
3.3 主机与片外CODEC接口
主机通过C-BUS串行接口与CMX638交换数据。写操作时,CSN为低,先写入要访问的寄存器地址,再写入有效数据,以字节为单位,结束时CSN拉高;读操作时,先写入地址,接着读取数据。在CLK上升沿采样,最大时钟频率为5 MHz;每两次CSN操作应至少相隔1μs。
当CMX638选用外部CODEC时,利用SSP接口与外部CODEC交换数据。当STRB同步脉冲到达,如果是写操作,SDI输入16 bit数据;如果是读操作,SDO输出16 bit数据。SCLK的最大时钟频率为6.6 MHz,时钟沿采样输入数据方式取决于内部寄存器EXCODECCONT($0B)。