720 likes | 1.04k Views
OFDM 系统中 Turbo 编码混合 ARQ 技术的研究和实现. 答辩人:刘伟峰 指导老师:朱杰. 背景概述. 课题背景. 高频短波通信 抗毁能力极强 覆盖范围广 运行成本低 机动灵活 战争、自然灾害、边远地区的主要通信方式. 研究重点. Turbo 码的原理、仿真和设计 Matlab 建模仿真 矩阵推导 MAP 算法 短帧 Turbo 码的设计方法 Turbo 编码混合自动重复请求方案 现有方案的分析比较 提出新颖的“分而治之 Turbo 编码 HARQ” 方案 系统模块的 DSP 实现与优化 循环冗余校验码的快速实现
E N D
OFDM系统中Turbo编码混合ARQ技术的研究和实现 答辩人:刘伟峰 指导老师:朱杰
背景概述 Bell Joint Lab
课题背景 • 高频短波通信 • 抗毁能力极强 • 覆盖范围广 • 运行成本低 • 机动灵活 • 战争、自然灾害、边远地区的主要通信方式 Bell Joint Lab
研究重点 • Turbo码的原理、仿真和设计 • Matlab建模仿真 • 矩阵推导MAP算法 • 短帧Turbo码的设计方法 • Turbo编码混合自动重复请求方案 • 现有方案的分析比较 • 提出新颖的“分而治之Turbo编码HARQ”方案 • 系统模块的DSP实现与优化 • 循环冗余校验码的快速实现 • Max-Log-MAP算法的实现与优化 Bell Joint Lab
OFDM——抗多径衰落的尖兵 • 频谱划分成窄的平坦衰落子信道 • 串并变换后,每个子信道上的符号速率下降,可以很好的对抗时延扩展 • 把频率和时间选择性衰落的影响随机化,有利于纠错码工作 一个频率选择性信道→多个非频率选择性信道 Bell Joint Lab
OFDM的Matlab实现 Bell Joint Lab
Turbo码的原理、仿真和设计 Bell Joint Lab
Turbo码——接近Shannon限的好码 • 编码器由两个递归系统卷积码通过交织器级联的方式结合而成,以较小的编译码复杂度,生成码重分布优良的长码 • 译码器采用迭代的方式,两个分量译码器互相帮助,充分利用码子的约束信息 • 在短约束长度、长分组以及10到20次迭代的情况下,Turbo码在误码率(BER)10e-5处距离Shannon限0.5dB左右 Bell Joint Lab
Turbo编码器 并行级联卷积编码器 串行级联卷积编码器 Bell Joint Lab
Turbo解码器 并行级联卷积译码器 Bell Joint Lab
软输入软输出分量译码器 • 对数似然比(LLR) • Y是观测,uk 是估计值 • 符号表示0,1比特,幅度表示可靠程度 Bell Joint Lab
MAP算法 • 想法 • 把比特的概率估计转化为状态转移的概率估计 • 把状态转移的概率估计以递推形式计算 • 计算 • 三种度量,两次递推,一步到位 • 特点(相比维特比算法) • 复杂度大(乘法,除法,指数,对数计算) • 卷积译码无优势 • 可以输出译码软信息 Bell Joint Lab
MAP算法 • 前向度量 • 后向度量 • 分支度量 • 前向递推 • 后向递推 • 后验概率LLR Bell Joint Lab
MAP算法的计算流程 • 计算分支度量 • 前向递推计算前向度量 • 后向递推计算前向度量 • 综合计算后验概率LLR Bell Joint Lab
MAP算法的矩阵表示 前向度量 后向度量 分支度量矩阵 前向递推 后向递推 Bell Joint Lab
MAP算法的矩阵表示 Bell Joint Lab
MAP的简化算法——Max-Log-MAP 指数运算和乘法运算的噩梦 • 变换到对数域中 • 利用近似公式 Bell Joint Lab
Max-Log-MAP算法 简化前向递推 简化后向递推 支路度量计算 后验概率计算 Bell Joint Lab
Log-MAP算法 • 近似导致性能损失 • 引入纠正项 Bell Joint Lab
串行级联卷积码系统Matlab实现 Bell Joint Lab
并行级联卷积码系统Matlab实现1 Bell Joint Lab
并行级联卷积码系统Matlab实现2 Bell Joint Lab
Turbo码仿真1之译码器结构——迭代次数 Bell Joint Lab
Turbo码仿真1之译码器结构——误码率 Bell Joint Lab
短帧Turbo码的设计要点1 • 译码器结构的选择:PCCC结构的误码平层大约为1e-5,而SCCC结构能够提供更低的误码平层(大约1e-7),SCCC需要更多的迭代次数达到误码平层,本身的译码复杂度也是远远高于PCCC(内编码器是4进制输入,8进制输出,格形图上有16个状态,每个状态出发有4条路径,每个状态有4条路径交汇)。在本系统中,我们选择PCCC结构。 Bell Joint Lab
Turbo码仿真2之分量码——递归 Bell Joint Lab
Turbo码仿真2之分量码——生成多项式 Bell Joint Lab
Turbo码仿真2之分量码——约束长度 Bell Joint Lab
短帧Turbo码的设计要点2 • 分量码的选择:分量码必须是递归形式的,递归形式的分量码对于Turbo码减少低码重码子起着十分重要的作用,分量码的生成多项式也起着十分重要的作用,必须优化设计,分量码的约束长度对于Turbo码的作用十分有限,增大分量码的约束长度导致译码器复杂度的增加。在本系统中,我们推荐使用poly2trellis(3, [7 5],7)分量码。 Bell Joint Lab
Turbo码仿真3之帧长 Bell Joint Lab
短帧Turbo码的设计要点3 • 帧长:对于Turbo码的性能而言,希望帧长越长越好,虽然帧长度的增加不会增加单位比特译码的复杂度,但是帧长直接决定了系统传输的时间延迟和译码存储空间,所以帧长度的选择必须折中考虑。一般的对于语音系统,帧长为200比特左右,对于视频系统,帧长为1000比特左右。本系统中,我们使用256比特作为帧的长度。 Bell Joint Lab
Turbo码仿真4之交织器——SCCC Bell Joint Lab
Turbo码仿真4之交织器——PCCC Bell Joint Lab
Turbo码仿真4之交织器——奇偶分离 Bell Joint Lab
短帧Turbo码的设计要点4 • 交织器:交织器在Turbo码系统中也是一个十分重要的组件,相比较差的交织器,良好的交织器可以提供大约0.2dB到1dB左右的增益,大量的试验证明,一般的随机交织可以取得良好的性能,代数交织和随机交织的性能相当,但是随着帧长的变小,随机交织的优越性会消失,直至我们必须“刻意”的设计交织器,才能使Turbo码正常工作。随机交织对于帧长度没有约束,代数交织器一般对于帧长有着特殊的要求,矩阵交织器同样要求帧长能够分解成两个相近数的乘积。所有的交织器都可以通过查表的方式完成。本系统中,我们推荐使用随机交织。 Bell Joint Lab
Turbo码仿真5之译码算法——简化 Bell Joint Lab
Turbo码仿真5之译码算法——量化比特数 Bell Joint Lab
短帧Turbo码的设计要点5 • 译码算法:Log-MAP算法和MAP算法相当,Max-Log-MAP有大约0.5dB的性能损失,MAP算法复杂度最大,Log-MAP和Max-Log-MAP计算量相近,但是Max-Log-MAP算法在结构上最接近维特比算法,容易在DSP上快速实现。3比特的量化足够,但是在高信噪比区,推荐6比特量化。在本系统中,我们使用Max-Log-MAP算法,6比特量化。 Bell Joint Lab
Turbo码仿真6之打孔 Bell Joint Lab
短帧Turbo码的设计要点6 • 打孔:打孔可以提高码率,但是会带来误码率方面的性能损失,打孔的选择应该基于系统设计要求的考虑,没有孰优孰劣的问题。本系统中,我们使用1/2码率的Turbo码,打孔方式取经典方案。 Bell Joint Lab
Turbo码仿真7之结尾 Bell Joint Lab
短帧Turbo码的设计要点7 • 结尾策略:对于帧长大约1000比特的系统,无需考虑迫零处理,当帧长小于50比特,我们采用方案4迫零处理。 Bell Joint Lab
Turbo码混合ARQ系统 Bell Joint Lab
Turbo编码混合ARQ系统 Bell Joint Lab
传统HARQ分类 • Type I HARQ:数据被加以CRC并用FEC编码,重传时,错误分组被丢弃,重传分组与前一次相同。 • Type II HARQ:考虑无线信道的时变特性,在首次传输数据块时没有或带有较少的冗余,如果传输失败,重传的数据块不是首次所传数据块的复制,而是增加了其中的冗余部分。在接收端将两次收到的数据块进行合并,编码速率下降而提高编码增益。 • Type III HARQ:与第二类HARQ不同的是重传码字具有自解码能力,因此接收端可以直接从重传码字当中解码恢复数据,也可以将出错重传码字与已有缓存的码字进行合并后解码。 Bell Joint Lab
Turbo码HARQ I型 • 我们用ARQ I型广义的表示发送端在重发数据分组时,不生成新的码子,与传统定义不同的是,接收端不一定丢弃首发分组,完全可以利用首发的信息,增加系统的通过率。 • 这种ARQ机制的优点是系统充分利用了硬件资源,编译码器的结构和控制都比较简单,有利于系统降低复杂性和减少功耗。 Bell Joint Lab
Turbo码HARQ I型接力棒式Turbo码HARQ • 在发方,首先将欲传信息经Turbo编码器编码后发送出去,接收端经过Turbo译码,如果通过CRC检错校验,反馈ACK信号回发送端,如果不能通过CRC检错校验,则反馈NACK信号到发送端; • 发送端收到重发指令,则将该信息的原先的码子重新发送; • 在收方,对于重发帧的译码,可将上一帧的译码结果用作先验信息,并用于Turbo译码器进行译码。如果译码结果通过CRC检错校验,反馈ACK,否则反馈NACK; • 重复第2、第3步,直到发送端收到ACK信号,或者达到最大的重发次数,放弃此次通信。 Bell Joint Lab
Turbo码HARQ II型 • 我们用ARQ II型表示发送端在重发数据分组时,生成新的校验信息,即所谓的增量冗余信息,但是新的分组没有自解码性质。 • ARQ I型:简单的“重复码”,其最小码距是原来的L倍;实际上,通过L次重发可以构成纠错能力更强的纠错码。 • 这种ARQ机制的优点是能够充分利用重发的分组资源,纠错能力比I型更强,但是系统的编译码硬件设计必须以最低码率的纠错码设计,而系统一般运行在较高的码率水平上,所以不能充分利用硬件资源,编译码器的结构和控制相对复杂。 Bell Joint Lab
Turbo码HARQ II型速率兼容打孔Turbo码HARQ • 发送端生成L*N比特长度的Turbo码,经过打孔形成N比特长度分组,发送到信道,并且保存被删除的其他校验比特; • 接收端接收到分组,经过Turbo译码,如果通过了CRC检错,发送ACK信号,否则,发送NACK信号; • 发送端收到NACK信号,并累计重发次数,发送剩余的相应的N比特校验比特; • 接收端接收到重发分组后,与首发分组组成新的码子,经过Turbo译码,如果通过了CRC检错,发送ACK信号,否则,发送NACK信号; • 发送端收到NACK信号,并累加重发次数,发送剩余的相应的N比特校验比特; • 接收端接收到重发分组后,与前两次的分组组成新码子,经过Turbo译码,如果通过CRC检错,发送ACK信号,否则,发送NACK信号; • 重复上述过程,直到发送端收到ACK信号,或者重发次数达到最大的L次,放弃本次通信。 Bell Joint Lab
Turbo码HARQ II型Turbo码分而治之HARQ • 基本思想是:假设系统是1/2码率的Turbo码,我们的编译码硬件设计也是按照基本的1/2码率的Turbo码来设计,当发送端被要求重发时,我们可以把信息序列分成奇数位和偶数位两类,奇数位的信息比特保持不变,但是偶数位的信息比特用已知的“01”序列代替,然后经过编码器生成码子,实际上,新生成的码子的有效信息比特只有原来的一半,同时,码率也下降了一半,这也就意味着码子有着更强的纠错能力,在接收端,译码器首先对重发分组进行译码,运用相应的先验信息,得到关于信息序列奇数位比特的可靠信息,然后把这些信息反馈到第一个分组的译码器,通过奇数位比特的可靠信息来获得的正确译码。如果这时候,译码输出仍然没有通过CRC校验,那么在发送端可以把偶数位比特信息序列按奇偶分成2段,只传输其中1/4的信息比特,其他位置用已知序列填充,以此类推,最终获得正确译码。 Bell Joint Lab