主要内容

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

comm.HDLRSDecoder

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

説明

HDLに最適化されたHDLRSDecoder系统对象™は,メッセージベクトルをリード・ソロモン(RS)符号語ベクトルから復元します。適切に復号化するには,このオブジェクトの符号と多項式のプロパティ値と,対応する符号化器のコードと多項式のプロパティ値が一致していなければなりません。

メッセ,ジベクトルをリ,ド·ソロモン符号語ベクトルから復元するには,以下を行います。

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

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

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

トラブルシュ,ティング

  • 各入力フレ,ムには,(n - k) * 2より多く,かNとまったく同じかそれより少ないシンボル数が含まれていなければなりません。オブジェクトは,startInendInの間の有効デ,タサンプルの数がN未満の場合に短縮符号を推測します。短縮符号でチェンサ,チを実行するためにはさらにNサ@ @クルを必要とします。入力メッセ,ジがNシンボル未満の場合は,次のフレ,ムを開始する前に少なくともN型の非アクティブサ@ @クルの保護間隔を取ります。ここで大小はメッセ,ジ長です。

  • 復号化器は,メッセ,ジを一度に4まで処理できます。最初のメッセージを完全に復号化する前に5番目のメッセージの開始を受け取った場合,オブジェクトは最初のメッセージからデータサンプルを除外します。この問題を回避するには,入力メッセ,ジ間の非アクティブサ,クルの数を増やします。

  • 生成多項式は明示的には指定されません。ただし,根の開始指数の符号語長,メッセ,ジ長およびbの値によって定義されます。生成多項式からbの値を求めるために,関数genpoly2bを使用します。

作成

説明

RSDec= comm.HDLRSDecoderは,リード・ソロモン復号化を実行するHDL最適化RS復号化器の系统对象,RSDecを作成します。

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

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

RSDec= comm.HDLRSDecoder (N, K,名称,值)は,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)は偶数の整数でなければなりません。

このプロパティが真正的に設定されている場合,オブジェクトは訂正された誤りの数を返します。errOut真正的の場合,訂正可能な誤りの数より多くの誤りがあったことになるので,訂正された誤りの数は有効ではありません。

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

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

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

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

依存関係

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

使用法

説明

YstartOutendOutvalidOuterrOut= RSDec(XstartInendInvalidInは1の符号化されたメッセジシンボルXを復号化して,復号化されたシンボルYを返します。开始信号と结束信号はメッセ,ジフレ,ム境界を示します。errOut1真正的)の場合,オブジェクトは入力フレ,ムに修正不可能な誤りがあることを検出しています。

YstartOutendOutvalidOuterrOutnumErrors= RSDec(XstartInendInvalidInは入力デ,タを復号化し,さらに検出および修正された誤り数を返します。この構文を使用するには,NumErrorsOutputPortプロパティを真正的に設定します。errOut1真正的)の場合,オブジェクトは出力フレ,ムに訂正不可能な誤りがあることを検出しており,numErrorsは無効となります。

入力引数

すべて展開する

入力メッセ,ジデ,タとパリティシンボル。一度に1のシンボルで,符号なし整数または2進小数点スケリングのfi ()で指定します。

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

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

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

デ,タ型:逻辑

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

デ,タ型:逻辑

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

デ,タ型:逻辑

出力引数

すべて展開する

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

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

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

デ,タ型:逻辑

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

デ,タ型:逻辑

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

デ,タ型:逻辑

出力デ,タフレ,ムの訂正不可能な誤り。逻辑スカラとして返されます。メッセージ フレームに訂正不可能な誤りが含まれる場合は、信号が 1 (真正的)になります。この場合,出力デ,タシンボルが破損します。この値は,endOutが1 (真正的)の場合に有効です。

デ,タ型:逻辑

検出および訂正された誤り数。整数として返されます。この値は,endOutが1 (真正的)およびerrOutが0 ()の場合に有効です。

デ,タ型:uint8

オブジェクト関数

オブジェクト関数を使用するには,系统对象を最初の入力引数として指定します。たとえば,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で導入