龙空技术网

RS循环码的生成矩阵与校验矩阵及译码算法的设计和实现

浮华历史 90

前言:

而今朋友们对“peterson算法怎么理解”都比较注意,朋友们都需要学习一些“peterson算法怎么理解”的相关文章。那么小编在网络上网罗了一些对于“peterson算法怎么理解””的相关文章,希望各位老铁们能喜欢,你们一起来了解一下吧!

Cyclone系列FPGA是Altera公司在2002年12月份推出的低成本、高速FPGA,采用0.13m、全铜1.5VSRAM工艺,容量是以往低成本FPGA系列的四倍,每千个逻辑单元(LE)的批量价格低于1.50美元。Altera公司还将在2005年初推出基于90nm生产工艺的第二代产品CycloneII系列FPGA,成本更低,功能更强大。

Cyclone系列FPGA是基于成本优化的,最高达20060个逻辑单元和288K位的RAM,相对其他公司的FPGA,仅一半的成本,依然提供强大的功能;低成本的结构和丰富的器件资源相结合,能够实现完整的可编程芯片系统(SOPC)方案,CycloneFPGA成为大批量应用的理想选择,为目前使用中小规模ASIC应用的下一代产品提供了一种低成本方案。

当然,由于Cyclone器件的成本很低,其内部结构肯定会存在一些不足之处,给设计者带来一些不便。

根据的使用经验可知,Cyclone器件的M4KRAM块不可分割成更小的模块,因此哪怕你只用了一个M4K中1个bit的空间,这个M4K的剩余空间都不可再用了,形成太大的资源浪费;Cyclone器件内部锁相环的性能不是很好,只能对一些非常简单的分频系数进行频率合成和锁相,与APEX及Statix系列内部锁相环性能相差甚远;Cyclone器件内部没有集成LVDS的专用收发模块,使用其LVDS接口要用内部锁相环,非常不方便。Cyclone器件内部可用资源。

Cyclone系列FPGA支持多种配置方式,包括主动串行(ActiveSerial)配置模式、被动串行(PassiveSerial)配置模式、边界扫描(JointTestActionGroup)配置模式。其中主动串行配置模式是一种可使用低成本串行配置器件的新型配置模式,大大降低了成本和电路板面积。

此外,Cyclone系列FPGA还可以接收一种经过压缩的配置比特流,然后实时的解压缩,大大减少了配置文件的存贮空间,同时也缩短了芯片的配置时间。

Cyclone系列FPGA使用SRAM单元来存储配置数据。因为SRAM存贮器是易失性的,每次系统加电时配置数据必须下载到FPGA中,可以使用AS,PS,JTAG接口或它们的组合接口对Cyclone系列FPGA进行配置。

通过对FPGA的MSEL1脚和MSELO脚置高(1)或置低(0)来选择器件的配置方案。当MSEL1,MSELO置“00”时为AS模式,置“01”时为PS模式,置“00”或“01”时可用JTAG方案配置。

在与中国普天集团西安蓝牙通信有限公司的合作项目中,Cyclone器件EP1C3T144C8的配置电路采用了AS和JTAG两种配置方式,配置芯片采用EPCS1。

Cyclone系列FPGA必须采用Altera公司的QuartosII3.0以上版本进行开发。Quartos软件具有完全集成化的易学、易用的可视化设计环境,还具有工业标准EDA工具接口,并且可以运行在多种操作平台上。

对于有限域的除法电路,一般都是将除法变成乘法电路来实现,这就要用到求逆运算。对于求逆运算有基于Euclid算法的求逆运算、基于Fermat定理的求逆运算和基于查找表的求逆运算等,但前两种分别用到Euclid算法和循环移位,迭代次数较多,因此延时也较大,不太适合实时性要求较高的场合。

考虑到选用的是Altera公司的Cyclone系列FPGA,它在内部嵌入了RAM块,可以用作查找表,而且对于GF(28)存贮量不是很大,可以接受。在设计中采用基于查找表的求逆运算,其电路结构先完成求逆运算,再进行乘法运算。在ROM设计时不用时钟控制,这一方案的速度很高,经仿真可知延时在允许范围内,这样在一个时钟周期内就完成了求逆和乘法运算,而且也充分利用了FPGA内的逻辑单元与ESB块,提高了芯片的资源利用率。

RS(255,239)编码电路主要由运算单元和控制单元组成。为了节约硬件资源,利用到m。二120编码电路的对称性,在设计时对电路可省去一半的有限域乘法器,其中运算单元有两种:有限域乘一加一存贮(molt-add-dff)单元和加一存贮(add-dff)单元组成控制模块。用它来实现选通门的控制,实现信息位和校验位的输出切换。

对于时域RS译码,当计算出伴随多项式后,接下来的任务就是求解由伴随多项式构造的关键方程,这是整个RS译码的核心部分,这部分的运算量最大,占用资源最多,而且它的结构直接影响了整个译码的性能。解关键方程的经典算法主要有BM(Berlekamp-Massey)算法和Euclid算法。BM算法和Euclid算法涉及大量的变量存储和复杂的逻辑控制以及较多的有限域除法,众所周知,在硬件实现时有限域的除法实现的难度较大,占用资源较多,所以它们的应用受到一定程度的限制。

因此有人提出了改进的Euclid算法,它可使其整个过程只作一次有限域求逆运算。改进的Euclid算法大大降低了其运算量,与BM算法相比所需的运算量是基本相同的,还可以同时获得错误位置多项式和错误值多项式的好处。Shao等人在文献中,详细介绍了改进的Euclid算法的VLSI的实现结构,它采用了脉动阵列结构,便于实现流水线设计。它由2t个处理单元(ProcessingElement)级连组成,占用资源较多。

为此,Young-JinLin等人提出了一种最小化的、改进的Euclid算法结构,这种结构根据算法的特性对按奇偶次迭代进行了合并,由循环移位寄存器和运算单元组成,而其中的运算单元仅由8个有限域乘法器和4个有限域加法器组成,运算单元大大减少,占用资源大幅度下降。

但这种结构存在的缺点是寄存器之间关键路径(criticalpath)太长,限制了译码器内部工作频率的提高,不适用于高速数据通信及存贮系统。为了进一步提高译码器的工作频率,本人对这两种结构进行了深入研究,针对这两种实现结构的优缺点,提出了一种最小化的、改进的Euclid算法流水线实现结构,占用资源较少,同时其内部工作时钟频率大大提高,克服了以上两种结构的缺点,适合于高速数据通信的场合。

在改进的Euclid算法计算流程中,可以发现它的循环迭代有两个特点,一是当经过奇数次循环之后,R(x)和Q(x)的次数相等,即deg{R(x)}=deg{Q(x)},偶数次循环之后,deg{R(x)}<deg{Q(x)}。二是每次循环之后,R(x)的最高次项变为零。

因此可将奇数和偶数迭代运算进行合并,经过两次循环后才进行多项式系数的更新,系数通过运算单元之后采用循环移位来实现更新。但合并之后,运算单元的最长路径中将会出现两个有限域乘加运算模块,这将大大增加了数据的传输延时,会造成系统工作时钟频率的降低,为此必须在运算单元添加一级寄存器,实现流水线结构,使数据在运算单元中以流水线的形式进行运算,以提高系统的工作时钟或在相同的工作时钟频率下可以大幅度降低器件功耗。当然,这会在每次迭代中增加一个时钟的延时,但对于在高速数据传输的场合,这个延时不会产生太大的影响。

如图所示,上一模块完成计算错误值多项式的功能,下面的模块计算错误位置多项式。(ao}bo),(像bo)分别是R(x)Q(x)的最高项系数。当Q(x)的高t次系数皆为零时,算法终止。模块中的运算单元皆为有限域中的乘法和加法运算。本人提出的最小化、改进的Euclid算法流水线实现结构大大减少了在RS译码器的VLSI实现中Euclid算法的硬件资源占用,同时使Euclid算法模块不再是RS译码器工作频率提高的瓶颈。

利用QuartosII软件在Alters公司的Cyclone系列器件上进行了逻辑综合及功能仿真,其占用资源为968逻辑单元,其最高内部时钟工作频率为204.79MHz,而没采用流水线结构的最小化、改进的Euclid算法实现模块的最高内部时钟工作频率为133.33MHz,提高了53.6%,改进效果明显。基于FPGA的最小化、改进的Euclid算法实现电路由循环移位寄存器、运算单元及控制模块组成。

中国普天集团西安蓝牙通信有限公司的WTX系列无线扩频设备(包含WTX5.8-035,D,Q三个系列)工作在国家无委会规定的5.725~5.850GHz扩频通信专用频段,容量分别为1X2Mb/s,2X2Mb/s,4X2Mb/s,满足相关技术规范,采取直接序列扩频、延时锁定环解扩和纠错编码技术,具有抗干扰能力强,不会干扰其它微波系统等特点,可用于数字蜂窝移动通信基站之间的传输通道,也可用于计算机局域网互连系统,还可用于传送数据、图像、话音综合业务。既可做点对点传输,也可做点对多点传输,在军用和民用通信领域都有广泛的应用。

在该设备的技术改造项目中,承担了其前向通道差错控制模块的研制,使其信息处理速率从二次群速率E2=8.448Mbits/s提高到三次群速率E3=34.368Mbits/s,保证微波信道中对数据误码率的要求。在这个项目中,采用了基于FPGA的高速RS编译码器加卷积交织器实现前向通道的差错控制方案,与现有设备采用的卷积码相比,系统的性能大大提高,误码率大大降低,取得较好的效果。

编译码模块处理的基带信息有两种:一是业务数据。信息速率34.368Mbits/s}TTL电平,NRZ码,时钟34.368MHz}20ppm,发送时由用户终端提供时钟,接收时由编译码模块给用户终端提供时钟;二是3路辅助服务性数据。每路数据速率64Kbits/s,由编译码模块提供8K的帧同步信号。由编译码模块内部的数据汇接模块将业务数据基带接口和辅助数据基带接口进行数据汇接,以便共用一个编译码器。

编译码模块的总体方案,对于发送通道两种串行的比特流数据经加扰后转换成字节数据,对其进行数据汇接成帧后再进行RS编码,然后对RS码字进行帧交织,最后对数据进行并串转换成比特流数据,由差分编码器转换为I.Q两路差分信号送入调制器;对接收通道,执行相应的逆处理过程,如差分解码、串并变换、帧同步、解交织、RS译码、解扰、并串变换等;控制与显示单元实现分别对发送通道与接收通道进行指令控制及其状态显示,还要实现信道的误码率计算与数据显示电路。

硬件电路基于两片Altera公司Cyclone系列FPGA实现,发送通道、控制与显示单元共用一片EP1C3T144C8实现,接收通道用一片EP1C6T144C8实现;时钟电路还采用了两个片外的锁相环。

在数字通信系统中,各个模块之间时钟的同步是至关重要。为了防止编译码器的输入缓存出现数据的读空或溢出现象,保证数据的正确性,对于本项目中的编译码器,编码器所用的时钟38.4MHz要与基带信源中业务数据时钟34.368MHz同步;译码器所用的时钟38.4MHz要与中频模块提供的I,Q两路差分数据时钟19.2MHz同步,并且译码器向数据终端设备提供的业务数据时钟34.368MHz要与译码器的时钟38.4MHz同步。

时钟的同步一般要用锁相环来实现,现在大多数FPGA内部都集成了一个或多个内置锁相环,在大多数场合都可方便地应用其内部内置锁相环进行分频或倍频,但由于本项目选用Altera公司Cyclone系列FPGA中的EP1C3T144C8和EP1C6T256C8,虽然其内部集成了两个锁相环PLL,可是这个锁相环的性能不是很好,对于一部分分频系数它无法实现。

对于本系统,其时钟分频比为200/179,2和179/100,这些分频比就算用高端的Stratix系列FPGA中的内置锁相环也无法实现,因此必须采用片外的模拟锁相环来实现。而模拟锁相环的成本随着频率的提高而大幅度增加,所以考虑发射和接收通道分别采用一个较低频率的片外锁相环,利用FPGA内部的内置锁相环进行倍频,用逻辑单元进行分频。

这样充分利用了FPGA内的资源,降低了成本。编译码模块的时钟同步电路由外置的两个锁相环及FPGA内部的锁相环实现。具体地说,对于信源业务数据时钟34.368MHz利用FPGA内部电路进行二分频为17.184MHz,再利用片外的锁相环锁到19.2MHz,然后用FPGA内部的内置锁相环进行倍频至编码器的工作时钟38.2MHz,接收时19.2MHz的差分数据时钟一路由内部内置锁相环倍频至译码器工作时钟频率38.4MHz,另一路至片外锁相环锁到17.184MHz再由FPGA内部锁相环倍频至34.368MHz的业务数据时钟频率。

参考文献

[1] C.E.Shannon,“A mathematical theory ofcommunication”Bell System Technical Journalvol.27July and October 1948.

[2] 王新梅,肖国镇.纠错码--原理与方法.西安电子科技大学出版社(修订版),2001.

[3] 姜丹.信息理论与编码(上、下册)中国科学技术大学出版社,1992

[4] 李振玉,卢玉民.现代通信中的编码技术,中国铁道出版社,1996

[5] G.CClark,JrandJ.B.Cain,“Error-Correcting Coding for Digital Communications”,Plenum Press New York,1981.

[6] RNRao,EFujiwara,“Error-Control Coding for Computer Systems”,PrenticeHall,1989.

[7] A.MMichelson,A.HLevesque,“Error-Control Techniques For DigitalCommunication”John Wiley&Sons,New York1985

[8] S.Lin and D. J.Costello, Jr,“Error Control Coding-Fundamentals and Applications”1984.

[9] W.W.Peterson and E.J.Weldon, Jr.Error Correcting CodeCambridge” MA, 1972.

[10] 曾晓洋.高性能Reed-Solomon码编译码方法及其相关技术的研究。中国科学院长春光学精密机械与物理研究所博士论文.2001

[11] 李云鹏,王新梅,谢显中.基于FPGA自适应高速RS编译码器的IP核设计.重庆邮电学院学报2003.3

标签: #peterson算法怎么理解