主要内容

使用HDL优化RS编码器/解码器库块

此示例显示如何为IEEE®802.16标准实现编码器和解码器[1]使用HDL优化的REED-SOLOMON(RS)编码器和解码器库块。

介绍

RS码是一种非二进制分组码。映射的RS代码$ k $将信息符号转换成具有符号长度的码字$ n $表示为rs($ n $$ k $)的代码。代码的符号是之间的整数$ 0 $$ 2 ^ m-1 $,代表有限字段GF的元素(2 ^ M美元).IEEE 802.16宽带无线接入标准[1]雇佣A.缩短、穿刺和擦除的RS(255,239)码,即N = 255美元$ K = 239美元,$ m = 8 $.RS编码器推出$ n - k = 16美元奇偶校验符号,由RS解码器使用以检测和正确符号错误。代码可以纠正$ T = \ textrm{地板}[(n - k) / 2] = 8美元每个码字中的符号错误。

该模型展示了如何使用HDL优化RS编码器和解码器库块进行仿真和HDL代码生成。实现了IEEE 802.16标准的编码和纠错功能。关于HDL对HDL优化RS编码器和解码器块的金宝app支持的详细信息,请参阅整数输入RS编码器HDL优化整数输出RS解码器HDL优化.要了解更多关于块中使用的算法,请参阅[2].

要打开这个示例模型,运行以下命令:

modelname =.'commrshdl';Open_System(ModelName);

子系统为RS编码器生成信息符号。打开子系统,运行以下命令:

systemname = [modelname'/来源'];Open_System(SystemName);

IEEE 802.16标准使用的一个消息(信息符号)包含以下36字节(随机数据,在[1])。

message = [D4 BA A1 12 F2 74 96 30 27 D4 88 9C 96 E3 A9 52 B3 15 AB FD 92 53 07 32 C0 62 48 F0 19 22 E0 91 62 1A C1 00]。

重复发送消息,然后重新发送保护间隔。该模型具有参数MessageLength.,表示要编码的信息中符号的数目;和,包括该MessageLength.和保护间隔的长度。消息之间的保护间隔适用于对消息添加奇偶校验符号的编码器的延迟,以及执行Chien Search的解码器。在模型的initfcn回调中,MessageLength.设置为36和36设置为236(这表示保护间隔的长度为200个符号)。

注意值的值MessageLength.可以根据需要改变。

顶级RS子系统包含HDL优化RS编码器和解码器模块。打开RS子系统,运行以下命令:

systemname = [modelname'/ rs子系统'];Open_System(SystemName);

价值$ n $$ k $设置在模型的initfcn回调中,用于配置HDL优化的RS编码器和解码器块。价值$ n $$ k $在此模型中无法更改。

如果消息长度小于,RS编码器就推断出一个缩短的代码$ k $符号。在本例中,它将填充输入消息239 - 36 = 203美元0,对填充消息进行编码,并添加16个奇偶校验符号。然后块删除添加的零符号,创建一个36美元+ 16 = 52美元符号输出。

IEEE 802.16标准所采用的场发生器多项式为$ p(x)= x ^ 8 + x ^ 4 + x ^ 3 + x ^ 2 + 1 $.因此,对于RS编码器和译码器,均采用本原多项式源是设置为财产, 这本原多项式设置为[1 0 0 0 1 1 1 0 1],B的来源是原始多项式根系的起始动力是设置为财产,而且B值是设置为0..IEEE 802.16标准使用的代码生成器多项式是$ g(x)=(x + \ lambda ^ 0)(x + \ lambda ^ 1)(x + \ lambda ^ 2)\ ldots(x + \ lambda ^ {2t-1})$,在那里$ \ lambda = 02 _ {\ textrm {hex}} $

限制$ m $.以及码字长度$ n $的详细资料整数输入RS编码器块参考页面。这ErrorGen子系统会给RS编码消息增加噪声。打开ErrorGen子系统,运行以下命令:

systemname = [modelname' / RS子系统/ ErrorGen '];Open_System(SystemName);

ErrorGen子系统实现逻辑以将噪声添加到码字在所指定的位置噪声的位置常数。可以根据需要更改位置。在本例中,噪声将被添加到第5、23、34和12个码字,对应于符号F2、07、1A和9C。MATLAB®函数块只在每个包的这四个时间实例中输出逻辑真值,并激活原始符号和噪声之间的逐位异或操作。

输出信号

使用以下命令运行模型:

sim (modelname);

查看信号

逻辑分析仪可用于在一个窗口中查看多个信号并以这种方式查看信号使得更容易观察转换。在各个阶段的该模型中的信号,即在编码之前,在编码后,在添加噪声之后,并且在被传输后进行解码。模型中的蓝色图标表示流式信号。从Model的ToolStrip启动逻辑分析器。

结果分析

在逻辑分析器输出中,输入数据信号表示RS编码器块的输入,这是IEEE 802.16规范中给出的36字节消息。编码数据显示了RS编码器块的输出。请注意,IEEE 802.16规范执行奇偶校验字节的打孔,并仅保留16个字节的前四个字节。在该演示中,使用所有16​​个字节的奇偶校验,并且前四个字节的奇偶校验是49,31,40和BF,匹配IEEE 802.16规范。

errdata信号表示在指定的噪声位置添加了噪声的编码数据。这些噪声位置在插入器信号中用1s标记。

从RS解码器块输出的解码和校正的消息由输出数据信号显示。注意,RS解码器块引入了大约3个周期长度的延迟。观察输出数据,看噪声引起的误差是否得到了纠正。

生成HDL代码和测试台

要为本示例检查和生成HDL代码,您必须具有HDL Coder™许可证。

获取生成文件的唯一临时目录名称,

WorkingDir = TempName;

要检查HDL代码的模型是否存在任何问题,可以运行以下命令:

CheckHDL('commrshdl / Rs子系统','targetdirectory',workingdir);

输入以下命令生成HDL代码:

makehdl('commrshdl / Rs子系统','targetdirectory',workingdir);

输入以下命令生成测试台:

makehdltb(“commrshdl / RS子系统”、“TargetDirectory”,workingdir);

ModelSim®输出

下图显示了运行为测试平台生成的.do文件脚本后的ModelSim HDL模拟器。将ModelSim结果与之前绘制的Simulink®结果进行比较。金宝app

选定的参考文献

1. IEEE 802.16:用于宽带无线接入系统的空中接口标准(IEEE STD 802.16-2009的修订版)。IEEE-SA。2012年6月8日。

2.乔治C.Clark JR,J.Bibb Cain,数字通信纠错编码,纽约:Springer,1981。