Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

OVSF Code Generator

一連の直交符号から直交変数拡散係数 (OVSF) コードを生成する

ライブラリ

Spreading Codes

説明

OVSF Code Generator ブロックは、一連の直交符号から OVSF コードを生成します。OVSF コードは、第 3 世代通信システムで最初に導入されました。OVSF コードは、主に通信システムの異なるチャネル間の直交性を維持するために使用されます。

OVSF コードは、N 行 N 列の行列 CN の行として定義されます。この行列は次のように再帰的に定義されます。まず、C1 = [1] を定義します。次に、CN が定義され、CN(k) が CN の k 番目の行を示すと仮定します。C2N を次のように定義します。

C2N=[CN(0)CN(0)CN(0)CN(0)CN(1)CN(1)CN(1)CN(1)......CN(N1)CN(N1)CN(N1)CN(N1)]

CN は 2 のべき乗である N に対してのみ定義されることに注意してください。したがって、数学的帰納法により、CN の行が直交していることがわかります。

OVSF コードは、また、次の図に示すようにツリー構造によって再帰的に定義できます。

ツリーの根を 0 の深さとして、[C] がツリーの深さ r で符号長 2r である場合、C から伸びる 2 つの枝はシーケンス [C C] および [C -C] というラベルが付けられ、これらは 2r+1 の長さになります。ツリーの深さ r にあるコードは、行列 CN の行であり、ここで N = 2r になります。

2 つの OVSF コードは、どちらのコードももう一方のコードの根へのパスにない場合に限り直交しています。同一のセル内の異なるユーザーに割り当てられたコードは直交していなければならないので、これが指定のセルの利用可能なコード数を制限します。たとえば、ツリーの中のコード C41 があるユーザーに割り当てられた場合、コード C10、C20、C82、C83 などを同一のセル内の他のユーザーに割り当てることはできません。

ブロック パラメーター

OVSF Code Generator ブロック出力のコードは、ブロックのダイアログにある 2 つのパラメーターで指定します。1 つは、[Spreading factor] でコードの長さを指定し、もう 1 つは [Code index] で、これは範囲 [0, 1, ... , N - 1] 内の整数 (N は拡散係数) でなければなりません。コードが前述のツリーで深さ r で表示される場合、[Spreading factor] は 2r になります。[Code index] は 0 から N - 1 までカウントして、コードが表示される深さ r でツリーの列がどの程度まで下がるかを示します。前述の図の CN, k で、N[Spreading factor] であり、k[Code index] です。

コードは、[Spreading factor] および [Code index] から次のように復元できます。[Code index] を対応する 2 進数に変換してから、必要に応じて左に 0 を加えると、結果の 2 値配列 x1 x2 ... xr は長さ r になり、ここで、r[Spreading factor] の底 2 の対数です。この配列は根からコードまでのパスを記述します。パスは xi = 0 の場合は深さ i のコードから上の枝を通り、xi = 1 の場合は下の枝を通ります。

コードを再構築するには、コードのシーケンス Ci を次のように再帰的に定義します。C0 を根 [1] とします。Ci が定義済みであると仮定すると、i < r の場合、Ci+1 を次のように定義します。

Ci+1={CiCiif xi=0Ci(Ci)if xi=1

コード CN には指定済みの [Spreading factor][Code index] があります。

たとえば、[Spreading factor] 16[Code index] 6 のコードを検出するには、次の操作を行います。

  1. 6 を 2 進数 110 に変換します。

  2. 1 つの 0 を右に追加して 0110 を得ます。これは長さ 4 = log2 16 になります。

  3. 次の表に従い、シーケンス Ci を構築します。

    ixiCi
    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 には [Spreading factor] 16[Code index] 6 があります。

パラメーター

Spreading factor

コードの長さを指定する、2 のべき乗である正の整数。

Code index

[0, 1, ..., N - 1] の範囲の整数でコードを指定します。ここで N は [Spreading factor] です。

Sample time

出力サンプル時間。-1 または出力信号の各サンプル間の時間を表す正のスカラーとして指定します。[Sample time]-1 に設定すると、サンプル時間は下流から継承されます。[Sample time][Samples per frame] の関係の詳細については、サンプル タイミングを参照してください。

Samples per frame

フレームあたりのサンプル。出力データの 1 つのチャネルでフレームあたりのサンプル数を示す正の整数として指定します。[Sample time][Samples per frame] の関係の詳細については、サンプル タイミングを参照してください。

Output data type

ブロックの出力型は int8 または double として指定できます。既定の設定では、ブロックはこれを double に設定します。

シミュレーション実行方法

シミュレーション モードを選択します。

コード生成

モデルの最初の実行時に、コードをシミュレートして生成します。ブロックの構造が変更されていない場合は、以降のモデルの実行でコードは再生成されません。

シミュレーション モードが [コード生成] の場合、ブロックに対応する System object では最大 9 個の入力を受け入れます。

インタープリター型実行

コードを生成せずにモデルをシミュレートします。このオプションを使用すると起動時間が速くなりますが、その後のシミュレーションのパフォーマンスが低下する可能性があります。

詳細

すべて展開する

互換性の考慮事項

すべて展開する

R2020a での動作変更

拡張機能

R2006a より前に導入