主要内容

comm.hdlrsencoder

使用芦苇 - 固体编码器编码消息

描述

HDL优化HDLRSENCODERSystem Object™创建一个带有消息和代码字的芦苇 - 固体代码(RS)代码。

要使用芦苇 - 固体代码编码消息:

  1. 创建comm.hdlrsencoder对象并设置其属性。

  2. 用参数调用对象,就好像它是一个函数一样。

要了解有关系统对象如何工作的更多信息,请参阅什么是系统对象?

创建

描述

rsenc= comm.hdlrsencoder创建一个hdl优化的块编码器系统对象,rsenc,这将以HDL的流方式进行芦苇 - 色龙编码。

rsenc= comm.hdlrsencoder(名称,价值使用一个或多个名称值对设置属性。将每个属性名称包装在单引号中。例如,

comm.hdlrsencoder('bsource','属性','b',2)
为原始多项式的根设定2个起始功率。

例子

rsenc= comm.hdlrsencoder(n,,,,k,,,,名称,价值设置CodeFordLength财产为n, 这MessageLength财产为k,以及指定值的其他指定属性名称。

特性

展开全部

除非另有说明,否则属性是不可否认,这意味着您在调用对象后不能更改其值。呼叫时锁定对象,然后发布功能解锁它们。

如果财产是可调,您可以随时更改其价值。

有关更改属性值的更多信息,请参见使用系统对象在MATLAB中的系统设计

原始多项式根的起始功率,指定为正整数。

依赖性

设置时对象使用此值Bsource'财产'

原始多项式根的起始功率的来源,指定为'财产'或者'汽车'。当您选择时'汽车',对象使用b = 1

符号数量,n,在RS代码字中,指定为正整数。该值最多可舍入2m–1。m是原始多项式的程度,如原始的杂质资源原始分析特性。差异CodeFordLength-MessageLength必须是一个整数。

如果该属性的价值小于2m–1,该对象假设缩短了RS代码。

如果您设置原始的杂质资源'汽车', 然后CodeFordLength必须在3 <范围内CodeFordLength≤216- 1。

如果您设置原始的杂质资源'财产', 然后CodeFordLength必须在3≤的范围内CodeFordLength≤2m- 1。m必须在3≤的范围内m≤16。

消息长度,k,指定为正整数。差异CodeFordLength-MessageLength必须是一个整数。

原始多项式的来源,指定为'财产'或者'汽车'

  • 当您将此属性设置为'汽车',对象使用原始的多项式m=Ceil((log2((CodeFordLength+1)),这是int2bit((primpoly((m),BPI)', 在哪里BPI是每个整数的位数。

  • 当您将此属性设置为'财产',您必须使用原始分析财产。

原始多项式,指定为二进制行矢量,代表原始的多项式GF(2)学位m,以权力下降顺序。多项式定义有限场GF(2m)对应于形成消息和代码字的整数。

依赖性

设置时对象使用此值原始的杂质资源'财产'

穿刺模式的来源,指定为'没有任何'或者'财产'。如果将此属性设置为'没有任何',然后该对象不适用于代码。如果将此属性设置为'财产',然后对象根据在财产。

用于刺穿编码数据的模式,指定为双精确的二进制列矢量,长度为CodeFordLength-MessageLength。默认值为[一个(2,1);零(2,1)]。穿刺模式向量中的零表示均衡符号的位置,这些符号被刺穿或排除在每个代码字中。

依赖性

当您设置该属性时,此属性将适用PuncturePatternsource财产为'财产'

用法

描述

例子

[[y,,,,开始,,,,结束,,,,有效] = rsenc(X,,,,Startin,,,,终结,,,,验证编码一个输入消息符号,X,并返回一个编码数据的符号,y。这开始结尾信号表示消息框架边界。该对象在每个消息框架的末尾返回关联的奇偶符符号。

输入参数

展开全部

输入消息数据,一次指定为无符号整数或fi()进行任何二进制缩放。每个符号的单词长度必须是ceil(日志2((CodeFordLength+1))

双倍的允许使用类型进行仿真,但不支持HDL代码生成。金宝app

数据类型:双倍的|UINT8|UINT16|UINT32|fi

输入数据框的启动,指定为逻辑标量。

数据类型:逻辑

输入数据框的结尾,指定为逻辑标量。

数据类型:逻辑

输入数据的有效性,指定为逻辑标量。

数据类型:逻辑

输出参数

展开全部

消息数据和奇偶校验符号一次返回一个符号,作为一个与输入消息相同的数据类型的整数,X

数据类型:双倍的|UINT8|UINT16|UINT32|fi

输出数据框架的启动,作为逻辑标量返回。

数据类型:逻辑

输出数据框的结尾,返回为逻辑标量。

数据类型:逻辑

输出数据的有效性,作为逻辑标量返回。

数据类型:逻辑

对象功能

要使用对象函数,请将系统对象指定为第一个输入参数。例如,释放名称的系统对象的系统资源OBJ,使用此语法:

释放(OBJ)

展开全部

系统对象算法
发布 释放资源并允许更改系统对象属性值和输入特征
重置 重置内部状态系统对象

例子

全部收缩

使用芦苇所罗门编码器和解码器系统对象编码和解码信号。此示例显示了如何将每个对象包含在HDL代码生成的函数中。

创建一个随机消息来编码。此消息小于代码长的长度,以显示对象如何支持缩短代码。金宝app用零填充消息,以适应解码器的延迟,包括Chien搜索。

MessageLength = 188;datain = [randi([0,255],1,MessageLength,'uint8')零(1,1024-messageLength)];

编写一个创建并调用的函数HDLRSENCODERSystem Object™具有RS(255,239)代码。该代码用于IEEE®802.16宽带无线访问标准中。b是原始多项式根部的起始力。您可以从此功能生成HDL。

笔记:此对象语法仅在R2016B或更高版本中运行。如果您使用的是较早的版本,请用等效替换对象的每个调用句法。例如,替换myObject(x)步骤(MyObject,X)

功能[dataOut,stint,endout,valifout] = hdlrsenc80216(datain,startin,endin,validin)%HDLRSENC80216%使用COMM.HDLRSENCODER SYSTEM对象(TM)处理一个数据样本%数据是UINT8标量,代表8位二进制数据。%startin,endin和varyin是逻辑标量值。%您可以从此功能生成HDL代码。执着的RSENC80216;如果ISEMPTY(RSENC80216)RSENC80216 = COMM.HDLRSENCODER(255,239,'bsource',,,,'财产',,,,'b',0)结尾[dataOut,startOut,endout,validout] = rsenc80216(datain,startin,endin,vilitin);结尾

调用该功能以编码消息。

为了II = 1:1024 Messagestart =(II == 1);messageEnd =(ii == messageLength);aliverin =(ii <= messageLength);[ENCOUT(ii),Startout(ii),endout(ii),有效(ii)] =...HDLRSENC80216(DATAIN(II),Messagestart,MessageEnd,varyin);结尾
rsenc80216 = comm.hdlrsencoder具有属性:codeWordLength:255 MessageLength:239 Primitive -PolyNomialSource:'auto'duncturePatternsource:'none'bsource:'none'bsource:'属性:'属性'b:0 b:0 b:0 b:0

在编码消息中的随机位置注入错误。芦苇溶解可以校正(n-k)/2中的错误n符号。因此,在此示例中,误差校正功能为(255 - 239)/2 = 8符号。

numErrors = 8;loc = randperm(MessageLength,numErrors);%excout通过有效的限定,使用偏移来注入错误vi = find(valifout == true,1);为了i = 1:numErrors idx = loc(i)+vi;符号= encout(idx);encout(idx)= randi([0 255],,'uint8');fprintf('符号(%d):为0x%x,现在0x%x \ n',loc(i),符号,encout(idx))结尾
符号(147):为0x1f,现在0x82符号(16):WAS 0x6b,现在0x82符号(173):WAS 0x3,现在0xD1符号(144):WAS 0x66,现在0xCB符号(90):ways 0x13,现在0xa444符号(80):WAS 0x5a,现在0x60符号(82):WAS 0x95,现在0xCF符号(56):WAS 0xf5,现在0x88

编写一个创建并调用的函数hdlrsdecoder系统对象™。该对象必须具有与编码器相同的代码和多项式。您可以从此功能生成HDL。

功能[dataOut,stint,endout,validout,err] = hdlrsdec80216(datain,startin,endin,endin,validin)%HDLRSDEC80216%使用COMM.HDLRSDECODER系统对象(TM)处理一个数据样本%数据是UINT8标量,代表8位二进制数据。%startin,endin和varyin是逻辑标量值。%您可以从此功能生成HDL代码。执着的RSDEC80216;如果ISEMPTY(RSDEC80216)RSDEC80216 = COMM.HDLRSDECODER(255,239,'bsource',,,,'财产',,,,'b',0)结尾[dataOut,stint,endout,validout,err] = rsdec80216(datain,startin,endin,varyin);结尾

调用该函数以检测编码消息中的错误。

为了ii = 1:1024 [decout(ii),desstartout(ii),cendent(ii),decvalidout(ii),decerrout(ii)] =...HDLRSDEC80216(ENCOUT(II),StartOut(ii),endout(ii),有效out(ii));结尾
rsdec80216 = comm.hdlrsdecoder具有属性:codeWordLength:255 MessageLength:239 Primitive -PolyNomialSource:'auto'bsource:'auto'bsource:'属性'b:0 numErrorSoutputport:false:false:false

选择有效的解码器输出,然后将解码的符号与原始消息进行比较。

decout = decout(decvalidout == 1);OriginalMessage =数据(1:MessageLength);如果所有(ointractMessage == decout)fprintf('所有%d消息符号都是正确解码的。\ n',MessageLength)别的为了JJ = 1:MessageLength如果datain(jj)〜= decout(jj)fprintf('解码符号的错误(%d)。原始0x%x,解码0x%x。\ n',JJ,Datain(JJ),撤销(JJ))结尾结尾结尾
所有188个消息符号均正确解码。

扩展功能

在R2012B中引入