 
- UID
- 1062083
- 性别
- 男
|

Turbo码是一种低信噪比条件下也能达到优异纠错性能的信道编码。早期为了强调Turbo码接近香农限的优异性能,研究的码字长度非常大[1~2],存在译码复杂度大、译码时延长等问题。突发数据通信以传输中小长度的数据报文业务为主,所以突发通信中的Turbo码的码长也是中等长度以下的。本文面向突发数据通信中的信道编码应用,研究了短帧长Turbo码编译码算法的FPGA实现。实现中采用了优化的编译码算法,以降低译码复杂度和译码延时。最后仿真和测试了Turbo译码器的纠错性能和吞吐量。 1 Turbo码编码器的FPGA实现
Turbo码的编码器是由两个RSC(递归系统卷积码)分量编码器和一个交织器组成。RSC码不仅具有系统码的优点,而且对于一个RSC码,总存在一个具有完全相同栅格结构的NSC码(非系统卷积码)。本系统中使用两个相同的RSC编码器,生成的多项式都是G=[1,15/13],系统编码率为1/3。
交织器的功能是利用随机化的思想将两个相互独立的短码组合成一个长的随机码。本课题中Turbo码交织器的实现是构造一个交织地址发生器,并根据输入的帧长信息,实时地产生交织地址序列。
图1为编码器的FPGA实现结构图。编码前,地址发生器获取帧长信息,完成交织地址生成的准备过程。编码时,信息序列被依次写入双口RAM,待写完一帧数据后,地址产生器开始生成顺序地址和交织地址。双口RAM按两个地址读取信息序列X和交织后的信息序列X’进行RSC编码;最后编码器输出系统位X和校验位P0和P1。
[img][/img]
2 Turbo码译码器的FPGA实现
Turbo码译码器比较复杂,下面从译码器的接口、内部结构、内部的时序控制、分量译码MAX-Log-MAP算法和SISO模块的实现五个方面来详细阐述译码器的FPGA实现。
2.1 译码器的接口
Turbo码译码器顶层模块的接口管脚如表1所示。
[img][/img]
2.2 译码器的内部结构
Turbo码译码器由两个软输入/软输出分量译码器、交织器以及相应的解交织器构成。译码是信息在两个分量译码器之间迭代运算的过程。在迭代运算中,上一次运算得到uk的外信息Λe(uk)作为下一次运算uk的先验信息Λa(uk)。Turbo码分量译码器译码算法主要有MAP类(最大后验概率译码算法)和SOVA类(软判决Viterbi译码算法)[3]。本文采用运算复杂度和性能都适中的MAX-Log-MAP算法。Turbo码译码器FPGA实现的内部结构如图2所示。
[img][/img]
地址发生器与编码器相同,用于数据的交织和解交织。输入数据存储器用于存储输入的接收数据,包括系统信息序列存储器以及各个校验序列存储器。外信息存储器用于存储迭代译码产生的外信息。由于外信息要作为下一次译码的先验信息,所以这里的外信息存储器有两块,交替存储两个分量译码器的外信息。SISO模块即为软输入、软输出分量译码器。整个Turbo码译码器有两个SISO分量译码模块。但为了节省资源,本方案只设计了一个SISO模块,将时分复用作为两个分量译码器。图2中,表示接收码字中的系统位,表示接收码字中的校验位。
2.3 译码器内部的时序控制
Turbo码译码器内部的时序控制由状态机完成。整个译码过程分为初始化、接收数据存储、迭代译码及硬判决输出四个过程,且对应于状态机的INIT、STORAGE、SISO和OUT四个状态。译码器的内部状态转移如图3所示。初始状态INIT完成帧长设定等初始化工作,并完成交织地址生成的准备过程,一旦指示第一个数据输入的fd信号有效(高有效)时,则进入STORAGE状态;状态STORAGE完成将接收数据序列存入单口RAM中,待一帧数据写完后,指示存储完毕的rdyStr信号置高,进入SISO状态;在状态SISO下,SISO分量译码器根据设定的迭代次数对接收数据进行迭代译码。当迭代完成时,rdySiso置高,进入OUT状态;对数据硬判决输出并计数,此时输出有效信号ready置高,待全部判决完毕后返回INIT状态。
[img][/img]
2.4 分量译码算法——MAX-Log-MAP算法
MAP算法需要大量的乘法运算和指数运算以及大量的存储,运算十分复杂。Log-MAP算法则将MAP算法中的乘法运算转换为对数域中的加法运算(不需要对数运算),适合工程实现。因此在工程实现时,可以将原来在对数域内的加法运算转换为取两个数的较大者加上一个修正项的运算。如果将修正项的运算也省略,则Log-MAP算法可简化为MAX-Log-MAP算法。MAX-Log-MAP算法的主要计算步骤如下[4~5]:
(1)计算Turbo码编码网格图上分支的路径度量值:
[img][/img]
由于Lc值对译码性能影响不大[6],为了方便定点实现,本文中简化为Lc=1。 |
|