专利名称:Turbo乘积码优化编译码算法的FPGA实现方法
技术领域:
本发明涉及通信技术领域,尤其涉及信息传输中的前向纠错编译码技 术,是TPC编译码算法的一种新的FPGA实现方法。
背景技术:
数据通信中,信道编译码是通信系统中的核心组成部分之一,它致力 于为系统提供更高的传输可靠性。Turbo乘积码(Turbo Product Code,简 称TPC)编译码技术是近十余年来发展的一种差错控制技术,它是将Turbo 码中迭代译码方法引入乘积码(Product Code)译码方案中所构成的新的 编码技术。TPC具有非常好的纠错能力,不仅在加性高斯白噪声信道(AWGN) 中对系统性能有很大幅度的改善,在瑞利衰落信道(Rayleigh Fading Channel)中也能大大改善系统性能。
TPC属于乘积码,基本结构通常如图l所示。在乘积码编码中,先将输 入信息ml排列成klXk2的矩阵,接着对第一列的数据做分组编码(nl, kl, dl),然后依次完成k2列的分组编码,构成子码长度为nlXk2。然后
将第一次编完的码作为第二次编码的输入数据,对第一行数据进行分组编 码(n2, k2, d2),然后依次完成nl行的编码,成为乘积码,大小为nlXn2。 为适应应用需求,需要信道编码方案提供更高的误码率性能和系统增 益,并且尽可能的提高译码的速度,以支持数十Mbps到上百Mbps的信息处理速率,这对TPC的实现尤其是译码模块的实现增加了很高的难度。现 有的TPC解决方案,信息处理速率大多在10Mbps到20Mbps (有个别解决方 案可达上百Mbps)。目前围绕TPC编译码算法的研究,主要集中在如何降低 译码算法的复杂度,提高信息处理速率,同时保证比较高的译码性能。
另外,现有的TPC解决方案大多是各类专用IC以及各种高速信号通信 仪器,使用成本较高,应用不便,灵活性差。而IP核(IP core)类则配 置比较繁琐,成本也比较高,或者算法过于简化,性能不高,而且由于没 有核心代码,不能根据开发需要进行自主修改。
发明内容
针对上述技术问题,本发明提供一种Turbo乘积码优化编译码算法的 F GA实现方法,以降低软判决译码的复杂度,降低译码器内部的占空比,
提高可以支持的数据率。
一种Turbo乘积码优化编译码算法的FPGA实现方法,包括以下步骤-
1) 编码,待编码数据传输至随机存取内存中,编码器从随机存取内存 中逐行或逐列读入,并采用Turbo乘积码进行行或列编码,所有行或列编 码完毕后再逐列或逐行进行编码,将编码后的数据写入输出Ram中,当输 出Ram满时,先输出帧头,然后读出输出Ram中的整块数据,数据输出完 毕直到下一块数据输出前的时钟空隙,以0或1或其他冗余信息补足;并 根据码率需要,对信息位进行縮短;
2) 组帧,对编码后输出的数据进行组帧并发送;
3) 译码,对接收到的数据进行解帧和译码。
作为本发明的一种优选方式,所述步骤1)中,随机存取内存为Rami和Ram2,具体步骤如下
待编码数据传输开始后,1个信息块长度的数据写入Rami后,开始写 入Ram2并且同时编码器开始工作,编码器从Rami中逐行或列读入进行行 编码,写入输出Ram;所有行或列编码完毕后再逐列或行进行编码,写入输 出Ram,在Raml读完后,等1个信息块长度的数据写入Ram2后,在Ram2 中重复Rami同样的操作,Rami和Ram2反复切换,当输出Ram满时,先输 出帧头,然后读出Ram中的整块数据。
作为本发明的另一优选方式,所述步骤l)中,编码端实现的码型包括 扩展汉明码(8,4), (16,11), (32,26), (64,57), (128, 120)和扩展BCH码 (16,6), (32,21), (64,51), (128, 113)共9种基本码型。
作为本发明的再一优选方式,对信息位进行縮短的方式为按行縮短、 按列縮短或按行列信息位縮短,缩短的码型为以下码型中的一个
(32,26)X(30,24)或(30,24)X(32,26);
(32,21)X(31,20)或(31,20)X(32,26);
(30,24)X(32,21)或(32,21)X(30,24);
(30,24)X(32,21)或(32,21)X(30,24);
(64,57)X(63,56)或(63,56)X(64,57);
(64,51)X(61,48)或(61,48)X(64,51);
(61,48)X(63,56)或(63,56)X(61,48);
(61,48)X(64,57)或(64,57)X(61,48);
(64,51)X(63,56)或(63,56)X(64,51);
(128, 120) x (127, 112)或(127, 112) x (128, 120); (128, 113) x (127, 112)或(127, 112) x (128, 113)。作为本发明的再一优选方式,所述步骤2)组帧中,使用32位或64 位的CAZAC序列作为帧头。
作为本发明的再一优选方式,对于帧之间的空白地带,循环填充固定 序列,序列构成为0、 1均匀分布的3至10位的较短序列。
作为本发明的再一优选方式,所述固定序列的长度为6位。
作为本发明的再一优选方式,所述步骤3)译码包括以下步骤-
31) 检测帧头,检测到帧头之后开始读入一块长度的数据;
32) 对读入的数据进行译码,译码采用基于伴随式的SISO译码算法。 作为本发明的再一优选方式,所述步骤32具体为,先计算伴随式,如
果伴随式为0则认为传输没有错误,直接输出结果,否则按照图4进行迭 代译码,迭代公式为W(m+l):W(mh"(m) +R(m),式中W(m)是上次迭代的输 出信息,"(m), R(m)是本次迭代的输入信息,W(m+1)是本次迭代的输出, 迭代次数为4次到6次。
作为本发明的再一优选方式,所述迭代次数为5次,接收到的输入软 信息为6位,所述译码按照chase算法进行译码并计算输出信息,在Chase 算法中对于128码型选择最不可靠的6个位置,对于64码型和32码型选 择最不可靠的4个位置。
本发明的有益效果为达到了较高的编码性能,并且可以针对不同应 用需求进行灵活配置。而且由于是软核,通过并行使用多个译码单元可以 达到更高的数据速率,可用于高速数据通信。对于低速低资源应用环境, 根据实际要求可以配置不同的软件版本,目前已经划分为9个不同的基本 版本,资源占用从3千门到2.5万门不等,对应最大数据速率从低到高, 可以针对不同的系统要求进行配置。
图1为TPC属于乘积码的基本结构;
图2为本发明Turbo乘积码优化编译码算法的FPGA发送、接收方法实 施例流程图3为本发明实施例中输出Ram的信息位行縮短方式; 图4为本发明实施例中软判决迭代译码实现结构示意图; 图5为本发明实施例中(64, 57) (64, 57) TPC编码性能曲线。
具体实施例方式
如图2所示, 一种Turbo乘积码优化编译码算法的FPGA实现方法,包 括以下步骤 1)编码
采用Raml、 Rami两块随机存取内存(Random Access Memory, RAM) 和输出Ram,待编码数据传输开始后,数据写入Raml。 Rami写满时(1个 信息块的长度),开始写入Ram2并且同时编码器开始工作,编码器从Rami 中逐行读入进行行编码,写入输出Ram,即写入图3中的输入矩阵(i叩ut army)和行奇偶校验位(奇偶校验1位);所有行编码完毕后再逐列进行 编码,写入输出Ram,即写入图3中的列奇偶校验位(奇偶校验2位)及奇 偶校验位的奇偶校验位(奇偶校验2位)。在Rami读完后,即1个信息块 长度的信息读完后,等待Ram2写满(也是1个信息块的长度),在Ram2中 重复Raml同样的操作,Rami和Ram2反复切换,以保证编码输入的流水性。 当输出Ram满时,先输出帧头,然后读出Ram中的整块数据。数据输出完毕直到下一块数据输出前的时钟空隙,以0或1或其他冗余信息补足,以 满足码率要求。编码端实现的码型包括扩展汉明码(8,4), (16,11), (32, 26), (64,57), (128, 120)和扩展BCH码(16, 6) , (32,21), (64,51), (128,113)共9种基本码型,最大支持0.8789的码率。实用中,码率通常 采用0. 75、 0. 7、 0. 6等码率,因此要对信息位进行縮短来得到需要的码率。 常见的縮短方式有按行縮短,按列縮短,按行列信息位縮短等,图3中信 息位同时縮短s行和s列。通过仿真和工程实践,发现有几种改进的縮短 码型在卫星通信和视距通信中有比较好的误码性能,而且信息块是整字节 类型,在实际处理中有很多便利,特别适合这些应用。这些特定的编码类 型如下
1) (32,26)X(30,24)或(30,24)X(32,26);
2) (32,21)X(31,20)或(31,20)X(32,26);
3) (30,24)X(32,21)或(32,21)X(30,24);
4) (30,24)X(32,21)或(32,21)X(30,24);
5) (64,57)X(63,56)或(63,56)X(64,57);
6) (64,51)X(61,48)或(61,48)X(64,51);
7) (61,48)X(63,56)或(63,56)X(61,48);
8) (61,48)X(64,57)或(64,57)X(61,48);
9) (64,51)X(63,56)或(63,56)X(64,51);
9) (128, 120) x (127, 112)或(127, 112) x (128, 120);
10) (128, 113) x (127, 112)或(127, 112) x (128, 113)。 2)组帧
为了方便数据在信道上的非连续传输,就需要对编码后的数据进行组帧。作为帧头,其性能的好坏对译码端帧头检测有比较大的影响。所知的
一些产品和专利采用的多是类似PN码之类作为帧头,其缺陷在于有旁瓣电 平干扰。本发明采用的方法是使用32位或64位的CAZAC序列作为帧头, 其优点是自相关只有一个点上有值,也就是说完全没有旁瓣干扰,对于帧 头检测非常有利。本发明采用的CAZAC序列用于TPC (Turbo乘积码)的思 想,而非移动通信中用于TPC (Transmit Power Control)。对于帧之间的 空白地带,采用全0或者全1时对于调制解调会带来一定的不便,我们采 用了循环填充固定序列的方法,序列构成为0, l均匀分布的较短的序列如 110100,优点是IQ路信号不同(一路为100,另一路为110)有利于调制 解调同时0, 1分布较均匀。这种填充非全0,全1而且0, 1均匀分布的短 序列不限于上述给出的序列实例。
3)译码
31)检测帧头,即对收到的码作自相关。检测到帧头之后开始读入一 块长度的数据。接口也采用Ram3和Ram4两块随机存取内存进行反复切换 的乒乓模式。
32 )在Ram满后,译码器开始工作。译码端内部可以使用多个子译 码器核心同步并行工作。本实施例中,译码采用基于伴随式的SISO译码算 法,即先计算伴随式,如果伴随式为0则认为传输没有错误,直接输出结 果,这样简化了算法,提高了译码速度。如果伴随式不为0,则按照图4开 始进行迭代译码,采用的行或列译码方案为软判决迭代译码,也可以通过 参数设置采用硬判决译码。迭代公式为W(m+l^W(m)^(m) +R(m)。 W(m)是 上次迭代的输出信息,R是接收到的输入软信息,《(m)、 6 (m)是量化参数, R(m)是本次迭代的输入信息,W(m+1)是本次迭代的输出。译码器核心按照chase算法进行译码并计算输出信息。迭代次数可以设置,通常采用4次到 6次迭代,多数情况下5次最为理想。通过大量的实验表明,采用6位输入 软信息可保证较高的量化精度和较低的复杂度,实现量化精度和复杂度的 折衷。本实施例中优选采用5次迭代和6位软信息的参数设置。
译码器核心采用Chase算法,并对算法进行了改进。在不可靠位置的 选择上,原方法是选择最不可靠的S/2个位置。本发明在此基础上,通过 工程实践逐渐减小此范围,最终得到结论,在此数字为6 (对128码型)和 4 (对64码型和32码型),能够在基本不损失性能的条件下最大限度的简 化译码的复杂度,在发现错误后,按照错误数的奇偶性分别进行后续处理 以优化算法结构。
本发明在以上改进的基础上,降低了资源占用率,相对于业界相似产 品,本发明的IP核(IP core)资源占用率大大降低10% 20%。同时保持 了比较高的编码增益,典型实例如图5所示,采用(64,57)(64,57)码型, 在10E-6误码率下达到了 7. 8dB的编码增益;6bit的软信息位数保证了较 高的译码精度;译码模块支持的速率较高,单独使用一个译码单元最高可 以支持20Mbps的数据速率,达到了业界硬件TPC产品的平均水平。
权利要求
1、一种Turbo乘积码优化编译码算法的FPGA实现方法,其特征在于包括以下步骤1)编码,待编码数据传输至随机存取内存中,编码器从随机存取内存中逐行或逐列读入,并采用Turbo乘积码进行行或列编码,所有行或列编码完毕后再逐列或逐行进行编码,将编码后的数据写入输出Ram中,当输出Ram满时,先输出帧头,然后读出输出Ram中的整块数据,数据输出完毕直到下一块数据输出前的时钟空隙,以0或1或其他冗余信息补足;并根据码率需要,对信息位进行缩短;2)组帧,对编码后输出的数据进行组帧并发送;3)译码,对接收到的数据进行解帧和译码。
2、 根据权利要求1所述的Turbo乘积码优化编译码算法的FPGA实现 方法,其特征在于所述步骤l)中,随机存取内存为Raml和Ram2,具体 步骤如下待编码数据传输开始后,l个信息块长度的数据写入Raml后,开始写 入Ram2并且同时编码器开始工作,编码器从Rami中逐行或列读入进行行 编码,写入输出Ram;所有行或列编码完毕后再逐列或行进行编码,写入输 出Ram,在Rami读完后,等1个信息块长度的数据写入Ram2后,在Ram2 中重复Raml同样的操作,Rami和Ram2反复切换,当输出Ram满时,先输 出帧头,然后读出Ram中的整块数据。
3、 根据权利要求1或2所述的Turbo乘积码优化编译码算法的FPGA 实现方法,其特征在于所述步骤l)中,编码端实现的码型包括扩展汉明 码(8,4)' (16, 11), (32,26), (64,57), (128, 120)和扩展BCH码(16, 6),(32,21), (64,51), (128, 113)共9种基本码型。
4、根据权利要求3所述的Turbo乘积码优化编译码算法的FPGA实现 方法,其特征在于对信息位进行缩短的方式为按行縮短、按列縮短或按 行列信息位縮短,縮短的码型为以下码型中的一个-(32,26)X(30,24)或(30,24)X(32,26);(32,21)X(31,20)或(31,20)X(32,26);(30,24)X(32,21)或(32,21)X(30,24);(30,24)X(32,21)或(32,21)X(30,24);(64,57)X(63,56)或(63,56)X(64,57);(64,51)X(61,48)或(61,48)X(64,51);(61,48)X(63,56)或(63,56)X(61,48);(61,48)X(64,57)或(64,57)X(61,48);(64,51)X(63,56)或(63,56)X(64,51);(128, 120) x (127, 112)或(127, 112) x (128, 120); (128, 113) x (127, 112)或(127, 112) x (128, 113)。
5、 根据权利要求4所述的Turbo乘积码优化编译码算法的FPGA实现 方法,其特征在于所述步骤2)组帧中,使用32位或64位的CAZAC序列 作为帧头。
6、 根据权利要求5所述的Turbo乘积码优化编译码算法的FPGA实现 方法,其特征在于对于帧之间的空白地带,循环填充固定序列,序列构 成为0、 1均匀分布的3至10位的较短序列。
7、 根据权利要求6所述的Turbo乘积码优化编译码算法的FPGA实现 方法,其特征在于所述固定序列的长度为6位。
8、 根据权利要求4至7中任一权利要求所述的Turbo乘积码优化编译 码算法的FPGA实现方法,其特征在于所述步骤3)译码包括以下步骤31) 检测帧头,检测到帧头之后开始读入一块长度的数据;32) 对读入的数据进行译码,译码采用基于伴随式的SIS0译码算法。
9、 根据权利要求8所述的Turbo乘积码优化编译码算法的FPGA实现 方法,其特征在于所述步骤32具体为,先计算伴随式,如果伴随式为0则认为传输没有 错误,直接输出结果,否则按照图4进行迭代译码,迭代公式为 W(m+l)=W(m)*"m) +R(m),式中W(m)是上次迭代的输出信息,"(m) , R(m) 是本次迭代的输入信息,W(m+1)是本次迭代的输出,迭代次数为4次到6 次。
10、 根据权利要求9所述的Turbo乘积码优化编译码算法的FPGA实现 方法,其特征在于所述迭代次数为5次,接收到的输入软信息为6位, 所述译码按照chase算法进行译码并计算输出信息,在Chase算法中对于 128码型选择最不可靠的6个位置,对于64码型和32码型选择最不可靠的 4个位置。
全文摘要
一种Turbo乘积码优化编译码算法的FPGA实现方法,包括以下步骤1)编码,待编码数据传输至随机存取内存中,编码器从随机存取内存中逐行或逐列读入,并采用Turbo乘积码进行行或列编码,所有行或列编码完毕后再逐列或逐行进行编码,将编码后的数据写入输出Ram中,当输出Ram满时,先输出帧头,然后读出输出Ram中的整块数据,数据输出完毕直到下一块数据输出前的时钟空隙,以0或1或其他冗余信息补足;并根据码率需要,对信息位进行缩短;2)组帧,对编码后输出的数据进行组帧并发送;3)译码,对接收到的数据进行解帧和译码。本发明可以针对不同应用需求进行灵活配置。通过并行使用多个译码单元可以达到更高的数据速率,可用于高速数据通信。
文档编号H03M13/00GK101483443SQ200810207929
公开日2009年7月15日 申请日期2008年12月26日 优先权日2008年12月26日
发明者丁勇飞, 徐丁海, 裕 李, 沈凯虹, 韬 牛, 石吉利 申请人:中国航空无线电电子研究所