CN102075200A - 一种紧凑的高信息率rs译码装置 - Google Patents
一种紧凑的高信息率rs译码装置 Download PDFInfo
- Publication number
- CN102075200A CN102075200A CN2010106238091A CN201010623809A CN102075200A CN 102075200 A CN102075200 A CN 102075200A CN 2010106238091 A CN2010106238091 A CN 2010106238091A CN 201010623809 A CN201010623809 A CN 201010623809A CN 102075200 A CN102075200 A CN 102075200A
- Authority
- CN
- China
- Prior art keywords
- module
- state
- status control
- correction factor
- control module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种紧凑的高信息率RS译码装置,包括伴随式计算模块、关键方程求解模块、错误搜索和错误值计算模块,所述关键方程求解模块采用riBM或RiBM算法,用于计算错误位置多项式和错误值多项式。其中主要的关键方程求解模块包括RAM存储模块(2)、迭代运算模块(3)和修正系数模块(4)。采用本发明克服了高信息率RS译码过程中关键方程求解算法占用较多FPGA逻辑单元的问题。
Description
技术领域
本发明涉及一种紧凑的高信息率RS译码装置,属于编译码技术领域。
背景技术
RS译码系统的关键方程求解算法是一个嵌套循环结构,一般需要循环迭代递推2t次,包含两个关键步骤:依据伴随式迭代递推错误位置多项式和错误值多项式的次数;修正错误位置多项式和错误值多项式的次数。工程应用的算法主要有BM算法和EuClidean算法。这两种算法各有优缺点,一般采用硬件逻辑设计复杂度低且具有固定关键路径延迟小的无逆的riBM和RiBM算法。
一般地,用于关键方程求解的riBM和RiBM算法适用于并行处理,这样每个时钟周期内要使用6t+2个通用的G(2m)有限域并行乘法器。并行处理设计的优点是算法结构的逻辑设计特别简单,但缺点是数量众多的有限域并行乘法器要占用相当多的FPGA逻辑单元,这对FPGA逻辑资源受限的系统设计十分不利。
在高信息率RS译码系统,由于RS码字很长,一般以延迟固定帧的方式输出译码序列,因此可将这个算法采用串行处理方式,仅使用2个有限域并行乘法器,这样确实能够大幅度降低算法占用逻辑单元的数量。然而采用这种方式却引出了另一个棘手的问题,由于算法本身是一个嵌套循环的控制过程,这个控制过程使用FPGA逻辑设计就显得不必要的复杂,并且占用了相对算法本身较多的逻辑单元。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供了一种紧凑的高信息率RS译码装置,克服了高信息率RS译码过程中关键方程求解算法占用较多FPGA逻辑单元的问题。
本发明的技术解决方案是:
一种紧凑的高信息率RS译码装置,包括伴随式计算模块、关键方程求解模块、错误搜索和错误值计算模块,所述关键方程求解模块采用riBM或RiBM算法,用于计算错误位置多项式和错误值多项式。
其特征在于:所述关键方程求解模块包括RAM存储模块、迭代运算模块和修正系数模块,
RAM存储模块,分为两个存储区,初始化时用于存储输入的伴随式;并在计算过程中分别用于存储每次循环第r个状态和第r+1个状态中的错误位置、错误值和用于计算错误位置和错位值的辅助数据;r为循环次数,取值[0,2t-1];
迭代运算模块,用于在循环中利用存储于RAM存储模块中的第r个状态中由修正系数模块产生的辅助数据更新第r+1个状态的错误位置和错位值;
修正系数模块,用于在循环中利用存储于RAM存储模块中第r个状态的错位位置和错位值修正第r+1个状态中用于计算错误位置和错位值的辅助数据。
在关键方程求解模块中还包括状态控制模块,状态控制模块采用状态机对迭代运算模块和修正系数模块进行控制,所述状态机包括空闲状态、开始状态、迭代状态、修正状态和结束状态;
空闲状态:状态控制模块对伴随式的输入进行检测,当有伴随式输入时,转入开始状态;
开始状态:状态控制模块将输入的伴随式存储到RAM存储模块中,并对算法进行初始化,算法初始化完成后,转入迭代状态;
迭代状态:状态控制模块启动迭代运算模块(3);迭代运算模块(3)迭代运算完成后,迭代运算模块向状态控制模块返回完成信号,转入修正状态;
修正状态:状态控制模块启动修正系数模块;修正系数模块对辅助数据修正完成后;修正系数模块向状态控制模块返回完成信号,转入结束状态;
结束状态:状态控制模块将错误多项式输出;转入空闲状态。
本发明与现有技术相比具有如下优点:
(1)本发明充分利用FPGA内置的RAM资源,依据关键方程求解算法的结构特点,以循环顺序存取RAM的处理机制代替嵌套循环的控制过程,这样简化了嵌套循环控制过程的逻辑设计复杂度,从设计方法上大幅度降低了算法占用FPGA逻辑单元的数量。
(2)本发明特别适合于FPGA逻辑资源有限的系统,仅需要增加极少的RAM存储空间就能实现,而且简化了RS译码系统的关键方程求解算法的串行设计,也为其它类似算法的串行设计提供了有效的FPGA设计参考。
(3)本发明将关键方程求解算法的嵌套循环控制过程转换为对FPGA内置RAM的循环顺序存取的处理机制,用RAM资源换取逻辑单元资源,从而降低了占用逻辑单元的数量,同时简化了嵌套循环控制过程的逻辑设计。
附图说明
图1为关键方程求解模块的组成;
图2为状态控制模块的状态转移图;
图3为迭代运算模块;
图4为riBM算法Iambda状态更新;
图5为riBM算法delta状态更新;
图6为基于RAM结构的迭代运算;
图7为基于RAM结构的修正系数;
图8为基于RAM结构的关键方程求解模块的原理图。
具体实施方式
RS译码的主要步骤包含:伴随式计算、关键方程求解、错误搜索和错误值计算。其中,关键方程求解是RS译码最复杂的步骤。本发明中分别通过伴随式计算模块、关键方程求解模块、错误搜索和错误值计算模块实现上述的计算处理,是针对基于RAM结构的riBM和RiBM算法的实现结构。
RS译码在工程中一般采用流水线设计,依据接收到的编码序列利用伴随式计算模块计算伴随式,关键方程求解模块利用伴随式计算模块输出的伴随式计算错误位置多项式和错误值多项式,错误搜索和错误值计算模块利用错误位置多项式和错误值多项式对接收到的编码序列进行纠正,获得译码序列输出。
下面就结合附图对本发明中的创新部分关键方程求解模块做进一步介绍。
如图1所示,关键方程求解模块包含:状态控制模块1、RAM存储模块2、迭代运算模块3和修正系数模块4。状态控制模块1实现系统的控制功能,用于接收伴随式,输出错误位置多项式和错误值多项式,控制迭代运算模块3和修正系数模块4工作;RAM存储模块2用于存储算法循环顺序迭代递推的数据结构;迭代运算模块3用于每次循环的迭代递推运算;修正系数模块4用于修正每次循环的错误位置多项式和错误值多项式的系数。
下面详细介绍各个模块的功能与实现方案。
(1)状态控制模块
关键方程求解算法需要循环迭代递推2t次,状态控制模块1用状态机实现算法结构的控制功能。如图2所示,将状态机分为五个状态:空闲状态、开始状态、迭代状态、修正状态、结束状态。
空闲状态:在检测到伴随式计算模块的触发信号后,立即步入开始状态。
开始状态:依次接收2t个伴随式,顺序存储在RAM内部,然后初始化算法,完成后步入迭代状态。
迭代状态:启动迭代运算模块,在顺序迭代递推完成后步入修正状态。
修正状态:启动修正系数模块,在顺序修正系数完成后步入结束状态。
结束状态:输出错误位置多项式和错误值多项式的触发信号,依次输出错误位置多项式和错误值多项式的系数,完成后步入到空闲状态。
(2)RAM存储模块
依据算法的迭代递推运算和修正系数的共同特点,在RAM存储模块2内部建立顺序迭代递推的数据结构,适用于迭代运算模块和修正系数模块的顺序处理。另外,为保存迭代递推运算和修正系数需要的前一个状态数据,将RAM存储模块2内部分为状态(r)和状态(r+1)两个状态区域,并且在每次循环后切换状态区域。
(3)迭代运算模块
关键方程求解算法的1次循环是一个顺序迭代递推的过程,将迭代运算模块3的输入和输出指向建立在RAM内部的顺序迭代递推的数据结构,递增迭代运算模块3的输入和输出地址,就能实现这个顺序迭代递推的过程。
如图3所示,迭代运算模块是关键方程求解算法的基本迭代运算单元,包含两个有限域乘法单元31、一个有限域加法单元32、两个参数寄存器单元33。为在2个时钟周期内完成一次稳定的迭代运算,有限域乘法单元采用并行结构设计,保证在1个时钟内完成一次有限域乘法运算,这样,再加上1个时钟周期的有限域加法运算,就实现了上述要求。
(4)修正系数模块
关键方程求解算法的1次循环是一个顺序修正系数的过程,将修正系数模块4的输入和输出指向RAM内部的顺序迭代递推的数据结构,依据算法判决条件选择修正系数的方式,递增输入和输出的地址,就能逐次项顺序修正错误位置多项式和错误值多项式的系数。
riBM和RiBM算法具有顺序迭代递推的结构,也就是错误位置多项式和错误值多项式的权位和系数可以顺序存储和顺序迭代递推,这样将迭代递推的基本运算单元剥离出来,将运算单元的输入和输出分别指向相应的RAM存储地址,通过地址的循环递增方式,就可以实现循环的顺序迭代递推过程。这里选取riBM算法为例说明具体实施方式,参考Dilip V.Sarwate and Naresh R.Shanbhag,M High-Speed Architecture for Reed-Solomon Decoders,IEEE transaction on VLSI system,vol.9,pp.641-655,Oct.2001。
在riBM算法中,Step riBM.1和Step riBM.2步骤的操作分别对应顺序迭代递推和顺序修正系数的过程。将riBM算法的lambda、b、dleta、theta作为RAM存储模块的数据结构,lambda和b是t+1大小的数组,dleta和theta是2t大小的数组;gamma和k变量作为状态控制模块的寄存器。
Step riBM.1步骤是riBM算法逻辑设计的复杂环节,如图4和图5所示,基于RAM结构的lambda和dleta状态更新具有相同的逻辑结构,在每次迭代递推过程中,均采用一个相同的迭代运算模块(虚线框标识),由低次项向高次项顺序递推各次项的系数,因此可以将迭代递推的过程变换为顺序迭代存取RAM的过程。
由于计算状态(r+1)需要保存状态(r)的数值,因此将RAM分为状态(r)和状态(r+1)两块区域,且每次循环切换状态区域,这样就可以实现2t次循环顺序迭代递推的控制过程。如图6所示,将每次迭代递推的lambda数组、b数组、delta数组、theta数组顺序存储在RAM的状态(r)区域和状态(r+1)区域。每次循环迭代递推完成后,迭代运算模块的输入就切换到RAM的对应状态区域,输出同样切换到自身对应的状态区域。
Step riBM.2步骤在修正系数的过程中,首先依据gamma和k在状态(r)的值决定修正系数的方法,然后用状态(r)的数值修正状态(r+1)的数值。如图7所示,这个过程就是将存储在状态(r)区域的数据顺序填充到相应的状态(r+1)区域,实际上就是数据搬移的过程。
由于Step riBM.1和Step riBM.2步骤是串行执行过程,因此迭代运算模块3和修正系数模块4可以共享RAM的地址和数据总线。如图3所示,稳定的迭代运算模块3至少需要2个时钟周期完成计算,但迭代运算模块3需要同时从RAM的状态(r)区域读取2个数据,并且在读周期内还能同时写入状态(r+1)区域1个数据。采用3端口RAM设计,修正系数模块4共享迭代运算模块3的地址和数据总线,就能满足这个设计要求。
如图8所示,状态控制模块1用于伴随式输入、算法初始化、循环状态控制、错误位置多项式和错误值多项式的输出;RAM存储模块2用于存储Step riBM.1和Step riBM.2步骤的数据结构;迭代运算模块3用于Step riBM.1步骤的迭代递推运算;修正系数模块4用于Step riBM.2步骤的修正错误位置多项式和错误值多项式的系数。
定义M是关键方程求解模块的数据总线和数据输入输出端口的位宽;定义L是地址总线的位宽。基于RAM结构的关键方程求解模块的原理图的信号定义如下:
定义syn_en和syn_data信号是状态控制模块接收伴随式的信号;定义err_en和err_data信号是状态控制模块发送错误位置多项式和错误值多项式的信号;定义flag信号的flag[0]作为地址总线的最高位,用于切换RAM的状态(r)区域和状态(r+1)区域,flag[1]标识修正系数模块的选择判决结果;定义start信号作为状态控制模块向迭代模块和修正系数模块发起的开始信号;定义over信号作为迭代模块和修正系数模块向状态控制模块反馈的完成信号;定义rd_en和wr_en信号是对3端口RAM的读写使能;定义addr_rd0、data_rd0、addr_rd1、data_rd1信号是读取3端口RAM的地址总线和数据总线;定义addr_rd2、data_rd2信号是写入3端口RAM的地址总线和数据总线。
关键方程求解模块的工作流程具体如下:
(1)状态控制模块1工作在空闲状态。在检测到syn_en触发信号后,立即转入开始状态。
(2)状态控制模块1工作在开始状态。首先通过syn_data信号端口依次接收2t个伴随式,并在RAM存储模块2顺序存储delta和theta数组;然后依据算法初始化RAM存储模块2的lambda数组和b数组,初始化寄存器k和gamma。初始化完成后转入迭代状态。
(3)状态控制模块1工作在迭代状态。首先反转flag[0]信号,然后触发start[0]信号启动迭代运算模块3,等待over[0]触发信号。迭代模块3接收到start[0]信号后,立即设置初始地址,然后通过地址递增的方式顺序迭代递推RAM存储模块2的lambda数组和delta数组。迭代运算模块3完成后,触发over[0]信号。状态控制模块1接收这个over[0]触发信号后,立即转入修正状态。
(4)状态控制模块1工作在修正状态。首先根据delta[0]和k的值设置flag[1]信号;然后触发start[1]信号启动修正系数模块4,等待over[1]触发信号。修正系数模块4接收到start[1]信号后,依据检测到的flag[1]信号选择修正系数的方式,并设置初始地址,然后通过地址递增的方式,顺序迭代递推RAM存储模块2的b数组和theta数组。修正系数模块4完成后,触发over[1]信号。状态控制模块1接收到这个over[1]触发信号后,flag[1]信号选择修正gamma和k值,然后转入结束状态。
(5)状态控制模块1工作在结束状态。首先触发err_en信号,然后通过err_data信号依次串行顺序输出RAM存储模块2的lambda数组,以及delta数组的前t+1个数值,完成后转入空闲状态。
本发明未详细说明部分属本领域技术人员公知常识。
Claims (2)
1.一种紧凑的高信息率RS译码装置,包括伴随式计算模块、关键方程求解模块、错误搜索和错误值计算模块,所述关键方程求解模块采用riBM或RiBM算法,用于计算错误位置多项式和错误值多项式。
其特征在于:所述关键方程求解模块包括RAM存储模块(2)、迭代运算模块(3)和修正系数模块(4),
RAM存储模块(2),分为两个存储区,初始化时用于存储输入的伴随式;并在计算过程中分别用于存储每次循环第r个状态和第r+1个状态中的错误位置、错误值和用于计算错误位置和错位值的辅助数据;r为循环次数,取值[0,2t-1];
迭代运算模块(3),用于在循环中利用存储于RAM存储模块(2)中的第r个状态中由修正系数模块(4)产生的辅助数据更新第r+1个状态的错误位置和错位值;
修正系数模块(4),用于在循环中利用存储于RAM存储模块(2)中第r个状态的错位位置和错位值修正第r+1个状态中用于计算错误位置和错位值的辅助数据。
2.根据权利要求1所述的一种紧凑的高信息率RS译码装置,其特征在于:还包括状态控制模块(1),状态控制模块(1)采用状态机对迭代运算模块(3)和修正系数模块(4)进行控制,所述状态机包括空闲状态、开始状态、迭代状态、修正状态和结束状态;
空闲状态:状态控制模块(1)对伴随式的输入进行检测,当有伴随式输入时,转入开始状态;
开始状态:状态控制模块(1)将输入的伴随式存储到RAM存储模块(2)中,并对算法进行初始化,算法初始化完成后,转入迭代状态;
迭代状态:状态控制模块(1)启动迭代运算模块(3);迭代运算模块(3)迭代运算完成后,迭代运算模块(3)向状态控制模块(1)返回完成信号,转入修正状态;
修正状态:状态控制模块(1)启动修正系数模块(4);修正系数模块(4)对辅助数据修正完成后;修正系数模块(4)向状态控制模块(1)返回完成信号,转入结束状态;
结束状态:状态控制模块(1)将错误多项式输出;转入空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010623809 CN102075200B (zh) | 2010-12-31 | 2010-12-31 | 一种紧凑的高信息率rs译码装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010623809 CN102075200B (zh) | 2010-12-31 | 2010-12-31 | 一种紧凑的高信息率rs译码装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102075200A true CN102075200A (zh) | 2011-05-25 |
CN102075200B CN102075200B (zh) | 2013-07-24 |
Family
ID=44033567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010623809 Active CN102075200B (zh) | 2010-12-31 | 2010-12-31 | 一种紧凑的高信息率rs译码装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102075200B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579368A (zh) * | 2014-12-11 | 2015-04-29 | 北京时代民芯科技有限公司 | 一种信道纠错码rs码解关键方程电路 |
CN104639282A (zh) * | 2013-11-14 | 2015-05-20 | 杭州海康威视数字技术股份有限公司 | 通信系统中rs译码方法及其装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1841982A (zh) * | 2005-03-31 | 2006-10-04 | 中国科学院空间科学与应用研究中心 | 一种高速译码芯片 |
CN101309086A (zh) * | 2008-06-27 | 2008-11-19 | 东南大学 | 里德-所罗门码级联反馈系统卷积码的系统的译码方法 |
CN101695015A (zh) * | 2009-10-30 | 2010-04-14 | 烽火通信科技股份有限公司 | 一种用于epon系统的rs译码器及译码方法 |
-
2010
- 2010-12-31 CN CN 201010623809 patent/CN102075200B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1841982A (zh) * | 2005-03-31 | 2006-10-04 | 中国科学院空间科学与应用研究中心 | 一种高速译码芯片 |
CN101309086A (zh) * | 2008-06-27 | 2008-11-19 | 东南大学 | 里德-所罗门码级联反馈系统卷积码的系统的译码方法 |
CN101695015A (zh) * | 2009-10-30 | 2010-04-14 | 烽火通信科技股份有限公司 | 一种用于epon系统的rs译码器及译码方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104639282A (zh) * | 2013-11-14 | 2015-05-20 | 杭州海康威视数字技术股份有限公司 | 通信系统中rs译码方法及其装置 |
CN104639282B (zh) * | 2013-11-14 | 2018-09-11 | 杭州海康威视数字技术股份有限公司 | 通信系统中rs译码方法及其装置 |
CN104579368A (zh) * | 2014-12-11 | 2015-04-29 | 北京时代民芯科技有限公司 | 一种信道纠错码rs码解关键方程电路 |
CN104579368B (zh) * | 2014-12-11 | 2018-02-23 | 北京时代民芯科技有限公司 | 一种信道纠错码rs码解关键方程电路 |
Also Published As
Publication number | Publication date |
---|---|
CN102075200B (zh) | 2013-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111063379B (zh) | 存储器装置以及操作其以用于读取页面媒体流的方法 | |
KR20080112252A (ko) | 에러 보정 디바이스 및 그 방법 | |
US5465275A (en) | Efficient utilization of present state/next state registers | |
CN102057442A (zh) | 在数据处理系统中用ecc选择性地执行单周期写操作 | |
US20190065205A1 (en) | Variable length instruction processor system and method | |
CN101777921B (zh) | 用于显式存储片上系统的结构化ldpc码译码方法及装置 | |
US20070136641A1 (en) | Unified memory architecture for recording applications | |
CN100492919C (zh) | 一跨序列排序涡轮码系统和其操作方法 | |
US5619514A (en) | In-place present state/next state registers | |
CN102075200B (zh) | 一种紧凑的高信息率rs译码装置 | |
US8769390B2 (en) | Apparatus and method for processing operations in parallel using a single instruction multiple data processor | |
CN1214575A (zh) | 采用新多项式排列结构里德-索罗门解码器及解码方法 | |
US9336085B2 (en) | Memory system and memory controller | |
US8401126B2 (en) | Viterbi decoding apparatus | |
CN101442677B (zh) | Dmb-t解调芯片中前向纠错解码的硬件构架及解码方法 | |
CN102594369B (zh) | 基于fpga的准循环低密度校验码译码器及译码方法 | |
KR101157516B1 (ko) | 데이터 처리 효율을 향상시킨 bch 코덱 | |
JP2003530753A (ja) | 高速acsビタビデコーダの実行のためにメモリ内の状態の距離を効率的に読出して記憶するための方法および装置 | |
CN101001089B (zh) | 一种纠错码解码中的钱搜索方法及装置 | |
US9715343B2 (en) | Multidimensional partitioned storage array and method utilizing input shifters to allow multiple entire columns or rows to be accessed in a single clock cycle | |
CN112332865A (zh) | 基于bch并行算法和ldpc算法的纠错电路及方法 | |
KR101307792B1 (ko) | 다중-쓰레드 비씨에이치 인코더, 비씨에이치 디코더, 이를 포함하는 스토리지 디바이스 및 스토리지 시스템 | |
KR101267958B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
US9755667B1 (en) | Methods and systems for parallelizing high throughput iterative decoders | |
US9442661B2 (en) | Multidimensional storage array and method utilizing an input shifter to allow an entire column or row to be accessed in a single clock cycle |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |