Reed Solomon编解码器的可编程逻辑实现
扫描二维码
随时随地手机看文章
1.简介
本文所述的Reed Solomon编译码器编译器能够产生多种代码形式的Reed Solomon的宏编码器和译码器,这些代码形式在参数部分详细说明,一旦确定了代码,可以对顶层HDL代码以Altera 10K器件进行编译。通常,编码器编译包括装配和布线不超过一分钟,而译码器编译也只要五分钟。这个应用程序也能够产生测试代码,可以验证所生成内核的功能。
有三种Reed Solomon 编译码器的宏单元,一个是编码器,另两个是译码器它们是为不同规模/性能要求而优化的。性能较低的译码器,也依据分立译码器,接收一个码字,计算差错位置和值,写回纠正后的码字。性能较高的译码器,或流译码器,连续读取和写回码字。流译码器或多或少地多使用一些逻辑,但需要更多的存储空间,由于译码模块之间进行流水线作业因此性能有很大程度的改善。
2.参数
以下参数定义了Reed Solomon码字。
A.每个码字的符号总数
每个码字有多达2m-1个符号,也就是N。对Reed Solomon编译器,N必须大于3,受最小的R+1限制。
B.校验符号数目
编译器支持4到40个校验符号,或者R,受最大N-1校验符号限制。
C.每个符号的位数
虽然Reed Solomon码字可以为每个符号定义任意位数m,但编译器的有效范围从4到8比特。
D.不可约域多项式
域多项式,或域(field),指定了有限域中元素的级数。域的大于由m给定,每个域大小仅受限于有效域多项式数目。域多项式通常由系统规范确定,但是对于给定的m,编译器能够使用任何有效的域多项式。另外FIELD.EXE应用程序可以根据任意m计算所有有效的域。
E.生成多项式的第一个根
域多项式描述的符号内各位之间的关系,而生成多项式则描述了符号之间的关系。生成多项式在编码期间生成校验符号。编译器支持0到2m-1-R之间的genstart。
3.设计流程
使用第二节中描述的参数,DOS应用程序将生成用于HDL结构框架设计的插件。用于生成编码器的应用程序是ENCRSV3,生成译码器的应用程序是DECRSV3。可以按第二节所列的参数顺序调用这两个应用程序。应用程序会检验并确认参数处于有效范围内,确认这些参数组合能够生成有效的RS码。应用程序还可以为这个RS编译码产生测试代码,马上就可以进行功能测试了。
程序运行之后,就能够以独立的设计或作为更大系统设计的一部分编译所需功能的顶层HDL。
4.资源要求
所需资源的数量主要取决于m和R。每个码字的符号数目不会影响译码器所需逻辑,因为接收的符号存储在Altera 10K器件的嵌入存储块中。
编码器需要很少的逻辑单元,而不需要存储块。编码器的规模随m和R线性变化。图1为当m=8时,编码器规模和R的关系。
虽然对给定的m的R,分立和流式译码器之间有大略的线性关系,但它们的规模随m和R呈几何增长。除了逻辑之外,分立译码器需要两个嵌入存储块,而流式译码器需要五个存储块。若生成多项式的第一个根大于零,那么需要更多的存储块。图2为m=8时,译码器规模和R的关系。
5.计算系统性能
编码器的性能取决于m和R,以及器件的布线和装配。通常绝大部分的参数组合都可以实现40MHz系统时钟速度,这说明编码器的性能一般高于译码器。当编码每个时期你生一个符号,吞吐速率和系统时钟速率一样。
译码器的系统性能取决于系统时钟速率以及所选的RS码字。处理一个码字所需的最小和最大时钟速率,取决于N和R。如果接收码字的差错小于最大差错数目t,译码所需的时钟周期小于最大周期数。若接收的码字多于t个差错,那么最大时钟周期后,译码器输出接收的码字,并把DECFAIL标志置位。
分立和流式译码器均有规模/性能(size/performance)权衡参数speed,它可以设置为"single"或"double"。实现"double"(加倍)内部处理单元无需很多的额处逻辑,不多于2m2个逻辑单元。速度参数也会提高分立译码器的性能,但可能会影响流译码器的吞吐量。
当N为码字的最大允许值(2m-1)时,译码器的吞吐量最大。
A.分立译码器
当speed为"single"时,分立译码器的最大延如下,其中包括读取接收的码字和写回纠正后的码字。
3N+3R 2 (1)
对于较大的R值,那么延迟主要决定于第二项。
当speed是"double"时,分立译码器的最大延迟为:
3N+1.7R 2 (2)
对于R小于14,译码可能需要额外延迟40个周期。若R值更大,延迟可能稍微短一些。
图3为不同参数N,R以及speed对分立译码器吞吐量的影响。对于较小的R,N和speed译码器的性能没有多大影响。
随着R的增加,N对系统吞吐量变得非常重要。这是因为系统吞吐量是测算单位时间内符号的数目,随着R增加,N对延迟的影响微不足道。
对于较大的R,译码器的吞吐量和N成正比。随着R的增加,speed参数的影响简单地由上述(1)和(2)式决定。当speed设置为"double"时,性能提升50%。
B.流式译码器
当speed是"single"时,流式译码器每个码字的最大延迟为:
max{(N+R),(3R2)} (3)
当speed是"double"时,流式译码器每个码字的最大延迟为:
max{(N+R),(1.7R2)} (4)
此外,和分立译码器一样,延迟随R变化很小(最多40个周期)。
图4说明了不面N和R对性能的影响。R越大,增加N或者把speed参数设置为"double"的影响越大。
对特定的m,系统时钟频率保持相对稳定,随m只有轻微变化。
6.结论
高性能的Reed Solomon 编码器和译码器可以采用完全参数化的工具方便地进行设计。这些Reed Solomon核能综合到可编程逻辑中,可以生成和标准器件(ASSP)面样级数,或性能更优的编译码器。
在综合之前要给定RS的参数,估计核的大小和性能。