メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Gold Sequence Generator

シーケンスのセットからの Gold シーケンスの生成

  • Gold Sequence Generator block

ライブラリ:
Communications Toolbox / Comm Sources / Sequence Generators

説明

Gold Sequence Generator ブロックは、シーケンスの有界集合から小さい周期的な相互相関特性をもつバイナリ シーケンスを生成します。詳細については、Gold シーケンスを参照してください。

このブロックは、シミュレーション中に長さが変わるシーケンスを出力することができます。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。

これらのアイコンには、利用可能なすべての端子を使用したブロックが表示されています。

Gold Sequence Generator block showing optional input ports for output size and resetGold Sequence Generator block showing optional input ports for reference signal and reset

すべて展開する

2 つの PN Sequence Generator ブロックまたは 1 つの Gold Sequence Generator ブロックを使用して、同じ Gold コード シーケンスを生成します。

2 つの PN Sequence Generator ブロックと 1 つの Gold code sequence ブロックは、推奨多項式 $x^5+x^2+1$ および $x^5+x^4+x^3+x^2+1$ から結果として得られる 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.y2out.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 コールバックで指定されています。

  • g1g2m2 は、Gold Sequence Generator ブロックの [Preferred polynomial (1)][Preferred polynomial (2)]、および [Sequence index] パラメーターを設定するために使用されます。

  • [1] では、多項式は降順として解釈されるため、Gold Sequence Generator ブロックは関数fliplrを使用して g1g2m2 バイナリ ベクトルを反転し、離散ブロックのモデル コンフィギュレーションに一致させます。

  • [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

参考文献

  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.

拡張例

端子

入力

すべて展開する

現在の出力サイズ。スカラーまたは 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)。

ブロックの特性

データ型

Boolean | double | fixed point

多次元信号

なし

可変サイズの信号

あり

詳細

すべて展開する

参照

[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 より前に導入

すべて展開する