V.32协议下调制解调方案的实现
2012-07-25卢忠仁陈晓翔林嘉宇
陈 巍,卢忠仁,陈晓翔,林嘉宇
(1.国防科技大学电子科学与工程学院,长沙410073;2.武警沈阳指挥学院,沈阳110113)
1 引言
传输领域正在经历急速发展阶段,新的需求层出不穷,促使新的业务不断产生,导致信道频带越来越宝贵。QAM调制方式有效缓解了通信传输中的带宽压力。QAM调制信号的幅度和相位都携带有信息。以32QAM为例,一个码元可以携带5bit的信息,这大大提高了信道利用率。所以QAM调制方式被广泛应用于传输领域。
V.32协议ITU-T制定的9600bps高速modem的标准调制协议,它定义了8状态32QAM网格编码调制的编译码方式。在这个协议中,运用了以“集合划分映射”思想为基础的格状编码调制技术,简称TCM。TCM克服了传统信道编码的缺点,把调制与编码结合起来,在保持频带利用率基本不变的条件下,增加信道中传输信号集中的信号状态数目,利用其冗余度进行抗干扰编码,从而提高能量利用率,可获得3~6dB的功率增益,是一种高效调制方法。但是V.32协议有一个缺点就是在解调过程中用到了维特比译码,而高速Viterbi译码器的实现难度很大,所以该标准常用于低速数据传输系统的设计。该方案设计针对的不是高速数据传输系统,而是语音通信系统,语音的传送速率不会超过9.6k,因此可以使用V.32协议进行调制[1]。
2 调制解调过程的实现
网格编码调制[2](Trellis Coded Modulation)技术将纠错编码和调制技术有机结合,将编码的冗余度用于调制信号集中的那些最易出错,即距离最近的符号代码,其基本原理如图1所示。TCM利用码率为k/(K+1)的格状码(卷积码),将每一码段映射为具有2(k+1)个调制信号集中的一个信号。在接收端,信号经反映射后变换为卷积码的码序列,再送入Viterbi译码器译码以得到原始信号。
图1 TCM编码器一般方框图
该部分实现分为调制模块和解调模块两个部分。
2.1 调制模块
调制模块包括差分编码、卷积编码以及32QAM调制三个部分(如图 2)[3]。
将待发送的数据分成连续的4位一组的数据组,每个数据组的Q3Q4比特具有90度旋转不变性,不需要进行差分编码。Q1Q2比特无上述特性,它们在360度的旋转周期上按00 01 10 11的四进制码配置,应进行模四的自然码差分编码。差分编码后的Y1和Y2两位用作隐藏式卷积码编码器的输入,生成冗余位Y0。Y0的值可以根据P、Q分量的幅度及前四位比特的值确定。5位编码比特Y0nY1nY2nY3nY4n共同确定了信号映射的星座点。因为差分编码的位置在卷积编码之前,所以这种TCM编码器对QAM的4重相位模糊透明。根据星座图,码变换将代码Y0Y1Y2Y3Y4变换为适合D/A变换器使用的电平码。
图2 32QAM-TCM编码器硬件结构图
2.1.1 差分编码模块的实现
从调制缓存区按字节读出数据后,首先将一个字节分成低四位和高四位,按照由低到高的顺序每四位一组进行处理。方法是低四位时与0x0f按位与,取高四位时右移四位即可。在进行差分编码之前,把每组四位中的低两位(即协议中的Q1Q2)取出提供给差分编码函数调用。差分编码使用查表方式进行,Q2Q1被差分函数调用后,左移两位与前一输出Y2n-1,Y1n-1组成四位二进制数Q2Q1Y2n-1Y1n-1,然后调用差分编码查表函数,Q2Q1Y2(n-1)Y1(n-1)的十进制数值就是表中对应的位置,表中对应的十进制数值,转换为二进制后输出Y2:bit1 Y1:bit0即为译码结果,差分编码表根据表一制作而成[3]。
2.1.2 卷积编码的实现
卷积编码(3,2,3)使用逻辑关系式运算实现。差分编码完成输出以后是一个2bit的编码输出,Y2:bit1,Y1:bit0,通过和0x02按位与后右移一位分离出Y2,和0x01按位与分离出Y1。三个T寄存器(见V.32协议标准图2),从左到右分别命名为T2T1T0。寄存器的输出为当前的状态输出,程序中分别记为t2、t1、t0,寄存器的输入(即为下一时刻)分别记为 t2_left、t1_left、t0_left。三个延时寄存器的初始输出状态均设为零。根据逻辑关系式y0=t0,t2_left=t0,t1_left=t28y28y1((t18y2)&t0),t0_left=t18y28(t0&y1),8表示为异或,即可求出y0。然后将输入的数值左移一位与y0相或,即得到卷积编码的3bit输出。
表1 差分编码表
2.1.3 32QAM调制的实现
正交幅度调制是由两路正交的抑制载频的双边带调幅所组成。两路调制载波相差90度,所以称为正交调幅。当输入的基带信号为多电平时,就构成了多电平正交幅度调制(MQAM)。
经过差分编码和卷积编码后,得到Y0Y1Y2Y3Y4五个比特的结果,然后进行星座表查表,得到各个对应星座点的横坐标与纵坐标的值,这两个值就是控制正交幅度调制信号的值。在此,将横坐标和纵坐标分别分为正负4个电平等级(共8个),即 ±1、±2、±3、±4。星座表的制作根据图 3而定[4]。
2.2 解调模块
调制模块包括32QAM解调、维特比译码以及差分译码三个部分。
2.2.1 32QAM解调的实现
解调是调制的逆过程,模拟信号经相干解调后得到两个幅度值Q、P,根据这两个幅度值可以进行查星座图译码表得到Y0Y1Y2Y3Y4五个比特的结果。译码表也是根据图3进行星座图编码表的反查表获得。
图3 适合于V.32 TCM协议的信号星座图
2.2.2 维特比译码的实现
卷积编码使用维特比算法进行译码。由于(3,2,3)卷积码的约束长度是9,即译码输入序列的码长不能少于27个比特位,至少要计算到网格图的第10级分支时才开始输出。所以在计算第10级分支时输出此时最小汉明距离对应的第0级子组的译码,并且从第10级开始,每输入一个接收子组,就输出一个译码子组,直到接收序列输入结束。从输入缓冲区中每次输入3bit的数据,共输入八拍24bit,每拍时钟均计算每条支路与输入数据的汉明距离,然后以时刻左侧状态为准,每一个左侧状态只保留一条支路汉明距离最小的支路,将支路号、汉明距离、支路左侧状态分别对应存入数组transfer_way_num[t][]、transfer_HM[t][]、survive_left_state[t][]。将到每个右侧状态左边连接的支路号存入state_from_transferway[t][]。依次类推,一直到达第九个时钟,然后进行回溯,算出总汉明距离最小的路径,输出2bit的结果,将t0-t1之间支路的右侧状态更新为初始状态,同时,将能到达t1时刻初始状态的所有路径保存。以后,每个时钟周期输出3bit的数据,进行一次回溯选择最优幸存路径,然后将2bit译码输出,直至译码完成[5]。
2.2.3 差分译码过程的实现
经过维特比译码后,差分译码输入数值为V32协议中的 Y2Y1,然后与前一次输入 Y2(n-1)Y1(n-1)组成四位二进制数Y2(n-1)Y1(n-1)Y2Y1,再通过差分译码查表函数求出Q2Q1。差分解码后得到Q2Q1,将星座中的Q4Q3左移两位后再与Q2Q1相或,就可以得到一个码组。由于调制的时候是按照一个字节的高低四位两个码组进行拆分调制的,所以两个码组以后就可以进行字节恢复,将高四位字节左移4位,与低四位相或得到一个字节。至此,解调过程全部完成。
3 结束语
以上给出了32QAM调制下高效利用频带的多进制TCM编码方案,用该方案在获得宽频带利用率的同时可取得更加优异的编码性能。实际证明,采用此种方法能使误码率达到10-7,基本上能满足低速数据传输系统的性能要求,有着极其广阔的应用前景。
[1] UNGERBOECK G.Channel coding with multileve/phase[J].IEEE Trans Information Theory.1982,28(1):55-67.
[2] 樊昌信,曹丽娜.通信原理[M].北京.国防工业出版社,2006.
[3] ITU-T Recommendation V.32.A Family Of 2-Wire,Duplex Modems Operating At Data Signalling Rates Of Up To 9600 bitls For Use On The General Switched Telephone Network And On Leased Telephone-Type Circuits[S].ITU-T.03/93.1993.
[4] 于康友,封化民,李杨,方勇.调制解调器原理、选用与测试[M].北京:电子工业出版社,1994.
[5] 郑辉.卷积码的简化Viterbi译码算法[J].电信技术研究,1986(11):24-30.