一种基于OFDM及双二元Turbo码的数据通信方法与流程

文档序号:12838809阅读:174来源:国知局
一种基于OFDM及双二元Turbo码的数据通信方法与流程

本发明涉及数字编码技术和通信技术领域,特别涉及一种基于ofdm及双二元turbo码的数据通信方法。



背景技术:

电力线和无线信道作为一种分布广泛的通信介质,成本低廉,连接方便,在各个领域具有得天独厚的优势和不可估量的市场潜力;信号在传输的过程中会受到各种干扰以及信道固有的多径时延和频率选择性衰弱都会给信号传输带来不利的影响,解决这些问题一直是数据通信中的重点和热点。

正交频分复用(ofdm)技术将高速传输数据分解成为若干个传输速率相对较低的子比特流,再使用这些数据去调制若干个载波以实现多载波传输。ofdm技术具有抗多径时延、抗信道衰落、频谱利用率高、硬件实现简单等优点,在移动数据通信和电力载波通信中得到了广泛的研究和应用。

turbo码不仅在较低信噪比的高斯白噪声条件下性能十分优异,而且由于符号交织器的引入,使其还具备较强的抗干扰和抗信道深度衰落的能力,在信道环境较为恶劣的无线通信系统中拥有十分广阔的应用空间和前景。双二元卷积turbo码(db-ctc)是多个无线通信标准和宽带电力线网络标准选用的信道编码码型,在提高信道纠错能力和整个系统的吞吐量方面具有极其重要的作用。

将ofdm技术和双二元turbo码联合应用于数据通信中,可以有效地解决高误码信道中数据通信过程中出现的通信速率低及误码率高等问题,同时能提升数据通信的稳定性、有效性和可靠性。



技术实现要素:

本发明的目的在于提出一种稳定有效可靠的高误码信道(如电力线信道及无线信道)高速数据通信方法。数据通信的发送端对输入数据进行双二元turbo卷积编码、加扰以及信道交织,进入星座点映射,再经过快速离散傅里叶逆变换(ifft),取实部进行发送;数据通信的接收端对接收到的数据进行快速傅里叶变换(fft)进入星座点逆映射,再经过信道解交织、去扰和双二元turbo卷积译码恢复出原始数据,实现完整的数据通信过程。

为了实现上述目的,本发明提供了一种基于ofdm及双二元turbo码的数据通 信方法,所述方法包括发送端和接收端,接收端为发送端的逆过程,对接收端不做详细描述,发送端包括:

步骤s1)、设置编码参数,包括编码块大小和码率大小,其中码块大小为pb16(128bits)、pb136(1088bits)和pb520(4160bits),码率大小为1/2和16/18;

步骤s2)、每次读入编码块大小的输入数据in,进行双二元turbo卷积编码,将编码后的序列按信息位在前,校验位在后的方式输出,得到turbo卷积编码序列;

步骤s3)、将步骤s2)的编码序列进行加扰,得到扰码序列;

步骤s4)、将步骤s3)得到的扰码序列进行信道交织,得到信道交织序列;

步骤s5)、将步骤s4)得到的信道交织序列以正交相移键控(qpsk)方式进行星座点映射和n×1024(n=0,1,2...)点ifft运算,得到一系列复数序列c;

步骤s6)、将步骤s5)得到的复数序列c取实部,得到发送序列;

上述技术方案中,所述步骤s2)具体包括:

步骤s2-1)、每次读入编码块大小的数据in=(i0,i1,...,ik....,i2n-1),按奇偶序列分成两组信息序列u0=(u00,u01,...,u0k,...,u0n-1)和u1=(u10,u11,...,u1k,...,u1n-1);

步骤s2-2)、将步骤s2-1)得到的两组信息序列u0、u1进行预编码,寄存器由初始状态s0=[s0,1,s0,2,s0,3]变成预编码后状态sn=[sn,1,sn,2,sn,3];

步骤s2-3)、将步骤s2-2)得到的寄存器状态sn进行查表得到正式编码时的起始寄存器状态s′0,利用寄存器状态对两组信息序列u0、u1进行双二元turbo卷积编码,得到一组校验码x0=(x00,x01,...,x0k,...,x0n-1);

步骤s2-4)、将步骤s2-1)得到的两组信息序列通过查找turbo交织映射表进行turbo交织,得到交织后的信息序列u′0和u′1;

步骤s2-5)将步骤s2-4)得到的两组交织后的信息序列u′0、u′1进行预编码,寄存器由初始状态s0′=[s′0,1,s′0,2,s′0,3]变成预编码后状态sn′=[s′n,1,s′n,2,s′n,3];

步骤s2-6)、将步骤s2-5)得到的寄存器状态sn′进行查表得到正式编码时的起始寄存器状态s″0,利用寄存器状态对两组交织后的信息序列u′0和u′1进行双二元turbo卷积编码,得到另外一组校验码x1=(x10,x11,...,x1k,...,x1n-1);

步骤s2-7)、将步骤s2-3)、步骤s2-6)的两组校验码x0、x1根据码率参数进行打孔处理,得到打孔后的两组校验码x′0、x′1;

步骤s2-8)、将步骤s2-1)、步骤s2-3)、步骤s2-7)的两组信息序列u0、u1和两组校验码x′0、x′1按照u0、u1、x′0、x′1顺序输出,得到turbo卷积编码序列;

上述技术方案中,所述步骤s3)具体包括:

步骤s3-1)、初始化一个由10级移位寄存器组成的自同步加扰器,初始寄存器状态全为1;

步骤s3-2)、将步骤s2-8)的turbo卷积序列每次输入1个bit到加扰器进行加扰,得到加扰后的序列;

上述技术方案中,所述步骤s3-2)具体包括:

步骤s3-2-1)、每输入1个bit,移位寄存器左移一位,最低位由寄存器的第10位和第3位异或得到;

步骤s3-2-2)、将步骤s3-2-1)得到的寄存器最低位与输入的1个bit进行异或得到加扰后的1个bit;

上述技术方案中,所述步骤s4)具体包括:

步骤s4-1)、将步骤s3-2)得到的扰码序列按照信息位和校验位分为两组序列inc和chc,其序列长度分别为lc1和lc2;

步骤s4-2)、将步骤s4-1)得到的信息序列inc进行信息位交织,得到交织后的信息序列inc′;

上述技术方案中,所述步骤s4-2)具体包括:

步骤s4-2-1)、将信息序列按列顺序写入到4列lc1/4行的矩阵存储空间中;

步骤s4-2-2)、将步骤s4-2-1)得到矩阵存储空间中的数据按行进行输出,得到交织后的信息序列inc′;

步骤s4-3)、将步骤s4-1)得到的校验序列chc进行校验位交织,得到交织后的校验序列chc′;

上述技术方案中,所述步骤s4-3)具体包括:

步骤s4-3-1)、将校验序列按列顺序写入到4列lc2/4行的矩阵存储空间中;

步骤s4-3-2)、将步骤s4-3-1)得到矩阵存储空间中的数据按行进行输出,得到交织后的校验序列chc′;

步骤s4-4)、将步骤s4-2)、步骤s4-3)得到的交织后的信息序列inc′和chc′进行联合交织;对于1/2码率,输出的前4比特为信息位,接着4比特为校验位,以此类推;对于16/18码率,首先是3个4bits的信息位,然后是4bits的校验位,最后是5个4bits的信息位,重复这一模式;得到联合交织后的序列;

步骤s4-5)、将步骤s4-4)得到的联合交织序列进行半字节移位,以4bits为单位进行移位,以10个单位为一个周期。对于第1和第2两个单位,不进行移位;对于第3和第4两个单位,进行1位的左循环移位;对于第5和第6两个单位,进行2位的左循环移位;对于第7和第8两个单位,进行3位的左循环移位;对于第9和第10两个单位,进行4位的左循环移位;得到信道交织后的最终序列;

上述技术方案中,所述步骤s5)具体包括:

步骤s5-1)、将步骤s4-5)得到的信道交织序列每两位为一组以qpsk方式进行星座点映射,得到一系列复数序列;

步骤s5-2)、将步骤s5-1)得到的复数序列进行功率归一化,得到功率归一化后的复数序列;

步骤s5-3)、将步骤s5-2)得到的复数序列每511个复数为单位,利用查表进行相位转移,得到相位转移后的复数序列;

步骤s5-4)、将步骤s5-3)得到的复习序列以511个复数为单位进行n×1024(n=0,1,2...)点ifft运算,得到复数序列c;

本发明的方法优点在于:

1、本发明采用ofdm和双二元turbo编码技术,结合加扰和信道交织技术,使数据通信具有频谱利用率高、抗干扰、抗多径时延、抗信道衰落,纠错能力强等特点;

2、本发明通过对数据进行上述步骤处理,能稳定有效可靠地传输数据,在进行纠错译码时能准确地恢复出原始信号。

附图说明

图1为本发明的整体框架图;

图2为本发明的信道交织流程图。

具体实施方式

现结合附图和具体实施例对本发明做进一步的描述。

如图1所示,一种基于ofdm及双二元turbo码的数据通信方法,所述方法包括:

步骤s1)、设置编码参数,包括编码块大小和码率大小,其中码块大小为pb16(128bits)、pb136(1088bits)和pb520(4160bits),码率大小为1/2和16/18;

步骤s2)、每次读入编码块大小的输入数据in,进行双二元turbo卷积编码,将编码后的序列按信息位在前,校验位在后的方式输出,得到turbo卷积编码序列;具体包括:

步骤s2-1)、每次读入编码块大小的数据in=(i0,i1,...,ik,...,i2n-1),按奇偶序列分成两组信息序列u0=(u00,u01,...,u0k,...,u0n-1)和u1=(u10,u11,...,u1k,...,u1n-1);u0k和u1k计算如下:

步骤s2-2)、将步骤s2-1)得到的两组信息序列u0、u1进行预编码,寄存器由初始状态s0=[s0,1,s0,2,s0,3]变成预编码后状态sn=[sn,1,sn,2,sn,3];预编码过程中的第k时刻寄存器状态sk由下式计算得到:

步骤s2-3)、将步骤s2-2)得到的寄存器状态sn进行查表得到正式编码时的起始寄存器状态s′0,利用寄存器状态对两组信息序列u0、u1进行双二元turbo卷积编码,得到一组校验码x0=(x00,x01,...,x0k,...,x0n-1);校验码计算公式如下:

其中,k=0,1,...n-1,s′k-1,3表示正式编码时第k-1时刻的第三个寄存器的状态。

步骤s2-4)、将步骤s2-1)得到的两组信息序列通过查找turbo交织映射表进行 turbo交织,得到交织后的信息序列u′0和u′1;

步骤s2-5)、将步骤s2-4)得到的两组交织后的信息序列u′0、u′1进行预编码,寄存器由初始状态s0′=[s′01,s′02,s′03]变成预编码后状态sn′=[s′n1,s′n2,s′n3];计算方法同步骤s2-2);

步骤s2-6)、将步骤s2-5)得到的寄存器状态sn′进行查表得到正式编码时的起始寄存器状态s″0,利用寄存器状态对两组交织后的信息序列u′0和u′1进行双二元turbo卷积编码,得到另外一组校验码x1=(x10,x11,...,x1k,...,x1n-1);计算方法同步骤s2-3);

步骤s2-7)、将步骤s2-3)、步骤s2-6)的两组校验码x0、x1根据码率参数进行打孔处理;如果码率为1/2,则不进行打孔处理;如果码率为16/18;则将两组校验码x0、x1都以8个bits为一个单元进行打孔,保留每个单元中的第1个bit,其余7个bits删掉,得到打孔后的两组校验码x′0、x′1;

步骤s2-8)、将步骤s2-1)、步骤s2-3)、步骤s2-7)的两组信息序列u0、u1和两组校验码x′0、x′1按照u0、u1、x′0、x′1顺序输出,得到turbo卷积编码序列;

步骤s3)、将步骤s2-8)的编码序列进行加扰,得到扰码序列;具体包括:

步骤s3-1)、初始化一个由10级移位寄存器组成的自同步加扰器,初始寄存器状态全为1;

步骤s3-2)、将步骤s2-8)的turbo卷积序列每次输入1个bit到加扰器进行加扰,得到加扰后的序列;具体包括:

步骤s3-2-1)、每输入1个bit,移位寄存器左移一位,最低位由寄存器的第10位和第3位异或得到;第k次加扰器的状态s(xk)计算如下:

步骤s3-2-2)、将步骤s3-2-1)得到的寄存器最低位与输入的1个bit进行异或得到加扰后的1个bit;

步骤s4)、对步骤s3-2)得到的扰码序列进行信道交织,得到信道交织序列, 信道交织如图2所示;具体包括:

步骤s4-1)、将步骤s3-2)得到的扰码序列按照信息位和校验位分为两组序列inc和chc,其序列长度分别为lc1和lc2;

步骤s4-2)、将步骤s4-1)得到的信息序列inc进行信息位交织,得到交织后的信息序列inc′;具体包括:

上述技术方案中,所述步骤s4-2)具体包括:

步骤s4-2-1)、将信息序列按列顺序写入到4列lc1/4行的矩阵存储空间中;即第一列为信息序列inc中的第1到lc1/4个bits,第二列为信息序列inc中的第lc1/4+1到lc1/2个bits,第三列为信息序列inc中的第lc1/2+1到3×lc1/4个bits,第三列为信息序列inc中的第3×lc1/4+1到lc1个bits;

步骤s4-2-2)、将步骤s4-2-1)得到矩阵存储空间中的数据按行进行输出,得到交织后的信息序列inc′;读取方式为:从第1行开始,第二次开始每次读的时候行地址加上步长stepsize1,经过次读之后,第一轮读完;然后读下一轮,从第二行开始,每次读的时候行地址加上步长stepsize1;依次类推,经过stepsize1轮之后全部行都读出;其中stepsize1根据码块大小和码率大小进行查表得到;

步骤s4-3)、将步骤s4-1)得到的校验序列chc进行校验位交织,得到交织后的校验序列chc′;具体包括:

步骤s4-3-1)、将校验序列按列顺序写入到4列lc2/4行的矩阵存储空间中;即第一列为校验序列chc中的第1到lc2/4个bits,第二列为信息序列chc中的第lc2/4+1到lc2/2个bits,第三列为信息序列chc中的第lc2/2+1到3×lc2/4个bits,第三列为信息序列chc中的第3×lc2/4+1到lc2个bits;

步骤s4-3-2)、将步骤s4-3-1)得到矩阵存储空间中的数据按行进行输出,得到交织后的校验序列chc′;对于码率为1/2时,从第offset行开始,第二次开始每次读的时候行地址加上步长stepsize2并对lc2取模,即第二次行地址为(offset+stepsize2)modlc2,经过次读之后,第一轮读完;然后读下一轮,从 第offset+1行开始,每次读的时候行地址加上步长stepsize2,依次类推,经过stepsize2轮之后全部行都读出;对于码率为16/18时,从第offset行开始,第二次开始每次读的时候行地址加上步长stepsize2并对lc2取模,即第二次行地址为(offset+stepsize2)modlc2,读取lc2次之后,全部行都读出;其中offset和stepsize2根据码块大小和码率大小进行查表得到;

步骤s4-4)、将步骤s4-2)、步骤s4-3)得到的交织后的信息序列inc′和chc′进行联合交织;对于1/2码率,输出的前4比特为信息位,接着4比特为校验位,以此类推;对于16/18码率,首先是3个4bits的信息位,然后是4bits的校验位,最后是5个4bits的信息位,重复这一模式;得到联合交织后的序列;

步骤s4-5)将步骤s4-4)得到的联合交织序列进行半字节移位,以4bits为单位进行移位,以10个单位为一个周期。对于第1和第2两个单位,不进行移位;对于第3和第4两个单位,进行1位的左循环移位;对于第5和第6两个单位,进行2位的左循环移位;对于第7和第8两个单位,进行3位的左循环移位;对于第9和第10两个单位,进行4位的左循环移位;得到信道交织后的最终序列;

步骤s5)、对步骤s4)得到的信道交织序列以正交相移键控(qpsk)方式进行星座点映射和1024点ifft运算,得到一系列复数序列c;具体包括:

步骤s5-1)、将步骤s4-5)得到的信道交织序列每两位为一组以qpsk方式进行星座点映射,得到一系列复数序列;映射规则为:(0,0)映射为1+j,(0,1)映射为1-j,(1,0)映射为-1+j,(1,1)映射为-1-j;

步骤s5-2)、将步骤s5-1)得到的复数序列进行功率归一化,得到功率归一化后的复数序列;即对每个复数乘以归一化因子

步骤s5-3)、将步骤s5-2)得到的复数序列每511个复数为单位,利用查表进行相位转移,得到相位转移后的复数序列;即每个复数乘以对应的旋转因子cos(phase_map[i]*pi/4)+sin(phase_map[i]*pi/4),其中phase_map[i]表示第i个旋转因子参数,i=0,1,...510;

步骤s5-4)、将步骤s5-3)得到的复习序列以511个复数为单位进行n×1024(n=0,1,2...)点ifft运算,得到复数序列c;

步骤s6)、对步骤s5)得到的复数序列c取实部,得到发送序列。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1