中电网 加入收藏
设为首页
EN | 繁体
  新闻中心 最新产品 设计应用 在线座谈 紧缺人才培训 研讨会 在线商店 解决方案 电子百科 技术论坛
  首页 新闻中心 最新产品 设计应用 在线座谈 紧缺人才培训 研讨会 电子商城 解决方案 电子百科 博客 技术论坛
空白
空白
技  术  频  道
        嵌入式系统     电源管理
        3G手机     汽车电子
        数字电视     消费电子
        传感器     通信技术
        工业控制     测试测量
        可编程逻辑     中国RoHS
        DSP与MCU     无源元件
        电子制造     模拟电路
分布式流水线  用户线信令  噪音系数
微处理器控制   数字交换   局间信令
光纤以太网   随路信令   光放大技术
请您来编写词条                     更多>>
基于IEEE 802.16d的RS译码器设计与实现
高庆峰
(北京工业大学 嵌入式系统重点实验室 北京 100022)

1 RS译码的原理

802.16d中所有的RS码都是由定义在GF(28)上的RS(N=255,K=239,T=8)码得到的。

其中,N为编码后码字的字节长度,K为编码前输入信息的字节长度,T为能够纠错的最大字节数。

得到的码字经过截短信息位和删除校验位后得到需要的RS码。802.16d协议中支持的RS码有RS(32,24,4),RS(40,36,2),RS(64,48,8),RS(80,72,4),RS(108,96,6),RS(120,108,6)。

由于RS码经过了截短和删除,所以不能适用普通的RS译码算法,而必须使用能够纠错纠删的译码算法。RS译码的算法很多,有时域译码和频域译码之分。本文采用基于修正的欧几里德算法(MEA)的时域译码算法。

纠错纠删的RS译码算法通常分为以下几步:

(1)根据接收码字R(x)计算出伴随式S(x);
(2)根据删除位置计算删除位置多项式Λ(x);
(3)由伴随式S(x)和删除位置多项式A(x)计算出修正的伴随多项式T(x);
(4)由Λ(x)和T(x),通过MEA算法解关键方程,得到错误位置多项式σ(x)和错误值多项式ω(x);
(5)利用钱搜索(Chien search)计算出σ(x)的根,从而得出错误位置;
(6)根据ω(x)和Λ(x)计算出错误/删除位置多项式Ψ(x),再利用Forney公式计算出错误值和删除值,并与原来的码字相加,得到正确的码字。 2 RS译码器的硬件结构

RS译码器使用四级流水线结构,以提高系统的吞吐率,满足实时性传输的要求。

RS译码器的硬件框图如图1所示。

2.1伴随式计算

根据接收到的码字R(x),可以计算出伴随多项式S(x):

在计算之前需要先将截短的信息位位置和删除的校验位位置填充零,得到完整的RS(255,239)码字,然后再去计算伴随式。根据IEEE 802.16d的协议,输入信息经过编码后,先发送校验位信息,再发送信息位。所以接收端收到的码字经过填充后如图2所示:

对于普通的RS译码器,要求信息位在接收码字R(x)的高次项,校验位在低次项。但经过观察可知,图2所示的排列顺序可以看作正常顺序的码字经过循环移位得到。因为RS码是一种循环码,根据循环码的性质,码字经过任意的循环移位后仍是对应码的一个码字。所以,可以把接收到的码字按照原始顺序输入译码器,不需要将其转换为正常顺序。

伴随式的计算可以通过脉动阵列实现。将补零后得到的完全的RS(255,239)码字顺序输入脉动阵列,在全部输入完成后寄存器中就是所要的伴随多项式的系数。

在802.16d协议中,RS码的码长都比较短。对于RS(n,k)码,会有255-n个时钟周期电路的输入为零,使伴随式计算模块的延时很大。文献[4]提出了一种使硬件电路的延时只依赖于实际码长n的方法。但是该方法需要对接收码字的校验位和信息位互换,需要额外的缓冲区,并且互换本身就增加了延时,使译码器和前面电路的接口变得复杂。我们注意到,对于每一个基本单元,在其输入为零的情况下,经过255-n个时钟周期,寄存器的值连续和系数相乘255-n次。所以,在校验位输入完毕后,对于第一个信息位,将系数换成原系数的255-n次方即可。经修改后的硬件结构如图3所示,事先计算出每个系数的255-n次方值,和原系数作为选择器的输入端,在信息位的第一个字节时切换系数,在其他位置使用原系数。经修改后使电路消除了空转周期,可以允许码字连续输入,减少了255-n个时钟延时。

2.2删除位置多项式计算

通常,删除的位置由解调器给出,根据删除位置,可以得到删除位置多项式:

其中i为删除位置。

可以用多项式展开电路来计算此多项式,具体电路结构参见文献[2]。对于802.16d系统,所有RS码的删除位置都是确定的,所以每种模式下的删除位置多项式可以通过事先计算确定,存于ROM中,在需要时读入即可。在按照前述的码字排列顺序下,各种模式下的Λ(x)如表1所示。

由表1可知,所有多项式的常数项都为1,不需要存储;而且后两种RS模式的Λ(x)相同,只需要存储一个,所以,只需要32 B的存储空间即可,省去了利用多项式展开电路计算删除位置多项式的开支。

2.3修正伴随多项式计算

修正的伴随多项式T(x)由下式得到:

T(x)=S(x)Λ(x)mod x2T

多项式相乘相当于其系数的卷积,所以可以通过卷积电路(FIR滤波器结构)实现T(X)的计算。S(X)由伴随式模块并行输出,不需要做串并转换,直接用来初始化滤波器的系数。然后,从ROM中顺序载入Λ(X)的系数作为滤波器的输入,滤波器的输出便是T(x)的系数。同时,Λ(x)也顺序输出,恰好作为下一个模块的输入。该部分的结构框图如图4所示。

2.4关键方程求解

错误位置多项式σ(x)和错误值多项式ω(x)可以通过解关键方程T(x)σ(x)=ω(x)mod x2T来得到。文献[2]提供了一种采用修正的欧几里德算法(MEA)解关键方程的实现方法,并且通过改变算法的初始值直接计算出错误/删除位置多项式Ψ(x)。MEA算法本质上是基于多项式分解原理,求两多项式最大公因子的迭代算法。通过将迭代过程使用基本单元实现,可以使用脉动阵列实现整个计算过程。具体的算法过程可以参见文献[2]。

下面讨论需要的基本单元的个数。MEA算法迭代完成,需要(2T)2=256个时钟周期。如果能够连续解码,在最差的情况下,需要的基本迭代单元的个数为256/n=256/32=8个。但是,根据IEEE 802.16d协议,不论哪种RS编码方式,每个RS块都恰好对应一个OFDM符号,而且每个OFDM符号含有256个子载波,即使在取最小的保护间隔1/32的情况下,每个OFDM符号至少含有264个子载波。所以从整体系统考虑,解调模块给出的RS码流并不是严格连续的。每个RS分组至少持续264个时钟周期,在解调和解码模块采用相同时钟的条件下,只需要一个基本单元足以完成整个迭代过程。

2.5错误位置和错误值计算

通过对Ψ(x)求根可以得到错误位置。工程上通常用钱搜索算法求根,即将有限域中每个元素代人多项式求值,判断多项式的值是否为零。如果Xi是方程的根,则代入Forhey公式,可得到相应的错误值。将错误值加到接收码字的相应位置,便得到正确的码字。

钱搜索模块和错误值计算模块的硬件结构与计算伴随多项式相似,都是对多项式求值,具体实现方法可以参见文献[2]。

和2.1所述的方法类似,在计算之前,先将第i个寄存器初始化为αi(255-n),可以减少255-n个时钟周期的延时。


3 RS译码器性能分析

3.1 译码延时

对于RS(n,k,t)码,伴随式计算模块延时n个时钟周期;修正伴随式计算模块延时(16-2t)个时钟周期;关键方程求解模块延时256个时钟周期;钱搜索和错误值计算模块延时k个时钟周期,再为流水线的设计和硬件实现20个时钟余量,可得总的延时为(n+16-2t+256+k+20)个时钟周期。

3.2译码速度

由于采用了流水线结构,整个译码器的数据处理速度取决于流水线中最慢模块的处理速度。在本设计中,MEA模块的速度最慢,处理完一个RS块需要256个时钟周期。

对于不同的系统时钟,译码器的实际延时和译码速度会有所不同。

本设计实际应用于8 M带宽的WiMAX系统中,系统时钟为32 M。在该应用环境下,在RS(120,108,6)模式下系统延时最大,为(120+16-2*6+256+108+20)/32=15.9 μs。在RS(32,24,4)模式下处理速度最低,为[(24*8)/256]*32 M=24 Mb/s。

4 结 语

本文通过对IEEE 802.16d协议中RS码的特点分析,提出了一种适用于该标准的RS译码实现方法。本文所设计的RS译码器使用Verilog语言实现,在ModelSim 6.0环境下仿真通过。使用Synplify 8.1综合,ISE 8.1布局布线,并在Xilinx VirtexⅡ-8000系列FPGA上验证通过。该模块单独综合布线时可以达到80 M工作时钟,占用资源9%,满足系统要求。

 
本文摘自《现代电子技术》
关于我们   |   网站导航   |  广告招商   |   联系方法   |   专家约稿   |   友情链接
许可证号:粤ICP010067
Copyright © 2000-2008 ChinaECNet All Rights Reserved
Tel: 010-82888222, 0755-83243191
Fax: 010-82888220, 0755-83243291