基于FPGA的前向纠错算法

 

目前,无线产品的广泛应用使无线音频和视频的高质量传输成为可能。蓝牙、无限局域网等无线传输设备比较复杂,成本较高,急需

开发一种简便的、仅用于流媒体的无线传输平台,将音频数据实时地发送到移动终端。由于音频数据的实时性,不宜采用反馈重传等

造成很大时延的差错控制方式。前向纠错码(FEC)的码字是具有一定纠错能力的码型,它在接收端解码后不仅可以发现错误,而且能

够判断错误码元所在的位置并自动纠错。这种纠错码信息不需要储存,不需要反馈,实时性好,故可选择前向纠错来实现差错控制。

  笔者设计的系统指标如下:


  ●当信道误码率为3x10-3时,经过前向纠错,误码率降到10-7以下;


  ●数据源使用的是S/PDIF民用数字音频格式标准[1];


  ●信号时延远小于人的分辨能力(40ms);


  ●芯片资源耗用不超过20万门;

  RS码即里德-所罗门码,它是能够纠正多个错误的纠错码,具有同时纠正突发性错误和随机性错误的能力[2],而且编解码相对

简单。考虑到系统的误码率和资源耗用,拟采用RS码作为前向纠错码。

  在无线信道中,比特差错经常成串发生,这是由于持续时间较长的衰落谷点会影响到几个连续的比特,而信道编码仅在检测和校正

单个差错和不太长的差错串时才最有效。为了纠正这些成串发生的比特差错及一些突发错误,可以运用交织技术来分散这些错误,使长

串的比特差错变成短串差错,从而可以用前向码对其纠错。

  用本系统传输数据时,在发端先对数据进行RS编码(外码),再进行交织处理,最后再进行RS编码(内码)。收端次序和发端相反,先

进行内码解码,接着进行去交积处理完成错误分散,最后进行外码解码,纠正内码未能纠正的错误。通过这种2维的RS编解码,可以充分

利用RS码纠错能力强的特点,降低系统的误码率。也可考虑使用迭代译码[3]。若1次2维译码的效果无法满足需求,则将译码后的数据反

馈回译码器,进行1次迭代译码。迭代次数的增加会带来相应的资源开销和时延的增加。



2、系统结构及实现

  纠错编码使用2维RS码。内码采用(10,8)Rs码,q=4,每个码字含32bit数据。外码采用 (20,16)RS码,q=8,每个码字含128个数据。

交织器大小为1 280bit。以1 280bit为1帧,帧之间预留信息时隙。

  下面详细介绍交织器,解交织器和(20,16)RS编码器,解码器模块的原理及FPGA实现。(10,8)RS编码器,解码器的原理与(20,16)

RS编码器,解码器基本相同。



2.1(20,16)RS编码器

  RS码是BCH码的重要子类。由于具有同时纠正突发性错误和随机性错误的能力,且纠正突发性错误更有效,因 而被广泛地应用。

  (20,16)RS编码器完成RS编码功能,每输入16个码元,延迟1个时钟原样输出,并在其后添加4个校验码元,构成20个码元的输

出码字。因此数据输入16个码字后应预留至少4个码字的空隙,避免数据丢失。

  (20,16)RS是(255,251)RS的缩短码,它是在有限域GF(28)上运算得到的,把(255,251)RS的前235个码元都当作0就 得到(20,16)

RS码。码参数如下:


  码长N=20,信息位个数K=16,校验位N-K=4,纠错能力T=2,码距D=5;


  本原多项式:

                               
  生成多项式:

                             
  其中,α是(20,16)RS的本原域元素。


  编码采用除法方式实现,其原理如图1所示。

  整个电路实际上是GF(28)的除法电路。图中乘单元的系数是生成多项式G(x)的对应项系数,对应的除法电路的除数是

 

                               


  被除数的系数是输人数据的8bit码元,按照输入顺序进行降幂排列。第1个输入码元是x19的系数,最后1个输入码元是x4的系数。

系数都是本原多项式P(x)生成的二元扩域GF(28)中的元素。在16个码字都输入后,寄存器D1-D4中保存的数据分别是常数项,x项,x2项

和x3项的系数,它们就是所得到的校验码。数据选择电路用来对不同数据进行选择输出。前16个时钟,输人数据按照顺序输出,后4个时

钟输出计算得到的校验码。所有输出数据较之输入数据都要延迟1个时钟周期,时钟上升沿同步输出。电路中的主要部分就是GFf(28)中

的乘法单元和模加单元。

2.2 (20,16)RS解码器

  该电路完成(20,16)RS码的解码工作,将20个8bit码元解码为16个8bit的码元。同时输出码字起始信号、数据有效信号和校验位有

效信号。解码器的原理如图2所示。

  RS码时域译码法主要有P-G-z法、B-M法[4]和欧氏法。由于P-G-Z法要求解有限域上的逆矩阵,不利于实现,因此工程上很少使用。

B-M法和欧氏法都是快速递归法,二者等效[5],易于硬件实现,因此得到广泛使用。在本次设计中,采用的解码算法是B-M算法。

  RS码时域译码由以下几步组成:

  (1)伴随式计算电路。伴随式S1-S4是用于查错和纠错的主要参数。在伴随式计算模块中,先进行余式计算,然后根据余式计算伴随

式并输出。计算余式是指在GF(28)域中将以输入码元为系数的x的多项式作为被除数,

除以本原多项式得到余式。1 个码元对应1个余式。得到全部余式以后将各余式的x同幂次系数组合即得

到伴随式。

  (2)差错位置多项式系数计算电路。用于计算差错位置多项式R(x)的系数A1和A2的值。为实现此目的,需要求解4个非线形方程。

在设计中采用迭代的方法来完成这一要求。A1和A2是差错位置多项式的2个系数。如果输入数据无错,

那么A1=A2=0。如果有1个错误,则A2=0,只需计算求得A1的值。

  (3)差错位置计算电路。实现该过程时,用存储器Ds记录多项式D1和D2分别记录记录A1x和A2x2的 值。

每当1个新的数据到来时,D1和D2都乘α(位置变化1位),再把得到的新值代入Ds以验证是否是方程的根。这样,只需在每个数据到来的

时刻判断当前Ds=0是否成立,就可判断当前数据是否有错。

  (4)误码元错误幅度计算电路。此模块的功能是当数据有错时(由s进行判断)计算错误码元的错误幅度。e是计算得到的错误幅度与

相应码元相异或得到的值,可消除错误。如果当前码元无错,那么e=0。

  (5)输入数据缓存FIFO。此模块的功能是将原始码字延迟一定周期输出,以便与错误幅度的输出同步。由双端口RAM构成的可复位。

FIFO实现此功能。

  (6)纠错电路。此模块完成最后的纠错功能,通过与误码错误幅度e异或来实现。data_temp是从FIFO输出的数据。data_out即为纠

正错误后的数据输出。以上整个纠错过程有43个时钟的延时。

  (7)数据输出电路。此模块主要完成2项功能:生成纠错失败信号fail和输出最终数据。fail信号的生成过程其实就是再求1次伴

随式s。的过程。若计算出的s1不为0,则说明纠错不成功,将原始输入数据原样输出,同时fail信号输出高电平。否则,说明纠错成功

,将纠错后的码字输出,。fail保持低电平。本过程有20个时钟的延时。

  上面设计的解码电路的关键就是GF(28)域中乘除法单元的硬件实现[6]。基于FPGA存储器资源丰富的特点,设计中采用了查:ROM

表的办法来实现乘除功能。

  整个电路系统都在同一系统时钟CLK下工作,高电平复位。

2.3 交织器组

  本设计中,外编码器的输出按行进入1280bit的交织器,1个交织器存储32个外码码字,然后对交织器的内容按列读出。根据交织

器的特性,需要将数据完全装入后才能读出。在读出时,不能向交织器内写数据。数据的输入是连续的,需要具有缓存功能的模块对数

据进行缓存。采用1组2个交织器轮流读写的方法来保证数据的连续性。2个交织器的输出也是轮流进行的,当1个交织器填充完毕进行

输出时,来自外码编码器的数据将被存储到另1个交织器中。交织器组的架构如图3所示。

  本设计中,交织器的大小是1280bit,这主要是基于以下几方面的考虑:

  (1)交织器不宜过大。由于必须完全写满后再读出,数据通过交织器的延迟与交织器大小成正比。因此,较大的交织器会影响整个

系统的延时。所以,在保证效果的前提下,交织器要设计得尽量小。

  (2)交织器的大小存在下限,即交织器有交织深度的最小限制[7]。以本设计为例,接收时第1级解码为(20,16),第2级为(10,8),

则第2级的每个码字中不应有2个码元来自于第1级解码器的输出。否则,如果第1级解码器有未成功的解码(多于2个错误码元),则第2级

解码器的输入码元中存在多于1个的错误码元的概率大大增加。因此,在本设计中,交织器的下限为第1级解码器的输出码字的10倍,也

就是160字节。设计采用的交织器大小恰为下限。

3、系统验证及结论

  系统的整体实现与时序验证均使用Altera0uartusIl4.2和Modelsim5.7完成。FEC系统中各个模块及顶层控制部分全部 使用VerilogHDI。设计。实现时选择的目标器件是Altera Cyclone公司的EPlC20F400C7。

  对整个测试系统的编译结果如下:

                    


  在各种信道误码率和不同频率下进行了电路测试,测试结果如表1所示。

  根据以上分析,本设计达到了性能指标。当误码率适当降低时,纠错效果的提升非常明显。该系统在对S/PDIF格式的音频数据进行

编码和解码时共延时3ms。若工作于更高频率,则延时可按比例减小。采用双相标识码串行输入作为数据来源时,数据吞吐量最大可达到

32Mb/s,若采用其他数据来源,数据吞吐量最大可达178Mb/s。因此,此系统不仅可对音频信号进行前向纠错编解码,还可应用于数据量

更大的视频信号等的其他数据传输

 

转载于:https://www.cnblogs.com/FPGA_DSP/archive/2010/03/05/1678824.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Windows版本,OS内核版本,Windows SDK之间的关系

转自:Windows版本,OS内核版本,Windows SDK之间的关系 - 知乎 前言:我们经常会会被几个概念弄混淆,什么是Windows版本号,什么又是操作同内核版本,开发C的时候什么又是WindowsSDK,实际…

【转】30分钟学会UML类图

转自:30分钟学会UML类图 - 知乎 30分钟学会UML类图 肖继潮 UML图有很多种,但是并非必须掌握所有的UML图,才能完整系统分析和设计工作。一般说来,在UML图中,只要掌握类图、用例图、时序图的使用,就能完成大…

Microsoft SQL Server 2005数据库安装

Microsoft SQL Server 2005数据库,电脑里原有的mssql2000已经不适用了,到网上寻找SQL Server 2005简体中文开发版的下载地址,一开始下载了个学习版的express,可限制太多,还是决心安装开发版本的。到微软的官方网站寻找…

Wince6.0 cleartype

WinCE6.0下显示宋体毛刺很严重,影响显示效果,打开cleartype以后字体显示平滑,但是不知道为什么wince桌面上的中文字体显示乱码,而且自己的引用程序也变的很卡。 开始以为是字库的原因,后来添加了系统的组件以后一切正常…

【转】ubuntu16.04安装配置tftp服务

转自:ubuntu16.04安装配置tftp服务_carspiriter的博客-CSDN博客_ubuntu安装tftp 首先声明:tftp是client客户端,tftpd是server服务器端,d应该指的是daemon。如果你要从别人的tftp服务器端上传/下载东西,就要用到tftp&a…

【转】Dicom中的Image Orientation/Position的理解

转自:Dicom中的Image Orientation/Position的理解 - 知乎 在DICOM中,是通过Image Position和Image Orientation来描述当前的图像和人体坐标系的相对位置的。 打开DCM文件时,会发现下边的两个tag (0020,0032) DS ImagePosition(Patient) &q…

【转】矩阵变换坐标系 深入理解

转自:矩阵变换坐标系 深入理解 - 知乎 网址链接:从坐标系图中理解“空间变换” 小谈矩阵和坐标变换 矩阵坐标系变化理解 让我们从一个实际的例子入手:下图是一个用两维的笛卡尔坐标系表示的二维空间。 其中,黑色坐标系 x-y代表…

【转】坐标系变换矩阵推导

转自: 坐标系的变换矩阵推导 1.平移变换 假设存在点(x,y,z),将x移动a,y移动b,z移动c,到新的点(x′,y′,z′),则: 中间4x4的矩阵叫变换矩阵。可见,如果要平移坐标,要将坐…

【转】图形流水线中坐标变换详解:模型矩阵、视角矩阵、投影矩阵

转自:图形流水线中坐标变换详解:模型矩阵、视角矩阵、投影矩阵_sherlockreal的博客-CSDN博客_视角矩阵 图形流水线中坐标变换详解:模型矩阵、视角矩阵、投影矩阵 图形流水线中坐标变换过程模型矩阵:模型局部坐标系和世界坐标系之…

【转】C#开发PACS医学影像处理系统(二):界面布局之菜单栏

转自:C#开发PACS医学影像处理系统(二):界面布局之菜单栏 - 乔克灬叔叔 - 博客园 在菜单栏布局上,为了使用自定义窗体样式和按钮,我们需要先将窗体设置为无边框,然后添加一个Grid作为菜单栏并置顶,Vertical…

WF4.0 基础篇 (二十九) WorkflowInspectionServices

本文例子下载: http://files.cnblogs.com/foundation/WorkflowInspectionServicesSample.rar WorkflowInspectionServices 类 WorkflowInspectionServices可以得到流程中的Activity, 由于WF4.0的ActivityTree相对复杂,并不是象WF3.X的结构那样清晰, 在WF4.0中Activi…

【转】C#开发PACS医学影像处理系统(三):界面布局之工具栏

转自:https://www.cnblogs.com/Uncle-Joker/p/13650330.html 工具栏布局采用WPF中Grid作为容器,按钮采用自定义样式和图标,并采用Separator分割线: XAML设计器代码: 其中 Style"{StaticResource ButtonStyle}&…

WinCE6.0 修改开机Logo方法

中秋假期已过,回来继续该博文主题。今天讲解第二种方法,将 Logo 图片的数据写入到 Nand Flash 中,在启动初始化 LCD 的时候,从固定的地址将数据读出并填充到显示缓存中。实验平台:WinCE6.0Android6410 4.3寸CLD。以下内…

【转】DICOM开发工具总结

转自:DICOM开发工具总结_qimo601的专栏-CSDN博客 网上流行的DICOM协议开发工具: 1、DICOM开发类库主要有: (1)DCMTK(3.6.0), 官方下载网站,(如何安装编译DCMTK3.6.0) DCMTK实现了对DICOM图像…

【转】CT中的“层“与“排“的区别

转自:CT中的"层"与"排"的区别 自从离开医院,专业培训磁共振,有差不多5年时间没有接触CT了。影像技术及影像医学诊断说到底是一门经验技术累积学科,这种学科的特点就是熟能生巧,几年不碰&#xff0…

修改SMDK6410的调试串口为普通串口(wince系统)

环境: 飞凌OK6410A开发板, Windows CE6.0系统 最近在做GPRS通信,可是手头上的GPRS模块(Q2403A)是五线串口的(RXD、TXD、GND、RCS、CTS),老板又不愿买新的模块。所以考虑将调试串口CO…

【转】CTA图像

转自:CTA图像 CT检查在临床中应用十分广泛,CT以其扫描速度快,对骨头及钙化敏感而具有部分优势。 CTA是CT血管成像,是CT临床应用中一个非常重要的部分,由于血管及其背景软组织自然对比差,常规CT平扫往往难以…

大白话系列之C#委托与事件讲解(一)

从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的。首先,我们还是先说说委托吧,从字面上理解,只要是中国人…

【转】医学影像处理相关知识整理(一)

转自:医学影像处理相关知识整理(一) - 知乎 Segmentation to RT structure 近日做医疗影像处理相关的内容,感慨于这方面资料不全、散碎,遂记录自己获得的一些资料以供日后查阅。 DICOM DICOM 是医学图像和相关信息…

【转】软件工程能力漫谈:比质量更重要的,是项目管理能力

转自:软件工程能力漫谈:比质量更重要的,是项目管理能力 | ArchSummit 章淼老师在软件工程能力方面,积累了多年的经验,这个话题他之前也分享过多次,整体上内容有修改调整。 章老师博士毕业后在清华待了 12…