高速译码器

2024-10-16

高速译码器(精选7篇)

高速译码器 篇1

RS码是一种纠错能力很强的多进制BCH码,同时具有纠正随机和突发两种差错的能力,因此被广泛应用于通信系统中,以提高数据传输的可靠性。在光通信系统中,常把RS码作为其前向纠错码。近几年,RS码常用于一些高速通信系统中作为信道编码,例如,802.3av协议规定RS(255,223)作为10 G EPON的前向纠错码,这些高速系统对前向纠错的处理速率提出了更高的要求。已有文献[1,2],[4]中关于RS(255,223)译码器的设计,都难以在速度和面积上兼顾考虑,特别是译码速率太慢,无法满足高速通信系统的要求。为了保证高速处理,同时尽可能减少硬件资源的占用,提出一种合理的译码器结构,从而能高效、快速地译码。

1 RS(255,223)译码原理

RS(255,223)的参数指标如下:每个符号的比特数为8,码字长度为255,信息符号长度为223,校验符号长度为32,最大纠错能力为16个符号。假设编码后的码字多项式为C(x)=c254 x254+c253x253+…+c1x1+c0,编码在信道中由于传输噪声引起的错误图样多项式为E(x)=e254 x254+e253x253+…+e1x1+e0,接收端的接收码字多项式为R(x)=r254x254+r253x253+…+r1x1+r0,则有R(x)=C(x)+E(x),其中ri=ci=ei,(i=0,1,…,254)。译码的基本思路是:从接收码字多项式R(x)中找出错误的位置和错误值,即求得错误图样多项式E(x),然后从R(x)中减去E(x)就得到了解码后的正确码字C(x)=R(x)-E(x)。

RS译码算法主要分为两种:时域译码算法和频域译码算法。若采用硬件实现频域译码算法,则电路结构非常复杂,耗费的硬件资源非常大。而时域译码算法具有速度快、硬件资源耗费少、控制电路少等优点。因此,采用时域译码算法来实现RS(255,223)译码器。RS(255,223)的时域译码步骤如下:

(1)由接收码字计算RS(255,223)的伴随多项式S(x);

(2)采用RiBM算法通过伴随多项式求解关键方程,从而求解出错误位置多项式σ(x)和错误值多项式ω(x);

(3)利用钱氏搜索法求解出错误位置多项式的根,得到错误位置;错误位置多项式的根的倒数即是错误位置;

(4)利用Forney算法由错误值多项式求解出各个错误位置对应的错误幅值;

(5)FIFO控制器所存储的接收码字与错误幅值相减得到正确的传输码字。

2 RS(255,223)译码器设计

为了提高译码器的处理速度,采用三级流水线结构来实现RS(255,223)译码器,其结构如图1所示。译码过程中的计算都是基于有限域的,其基本计算单元是有限域乘法器和加法器。RS (255,223)译码器包括:伴随式计算模块、关键方程求解模块、钱氏搜索模块、Forney算法模块以及FIFO模块5个部分。

2.1 伴随式计算模块的电路设计

定义伴随多项式为S(x)=s32x32+s31x31+…+s2x2+s1x,由接收码字多项式R(x)来计算伴随式si的值,伴随式的计算公式如下[2]:

码元符号从r254到r0顺序发送,则伴随式si就可以用以下的递归公式来计算:

qj称为第j步的部分和,并且有q-1=0和si=q254。由递归公式(2)可知,32个伴随式是独立并行计算的,且各自是递归运算,其结构非常规则,易于硬件实现。为了提高译码速度,设计采用32个并行的计算模块,分别计算所需要的32个伴随式。伴随式计算模块的电路结构如图2所示,feedback信号用于控制寄存器的反馈,当一个码字分组的第一个符号r254进入译码器时,必须使其处于低电平,使得所有寄存器的反馈值为0,即q-1=0,以确保当前码字分组的伴随式计算不会受到前一个码字分组的影响。电路工作过程如下:码元符号从r254到r0顺序发送,当码元符号r255-j-1到达后,寄存器中存储的部分和qj与αi相乘,然后与r255-j-1相加得到新的部分和qj+1并存入寄存器中,当r0到达后,伴随式计算完成。

2.2 关键方程求解模块的电路设计

关键方程求解的常见方法主要有欧几里得算法、BM算法及它们的改进形式,这些算法都属于快速迭代算法;其中BM算法的译码时延比欧几里得算法小,实现电路较简单,所以在工程中较为常用。文章中关键方程求解模块采用RiBM算法,与BM算法相比,RiBM算法去掉了复杂的求逆过程,可以采用规则的脉动阵列实现,控制信号少、速度快、硬件实现更方便。采用RiBM算法,单个时钟周期内的运算量减少,可以提高译码器的工作频率,因此采用RiBM算法可以显著地提高译码速度。RiBM算法的主要思路是并行实现,其硬件结构采用规则的脉动阵列实现,RiBM算法的硬件结构主要包括两部分:一部分是49个功能相同的PE计算单元的串接组合实现多项式的脉动计算;另一部分是控制电路,实现差值更新。其硬件实现结构如图3所示。

定义错误位置多项式为定义错误值多项式为电路工作过程如下:初始时刻,PE0~PE31内的寄存器的值更新为当前计算出的伴随式s1~s32,PE32~PE47内的寄存器的值更新为0,PE48内的寄存器的值更新为1;经过32个时钟周期的运算后,关键方程求解完毕,PE0~PE15分别输出错误值多项式ω(x)的系数ω0~ω15,PE16~PE32分别输出错误位置多项式的系数σ0~σ16。

2.3 钱氏搜索模块和Forney算法模块的电路设计

在RS(255,223)的译码算法中,采用钱氏搜索法来求解错误位置多项式σ(x)的根,并确定错误位置。为了检验码元符号r255-l(l=1,2,…,255)是否有错,译码器需要确定α255-l是否为错误位置数,等效于检验αl是否为σ(x)的根。因此,若σ(αl)=0成立,则可以确定r255-l产生了错误。钱氏搜索电路的实现结构如图4所示。电路工作过程如下:初始时刻,寄存器Di的初始值分别更新为错误位置多项式σ(x)的系数σi。对于每个时钟周期,第i个寄存器Di的值与αi相乘,并将结果存入寄存器Di。在第k个时钟周期时,所有寄存器的累加和为通过判断它的值是否为0,就可以判断r255-k是否是错误位置。

假设错误值为ek,则利用RiBM算法计算出的ω(x)所对应的Forney公式为:

其中σodd(x)为错误位置多项式σ(x)的奇数次幂项之和,βk-1为错误位置多项式σ(x)的根。Forney算法的实现结构如图5所示,其中计算ω(βk-1)的电路结构与钱氏搜索电路结构类似。电路工作过程如下:初始时刻,寄存器D0~D15的初始值分别更新为错误值多项式ω(x)的系数ω0~ω15,寄存器D16的初始值更新为1,采用ROM查表法实现σodd(βk-1)的求逆,经过255个时钟周期的运算后,错误值计算完毕。因为钱氏搜索模块和Forney算法模块是独立并行工作的,所以,此时接收码字也纠错完毕。

3 实现结果的验证与分析

译码器的功能验证是在Modelsim SE 6.2b和QuartusⅡ7.1环境下完成的。验证所采用的芯片是CycloneⅡ系列芯片EP2C8T144C8。经过编译后,占用芯片的4 327个逻辑单元,占用逻辑单元比文献[4]的方案少4 855个。为了验证该译码器能否纠正16个错误,在编码后的码字中加入16个错误,作为译码器datain端的输入,如图6所示,correctcode为编码器编码后的正确码字,用来作为参照;errorflag为错误标志。译码输出结果如图7所示,outflag为高电平时,译码器输出端dataout开始输出译码结果。仿真结果显示,该译码器的伴随式计算模块耗时约为255个时钟周期,关键方程求解模块耗时约为32个时钟周期,钱氏搜索模块和Forney算法模块独立并行地工作,其总耗时约为255个时钟周期。与ME算法相比,关键方程求解采用RiBM算法,可以大大提高译码速度。系统时钟频率设为100 MHz,经过548个时钟周期(5.84μs)后得到译码结果,与软件译码方式相比,其耗时非常少。对图6和图7进行比较,可以看出,译码器成功地纠正了16个错误,证明该译码器能很好地实现译码功能。

文章完整地阐述了基于RiBM算法的RS (255,223)高速译码器的设计以及FPGA实现,仿真和编译结果表明该译码器与ME算法实现的译码器硬件复杂度相近,译码时延大大减小,极大地提高了数据吞吐率,其装置可以应用于诸如光通信系统等需要高速译码的通信系统中。

摘要:提出了一种基于RiBM算法的RS(255,223)高速译码器设计方案,并采用FPGA和VerilogHDL实现了该译码器。译码器采用三级流水线结构实现,其中关键方程求解模块采用RiBM算法,具有译码速度快、占用硬件资源少等优点。仿真结果验证了该译码器设计方案的有效性和可行性。

关键词:RS(255,223),FPGA,RiBM算法

参考文献

[1]严来金,李明,王梦.RS(255,223)译码器的设计与FPGA实现[J].微计算机信息,2005,21(1):148-149.

[2]张玲,张立,何伟.截短Reed-Solomon码译码器的FPGA实现[J].电子技术应用,2009,35(7):65-67.

[3]陈曦,谢军,邱琪.基于RiBM算法的RS译码器设计实现[J].光通信技术,2008(11):48-50.

[4]向征,刘兴钊.RS(255,223)编译码器的设计与FPGA实现[J].电视技术,2006(11):17-19.

高速译码器 篇2

LDPC码以其接近香农极限的优异性能和可并行解码的译码结构, 得到了广泛的青睐, 成为DVB-S2和WiMAX等通信标准的选用信道编码。LDPC译码器的硬件结构主要有全并行结构、串行结构和部分并行结构3种。全并行结构译码器具有强大的处理能力, 可以达到很高的译码速率, 但所需的资源很大。串行结构的优势是所需要的资源少得多, 而且串行结构设计比较灵活, 可以适用于不同的LDPC码, 但是译码速度较低。部分并行译码结构能够实现译码速度和硬件复杂度的折中, 既能以较快的速度进行译码, 又能使硬件开销不至于太大。

1准循环LDPC码及其译码算法

1.1准循环LDPC码

准循环LDPC码便于应用, 同时又具有良好的性能, 目前已有很多标准采用它作为纠错编码。这种码的校验矩阵是准循环阵, 给定2个常数ct, 且ct, 准循环LDPC码的奇偶校验矩阵由c×t的大小均为b×bGF (2) 上的循环矩阵阵列组成, 准循环LDPC码的准循环奇偶校验矩阵的一般形式为:

而准循环LDPC码的准循环生成矩阵的一般形式为:

式中, Ib×b的单位矩阵;0b×b的全0矩阵; Gijb×b循环矩阵, 它们一般都不是稀疏矩阵。由于生成矩阵的特殊性, 一般可以通过移位寄存器实现有效编码。

1.2LDPC码的译码算法

选择最适合硬件实现的在加性高斯白噪声信道条件下基于乘性修正因子的最小和译码算法, 其迭代步骤如下:

① 初始化:对每个变量节点赋值:

LLRn=yn, Zmn=LLRn, ∀m;

② 校验节点更新:对∀m, nN (m) , 计算

Lmn=αn´Ν (m) nsign (Ζmn´) minn´Ν (m) n|Ζmn´|; (3)

③ 变量节点更新:对n, mΜ (n) 计算

Ζn=LLRn+mΜ (n) Lmn;

Ζmn=LLRn+m´Μ (n) mLm´n;

④ 判决输出:量化判决X^= (x^1, x^2, x^n) , 如果Zn≥0, 则x^n=0, 否则x^n=1。若X^ΗΤ=0, 则停止迭代, 且将X^作为译码器输出值, 否则返回步骤②。

2译码器的结构分析

2.1译码器总体结构

选择CCSDS推荐的 (8 176, 7 154) 准循环码为研究对象, 该LDPC码的校验矩阵H由2×16的大小为511×511的循环矩阵阵列构成。校验矩阵的行重为32, 校验矩阵的列重为4, 将511分解为73×7。当将准循环矩阵中的7×7循环矩阵看作一个元素时, 511×511准循环矩阵退化为73×73阶循环矩阵。

译码器的硬件总体结构如1所示。

其中硬件译码器主要是由数据输入缓冲模块、变量节点处理模块、校验节点处理模块、数据输出缓冲模块、存储模块和控制模块共同组成。

2.2译码器的分块单元设计

信道初始似然值存储单元用于存储信道似然比, 它是译码器的初始化信息, 在对一帧初始化信息进行译码判决后, 输入接口模块更新初始化信息为下一帧信息做准备, 这里采用的是2帧数据同时译码的译码方式, 所以实际上同时存储在信道似然比存储器中用于译码的是2帧数据。

校验节点处理单元主要用于计算式 (3) , 其原理框图如图2所示。主要过程分为2个部分进行:一部分计算符号, 另一部分计算最小值及归一化乘法。符号部分可以采取异或计算来实现, 另一部分需要从一组置信度消息中寻找出最小值与次最小值, 在这2个部分计算完毕后, 将符号和归一化最小值转变为补码输出。

变量节点处理单元主要功能是完成变量节点到校验节点的信息更新, 即每个变量节点接收到与之相邻的所有校验节点信息后, 对每个与之相邻的校验节点, 根据接收到的校验节点信息数据和初始化数据进行更新运算, 更新结果反馈给变量节点, 其原理框图如图3所示。

存储模块用于存储译码迭代过程产生的中间计算结果, 由于511×511的循环矩阵经过变换退化成为73×73阶的块循环矩阵, 而每个子块是7×7的循环矩阵, 因此每个存储器的深度等于73, 分别用于存储块循环矩阵中的73个块矩阵对应的消息。

输入输出缓冲模块用于为了防止数据发送过快而译码器处理速度较慢, 导致新数据没有被写入或旧数据被重复写入的错误, 所以采用数据输入缓冲模块来调整系统的接收数据速率, 输入数据信息以一定的速率被写入, 并以适应译码器处理的速率读出。

控制模块主要用于协调整个译码器的工作, 包括时钟分配和各个模块的数据控制。

3译码器的仿真分析

在Xilinx公司的FPGA上实现了 (8 176, 7 154) 准循环LDPC码的译码器, FPGA采用Virtex5系列xc5vlx220芯片, 译码器的逻辑资源与存储资源利用情况如表1所示。

译码器设计中, 采用频率为150 MHz, 由上述设计, 外部信息存储器有73个地址空间, 每次处理一个地址空间的数据, 变量信息处理和校验信息处理共需要146个时钟周期, 再加每次迭代处理延迟和保护24个时钟周期, 所以一次迭代译码处理需要170个时钟周期, 一共迭代译码20次。每次同时处理2帧数据, 第2帧数据落后第1帧数据半个迭代周期, 所以整个迭代过程再增加73个时钟周期。每次迭代译码开始时, 从输入缓冲模块同时读入2帧数据, 读入的方式是按照子模块存储个数并行读入, 这也是511个时钟周期, 又由于第1帧的数据读入与第2帧的迭代译码是并行处理的, 读入数据所需的511个周期与第2帧数据剩余的半个迭代周期重合, 所以译码器迭代一次需要的时钟周期为170×20+511=3 911个周期, 设计的高速译码器在给定时钟频率下的理论数据吞吐率为:

Vdecoder=Ν×f×nΤ=627.15Mbps。

式中, N为码长;f为频率;n为同时译码长度;T为译码周期。

将设计的译码器在QPSK体制下信息速率为600 Mbps的某高速系统中进行测试, 分别测出加信道编译码与不加信道编译码条件下的误码率曲线如图4所示。

从图4中可以看出, 上述设计的信息速率达到600 Mbps的高速LDPC码译码器, 误码率在1×10-7时, 编码增益达到6.6 dB。

4结束语

上述设计的高速LDPC译码器中通过采用了部分并行结构, 节省了大量的资源消耗, 这在高速数据传输系统中具有较大的工程使用价值, 其设计思想也为实现更高速率的译码器做了技术铺垫。

摘要:以 (8 176, 7 154) 准循环码为研究对象, 介绍了准循环低密度奇偶校验 (LDPC) 码及其译码算法, 分析了译码器的硬件结构单元, 并详细介绍了各个分块单元。在Xilinx公司的硬件上仿真实现了所设计的译码器, 并在平台上对其进行测试。仿真结果表明所设计的高速译码器编码效率为7/8, 吞吐量达到600 Mbps, 在高速数数据传输系统中具有重大的工程应用价值。

关键词:高速信道编译码,LDPC,部分并行处理

参考文献

[1]王诚, 薛小刚, 钟信潮.FPGA/CPLD设计工具XilinxISE使用详解[M].北京:人民邮电出版社, 2005, 12-170.

[2]魏瑞刚, 陈晖.高速数据传输中的LDPC码译码算法研究[J].无线电工程, 2011 (3) :20-22.

[3]YOON C, OH J E, CHEONG M, et al.A Hardware EfficientLDPC Encoding Scheme for Exploiting Decoder Structure andResources[C].Vehicular Technology Conference, (VTC’07) , 2007:2 445-2 449.

高速译码器 篇3

LDPC码是线性分组码中的一种,它具有接近香农限的性能,同时具有更低的线性译码复杂度,而且描述简单,对严格的理论分析具有可验证性,在长码时其性能甚至超过了Turbo码,具有较大的灵活性和较低的差错地板特性。此外,LDPC码译码复杂度低于Turbo码,可实现完全的并行操作,便于硬件实现,吞吐量大,极具高速译码潜力。

1 LDPC码译码算法

LDPC码的校验矩阵H可以用Tanner(泰勒)图表示,校验矩阵H的行与Tanner图中的变量节点有关,校验矩阵H的列与Tanner图中的校验节点有关,每一个校验节点都有一条或多条线与变量节点相连,这种线被称为边,它代表每一个校验方程中具体参与的信息位,它与奇偶校验矩阵中的“1”是一一对应的。

1.1 LLR-BP算法

1.1.1 初始化

根据接收信号计算变量节点的初始对数域的概率信息L(Pi),i=1,2,…,N,初始化完成后,设定传向与每一个变量节点i相邻的校验节点j(jC(i))的对数域的外部概率信息,即

L(qij)=L(pi)。 (1)

1.1.2 校验节点到变量节点信息更新

校验节点j得到与之相邻的变量节点传来的外部概率信息后进行信息更新,并将更新结果传给所有与校验节点j相邻的变量节点i(ib(j))。更新公式为:

L(rji)=2tanh-1(iRjitanh(12L(l-1)(qij)))。 (2)

式中,l为迭代次数。

1.1.3 变量节点到校验节点信息更新

变量节点i得到与之相邻的校验节点传来的外部概率信息后进行信息更新,并将更新结果传给所有与变量节点i相邻的校验节点j(jC(i))。更新公式为:

L(qij)=L(pi)+jCijL(l)(rji)。 (3)

1.1.4 译码判决

每次迭代译码的最后,进行一次硬判决译码。判决公式为:

L(qi)=L(pi)+jCiL(l)(rji)。 (4)

L(l)(qi)>0则c^i=0,否则c^i=1

1.2 最小和译码算法

如果对校验节点信息更新处理算法做一近似处理,如式(5)所示,则称为最小和译码算法,最小和译码的其他步骤和LLR-BP算法一样。

L(rji)=iRjisign(L(l-1)(qij))miniRji(|L(l-1)(qij)|)。 (5)

1.3 改进最小和算法

如果将最小和译码算法的变量信息前面乘以一修正因子,这样不但能降低校验节点消息处理的复杂度,还能补偿变量节点消息之间的相关性,其更新公式为:

L(qji)=iRiiα[L(Ρi)+jCijL(l)(rji)]。 (6)

改进最小和译码算法的流程图如图1所示,具体步骤如下:

① 初始化。同LLR-BP算法;

② 校验节点到变量节点信息更新。同最小和算法;

③ 变量节点到校验节点信息更新;

④ 译码判决。同LLR-BP算法。

2 算法仿真分析

2.1 译码算法复杂度分析

为了对比LLR-BP算法、最小和算法、改进BP算法的计算复杂度,现选用码率为1/2、码长为8 064 bit的(3,6)LDPC码,得出在各种译码算法下的1次迭代运算量,如表1所示。

由表1可以看出,8 064 bit的LDPC码在各种译码算法下的1次迭代运算,运算量最小的是最小和算法,改进最小和算法比最小和算法多了24 192次的实数乘法运算,LLR-BP算法的运算量比较大。

2.2 不同修正因子的译码性能分析

为了分析改进译码算法中的修正因子α对译码性能的影响,现选用码长为8 064 bit、码率为1/2的(3,6) LDPC码,仿真得到信噪比分别为0.5 dB、1.0 dB和1.5 dB时,不同修正因子α的译码性能曲线如图2所示。

由图2可以看出在改进型最小和译码算法下,随着信噪比的增加,不同的修正因子对误码率的影响也加大,而且在等信噪比时当α取0.8时,得到的误码率最小,译码性能最好。

2.3 不同算法的译码性能分析

为了对比LLR-BP算法、最小和算法、改进的最小和算法的性能,现选用码长为8 064 bit、码率为1/2的LDPC码采用BPSK调制,在高斯白噪声信道下最大迭代次数为15次时(其中改进最小和译码算法的修正因子取0.8)仿真得到的误码率性能曲线如图3所示。

由图3可以看出LLR-BP算法、最小和算法、改进型译码算法在高信噪比时均可呈现较低的误码率,其中LLR-BP算法的误码率较好,最小和算法通过简化校验节点信息的处理造成了性能上的损失,改进型译码算法通过修正变量节点的数据可以使性能得到较好的提高。

2.4 不同算法的平均迭代次数分析

现选用码长为8 064 bit、码率为1/2的LDPC码,最大迭代次数为50,LLR-BP算法、最小和算法、改进的最小和译码算法3种不同算法误码率在10-7时的平均迭代次数曲线如图4所示(其中改进最小和译码算法的修正因子取0.8)。

由图4可以看出,LLR-BP算 法、最小和算法、改进型译码算法这3种译码算法的平均迭代次数都随着Eb/N0的增加而下降,且在相同情况下,改进型译码算法的平均迭代次数几乎与LLR-BP算法相同,这表明改进型译码算法相比复杂度较低的最小和算法加快了译码收敛的速度。

2.5 译码吞吐量分析

为了分析改进译码算法的译码吞吐量,现将该译码算法应用在时钟为150 MHz的某高速系统中,在该系统中选用码长为8 064 bit,码率为7/8的准循环LDPC码,译码器采用并行交迭的译码结构,在该结构中变量信息迭代和校验信息迭代共需要336*2=672个时钟周期,再加上延迟保护的24个时钟,所以每次迭代需要672+24=696个时钟周期。由上述分析可知,选用15次迭代就可以达到系统所需的误码率要求,故共需要15*696=10 440个时钟周期,再加入初始化所需的时钟周期,最终译码共需要11 448个时钟周期。因此吞吐量可达到8 064*7/8*150*2/11 448=184.906 Mbps。

3 结束语

改进的译码算法一方面由于校验消息的处理简化为只有加法运算,同时对变量消息进行乘性校正,故总的运算量要低于LLR-BP算法,译码性能要高于最小和算法,这在译码性能和计算复杂度之间达到了较好的折中;另一方面改进的译码算法在相同的误码率的情况下译码的平均迭代次数略低于LLR-BP算法,这改善了算法的收敛特性,降低了译码延迟。因此改进的译码算法不但较好地降低了译码复杂度,而且依然可以得到高吞吐量,这在高速译码中具有广泛的应用前景。

参考文献

[1]GALLAGER R G.Low-Density Parity-Check Codes[M].Cambridge,MA:MITPress,1963.

[2]钟州,李云洲.基于LDPC码校验节点度的分类修正最小和算法[J].清华大学学报(自然科学版),2009,49(1):45-48.

[3]张靖琳,刘荣科,赵岭.高码率LDPC码译码器的优化设计与实现[J].电子与信息学报,2009,31(1):83-86.

[4]LI Z W,VIJAYA KUMAR B V K.A Class of Good Quasi-cyclic Low-density Parity Check Codes Based on ProgressiveEdge Growth Graph[C]//Signals,Systems and ComputersConference Record of the Thirty-Eighth Asi-lomar Conferenceon,2004:1990-1994.

[5]FOSSORIER M,MIHALJEVIC M,LMAI H.ReducedComplexity Iterative Decoding of Low Density Parity CheckCodes Based on Belief Propagation[C].IEEE Transactions onCommunications,1999:673-680.

高速译码器 篇4

吉比特无源光网络 (GPON) 是当前主流的无源光接入网技术。在其中引入RS编解码器可大幅度降低系统的误码率, 提高信息传输的可靠性。

传统RS编码器数据吞吐率为8位/时钟。而GPON系统的数据传输速率为1.244Gbit/s, 或2.488Gbit/s, 并且随着技术的更新将会更高。这就使得传统RS编码器无法满足GPON系统高速数据传输的要求。为此需要为GPON系统设计并行RS编码器以提高数据处理的速度。

文中针对GPON系统特殊的数据格式, 设计实现并行RS编码电路, 应用VerilogHDL语言编程并在QuartusII上进行功能验证。结果证明该编码器能够同时处理32位数据并正确编码, 满足GPON系统高速数据传输的要求。

1 RS编码

1.1 RS编码原理

RS码是分组线性循环码的一种, 具有严密的代数结构。通常可以采用乘法电路或除法电路来实现RS编码。前者得到非系统码字, 译码较复杂。后者得到则是系统码, 译码简单。因此为降低解码的复杂度, 常采用除法电路实现RS编码。

RS (255, 239) 码中的运算都是在伽罗华域中进行的。GPON协议规定RS码的本原多项式为:

p (x) =x8+x4+x3+x2+1

生成多项式为:

g (x) = (x-α0) (x-α1) (x-α2) … (x-α15)

则根据编码原理有:

C (x) =xn-km (x) +r (x) 其中, C (x) 为码字多项式, m (x) 为信息多项式。而r (x) 是多项式xn-km (x) 除以g (x) 的余式, 即编码后得到的校验码。

可见RS编码过程可描述如下:首先将输入的信息多项式移 (n-k) 位, 随后除以生成多项式g (x) , 得到的余式即为输出校验码。

1.2 RS编码的硬件实现

基于编码原理, 以除法电路实现RS编码运算。电路具体结构如图1所示。

基本RS编码器电路由伽罗华域乘法器、加法器、8位并行移位寄存器及开关电路和选择器组成。

电路工作原理:首先全部寄存器清零。开始工作时, 利用选择开关使输入信息码元直接输出, 同时送入除法电路进行运算。经过239个时钟, 运算完毕, 此时信息码元输出结束。寄存器中存储的数据即为编码所得的16位校验码。此后选择开关置向上方并且关闭门电路, 将16个移位寄存器中的数据依次右移输出, 接在信息码元之后形成校验码元。

2 GPON中的RS编码器

2.1 GPON中的FEC功能

协议规定, GPON系统中的ONT或是OLT均可选择性的采用FEC功能, 具体编码形式为RS (255, 239) 编码。该码码元长度为255字节, 其中信息元239字节, 校验码16字节。它能够纠正8个字节的突发错误和57字节的连续比特错误。

由于GPON系统是基于帧传输的, 具有固定帧长, 因此具有特殊的编码格式。

以速率为2.488Gbit/s的GPON下行帧为例分析:GPON下行帧周期为125μs, 因此每帧38880字节。若进行RS (255, 239) 编码, 每一帧将包含152个完整的255字节码字, 以及一个120字节的短码码字。这就要求在编码时, 将短码以零补足239个字节, 计算结束后去除零字节。同样在解码时也要进行相同的操作。

2.2 GPON中32位并行RS编码器的实现

基本RS编码电路的数据吞吐率为1字节/时钟, 而GPON的传输汇聚层传输数据为4字节/时钟, 因此需要进行并行处理。

根据编码原理以及并行操作的目标将整个编码器划分为3大模块。分别是输入控制模块、并行编码计算模块以及输出控制模块。

并行编码计算模块负责完成32位数据的直接编码计算功能, 直接输出并行信息数据及获得的校验码字。

输入输出控制模块则完成对输入输出数据格式的调整及对整个电路的时序进行控制的作用。同时, 输入输出控制模块还要负责对GPON帧中的短码进行处理, 即编码前的补零和编码后的去零操作。

2.2.1 并行编码计算模块

并行编码计算模块是整个编码器的核心, 实现32位数据的并行编码运算。基于串并转换的思想将图1所示的串行反馈移位寄存器电路直接改造为可同时输入4路数据的并行编码电路。具体操作如下:计算串行电路在4个字节的数据输入完成后各寄存器的存储状态。按照他们与4个输入信号及寄存器初始状态之间的关系来重新连接电路实现并行结构。最后, 设计计数器来控制信息位、校验位的输出即可。

通过计算推导得到并行RS编码计算电路如图2所示。

2.2.2 输入控制模块

输入控制模块首先实现对输入数据格式的调整。根据RS (255, 239) 编码规则, 其信息码元为239个字节, 完整码字255字节, 当4路数据并行输入时, 必会出现两组码字交接的情形。若直接将这样的数据送入编码模块必将得到错误的校验码。为此需要对输入数据进行格式调整, 在每255字节数据前填一个字节0, 使得总字节数刚好是4的倍数, 每一组码字可以完好的并行输入。同时根据编码原理, 在每组码字前填零并不影响编码结果, 所以上述的格式调整可以实现正确的编码。

本文利用RAM存储器来实现数据格式的调整。为了便于观察输出结果, 在设计时将32位数据分成4路, 分别以datain1~datain4表示。4路数据在系统时钟的作用下依次写入RAM中。其写地址无需做特殊处理, 只要按照时钟顺序加一递增即可。分别以dataout1~dataout4表示RAM调整后的输出数据, 为实现数据格式的调整, 需要在同一时钟下选择不同存储单元的数据输出。因此需要对读地址要特别设置。通过对输入格式及目标格式的对比观察发现第一组数据中, dataout4的读地址应该比其他输出的读地址少1;第二组数据中, dataout4与dataout3的读地址相同且比其他两个少1;依次类推。4组数据的情况均不同所以需要以4种状态来表示。

在每一种状态下控制读地址的程序段如下:

//用计数器控制读写地址选择不同存储单元中的数据读出

always@ (posedge clk)

begin

case (state)

2’b00 : rd_addr1<=wr_addr;

2’b01 : rd_addr1<=wr_addr;

2’b10 : rd_addr1<=wr_addr;

2’b11 : rd_addr1<=wr_addr;

endcase

end

always@ (posedge clk)

begin

case (state)

2’b00 : rd_addr2<=wr_addr;

2’b01 : rd_addr2<=wr_addr;

2’b10 : rd_addr2<=wr_addr-1;

2’b11 : rd_addr2<=wr_addr;

endcase

end

always@ (posedge clk)

begin

case (state)

2’b00 : rd_addr3<=wr_addr;

2’b01 : rd_addr3<=wr_addr-1;

2’b10 : rd_addr3<=wr_addr-1;

2’b11 : rd_addr3<=wr_addr;

endcase

end

always@ (posedge clk)

begin

case (state)

2’b00 : rd_addr4<=wr_addr-1;

2’b01 : rd_addr4<=wr_addr-1;

2’b10 : rd_addr4<=wr_addr-1;

2’b11 : rd_addr4<=wr_addr;

endcase

end

如此调整, 便可按目标将所需数据读出。不过此时数据的顺序还没达到最终目标, 还需要将RAM的各位输出顺序再进行一次调整。

仿真结果表明, 每一组255个字节的起始端都被填上一个0字节, 补足4的倍数, 可以直接输入到并行编码计算模块进行编码操作。

此外, 对于GPON数据帧来说, 还有一个未满239字节的短码需要处理。此处同样利用RAM实现短码数据的填零、去零操作。由仿真图可见, 短码信息前被填加34组零补足240个字节, 进而可以送入后续模块进行编码处理。

2.2.3 输出控制模块

输出控制模块的功能是将编码后的数据调整成原本的数据格式。设计中同样采用RAM来实现数据的调整。通过控制RAM的读写地址将所需数据选择读出, 进而实现数据格式的调整。具体操作与输入控制模块类似, 这里不在赘述。

2.2.4 GPON中32位并行编码器的总体仿真

将输入输出控制模块以及并行编码计算模块连接在一起得到整体的32位并行RS编码器。仿真结果如图3-4所示。

图3-4分别为完整码字、短码码字在编码后得到的校验码字, 结果与MATLAB计算结果一致, 证明编码模块结构正确。

2.2.5 结果分析

由以上仿真结果可见, 文中所设计的编码器可以实现32位输入数据的并行编码, 同时处理32位数据, 运算速度较传统编码器提高4倍。输入输出控制模块可以将数据格式进行正确的调整, 进而可以在输出端获得正确的编码结果。同时本文针对GPON特殊的帧结构, 在设计中考虑到其中的最后一组短码, 对其进行特殊处理, 使得所设计的编码器能够处理完整的GPON的数据帧。从整个编码器的编译及时序分析报告中可以见到, 本文所设计的并行编码器资源消耗较少, 而且工作频率可达159.18MHz, 满足设计要求。

3 结束语

文中设计的RS编码器可以同时处理4个字节的并行数据, 并考虑到GPON数据帧的特殊结构, 满足对GPON系统数据进行编码的要求之外也大大提高了编码运算的速度, 符合GPON系统高速数据传输的要求。

参考文献

[1]肖洁.光纤传输系统中前向纠错芯片的设计与实现[D].东南大学, 2006.

[2]陈懿.ReedSolomon编译码算法研究与硬件实现[D].南京理工大学, 2010.

[3]吴辉.基于新G.984系列协议的GPON终端—物理层和传输汇聚层关键模块设计[D].南京理工大学, 2010.

[4]周利岗.RS码的硬件实现研究[D].南京邮电学院, 2004.

[5]刘文国.基于FPGA的RS255, 223编解码器的高速并行实现[D].电子科技大学, 2009.

[6]党鑫.GPON终端TC成帧子层关键技术研究[D].南京理工大学, 2009.

[7]袁强.GPON中FEC编解码器的研究与实现[D].电子科技大学, 2006.

[8]朱海坤.ReedSolomon码编解码器的VLSI实现研究[D].复旦大学, 2002.

[9]谭丹, 聂雅琴, 蒋燕妮.高速并行ReedSolomon编解码器[J].国外电子元器件, 2008 (12) .

[10]戴小红, 潘志文.ReedSolomon编译码器的设计与FPGA实现[Z].东南大学移动通信国家重点实验室.

高速译码器 篇5

关键词:FPGA,图像编码,小波变换,SPIHT

随着空间技术和光谱成像技术的发展,人们可以从不同的波段上获取目标物体丰富的图像信息,但随之而来的问题是所获取图像的分辨率和数据量急剧增加。目前有限的信道传输和存储能力无法适应空间遥感图像的海量数据,这已成为制约空间遥感图像分辨率提高的瓶颈[1]。

X光和CT等医学图像压缩技术是远程医疗诊断系统和医学图像存储传输系统等研究领域中的重要课题之一。与遥感图像类似,医学图像压缩要求尽量保留原始图像数据中蕴含的真实信息,现有的商业图像编码芯片无法满足海量医学图像数据有效存储和实时传输的实际应用需求。因此高速高分辨率图像压缩编码器成为遥感和医学图像压缩领域的研究热点。

遥感图像和医学图像一般采用无损或者近无损压缩,且不允许丢失有用的细节信息。传统的离散余弦变换(DCT)会产生浮点数,因而必须对变换后的数据进行量化处理,这样就会产生不同程度的失真。因此采用DCT变换的JPEG压缩算法不适合遥感图像和医学图像压缩。

采用提升小波变换的压缩算法,如JPEG2000和SPIHT算法等能够实现整数变换,可同时支持无损和有损压缩。图像压缩编码器实现方式主要有ASIC、DSP和FPGA三种。

目前只有ADI公司的推出了ASIC解决方案。ADV202[2]采用了JPEG2000标准,由于算法复杂,因此编码速度只能达到65MP/s(MP/s:百万像素/秒)。采用DSP芯片实现的编码具有灵活性高的特点,但由于DSP速度和功耗的限制,无法实现高速处理,只能实现50MP/s的JPEG处理能力[3]。与以上方法相比,基于FPGA的编码器可以通过并行和流水线设计,实现高速编码,而且具有可重构能力,特别适合这类特殊算法的实现。

作为小波图像压缩算法的代表,SPIHT压缩算法由于性能出色、实现简单而受到普遍关注[9,10]。本文将从降低存储器访问频率的角度对算法进行改进,并给出了改进后算法的FPGA实现方案。

1 基于小波的图像编码算法原理

本文对SPIHT小波零树编码算法进行了改进,采用了预处理和主处理两个阶段完成编码。预处理过程将所有节点和集合的显著值,包括最高比特层一次性计算出来,以查找表的方式提供给主处理过程,进而减少对存储器的重复访问。

整个算法分为预处理阶段和主处理阶段,下面介绍具体算法流程。

1.1 预处理阶段算法流程

步骤1:初始化

(1)建立3个查找表:J表、A表和B表,并初始化为空;

(2)初始化最高比特层寄存器Nmax为0;

步骤2:遍历过程

对图像4等分,建立线性Z坐标,依次对HH->LH->HL进行遍历,计算显著值,填写3个查找表(LUTs);

(1)取出相邻的4个同父兄弟节点(2i,2j)、(2i,2j+1)、(2i+1,2j)和(2i+1,2j+1)对应的小波系数,计算各自的显著值J(2i,2j)、J(2i,2j+1)、J(2i+1,2j)、J(2i+1,2j+1),然后合并成一个元素,加入J表;

(2)取出这4个节点各自对应的A类显著值A(2i,2j)、A(2i,2j+1)、A(2i+1,2j)和A(2i+1,2j+1),取出最大者作为它们父节点的B类显著值B(i,j),写入B表;

(3)在这4个节点各自的显著值以及各自对应的A类显著值中,取出最大者作为它们父节点的A类显著值A(i,j),写入A表;

(4)更新当前的最高比特层数寄存器Nmax;

步骤3:重复过程

将图像的左上1/4(LL区)作为输入,重复步骤2,直到不能4等分为止(LL区只有1个节点)。

1.2 主处理算法流程

主处理算法直接利用预处理后得到的J表、A表和B表进行编码,不再需要链表等其他额外的存储器。详细步骤如下:

步骤1:初始化

当前比特层n=Nmax。

步骤2:LL子带编码

(1)若J(i,j)n,输出C(i,j)的n层比特位;

(2)若A(i,j)

(3)若A(i,j)≥n;若B(i,j)

步骤3:高频子带编码

(1)若A[P(i,j)]≥n:若J(i,j)n,输出C(i,j)的n层比特位;

(2)若B[P(i,j)]≥n:若A(i,j)

步骤4:量化门限更新

n-1,转至步骤2,直到达到要求的压缩比。

本文算法的两个阶段编码算法之间相对独立,因此可以采用并行单元来实现流水线处理。主处理算法采用了固定顺序扫描,与原始SPIHT算法的动态顺序扫描相比,执行时间固定,更适合FPGA实现。更详细的算法描述见参考文献[7]。

2 高速编码器实现方案

2.1 整体方案

整个编码算法包括小波变换和零树编码两部分,其中零树编码采用了本文算法,分为预处理和主处理两部分,整体方案如图1所示。

如图1所示,原始图像首先进入小波变换处理单元,完成小波变换后,将小波系数送给预处理单元,计算最高比特层数和每个系数的显著性值。主处理过程根据小波系数和J表、A表和B表进行零树编码,最后将压缩码流输出。

预处理模块(PPE)主要完成读取小波变换处理单元产生的小波系数,为主处理产生J表、A表和B表的索引。由于小波变换后,每个父节点有4个直接子节点,所以预处理单元采用了4个像素一组的数据打包模式。每个像素读取一次,即可完成显著性的处理。

如果图像的分辨率为M×N,则预处理需要的时钟周期数为如果图像为正方形格式,则预处理需要的周期数为

主处理模块(MPE)主要完成小波零树的排序和显著性判断。从改进算法的流程可以看出,如果变换后小波系数中最大值为Cmax(i,j),则定义出最高比特平面数为:

这样MPE就要完成Nmax次比特平面扫描,每次扫描过程对所有像素判断一次。由于J表、A表和B表的数据结构都是以4个像素为一组,所以完成一次比特平面扫描需要或者个周期。整个MPE完成一次编码过程,需要的时钟周期数为

2.2 小波变换处理单元设计

图像压缩编码中采用的是二维离散小波变换,其实质是对行方向和列方向分别进行一维小波变换。首先,设计一维(5,3)小波变换的结构,如图2所示。(5,3)小波变换结构主要包括:2个延时寄存器组(每个延时寄存器组由3个串联的单位延时器组成)、1个乘法累加单元(MAU)和多个2选1的选择器。

2.3 比特平面并行的主处理单元

如果采用(5,3)无损小波变换,最高比特平面数为8,则MPE内部采用8个并行单元来同时处理每个比特平面。每个处理单元(MPEx)是MPE的简化版本,其数据输入由数据分配单元(DDU)统一控制,输出经移位寄存器后,送入FIFO。比特平面码流汇聚单元(BGU)完成将每个FIFO中的数据读出,统一格式后,打包输出。

由于采用了并行处理技术,MPE-P模块处理能力和并行度n成正比,处理M×N分辨率的图像只需要的周期数,与预处理(PPE)单元的处理速度匹配。整个编码算法的处理能力达到了4像素/周期。

3 设计结果分析

3.1 设计平台

本文采用的设计平台是Altera公司最新的DE3开发套件,它包括Stratix3 FPGA的开发板一套,相关的配件以及QUARTUS II 8.0软件。DE3开发板的核心是一片Stratix3系列EP3SL150F1152C2 FPGA,约500万门左右。板上还有DDRII SDRAM存储器接口、USB2.0 OTG芯片以及4个高速连接器。

利用DE3开发平台,可以将高速图像压缩编码器载入到开发板上;然后通过控制面板程序(DE3_ControlPanel),将原始图像载入板上的DDRII SDRAM中,启动编码器完成压缩编码;压缩后码流通过USB接口输出到电脑上,与Matlab仿真结果对比,进而验证系统的正确性。

3.2 设计结果

采用Quatus8.0软件进行综合,得到的综合结果如表1所示。综合后,时序分析软件给出报告,表明系统最高工作频率为50.5 MHz。由于算法可以实现4像素/时钟周期的处理能力,因此编码速度最高可以达到200MP/s。对于4 096×2 048分辨率的灰度图像,可以实现25帧/s的实时编码。

3.3 性能测试

(1)编码速度测试

本文编码器与目前主流的图像压缩编码器相比,由于采用FPGA实现了高度并行流水处理,所以可以在较低的工作频率上实现高速编码,同时支持无损和有损压缩。与商业编码芯片的速度对比结果见表2。

(2)压缩性能测试

为了测试本文编码器的压缩性能,分别采用了分辨率为512×512的8 bit灰度图像Lax和Lena进行编码,其结果与JPEG2000算法和JPEG算法进行了对比,相应的压缩性能曲线如图3和图4所示。

通过以上测试可见,本文编码器的压缩性能虽然略低于JPEG2000,但是编码速度更快。图像质量远高于JPEG的主要原因是采用了小波变换代替了JPEG编码中的DCT变换,而且不会产生“方块效应”。

本文提出了一种适合FPGA实现的无链表小波零树图像压缩编码算法,并且给出了具体实现方案。利用Altera公司的DE3开发平台,完成了算法的验证。实验结果表明,本文算法在近无损压缩方面性能接近JPEG2000算法,远高于JPEG,而且适合并行流水架构设计。对于N×N的图像,本文架构完成无损压缩大约需要N2/4个时钟周期。在50 MHz的工作频率下,可实现200 MP/s处理能力,可支持4096×2048分辨率的灰度图像25帧/s的实时编码。

由于采用了FPGA实现,本文编码器具有高度灵活性和适应性,可广泛应用于卫星遥感、工业成像及医疗影像的无损或近无损压缩领域。

参考文献

[1]徐欣锋,黄廉卿,徐抒岩,等.高空间分辨率遥感图像实时压缩进展[J].光学精密工程,2004,12(3):266-271.

[2]ADV202 Datasheet.http://www.analog.com.

[3]TMS320 DM355Datasheet.http://www.ti.com.

[4]TAUBMAN D S,MARCELLIN M W.JPEG2000:Image com-pression,foundmentals,standards and practice[M].Kluwer Academic Publishers,2001.

[5]SHAPIRO J.Embedded image coding using zerotrees of wavelet cofficients[J].IEEE Trans.On SP,1993,41:3445-3462.

[6]SAID A,PEARLMAN W A.A new fast and efficient image coded based on set partitioning in hierarchial trees[J].IEEE Trans.On circuits and systems for video technology,1996,6:243-250.

[7]姚远,张晓林.一种基于小波零树的彩色图像编码算法[J].北京航空航天大学学报,2005,31(4).

[8]Stratix 3 Device Handbook.http://www.altera.com.

[9]WHEELER F W,PEARLMAN W A.SPIHT image com-pression without Lists[C].IEEE Int.Conf on Acoustics,Speech and Signal Processing(ICASSP2000).Istanbul:IEEE,2000:2047-2050.

高速译码器 篇6

通信系统特别是无线通信系统,信息在信道传输的过程中受到各种干扰和噪声,导致接收的信息出现差错。为了克服这种差错引入了信道编码。 Turbo编码由Berrou等在90年代提出,获得了接近香农极限的性能[1]。

在卫星通信系统中,Turbo码也得到了应用[2]。 随着卫星通信向宽带多媒体业务发展,对通信的实时性也提出了新的要求。文献[3]讨论了卫星通信系统中各编译码技术的优缺点。虽然Turbo的性能好,但译码延时较大。针对这个缺点,可以采用并行译码技术来降低译码延时[4,5]。本文通过仿真验证了基于状态信息传递的分块并行译码方法,能有效的降低译码延时,而其导致的性能代价几乎可以忽略。和其它并行译码方法相比,该方法还具有实现简单,计算量代价小的优点。

2卫星通信系统中的Turbo编译码

在地球静止轨道卫星移动通信( GMR - 1) 系统中,Turbo编码器的结构如图1所示,由一个随机交织器和两个递归系统卷积( RSC) 编码器组成[2]。图中虚线仅在产生尾比特时使用。交织器的作用是将输入数据以伪随机顺序重排。两个子码的生成多项式为:

其中

Turbo译码器的结构如图2所示,由两个与子码对应的分量译码器和交织、解交织器构成。两个分量译码器的输出输入都是软信息。每次迭代中将一个译码器的软输出( 称为外部信息) 作为另一个译码器的软输入( 称为先验信息) ,两个分量译码器交替译码,经过多次迭代取得较好的性能。

对分量卷积码的译码一般采用最大后验概率 ( MAP) 算法。因为基于对数似然比运算的Log MAP算法能在不损失性能的情况下,通过避免乘法将MAP算法的复杂度降低,所以Log - MAP算法在实际系统中使用得较多。

设在BPSK调制下,符号集为xn= { + 1,- 1} , Lmap( xn) 是关于xn的对数似然比,La( xn) 是关于xn的先验信息

定义前向概率的对数值为 αk( s) ,后向概率的对数值为 βk( s) ,分支状态转移概率的对数值为 γk( s',s) 。前向/后向概率是根据接收到的从当前比特往前/后到编码块开始/结束所对应的序列,估计出的编码器当前处于各状态的概率。而分支转移概率就是根据接收到的当前比特对应序列,估计从一个状态转移到下一状态的概率。前向/后向概率可以通过分支转移概率由以下递推关系得到

其中函数

对于两个自变量输入有

对于有多个自变量输入的情况,可以分步求出函数值。

由于在Turbo编码器中,各分量编码器的起始状态和终止状态都为0,所以前向概率 αk( s) 的初值设置为: 0状态的值为0,其他状态的值为 - inf; 后向概率 βk( s) 的终止值设置为: 0状态的值为0,其他状态的值为 - inf。注意这里的 αk( s) 和 βk( s) 都是概率的对数值。实际通常用一个大的实数来代替inf。最终对应于每一个比特的软输出为

其中s0和s1分别表示对应于输入比特为0和1的那些状态转移的集合。对xn的判决规则为: 当Lmap( xn) > 0时判决为1,否则判决为0。

常规Log - MAP译码算法以一个码块为单位, 需要在整个码块的长度内递归的计算前向 /后向概率。假设码长为L,一个分量译码器的译码延时正比于L。当L比较大时,一次迭代的延时就不小。而Turbo码还需在两个分量译码器之间多次迭代,所以总的延时会相当大。译码延时是将Turbo码应用于高速通信时一个必须考虑的问题。

3改进的并行Turbo译码算法

为了减小译码延时,基本的思路是基于并行窗口的分块译码[4,5]。即译码不再以整个码块为单位,而是将长度为L的码块分成L /W个窗口( W为并行窗口数,也称并行度) ,每个窗口的译码可以独立、并行的进行。从译码过程可看出,这种并行化带来的问题是: 除了第一个窗口的前向概率初值和最后一个窗口的后向概率初值可以确定外,其它窗口的前向概率初值和后向概率初值都是未知的。这会给译码结果带来误差。

为解决这个问题,就需要为每个窗口的前向/后向概率提供一个较准确的初值。可以采用交叠窗口法。该方法的原理是通过在相邻窗口交叠部分的递归计算,为每个窗口提供前向/后向概率的初值[4]。 付出的代价则是在交叠部分进行递归计算的额外计算量。仿真表明,交叠长度越长,性能越好。假设交叠比特数为b,窗口数为W,则额外的计算量正比于为( W - 1) × b。当b和W增加时,额外计算量也相当可观。

这里采用状态信息传递法。该方法在初次迭代时将未知的概率初值设置为等概值,在后续迭代时则使用上次迭代中得到的概率值[5]。即第k + 1次迭代中第n个窗口的前向概率初值 αn,k +1 0( s) 设为第k次迭代中 第n - 1个窗口的 前向概率 终值 αn -1,k +1 L / W( s) ; 其后向概率初值 βn,k +1 L / W( s) 设为第k次迭代中第n + 1个窗口的后向概率终值 βn +1,k 0( s) 。对于第一个窗口的前向概率初值和最后一个窗口的后向概率初值,仍然由编码器处于零状态确定。虽然首次迭代的初始值与准确值相差较大,但随着迭代的进行,初值将被替代为上次迭代中经过了L /W次递推得到的值。随着迭代的进行,这个值将会逐步逼近真实的值。和交叠窗口法相比,这种方法避免了额外的计算量,只需更新各个窗口的迭代初值,计算代价很小,所以更适合用于高速卫星通信系统中。

4性能仿真和分析

仿真采用码长为2048,码率为1 /3的无凿孔Turbo码。目的是对比常规Log - MAP算法和基于状态消息传递的分块并行译码方法的性能。并行窗口数从2增加到16( 即对应的窗口长度从1024减至128) 。从图3可以看到,经过8次迭代后( 这里的1次迭代指两个译码器分别译码一次) ,并行译码方法与无并行译码方法性能几乎没有差别。

图4为在某个特定信噪比下 ( Eb /No = 0. 76d B) ,误码率随着迭代次数变化的情况。可以看到,在并行度从2增加到16的情况下,误码率降低的速度没有明显区别。这表示并行译码并不会导致译码收敛速度的降低。不过可以注意到,并行度为16的误码率比其它情况下的误码率稍有恶化。

5总结

高速译码器 篇7

简支梁冲击试验机适用于各种非金属材料和农业物料的冲击韧性测试,是科研机构、大专院校、相关厂矿进行质量检验和农业原料性能研究测试的常用设备。传统简支梁冲击试验机的测量结果数据一般采用刻度盘指针式显示。这种刻度盘是通过机械式转换方式进行显示,受摩擦力和人为读取数据等因素影响,易造成测量数据误差和读数误差。

为了解决以上问题,本文根据旋转编码器、PLC高速计数器的工作原理和扩展功能,对冲击试验机的数据测量系统进行改进,以提高测量结果的准确性。旋转编码器通过光电转换,可将输出轴的角位移、角速度等物理量转换成相应的电脉冲以数字量输出,其在精密定位、速度、长度、加速度、振动等方面得到广泛的应用,特别是在数控机床的精密定位方面使用较多[1]。可编程序控制器(简称为PLC),是一种具有数字运算操作功能的电子装置。它采用可以编程的存储器,执行逻辑运算、顺序运算、计时、计数和算术运算等操作指令,通过高速脉冲计数功能,可以连接编码器脉冲信号并进行处理,是当代工业自动化过程中的主要控制装置之一[2]。

1 冲击试验机测量原理

根据国标[3]对能量指示装置的要求,冲击试验机既可以用升角标度,也可以用吸收的冲击能量标度,二者的关系式如下:

式中:W—冲击能量,单位为焦耳(J);MH—摆锤的水平力矩,单位为牛顿米(Nm);α0—起始角,单位为度(0);αR—升角,单位为度(0)。

由公式(1)可以看出,冲击能量与摆锤的水平力矩、起始角和升角三者有关。对于合格出厂的冲击试验机来说,摆锤的水平力矩,起始角出厂时都已给定,是一定值,故冲击能量只与升角有关,如果能精确测量升角值,就能准确计算冲击能量。

2 增量式旋转编码器及在冲击测量中的应用

旋转编码器是一种集光、机、电为一体的数字化检测装置,它具有分辨率及精度高、结构简单、使用可靠、性价比高等优点,广泛应用于工业领域的速度或角度(位置)的检测[4]。增量式光电编码器是旋转编码器的一种,主要由光源、码盘、检测光栅、光电检测器件和转换电路组成。增量式光电编码器输出A、B两相互差90度电度角的脉冲信号(即所谓的两组正交输出信号),根据正交信号的先后顺序,可方便地判断出旋转方向。

增量编码器是一种将角位移转换为一连串数字脉冲信号的旋转式传感器,其中角位移的转换采用光电扫描原理,其转换系统以由交替的透光窗口和不透光窗口构成的径向分度盘(码盘)的旋转为依据,同时被一个红外光源垂直照射,光把码盘的图像投射到表面覆盖着一层衍射光栅,并具有和码盘相同的窗口宽度接收器表面上。

利用以上特点,在冲击试验中,当锤转轴带动编码器码盘转轴同轴转动时,接收器感受码盘转动所产生的变化,然后将光变化转换成相应的电变化,并通过电子电路处理后以高、低电平交替的形式输出标准方形脉冲信号。为提高测量系统的稳定性,输出信号传输采用差分方式,有效消除了干扰,可精确记录摆锤的角度。增量编码器输出的正交信号可分为A、B两通道,其中一个通道给出与转速相关的信息,同时,通过两个通道信号进行顺序对比,得到旋转方向的信息[5]。

3 PLC CPU 224的高速计数器及在冲击测量中的应用

西门子公司的S7-200系列可编程序控制器(PLC)具有模拟量处理、通讯联网、系统诊断、中断处理和高速计数等功能。CPU 224是S7-200系列PLC中的典型产品,其具有13KB程序和数据存储空间;基本单元有14点输入和10点输出,最大扩展到168路数字量I/O点或35路模拟量I/O;6个独立的30KHz高速计数器,支持×1方式的正交脉冲(AB相)输入,支持×4方式的正交脉冲(AB相)输入,支持具有内/外部方向控制的单相输入及具有两个时钟输入的双相输入等12种模式的计数功能;具有1个RS-485通信/编程口,是S7-200系列中应用最广的产品[6]。

高速计数器常用于对CPU扫描速度无法控制的高速事件进行计数。每次旋转的指定计数脉冲,作为高速计数器的输入,故在工程上,通常把高速计数器与增量式编码器结合用于角度(位置)的测量[7]。

在进行冲击试验时,用编码器提供标准方形脉冲信号,高速计数器对脉冲信号计数,通过相关程序计算出能量值,并显示在TD200文本显示器上。

4 应用设计

运用旋转编码器和PLC高速计数器对传统机械刻度盘指示冲击试验机进行数字化改造,可分为硬件电路设计及高速计数器等相关程序的设计。

4.1 硬件电路设计

硬件系统组成方框图,如图1所示,编码器使用PLC提供的24V直流电源,其输出信号可不经脉冲信号放大直接接入PLC的高速计数器输入端子进行处理。处理后的数据TD200文本显示设备,直接显示冲击后的能量值。

4.2 程序设计

4.2.1 程序框图(如图2所示)

4.2.2 程序代码及注释

(1)把转存的最大冲击角度值计算为能量值

5 结论

在简支梁冲击试验机上应用增量式旋转编码器和高速计数器,把编码器提供的转轴脉冲作为高速计数器的输入信号,充分利用了编码器的时间、角度高分辨率特性和高速计数器的时效性,避免了刻度盘指针式读数对测量结果带来的误差,从而实现了冲击试验机冲击能量的高精度测量。本设计进一步扩展了增量式旋转编码器和高速计数器的应用领域,为简支梁冲击试验机冲击测试系统设计及工程实验方法提供了实用的参考。

摘要:传统的简支梁冲击试验机的测量数据一般采用刻度盘指针式显示,易造成读数误差、操作不便等缺点。本设计将旋转编码器和PLC高速计数器等电控装置及其功能应用于冲击试验机的测量系统中,分别对硬件电路和控制程序进行设计和编程,使试验机冲击测量结果由刻度盘的指针显示转化为数字显示,从而达到提高冲击试验机测量精度和使用方便性之目的。

关键词:冲击试验机,旋转编码器,PLC高速计数器

参考文献

[1]刘文魁,石建玲.光电旋转编码器在角度测量中的应用[J].现代制造工程,2006,(11):90-91.

[2]廖常初.PLC基础及应用[M].第二版.北京:机械工业出版社.

[3]GB/T21189-2007,塑料简支梁、悬臂梁和拉伸冲击实验用摆锤冲击试验机的检验[S].

[4]蒋晶,蒋东方,高航.高可靠性增量式光电编码器接口电路设计[J].测控技术,2009,28(2):1-4.

[5]常春,胡瑜,董彬.光电旋转编码器的研究与应用[J].仪表技术与传感器,2001,(12):34-35.

[6]赵光.西门子S7-200系列PLC应用实例详解[M].北京:化学工业出版社,2010.

上一篇:金融社会下一篇:游戏中学习