このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Gold Sequence Generator
シーケンスのセットからの Gold シーケンスの生成

ライブラリ:
Communications Toolbox /
Comm Sources /
Sequence Generators
説明
Gold Sequence Generator ブロックは、シーケンスの有界集合から小さい周期的な相互相関特性をもつバイナリ シーケンスを生成します。詳細については、Gold シーケンスを参照してください。
このブロックは、シミュレーション中に長さが変わるシーケンスを出力することができます。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。
これらのアイコンには、利用可能なすべての端子を使用したブロックが表示されています。
例
2 つの PN Sequence Generator
ブロックまたは 1 つの Gold Sequence Generator
ブロックを使用して、同じ Gold コード シーケンスを生成します。
2 つの PN Sequence Generator
ブロックと 1 つの Gold code sequence ブロックは、推奨多項式 および
から結果として得られる Gold シーケンスを出力するように設定されます。
PN Sequence Generator
ブロックの場合、XOR
ブロックは出力を結合し、結果として得られるシーケンスをワークスペース変数 out.pn_seq_xor
に保存します。Gold Sequence Generator
ブロックは出力シーケンスをワークスペース変数 out.gold_seq
に保存します。
モデルを実行し、出力を比較します。
The XORd PN sequence output is: pn_seq_xor = 0 0 0 0 0 0 1 0 1 1 1 The Gold sequence output is: gold_seq = 0 0 0 0 0 0 1 0 1 1 1
さらに調べるには、Gold Sequence Generator
ブロック内の Sequence index
パラメーターを変更して、2 番目の PN Sequence Generator
ブロックに遅延を追加します。
この例は、リセット関連のパラメーター設定に対する Gold シーケンス発生器の出力動作を示しています。
さまざまなリセット条件から結果として得られる Gold シーケンスを出力するように 3 つの Gold code sequence ブロックが設定されます。
リセットがない場合、
Samples per frame
パラメーターが 1 に設定され、出力はout.y1
に保存されます。
スカラー入力
Rst
信号を使用してリセットする場合、Samples per frame
パラメーターはSignal From Workspace
ブロックとGold Sequence Generator
ブロックに対して 1 に設定されます。出力はout.y2
に保存されます。
ベクトル入力
Rst
信号を使用してリセットする場合、Samples per frame
パラメーターはSignal From Workspace
ブロックとGold Sequence Generator
ブロックに対して 8 に設定されます。出力はout.y3
に保存されます。
スカラーおよびベクトルのリセット信号値は [0 0 0 1 0 0 0 0] です。Rst
入力端子を有効にすると、Gold Sequence Generator
ブロックは 4 番目のサンプルで出力シーケンスをリセットします。モデルを実行し、出力を比較します。
The sequence output when no reset occurs is: 0 0 1 1 1 0 1 0 The sequence output when using a scalar reset signal is: 0 0 1 0 0 1 1 1 The sequence output when using a vector reset signal is: 0 0 1 0 0 1 1 1
out.y2
と out.y3
に出力される値は同じサンプルでリセットされるため同じであり、シミュレーション終了時間の設定により出力の長さも同じです。
isequal(out.y2,out.y3) returns: 1
Gold Sequence generator ブロックは Samples per frame
設定の倍数を出力するように常に丸められます。シミュレーション終了時間を 10 に変更すると、出力シーケンスの長さは同じではなくなります。
The sequence output when no reset occurs is: 0 0 1 1 1 0 1 0 0 0 1 The sequence output when using a scalar reset signal is: 0 0 1 0 0 1 1 1 0 1 0 The sequence output when using a vector reset signal is: 0 0 1 0 0 1 1 1 0 1 0 0 0 1 1 1
このモデルでは、[1] で示しているように、Gold Sequence Generatorブロックを設定して粗捕捉 (C/A) コードを生成する方法について説明し、同じ構成の離散ブロック モデル表現を使用して生成コードの検証を行います。GPS は C/A コードを使用して、送信信号の取得と追跡を簡素化します。
モデルの検証
このモデルには、[1] で示しているような離散ブロック モデルの C/A コードが含まれ、同じコードを生成するようにGold Sequence Generatorブロックを構成します。
GPS の C/A コードを生成するには、Gold Sequence Generator ブロックの構成時に以下の詳細な設定を検討する必要があります。
原始多項式 (
g1
およびg2
) とコード位相 (m2
)。[1] の離散ブロック モデルと降順多項式に一致するモデルのPreLoadFcn
コールバックで指定されています。g1
、g2
、m2
は、Gold Sequence Generator ブロックの [Preferred polynomial (1)]、[Preferred polynomial (2)]、および [Sequence index] パラメーターを設定するために使用されます。[1] では、多項式は降順として解釈されるため、Gold Sequence Generator ブロックは関数
fliplr
を使用してg1
、g2
、m2
バイナリ ベクトルを反転し、離散ブロックのモデル コンフィギュレーションに一致させます。[Sequence index] パラメーターは離散ブロック モデルの遅延した 2 番目のコードに対応します。離散ブロックの実装では、このマスク シフトを達成するためにシフト レジスタの XOR 計算が行われます。初期化の間、関数
mask2shift
は指定されたマスクを Gold Sequence generator ブロックによって使用されるスカラー遅延に変換します。フィードバック レジスタの構成は、シミュレーションが持続している間は変更しないでください。
結果の比較
モデルの実行後、離散ブロック モデルと Gold Sequence Generator ブロックを使用して生成された GPS C/A コードを比較するためにisequal
が使用されます。
isequal(G1_Output,code1) = 1 isequal(G2_Output,code2) = 1 isequal(gps_ca,goldseq) = 1
参考文献
Tsui, James Bao-Yen.Fundamentals of Global Positioning System Receivers:A Software Approach.Hoboken, NJ, USA:John Wiley & Sons, Inc., 2004. https://doi.org/10.1002/0471712582.
拡張例
WCDMA エンドツーエンド物理レイヤー
3GPP 周波数分割複信 (FDD) 広帯域符号分割多元接続 (WCDMA) 無線ダウンリンク物理レイヤー通信システムの一部を Simulink® でモデル化する。
端子
入力
現在の出力サイズ。スカラーまたは 2 要素の行ベクトルとして指定します。ベクトルの 2 番目の要素は 1
でなければなりません。
例: [10 1]
は、現在の出力列ベクトルのサイズが 10 行 1 列になることを示します。
依存関係
この端子を有効にするには、[Output variable-size signals] パラメーターを選択し、[Maximum output size source] を [Dialog parameter]
に設定します。
データ型: double
基準入力信号。スカラー、列ベクトルとして指定します。
依存関係
この端子を有効にするには、[Output variable-size signals] パラメーターを選択し、[Maximum output size source] を [Inherit from reference input]
に設定します。
データ型: double
リセット信号。次のいずれかの形式で指定します。
出力サイズが変数の場合、スカラーとして指定します。
そうでない場合は、[フレームあたりのサンプル数] と等しい長さをもつスカラーまたは 2 次元の列ベクトルとして指定します。
出力信号は非ゼロの [Rst] 入力値にリセットされます。詳細については、リセット動作を参照してください。
依存関係
この端子を有効にするには、[Reset on nonzero input] パラメーターを選択します。
データ型: double
出力
出力信号。バイナリ列ベクトルとして返されます。ブロックで非ゼロのシーケンスを生成するためには、[Initial states (1)] または [Initial states (2)] ベクトルの要素の少なくとも 1 つは非ゼロでなければなりません。
データ型: double
パラメーター
ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
最初のシーケンス多項式。次のいずれかの形式で指定します。
定数項が
1
の多項式の文字ベクトルまたは string スカラー。詳細については、Communications Toolbox での多項式の表現を参照してください。バイナリ値行ベクトル。降べきの順に並べた多項式の係数を表します。このベクトルの長さは N+1 でなければなりません。ここで N は多項式の次数です。最初と最後のエントリは
1
でなければなりません。これは、次数 N の最初の項と、定数項 1 を示します。整数値の行ベクトル。降べきの順に並べた多項式の非ゼロの項の指数を表す要素からなります。最後のエントリは
0
でなければなりません。これは定数項 1 を示します。
このプロパティが、最初に優先される PN シーケンス発生器のシフト レジスタに対するフィードバック接続を決定します。1 番目の生成多項式の次数は、[Preferred polynomial (2)] パラメーターに指定した 2 番目の生成多項式の次数と等しくなければなりません。詳細については、シーケンスの推奨ペアを参照してください。
例: 'z^8 + z^2 + 1'
、[1 0 0 0 0 0 1 0 1]
、および [8 2 0]
は同一の多項式 p(z) = z8 + z2 + 1 を表します。
推奨ペアの最初のシーケンス多項式におけるシフト レジスタの初期状態。[Preferred polynomial (1)] の次数と同じ長さのバイナリ ベクトルとして指定します。
メモ
ブロックで非ゼロのシーケンスを生成するためには、最初または 2 番目に優先される PN シーケンス発生器の初期条件の要素の少なくとも 1 つは非ゼロでなければなりません。具体的には、シフト レジスタの少なくとも 1 つの初期状態が非ゼロでなければなりません。
2 番目のシーケンス多項式。次のいずれかの形式で指定します。
定数項が
1
の多項式の文字ベクトルまたは string スカラー。詳細については、Communications Toolbox での多項式の表現を参照してください。バイナリ値行ベクトル。降べきの順に並べた多項式の係数を表します。このベクトルの長さは N+1 でなければなりません。ここで N は多項式の次数です。最初と最後のエントリは
1
でなければなりません。これは、次数 N の最初の項と、定数項 1 を示します。整数値の行ベクトル。降べきの順に並べた多項式の非ゼロの項の指数を表す要素からなります。最後のエントリは
0
でなければなりません。これは定数項 1 を示します。
このプロパティが、最初に優先される PN シーケンス発生器のシフト レジスタに対するフィードバック接続を決定します。2 番目の生成多項式の次数は、[Preferred polynomial (1)] パラメーターに指定した 1 番目の生成多項式の次数と等しくなければなりません。詳細については、シーケンスの推奨ペアを参照してください。
例: 'z^8 + z^2 + 1'
、[1 0 0 0 0 0 1 0 1]
、および [8 2 0]
は同一の多項式 p(z) = z8 + z2 + 1 を表します。
推奨ペアの 2 番目のシーケンス多項式におけるシフト レジスタの初期状態。[Preferred polynomial (2)] の次数と同じ長さのバイナリ ベクトルとして指定します。
メモ
ブロックで非ゼロのシーケンスを生成するためには、最初または 2 番目に優先される PN シーケンス発生器の初期条件の要素の少なくとも 1 つは非ゼロでなければなりません。具体的には、シフト レジスタの少なくとも 1 つの初期状態が非ゼロでなければなりません。
一連のシーケンスからの出力シーケンスのシーケンス インデックス。範囲 [–2, 2n–2] の整数スカラーとして指定します。n は推奨多項式の次数です。詳細については、Gold シーケンスを参照してください。
初期時間からの Gold シーケンスのオフセット。整数スカラーとして指定します。
シミュレーション中に可変長の出力シーケンスを有効にするには、このパラメーターを選択します。このパラメーターをオフにすると、ブロックは固定長のシーケンスを出力します。このパラメーターを選択すると、ブロックは可変長のシーケンスを出力できます。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。
最大のシーケンス出力サイズの指定方法を選択します。
[Dialog parameter]
— [Maximum output size] パラメーター設定を最大許容出力シーケンス長として使用するブロックを構成するには、この値を選択します。[oSiz] 入力端子は出力信号の現在のサイズを指定し、ブロック出力はサンプル時間を入力信号から継承します。[oSiz] の入力値は [Maximum output size] パラメーターの値以下でなければなりません。[Inherit from reference port]
— [Ref] 入力端子を有効にし、[Ref] 入力端子の可変サイズ信号からサンプル時間、最大サイズ、および現在の出力サイズを継承するブロックを構成するには、この値を選択します。これらにより最大許容出力シーケンス長が設定されます。
依存関係
このパラメーターを有効にするには、[Output variable-size signals] を選択します。
ブロックの最大出力サイズを指定します。n は正のスカラーです。
例: [10 1]
の場合は、出力信号の最大サイズが 10 行 1 列として指定されます。
依存関係
このパラメーターを有効にするには、[可変サイズの信号の出力] を選択し、[最大出力サイズ ソース] を [ダイアログ パラメーター]
に設定します。
正のスカラーは、出力信号の各サンプル間の時間を秒単位で指定します。[サンプル時間] を -1
に設定すると、出力信号は下流からサンプル時間を継承します。[サンプル時間] パラメーターと [フレームあたりのサンプル数] パラメーターの関係の詳細については、サンプル タイミングを参照してください。
依存関係
このパラメーターを有効にする場合は、[可変サイズの信号の出力] を選択しないでください。
フレームあたりのサンプル数。出力データの 1 つのチャネルでフレームあたりのサンプル数を示す正の整数として指定します。[サンプル時間] と [フレームあたりのサンプル数] の関係の詳細については、サンプル タイミングを参照してください。
依存関係
このパラメーターを有効にする場合は、[Output variable-size signals] を選択しないでください。
[Rst] 端子を有効にするには、このパラメーターを選択します。非ゼロ値が [Rst] 端子に入力されると、内部シフト レジスタが [Initial states (1)] と [Initial states (2)] パラメーターの元の値にリセットされます。
出力データ型。[boolean]
、[double]
、または [Smallest unsigned integer]
として指定します。
[Smallest unsigned integer]
に設定した場合、出力のデータ型は、モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスの[ハードウェア実行] ペイン (Simulink)で使用される設定に基づいて選択されます。[ハードウェア実行] ペインで ASIC/FPGA を選択した場合、出力データ型は理想的な最小 1 ビット サイズ (ufix(1)) です。その他の選択肢を選んだ場合は、1 ビットに収まるうちで最小の語長となる符号なし整数とされ、通常は対応する文字のサイズとなります (uint8)。
ブロックの特性
データ型 |
|
多次元信号 |
|
可変サイズの信号 |
|
詳細
出力更新間の時間は、[フレームあたりのサンプル数] と [サンプル時間] パラメーター値の積に等しくなります。たとえば、[サンプル時間] と [フレームあたりのサンプル数] のそれぞれが 1
に等しい場合、ブロックは毎秒 1 サンプルを出力します。[フレームあたりのサンプル数] を 10 に増やすと、ブロックは 10 秒ごとに 10 行 1 列のベクトルを出力します。このタイミングにより、同等の出力レートが [フレームあたりのサンプル数] パラメーターに依存しないことが確実になります。
Gold シーケンスの特徴的な相互相関特性は、複数のデバイスを同じ周波数範囲でブロードキャストする場合に役立ちます。Gold シーケンスは、シーケンスの推奨ペアで定義された推奨ペアと呼ばれる u と v の指定された 1 対のシーケンスを使用して定義されます。シーケンスの u と v のペアは、周期が N = 2n – 1 です。ここで n は、パラメーターで指定した生成多項式の次数です。Gold シーケンスのセット G(u, v) は次により定義されます。
T はベクトルを 1 か所ずつ巡回的に左シフトさせる演算子を表し、 は、2 を法とする加算を表します。G(u,v) には、周期が N である N + 2 のシーケンスが含まれます。
Gold シーケンスには、任意の 2 つ (あるいはこれらをシフトしたもの) の間の相互相関が、t(n)、-1、または t(n) - 2 という 3 つの値のいずれかをとる特性があり、これらは次の式で定義されます。
このブロックは 2 つの PN シーケンス発生器を使用して、シーケンスの推奨ペアを生成します。次に、ブロックでこれらのシーケンスの XOR 演算を実行し、次の図に示すように、Gold シーケンス出力を生成します。
[Preferred polynomial (1)] パラメーターおよび [Preferred polynomial (2)] パラメーターにより、シーケンスの推奨ペア、および PN シーケンス発生器が出力の生成に使用するシフト レジスタのフィードバック接続が決定します。PN シーケンス生成の詳細については、PN Sequence Generator ブロック リファレンス ページの単純なシフト レジスタ発生器の節を参照してください。
次の表は、推奨ペアの例を示します。
生成多項式の次数 (n) | シーケンスのペアの周期 (N) | [Preferred polynomial (1)] パラメーター値 | [Preferred polynomial (2)] パラメーター値 |
---|---|---|---|
5 | 31 | [5 2 0] | [5 4 3 2 0] |
6 | 63 | [6 1 0] | [6 5 2 1 0] |
7 | 127 | [7 3 0] | [7 3 2 1 0] |
9 | 511 | [9 4 0] | [9 6 4 3 0] |
10 | 1023 | [10 3 0] | [10 8 3 2 0] |
11 | 2047 | [11 2 0] | [11 8 5 2 0] |
[Initial states (1)] と [Initial states (2)] パラメーターは、それぞれ [Preferred polynomial (1)] と [Preferred polynomial (2)] に対応するレジスタの初期値を指定するベクトルです。
メモ
ブロックで非ゼロのシーケンスを生成するためには、初期状態のベクトル ([Initial states (1)] または [Initial states (2)]) の要素の少なくとも 1 つは非ゼロでなければなりません。具体的には、レジスタの少なくとも 1 つの初期状態が非ゼロでなければなりません。
シフトの長さを示す [Shift] パラメーターの整数値を使用すると、Gold シーケンスの開始点をシフトできます。
[Reset on nonzero input] を選択すると、外部信号を使用して内部シフト レジスタの値を初期状態にリセットできます。これにより、ブロックには外部信号用の入力端子が作成されます。ブロックで内部シフト レジスタをリセットする方法は、その出力信号とリセット信号がスカラーかベクトルかによって異なります。詳細については、リセット動作を参照してください。
シーケンスの推奨ペア u および v は、Gold シーケンスのセット G(u, v) で構成されます。
周期が N = 2n–1 であるシーケンスのペア u と v が推奨ペアとなるには、以下の要件を満たす必要があります。
n は [Preferred Polynomial (1)] と [Preferred Polynomial (2)] パラメーターで指定された生成多項式の次数。
n が
4
で割り切れない。v = u[q] であり、以下が成り立つ
q は奇数。
q = 2k+1 または q = 22k–2k+1。
v は u の各 q 番目のシンボルをサンプリングして取得される。
[Sequence index] パラメーターはセット G(u, v) で出力される Gold シーケンスを指定します。[Sequence index] の範囲は [–2, –1, 0, 1, 2, ..., 2n–2] です。ここで、n は [Preferred Polynomial (1)] と [Preferred Polynomial (2)] パラメーターで指定された生成多項式の次数を表します。次の表は、[Sequence index] と出力シーケンスの対応関係を示しています。
[Sequence index] パラメーターで指定されるシーケンス インデックスは、セット G(u, v) で出力される Gold シーケンスを指定します。
使用できる Gold シーケンスは次のセットです。
u および v は 2 つの推奨される PN シーケンスであり、T はベクトルを 1 か所ずつ巡回的に左シフトさせる演算子を表し、 は、2 を法とする加算を表します。G(u,v) には、周期 N = 2n–1 の N+2 の Gold シーケンスが含まれます。
[Sequence index] の範囲は [–2, 2n–2] です。ここで、n は [Preferred polynomial (1)] と [Preferred Polynomial (2)] パラメーターで指定された生成多項式の次数を表します。インデックス値 -2
および -1
は、それぞれ [Preferred polynomial (1)] と [Preferred polynomial (2)] によって生成された、1 番目と 2 番目に優先される PN シーケンスに対応しています。次の表は、シーケンス インデックスと出力シーケンスの対応関係を示しています。
シーケンス インデックス | 出力シーケンス |
---|---|
–2 | u |
–1 | v |
0 | |
1 | |
2 | |
... | ... |
2 n –2 | |
発生器シーケンスをリセットするにはまず、[Reset on nonzero input] パラメーターを選択して [Rst] 入力端子を有効にする必要があります。リセットがない場合に Gold Sequence Generator ブロックが [1 0 0 1 1 0 1 1]
を出力すると想定します。次の表は、指定されたパラメーター値に対する Gold Sequence Generator ブロック出力に与える影響を示しています。
リセット信号 | リセット信号の設定 | Gold Sequence Generator ブロック | リセット信号と出力信号 |
---|---|---|---|
リセットがない |
|
| |
スカラーのリセット信号 |
|
| |
ベクトルのリセット信号 |
|
|
リセットがない場合、ブロックはシーケンスをリセットせずに出力します。スカラーとベクトルのリセット信号の場合、ブロックはリセット信号 [0 0 0 1 0 0 0 0]
を [Rst] 端子への入力とします。リセット信号の 4 番目のビットが 1
で、[サンプル時間] が 1
であるため、ブロックはシーケンス出力を 4 番目のビットでリセットします。
可変サイズの出力の場合、ブロックはスカラーのリセット信号入力のみをサポートします。
Gold シーケンス発生器のリセット動作の例は、Simulink モデルにおけるリセット動作を示します。
参照
[1] Proakis, John G. Digital Communications. 5th ed. New York: McGraw Hill, 2007.
[2] Gold, R. “Maximal Recursive Sequences with 3-Valued Recursive Cross-Correlation Functions (Corresp.).” IEEE® Transactions on Information Theory 14, no. 1 (January 1968): 154–56. https://doi.org/10.1109/TIT.1968.1054106.
[3] Gold, R. “Optimal Binary Sequences for Spread Spectrum Multiplexing (Corresp.).” IEEE Transactions on Information Theory 13, no. 4 (October 1967): 619–21. https://doi.org/10.1109/TIT.1967.1054048.
[4] Sarwate, D.V., and M.B. Pursley. “Crosscorrelation Properties of Pseudorandom and Related Sequences.” Proceedings of the IEEE 68, no. 5 (1980): 593–619. https://doi.org/10.1109/PROC.1980.11697.
[5] Dixon, Robert C. Spread Spectrum Systems: With Commercial Applications. 3rd ed. New York: Wiley, 1994.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2006a より前に導入R2020a 以降、Simulink では R2015b より前で利用可能だったバージョンの Gold Sequence Generator ブロックは使用できなくなりました。
既存のモデルは、現在の Gold Sequence 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)