主要内容

使用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雇佣缩短,刺穿和擦除在GF(256)上生成的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优化RS编码器和解码器块的HDL支金宝app持的详细信息,请参阅整数输入RS编码器HDL优化整数输出RS解码器HDL优化。要了解更多关于区块中使用的算法,请参阅[2].

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

modelname =“commrshdl”;open_system (modelname);

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

Systemname = [modelname .“/源”];open_system (systemname);

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

消息= [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以及保护间隔的长度。消息之间的保护间隔容纳了编码器向消息添加奇偶校验符号和解码器执行简氏搜索的延迟。在模型的initFcn回调中,messagelength设置为36和设置为236(这表明保护间隔的长度为200个符号)。

的值messagelength可以根据需要变化。

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

Systemname = [modelname .“/ RS子系统”];open_system (systemname);

的价值N美元K美元在模型的InitFcn回调中设置,并用于配置HDL Optimized RS Encoder和Decoder块。的价值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 1 0 1],则B的源是原始多项式根的起始幂设置为财产,以及B值设置为0。IEEE 802.16标准使用的代码生成器多项式为$ g (x) = (x + \λ^ 0)(x + \λ^ 1)(x + \λ^ 2)\ ldots (x + \λ^ {2 t - 1})美元,在那里$ \λ= 2 _ {\ textrm{十六进制}}$

限制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);

查看信号

逻辑分析仪可用于在一个窗口中查看多个信号,通过这种方式查看信号可以更容易地观察转换。对该模型中编码前、编码后、加噪后、解码后各个阶段的信号进行流化处理。模型中的蓝色图标表示流信号。从模型的工具条中启动Logic Analyzer。

结果分析

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

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

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宽带无线接入系统空中接口标准(IEEE Std 802.16-2009修订版)。IEEE-SA。2012年6月8日。

2.George C. Clark Jr, J. Bibb Cain,数字通信纠错编码,纽约:施普林格,1981。