这个例子展示了如何实现IEEE®802.16标准的编码器和解码器[1使用HDL优化的Reed-Solomon (RS)编码器和解码器库块。
RS码是一种非二进制分组码。映射的RS代码将信息符号转换成具有符号长度的码字表示为RS(,)的代码。代码的符号是之间的整数和,表示有限域GF().IEEE 802.16宽带无线接入标准[1)使用了一个缩短、穿刺和擦除的RS(255,239)码,即,,.RS编码器介绍校验符号,RS译码器使用它来检测和纠正符号错误。该代码可以纠正到每个码字中的符号错误。
该模型展示了如何使用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以及守卫间隔的长度。消息之间的保护间隔容纳了向消息添加奇偶校验符号的编码器和执行简搜索的解码器的延迟。在模型的initFcn回调中messagelength设置为36期设置为236(这表示保护间隔的长度为200个符号)。
的值messagelength和期可以根据需要进行调整。
顶级RS子系统包含HDL优化RS编码器和解码器模块。打开RS子系统,执行如下命令:
systemname = [modelname“/ RS子系统”];open_system (systemname);
的值和在模型的InitFcn回调中设置,并用于配置HDL Optimized RS Encoder和Decoder块。的值和不能在此模型中更改。
如果消息长度小于,RS编码器就推断出一个缩短的代码符号。在本例中,它将填充输入消息0,对填充消息进行编码,并添加16个奇偶校验符号。然后块删除添加的零符号,创建一个符号输出。
IEEE 802.16标准所采用的场发生器多项式为.因此,对于RS编码器和译码器,均采用本原多项式源是设置为财产,本原多项式设置为[1 0 0 0 1 1 1 0 1],B的源是原始多项式的根的起始幂是设置为财产,B值是设置为0.IEEE 802.16标准所使用的代码生成器多项式是,在那里.
限制以及码字长度的详细资料整数输入RS编码器块引用页面。的ErrorGen子系统会给RS编码消息增加噪声。打开ErrorGen子系统,执行以下命令:
systemname = [modelname' / RS子系统/ ErrorGen '];open_system (systemname);
的ErrorGen控件中指定的位置上的码字添加噪声的逻辑噪声的位置常数。可以根据需要更改位置。在本例中,噪声将被添加到第5、23、34和12个码字,对应于符号F2、07、1A和9C。MATLAB®函数块只在每个包的这四个时间实例中输出逻辑真值,并激活原始符号和噪声之间的逐位异或操作。
使用以下命令运行模型:
sim (modelname);
逻辑分析仪可用于在一个窗口中查看多个信号,以这种方式查看信号使观察转换更容易。该模型中的信号在编码前、编码后、加噪后、解码后的各个阶段进行流处理。模型中的蓝色图标表示流信号。从模型的工具条启动逻辑分析仪。
在逻辑分析仪的输出中,输入数据信号代表RS编码器块的输入,这是IEEE 802.16规范中给出的36字节消息。编码后的数据显示了RS编码器块的输出。请注意,IEEE 802.16规范对奇偶校验字节进行穿刺,并只保留16字节的前4个字节。在这个演示中使用了所有16个字节的奇偶校验,并且奇偶校验的前四个字节是49、31、40和BF,符合IEEE 802.16规范。
errdata信号表示在指定的噪声位置添加了噪声的编码数据。这些噪声位置在插入器信号中用1s标记。
从RS解码器块输出的解码和校正的消息由输出数据信号显示。注意,RS解码器块引入了大约3个周期长度的延迟。观察输出数据,看噪声引起的误差是否得到了纠正。
要为本示例检查和生成HDL代码,您必须具有HDL Coder™许可证。
为生成的文件获取唯一的临时目录名,
workingdir = tempname;
要检查用于HDL代码生成的模型是否有任何问题,可以运行以下命令:
checkhdl(“commrshdl / RS子系统”、“TargetDirectory”,workingdir);
输入以下命令生成HDL代码:
makehdl(“commrshdl / RS子系统”、“TargetDirectory”,workingdir);
输入以下命令生成测试台:
makehdltb(“commrshdl / RS子系统”、“TargetDirectory”,workingdir);
下图显示了运行为测试平台生成的.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。