中文摘要:
以DVB2C 系统中的RS 编码为例,参照Berlekamp 比特串行乘法器,提出了一种基于对偶基的比特并行乘法器的方法来实现RS 编码器,可以达到较高的吞吐率,从而可以采用FPGA/ CPLD实现高速RS 编码。
引 言
RS(Reed-Solomon) 码是一类具有很强纠错能
力的多进制BCH 码,广泛应用于卫星通信、移动
通信和数据存储等领域中。RS 码是定义在伽罗
华有限域( Galois Fields) 上的,其编码译码运算都
是有限域上的算术运算。在有限域的各种算术运
算中,乘法是研究较多的,其中
Berlekamp 比特串
行乘法器的硬件较为简单[ 1 ] ,适合用于RS 码编
码器。但是
Berlekamp 乘法器的问题是,比特串
行的工作时钟频率较高,当编码器的吞吐率要求
较高时,比特串行的运算不易达到速度的要求。
利用Matlab 工具采用
Berlekamp 乘法器的思想,
可以用简单门电路实现基的转换,和比特并行速
率工作的有限域乘法。
6 仿真测试结果
笔者使用
Max + plusII 编写了用于DVB2C
的RS(204 , 188) 编码器,采用Altera 的FL EX 器
件EPF10 K10LC8423 就可实现,仅消耗233LCs。
根据
Max + plusII 的分析,输入到输出最大的时
延1315ns ,最小的时钟周期2817ns ,工作频率可
以达到34184MHz。
而在本系统中,工作时钟等于MPEG22 传送
层码率。需要说明的一点,输入信号已经加入了
用于纠错字节的位,这样不用进行更改时钟频率
的操作。
为了使用matlab 进行辅助分析方便,设定测
试中的时钟周期为100ns ,即10MHz 频率。
波形仿真结果如图3 。这里采用matlab 编写
了
Max + plusII 格式的向量文件vec ,写入matlab
仿真的结果,然后在
Max + plusII 中调入,这样就
可以比较波形来判断结果是否一致;同样,可以将
波形仿真结果存为向量文件,使用Matlab 读取,
判断结果是否一致。这个方法这里就不细述了。
7 小结
本设计将复杂和消耗资源的工作由计算工具
处理(可以使用C/ C + + 程序,Matlab 是最方便
的) ,而实际设计的硬件电路最后形式是非常简单
的组合逻辑门电路,对于在
FPGA/
CPLD 上实现
高速
RS 编码是最好的方法之一。只要根据生成
多项式系数( 主要在于乘法器的乘数) 改变
Matlab 程序的入口参数即可得到,对组合逻辑相
应的进行修改,就可以实现相对应的高速RS 编
码。而采用工具来进行数学运算,取得对应与生
成多项式系数的组合逻辑是比较简单,而且可以
采用通用程序。