OTN中前向纠错技术的FPGA实现

时间:2022-07-03 11:33:04

【摘要】G.709定义FEC技术采用RS(255,239)算法,每个子行(255个字节)最多可纠正8个任意位置的错误字节,最多可检测到16个字节错误。RS编码属于分组线性循环码,利用输入码字计算得到校...

OTN中前向纠错技术的FPGA实现

【摘要】随着光纤传输信息量的增加,前向纠错技术(orward Error Correction,FEC)对超长距离、高速率传输中光纤的色散和非线性效应有良好的改善作用。本文介绍了otn概念及FEC编译码的实现原理,并在RS算法原理及G.709协议基础之上,设计了OTN中FEC的编译码器的fpga实现方案。最后使用ModelSim与Matlab相结合的方法对该编译码器进行调试、仿真、验证。

【关键词】OTN;前向纠错;FPGA;RS编码;G.709

1.引言

光传送网(Optical Transport Network,OTN)是由ITU-T G.872、G.798、G.709等建议定义的一种全新的光传送体制,是一种通过光纤链路连接在一起的网元组成的网络,能够提供基于光通道的客户信号的传送、复用、路由、管理、监控及保护[1]。随着光纤传输信息量的增加,单通道传输速率的提高,光纤的非线性效应成为限制系统性能的主要因素,为了克服长距离、高速率传输中光纤的色散和非线性效应,引入了FEC技术,它不仅能在光域上提高OSNR容限,还可以在电域上进行编码纠错。OTN中使用FEC技术,实现了最大6.2dB编码增益,延长了电中继距离,降低了建网成本。

2.FEC编译码原理

G.709定义FEC技术采用RS(255,239)算法,每个子行(255个字节)最多可纠正8个任意位置的错误字节,最多可检测到16个字节错误。RS编码属于分组线性循环码,利用输入码字计算得到校验码字,接收时根据算法对数据进行纠错,对突发错误的纠正效果良好。

3.FEC编译码器的实现

OUT帧的每一行使用字节间插的方法被拆分成16个子行,字节间插结构如图1所示[1]。每一个FEC的编码器或解码器处理其中的一个子行。编码时每一个子行的第1到第239个信息字节计算出来的FEC奇偶校验字节被间插在同一个子行的第240到第255个字节。

3.1 FEC编码器的实现

本文的RS(255,239)编码采用n-k级除法器实现[3],硬件电路实现原理如图2。当输入前239个有效字节时,MUX选择1,输入数据不断进行乘加和移位运算,若输入字节无效,寄存器保持原有值;当完成全部239个信息字节的输入后,MUX选择0,禁止乘加运算,在输出使能的控制下,连续16个时钟周期的寄存器FF15输出就是监督位字节。

按照G.709的定义,每个OTU2帧的一行,需要16个RS编码模块同时进行运算。每个RS编码器在OTU2帧的每行开始位置进行初始化,在239个字节的数据输入完成后,输出16个监督位数据。数据的输入输出控制由OTU2成帧模块实现。图3为一个OTU2的一行中,16个编码子模块和每个字节的对应关系。在FPGA实现中,OTU2数据为64bit位宽,故每个时钟周期,有8个RS编码单元输入数据有效,8个RS编码器单元处于运算保持状态。

3.2 FEC译码器的实现

RS译码器主要由伴随式计算单元,关键方程求解单元,Chien搜索和Foney计算单元、缓存单元、译码控制单元构成。译码的FPGA实现框图如图4所示。

一次完整的RS(255,239)块译码实际上是对OTU2帧的一行数据中255个字节的处理。当读到行1指示信号时,进行伴随式的计算,255个字节全部来到就完成伴随式计算;然后开始关键方程求解及后续步骤,此时,行1接收字节数据还在缓存中,行2的255字节开始送入,伴随式模块开始新的计算;当行1译码处理完成后就开始纠错输出。OTU2译码模块需要用到16个译码子模块模块。

3.2.1 伴随式的计算单元实现原理

伴随式计算是译码的第一步,通过计算伴随式,能检测出接收码字是否有错。将GF(256)中的元素代入接收信息多项式计算即可得到伴随式的值。伴随式计算的电路结构由Honer递推公式得到[2]:

3.2.2 关键方程式求解单元实现原理

关键方程求解模块是主要是求错误位置多项式,它由差值计算单元,迭代计算单元和迭代控制单元构成,结构如图6所示。该单元是RS译码器实现的关键因素,本文采用一种改进的BM算法(iBM),该算法不涉及到有限域的求逆运算,FPGA实现时可采用循环迭代结构,降低了设计的复杂度。

(2)迭代控制单元并对进行判断,对迭代中间变量,的生成进行控制;同时该单元在伴随式计算完毕之后,开始迭代计算,迭代循环的计数器r、DC单元和PE单元被激活。在本单元中协调好各个变量之间的时序关系是关键方程式求解正确的关键。

3.2.3 Chien搜索和幅值计算单元实现原理

在关键方程式求解完毕之后,Chien搜索确定错误位置,Foney算法计算错误幅值。在逻辑实现中,Foney求幅值处理通过复用Chien搜索模块来完成,基本电路如图7所示。

控制模块CTRL完成计算的控制:Chien搜索阶段,输入全部的值进行验根处理。Foney计算阶段,分别输入和奇数序号的的值完成错误幅值计算。

Chien搜索电路实现错误位置多项式的验根,以确定错误位置值:将GF(256)内所有元素代入错误位置多项式中。

运算查找表模块封装2个ROM,分别实现的求幂和求逆运算。

4.Modelsim仿真结果

文中利用matlab软件产生60帧64位宽的OTU2随机数据,将全0填充FEC域的OTU2信号输入编码模块,使用编码模块的错误插入功能在每个子行随机插入8个误码。将结果输入OTU2译码模块中,译码输出数据与原始输入数据进行对比,完成FEC的编译码器的功能的功能验证。

5.结束语

本文设计了一种OTN中FEC的FPGA实现方案,重点研究了适用于FPGA实现的有限域的乘法运算、伴随式的计算、改进后的BM迭代算法、chien搜索电路等关键问题。用Altera公司Stratix III件验证了功能的准确性。实现工作频率达到180MHz,占用36825个逻辑资源,占用率低于20%。由于RS编译码器件具有通用性,在此基础上做少量的修改就可以完成OTU1和OTU3编译码器的FPGA实现。

参考文献

[1]TELECOMMUNICATION STANDARDIZTION SECTIOR OF ITU.Interfaces for the Opitical Transport Network[S].ITU-T Rec.G.709/Y.1331,March,2003.

[2]Dilip V.Sarwate.High-Speed Architectures for Reed-Solomon Decoders[J].IEEE Trans on VLSI System,October,2001:643-647.

[3]王新梅,肖国镇.纠错码―原理与方法[M].西安:西安电子科技大学出版社,2003:259-291.

上一篇:数控实训中学生自主管理模式的探索 下一篇:Agilent天线测试系统测量误差分析