OVSF Code Generator
OVSF 符号の生成

ライブラリ:
Communications Toolbox /
Comm Sources /
Sequence Generators
説明
OVSF Code Generator ブロックは、直交変数拡散係数 (OVSF) 行列から符号を生成します。OVSF 符号を使用して、スペクトル拡散通信システムの異なるチャネル間の直交性を維持します。詳細については、アルゴリズムを参照してください。
例
拡散係数 32 の OVSF 符号を 10 サンプル生成します。
cm_generate_ovsf_code
モデルは、[符号長] を 32 に設定し、[符号インデックス] を 12 に設定し、[フレームあたりのサンプル数] を 10 に設定します。その他のパラメーターは既定の設定を使用します。
モデルを実行し、生成された OVSF 符号を表示します。
ans = 1 1 -1 -1 -1 -1 1 1 1 1
端子
出力
出力データ。一連の直交符号から生成された OVSF 符号から成るバイナリ値の列ベクトルとして返されます。
データ型: double
| int8
パラメーター
ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
生成符号の長さ。2 の正の整数乗として指定します。符号長の値は符号の拡散係数です。詳細については、スペクトル拡散を参照してください。
拡散係数は、OVSF 符号行列から選択された符号の長さです。OVSF 符号は N 行 N 列の行列 CN の行として定義されます。[符号インデックス] パラメーターは、行列 CN の行を対象符号として指定します。詳細については、直交変数拡散係数符号を参照してください。
OVSF 符号行列の行インデックス。範囲 [0, (N – 1)] の整数として指定します。ここで、N は、[符号長] パラメーターの値で指定された拡散係数です。OVSF 符号は N 行 N 列の行列 CN の行として定義されます。このプロパティの値は、行列 CN の行を対象符号として指定します。詳細については、OVSF 符号の復元および再構築を参照してください。
正のスカラーは、出力信号の各サンプル間の時間を秒単位で指定します。[サンプル時間] を -1
に設定すると、出力信号は下流からサンプル時間を継承します。[サンプル時間] パラメーターと [フレームあたりのサンプル数] パラメーターの関係の詳細については、サンプル タイミングを参照してください。
OVSF 符号のチップ出力の数。正の整数として指定します。このブロックは、実行されるたびに、[符号長] プロパティと [符号インデックス] プロパティの値で指定された OVSF 符号の最初の [フレームあたりのサンプル数] チップを出力します。詳細については、スペクトル拡散を参照してください。
[サンプル時間] と [フレームあたりのサンプル数] の関係の詳細については、サンプル タイミングを参照してください。
出力データ型。double
または int8
として指定します。
実行するシミュレーションのタイプ。[コード生成]
または [インタープリター型実行]
として指定します。
コード生成
— 生成された C コードを使用してモデルをシミュレートします。シミュレーションの初回実行時、Simulink は対象ブロックの C コードを生成します。このモデルは、モデルが変更されない限り以降のシミュレーションで C コードを再利用します。このオプションを使用すると、シミュレーションの起動時間は長くなりますが、以降のシミュレーションの速度は[インタープリター型実行]
オプションを使用した場合よりも速くなります。インタープリター型実行
— MATLAB® インタープリターを使用してモデルをシミュレートします。このオプションを使用すると、起動時間が短縮されますが、以降のシミュレーションの速度は[コード生成]
オプションを使用した場合よりも遅くなります。このモードで、ブロックのソース コードをデバッグできます。
詳細については、インタープリター型実行とコード生成 (Simulink)を参照してください。
ブロックの特性
データ型 |
|
多次元信号 |
|
可変サイズの信号 |
|
詳細
出力更新間の時間は、[フレームあたりのサンプル数] と [サンプル時間] パラメーター値の積に等しくなります。たとえば、[サンプル時間] と [フレームあたりのサンプル数] のそれぞれが 1
に等しい場合、ブロックは毎秒 1 サンプルを出力します。[フレームあたりのサンプル数] を 10 に増やすと、ブロックは 10 秒ごとに 10 行 1 列のベクトルを出力します。このタイミングにより、同等の出力レートが [フレームあたりのサンプル数] パラメーターに依存しないことが確実になります。
アルゴリズム
[1]で説明されているように、OVSF 符号は、3G 通信システムで最初に導入され、主にスペクトル拡散通信システムの異なるチャネル間の直交性を維持するために使用されています。
拡散係数が N、OVSF 符号行列が N 行 N 列の行列 CN の OVSF 符号は、N 行 N 列の行列 CN の各行になります。これは再帰的に定義されます。まず、C1 = [1] を定義します。次に、CN が定義されていると仮定し、CN(k) で CN の k 番目の行を示します。C2N を次のように定義します。
CN は、2 の非負のべき乗である N についてのみ定義されます。したがって、数学的帰納法により、CN の行が直交していることがわかります。
OVSF 符号は、また、ツリー構造によって再帰的に定義できます。
ツリーの根を 0 の深さとして、[C] がツリーの深さ r で符号長 2r である場合、C から伸びる 2 つの枝はシーケンス [C C] および [C –C] というラベルが付けられ、これらは 2r+1 の長さになります。N = 2r のとき、行列 CN の行が、ツリーの深さ r の符号になります。
2 つの OVSF 符号は、どちらの符号ももう一方の符号から根へのパス上にない場合に限り直交しています。同一のセル内の異なるユーザーに割り当てられた符号は直交していなければなりません。この要件に基づいて、指定のセル内で利用可能な符号の数が制限されます。たとえば、ツリーの中の符号 C41 があるユーザーに割り当てられた場合、符号 C10、C20、C82、C83 などを同一のセル内の他のユーザーに割り当てることはできません。
出力する OVSF 符号を選択するには、拡散係数および符号インデックスを指定します。符号インデックスは、ツリーにおいて符号が出現する列の深さ r を指定します。ツリー構造ダイアグラムの CN, k の場合、N が拡散係数で、k が符号インデックスです。符号インデックスは、範囲 [0, N – 1] の整数でなければなりません。ツリー構造において、符号が深さ r で出現する場合、拡散係数は 2r となります。
符号の復元は、拡散係数および符号インデックスに基づいて次のように行います。
符号インデックスを、対応する 2 進数に変換します。
結果として得られるバイナリ シーケンス x1 x2 ... xr の長さが r となるように、必要に応じて左側に 0 を追加します。ここで、r は 2 を底とする拡散係数の対数です。このバイナリ シーケンスは、根から符号までのパスを表します。
このパスは、xi = 0 の場合は深さ i にある符号から上の枝を通り、xi = 1 の場合は下の枝を通ります。
符号を再構築するには、符号のシーケンス Ci を次のように再帰的に定義します。
C0 を根 [1] とします。
Ci が定義済みであると仮定したとき、i < r である i について Ci+1 を次のように定義します。
符号 CN は、指定した拡散係数と符号インデックスをもちます。
たとえば、拡散係数が 16
で符号インデックスが 6
である符号を調べるには、次の操作を行います。
6 を 2 進数 110 に変換します。
1 つの 0 を左に追加して 0110 を得ます。これは長さ 4 = log2(16) になります。
次の表に従い、シーケンス Ci を構築します。
i xi Ci 0 C0 = [1]
1 0 C1 = C0 C0 = [1] [1]
2 1 C2 = C1 –C1 = [1 1] [–1 –1]
3 1 C3 = C2 -C2 = [1 1 –1 –1] [–1 –1 1 1]
4 0 C4 = C3 C3 = [1 1 –1 –1 –1 –1 1 1] [1 1 –1 –1 –1 –1 1 1]
符号 C4 は、拡散係数が 16
で符号インデックスが 6
です。
スペクトル拡散では、一般に、各データ メッセージのサンプルにチップのコード セットが乗算されます。データ メッセージのサンプルとの混同を防ぐため、"チップ" という用語は、デジタル通信においてデータを広いスペクトルに拡散するために使用される符号のサンプルまたはビットを指すものとします。符号の長さが拡散係数です。
拡散係数 SF = Rchip/Rdata について次のようになります。
Rchip はチップ レートです。符号のチップ レートは、1 秒あたりで送信または受信されるチップの数です。拡散係数は 2 の正のべき乗で、かつ 1 より大きくなければなりません。そのため、各データ サンプルは複数のチップで表されます。
Rdata はメッセージ データのサンプル レートです。
参照
[1] Kasapović, S. and N. Sarajlić. "OVSF code assignment in UMTS networks." 2010 20th International Crimean Conference "Microwave & Telecommunication Technology", 429–32. Sevastopol: IEEE®, 2010. https://doi.org/10.1109/CRMICO.2010.5632706.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2006a より前に導入R2020a 以降、Simulink では R2015b より前で利用可能だったバージョンの OVSF Code Generator ブロックは使用できなくなりました。
既存のモデルはソース ブロックは連続する時間サンプルのフレームをフレーム属性を使用せずに出力するで通知されたバージョンの OVSF Code Generator ブロックを読み込むように自動的に更新されます。ブロック転送の詳細については、転送テーブルを使用したライブラリ ブロックの互換性の維持 (Simulink)を参照してください。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)