主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

comm.HDLRSEncoder

リ,ド,ソロモン符号化器を使用したメッセ,ジの符号化

説明

HDL最適化HDLRSEncoder系统对象™は,指定したメッセージ長と符号語長でリード・ソロモン(RS)符号を作成します。

リ,ド·ソロモン符号を使用したメッセ,ジを符号化するには,以下を行います。

  1. comm.HDLRSEncoderオブジェクトを作成し,そのプロパティを設定します。

  2. 関数と同様に,引数を指定してオブジェクトを呼び出します。

系统对象の機能の詳細にいては,系统对象とはを参照してください。

作成

説明

RSEnc= comm.HDLRSEncoderは,高密度脂蛋白に対してストリーミング方式でリード・ソロモン符号化を実行する,高密度脂蛋白最適化ブロック符号化器系统对象,RSEncを作成します。

RSEnc= comm.HDLRSEncoder (名称,值は,1以上の名前と値のペアを使用してプロパティを設定します。各プロパティ名を一重引用符で囲みます。次に例を示します。

comm.HDLRSEncoder(‘BSource’,‘属性’,' B ', 2)
は原始多項式の根の2の開始累乗を設定します。

RSEnc= comm.HDLRSEncoder (NK名称,值は,CodewordLengthプロパティをNに,MessageLengthプロパティをKに設定し,指定の他のプロパティ名は指定の値に設定しています。

プロパティ

すべて展開する

特に指定がない限り,プロパティは“調整不可能”です。まり,オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ,ロックを解除するには関数释放を使用します。

プロパティが"調整可能"の場合,その値をいでも変更できます。

プロパティ値の変更の詳細にいては,系统对象を使用したMATLABでのシステム設計を参照してください。

原始多項式の根の開始累乗。正の整数で指定します。

依存関係

BSource“属性”に設定する場合,オブジェクトはこの値を使用します。

原始多項式の根の開始累乗のソ,ス。“属性”または“汽车”のいずれかで指定します。“汽车”を設定すると,オブジェクトはB = 1を使用します。

Rs符号語のシンボル数n。正の整数で指定します。この値は2-1に丸められます。米は,原始多項式の次数です。PrimitivePolynomialSourceおよびPrimitivePolynomialプロパティによって指定されます。差 (CodewordLength- - - - - -MessageLength)は偶数の整数でなければなりません。

このプロパティの値が2-1未満の場合,オブジェクトは短縮されたrs符号とみなされます。

PrimitivePolynomialSource“汽车”に設定した場合,CodewordLengthは3 <CodewordLength≤216-1の範囲内でなければなりません。

PrimitivePolynomialSource“属性”に設定した場合,CodewordLengthは,3≤CodewordLength≤2- 1の間の値でなければなりません。米は 3 ≤ M ≤ 16 の間の値でなければなりません。

メッセ,ジの長さ正の整数で指定します。差 (CodewordLength- - - - - -MessageLength)は偶数の整数でなければなりません。

原始多項式のソ,ス。“属性”または“汽车”のいずれかで指定します。

  • このプロパティを“汽车”に設定すると,オブジェクトは次数m =装天花板(定点设计师)log2CodewordLength+1))の原始多項式を使用します。これはfliplrde2biprimpoly(m))の結果です。

  • このプロパティを“属性”に設定した場合は,PrimitivePolynomialプロパティを使用して多項式を指定しなければなりません。

原始多項式。次数mの女朋友(2)上の原始多項式を降べきの順で表すバ△△ナリ行ベクトルで指定します。多項式は,メッセ,ジと符号語を形成する整数に対応して,有限体女朋友(2)を定義します。

依存関係

PrimitivePolynomialSource“属性”に設定する場合,オブジェクトはこの値を使用します。

パンクチャパタ,ンのソ,ス。“没有”または“属性”のいずれかで指定します。このプロパティを“没有”に設定すると,オブジェクトはコ,ドにパンクチャを適用しません。このプロパティを“属性”に設定すると,オブジェクトはPuncturePatternプロパティで指定したパンクチャパタ,ンベクトルに基づいてコ,ドをパンクチャします。

符号化されたデ,タをパンクチャするために使用するパタ,ン。長さ(CodewordLength- - - - - -MessageLength)の倍精度のバleiナリ列ベクトルで指定します。既定の設定は[(2, 1)的;0 (2, 1))です。パンクチャパターンベクトルのゼロは,パンクチャされる,つまり各符号語から除外されるパリティシンボルの位置を示します。

依存関係

このプロパティは,PuncturePatternSourceプロパティを“属性”に設定した場合に適用されます。

使用法

説明

YstartOutendOutvalidOut= RSEnc(XstartInendInvalidInは,1の入力メッセXを符号化し,符号化されたデ,タの1のシンボルYを返します。开始信号と结束信号はメッセ,ジフレ,ム境界を示します。オブジェクトは各メッセージ フレームの最後で関連するパリティ シンボルを返します。

入力引数

すべて展開する

入力メッセ,ジデ,タ。一度に1のシンボルで,符号なし整数または2進小数点スケリングのfi ()で指定します。各シンボルの語長は,装天花板(日志2CodewordLength+ 1)でなければなりません。

型は,シミュレ,ションでは許可されますが,hdlコ,ド生成ではサポ,トされません。

デ,タ型:|uint8|uint16|uint32|fi

入力デ,タフレ,ムの先頭。逻辑スカラで指定します。

デ,タ型:逻辑

入力デ,タフレ,ムの末尾。逻辑スカラで指定します。

デ,タ型:逻辑

入力デ,タの有効性。逻辑スカラーで指定します。

デ,タ型:逻辑

出力引数

すべて展開する

メッセ,ジデ,タとパリティシンボル。入力メッセ,ジXと同じデタ型をも整数として一度に1のシンボルを返します。

デ,タ型:|uint8|uint16|uint32|fi

出力デ,タフレ,ムの先頭。逻辑スカラとして返されます。

デ,タ型:逻辑

出力デ,タフレ,ムの末尾。逻辑スカラとして返されます。

デ,タ型:逻辑

出力デ,タの有効性。逻辑スカラーとして返されます。

デ,タ型:逻辑

オブジェクト関数

オブジェクト関数を使用するには,系统对象を最初の入力引数として指定します。たとえば,objという名前の系统对象のシステムリソースを解放するには,次の構文を使用します。

发行版(obj)

すべて展開する

一步 系统对象のアルゴリズムの実行
释放 リソ,スを解放し,系统对象のプロパティ値と入力特性の変更を可能にします。
重置 系统对象の内部状態のリセット

すべて折りたたむ

リード・ソロモン符号化器と復号化器系统对象を使用して信号を符号化および復号化します。この例では,hdlコ,ド生成の関数に各オブジェクトを含める方法を説明します。

符号化するランダムなメッセ,ジを作成します。オブジェクトの短縮符号をサポートする方法を表示するために、このメッセージは符号語長より短くなっています。チェン サーチを含む復号化器のレイテンシに対応するように、メッセージにゼロを付加します。

messageLength = 188;dataIn = [randi([0,255],1,messageLength,“uint8”) 0 (1024 - messagelength)];

符号がrs(255,239)のHDLRSEncoder系统对象™を作成して呼び出す関数を記述します。この符号はIEEE®802.16宽带无线接入規格で使用されます。Bは原始多項式の根の開始累乗です。この関数からHDLを生成できます。

メモ:このオブジェクトの構文はR2016b以降でのみ動作します。それ以前のリリ,スを使用している場合,それぞれのオブジェクトの呼び出しを同等の一步構文で置き換えてください。たとえば,myObject (x)步骤(myObject x)で置き換えます。

函数[dataOut,startOut,endOut,validOut] = HDLRSEnc80216(dataIn, starttin,endIn,validIn)% HDLRSEnc80216使用com . hdlrsencoder系统对象(TM)处理一个数据样本% dataIn为uint8标量,代表8位二进制数据。% startIn、endIn和validIn为逻辑标量值。您可以从这个函数生成HDL代码。持续的rsEnc80216;如果isempty(rsEnc80216) rsEnc80216 = com . hdlrsencoder (255,239,“BSource”“属性”“B”, 0)结束[dataOut,startOut,endOut,validOut] = rsEnc80216(dataIn, starttin,endIn,validIn);结束

関数を呼び出して,メッセ,ジを符号化します。

messagstart = (ii==1);messageEnd = (ii==messageLength);validIn = (ii<=messageLength);[encOut (ii), startOut (ii), endOut (ii), validOut (ii)] =...HDLRSEnc80216 (dataIn (ii)、messageStart messageEnd, validIn);结束
rsEnc80216 = com . hdlrsencoder与属性:CodewordLength: 255 MessageLength: 239 primitive多项式来源:'自动'标点符号来源:'无' BSource: '属性' B: 0

符号化されたメッセ,ジのランダムな位置に誤りを投入します。リ,ド·ソロモンは,各Nシンボルの(N-K)/2までの誤りを訂正できます。したがって,この例の誤り訂正能力は(255 - 239)/2=8シンボルです。

numErrors = 8;loc = randperm(messageLength,numErrors);% encOut由validOut限定,对于注入错误使用偏移量vi = find(validOut==true,1);i = 1:numErrors idx = loc(i)+vi;symbol = encOut(idx);encOut(idx) = randi([0 255],“uint8”);流('符号(%d):以前是0x%x,现在是0x%x\n'loc (i),象征,encOut (idx))结束
符号(147):以前是0x1f,现在是0x82符号(16):以前是0x6b,现在是0x82符号(173):以前是0x3,现在是0xd1符号(144):以前是0x66,现在是0xcb符号(90):以前是0x13,现在是0xa4符号(80):以前是0x5a,现在是0x60符号(82):以前是0x95,现在是0xcf符号(56):以前是0xf5,现在是0x88

HDLRSDecoder系统对象™を作成および呼び出す関数を記述します。このオブジェクトの符号と多項式は符号化器と同じでなければなりません。この関数からHDLを生成できます。

函数[dataOut,startOut,endOut,validOut,err] = HDLRSDec80216(dataIn, starttin,endIn,validIn)% HDLRSDec80216使用com . hdlrsdecoder系统对象(TM)处理一个数据样本% dataIn为uint8标量,代表8位二进制数据。% startIn、endIn和validIn为逻辑标量值。您可以从这个函数生成HDL代码。持续的rsDec80216;如果isempty(rsDec80216) rsDec80216 = com . hdlrsdecode (255,239,“BSource”“属性”“B”, 0)结束[dataOut,startOut,endOut,validOut,err] = rsDec80216(dataIn, starttin,endIn,validIn);结束

関数を呼び出して,符号化されたメッセ,ジ内の誤りを検出します。

ii = 1:24 24 [decOut(ii),decStartOut(ii),decEndOut(ii),decValidOut(ii),decErrOut(ii)] =...HDLRSDec80216 (encOut (ii), startOut (ii), endOut (ii), validOut (ii));结束
rsDec80216 = com . hdlrsdecoder with properties: CodewordLength: 255 MessageLength: 239 primitive多项式source: 'Auto' BSource: 'Property' B: 0 NumErrorsOutputPort: false

有効な復号化器出力を選択して,復号化されたシンボルを元のメッセ,ジと比較します。

decOut = decOut(decValidOut==1);originalMessage = dataIn(1:messageLength);如果所有(originalMessage = = decOut)流('所有%d消息符号已正确解码。\n'messageLength)其他的jj = 1:messageLength如果dataIn (jj) ~ = decOut (jj)流('解码的符号错误(%d)。原0x%x,译码0x%x.\n'jj, dataIn (jj) decOut (jj))结束结束结束
所有188个消息符号都被正确解码。

拡張機能

参考

オブジェクト

ブロック

R2012bで導入