このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
PN Sequence Generator
疑似ノイズ シーケンスを生成する
ライブラリ:
Communications Toolbox /
Comm Sources /
Sequence Generators
Communications Toolbox HDL Support /
Comm Sources
説明
PN Sequence Generator ブロックは、線形フィードバック シフト レジスタ (LFSR) を使って一連の 2 値疑似乱数を生成します。疑似ノイズ シーケンスは、通常、疑似乱数スクランブルや直接シーケンス スペクトル拡散システムで使用されます。詳細については、詳細を参照してください。
これらのアイコンには、利用可能なすべての端子を使用したブロックが表示されています。
例
Additive Scrambling of Input Data in Simulink
Digital communications systems commonly use additive scrambling and descrambling to randomize input data to aid in timing synchronization and meeting power spectral requirements. The Scrambler block supports multiplicative scrambling but does not support additive scrambling. To perform additive scrambling, you can use the PN Sequence Generator block. This example implements the additive scrambling specified in IEEE 802.11™ [1] by scrambling input data with an output sequence generated by the PN Sequence Generator block. For a MATLAB® example with a similar workflow, see the Additive Scrambling of Input Data example on the comm.PNSequence
reference page.
端子
入力
Mask — 出力マスク
バイナリ ベクトル
PN シーケンスを初期時間から遅延させる出力マスク。N 個の要素をもつバイナリ ベクトルとして指定します。N は生成多項式の次数です。
依存関係
この端子を有効にするには、[Output mask source] を [Input port]
に設定します。
データ型: double
| uint8
| ufix1
oSiz — 出力サイズ
整数
可変サイズ出力信号の出力サイズ。整数として指定します。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。
依存関係
この端子を有効にするには、[Output variable-size signals] を選択し、[Maximum output size source] を [Dialog parameter]
に設定します。
データ型: double
Ref — 参照入力
列ベクトル
参照入力。最大および現在の出力シーケンス長を決定する列ベクトルとして指定します。[Ref] 入力は可変サイズ信号でなければなりません。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。
依存関係
この端子を有効にするには、[Output variable-size signals] を選択し、[Maximum output size source] を [Inherit from reference input]
に設定します。
データ型: double
Rst — シーケンス発生器のリセット
0 | 1
シーケンス発生器のリセット。0
または 1
を指定します。詳細については、リセット動作を参照してください。
依存関係
この端子を有効にするには、[Reset on nonzero input] を選択します。
データ型: Boolean
出力
Out — 疑似ランダム ノイズ シーケンス
バイナリ ベクトル
PN シーケンス。バイナリ ベクトルとして返されます。
パラメーター
Generator polynomial — 生成多項式
'z^6 + z + 1'
(既定値) | 文字ベクトル | string スカラー | バイナリ行ベクトル
シフト レジスタのフィードバック接続を決定する生成多項式。次のいずれかのオプションとして指定します。
定数項が
1
の多項式の文字ベクトルまたは string スカラー。詳細については、Communications Toolbox での多項式の表現を参照してください。バイナリ値行ベクトル。降べきの順に並べた多項式の係数を表します。このベクトルの長さは N+1 でなければなりません。ここで N は多項式の次数です。最初と最後のエントリは
1
でなければなりません。これは、次数 N の最初の項と、定数項 1 を示します。整数値の行ベクトル。降べきの順に並べた多項式の非ゼロの項の指数を表す要素からなります。最後のエントリは
0
でなければなりません。これは定数項 1 を示します。
詳細については、単純なシフト レジスタ発生器を参照してください。
例: 'z^8 + z^2 + 1'
、[1 0 0 0 0 0 1 0 1]
、および [8 2 0]
は同一の多項式 p(z) = z 8 + z 2 + 1 を表します。
Initial states — シフト レジスタの初期状態
[0 0 0 0 0 1]
(既定値) | バイナリ行ベクトル
シミュレーション開始時の PN シーケンス発生器のシフト レジスタの初期状態。バイナリ値行ベクトルとして指定します。ベクトルの長さは、[Generator Polynomial] で指定される生成多項式の次数と等しくなければなりません。詳細については、単純なシフト レジスタ発生器を参照してください。
メモ
ブロックで非ゼロのシーケンスを生成するには、[Initial states] ベクトルに、1 つ以上の非ゼロ要素が含まれていなければなりません。
Output mask source — Output mask source
Dialog parameter
(既定値) | 入力端子
出力マスク情報がブロックにどのように提供されるかを示す出力マスク ソース。次のいずれかとして指定します。
[Output mask vector (or scalar shift value)]
パラメーター設定を使用するには[Dialog parameter]
。Mask
入力端子を追加して使用するには[Input port]
。
Output mask vector (or scalar shift value) — 出力マスク ベクトルまたはスカラー シフト値
0 (既定値) | 整数スカラー | バイナリ ベクトル
出力マスク ベクトルまたはスカラー シフト値。整数スカラーまたは長さ N のバイナリ行ベクトルとして指定します。ここで、N は生成多項式の次数です。このパラメーターは、初期時間からの PN シーケンスの遅延を判断します。詳細については、PN シーケンスの開始点のシフトを参照してください。
依存関係
このパラメーターを有効にするには、[Output mask source] を [Dialog parameter]
に設定します。
Output variable-size signals — 可変長信号を出力するオプション
off
(既定値) | on
シミュレーション中に可変長の出力シーケンスを有効にするには、このパラメーターを選択します。このパラメーターをオフにすると、ブロックは固定長のシーケンスを出力します。このパラメーターを選択すると、ブロックは可変長のシーケンスを出力できます。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。
Maximum output size source — Maximum output size source
Dialog parameter
(既定値) | Inherit from reference port
最大のシーケンス出力サイズの指定方法を選択します。
[Dialog parameter]
— [Maximum output size] パラメーター設定を最大許容出力シーケンス長として使用するブロックを構成するには、この値を選択します。[oSiz] 入力端子は出力信号の現在のサイズを指定し、ブロック出力はサンプル時間を入力信号から継承します。[oSiz] の入力値は [Maximum output size] パラメーターの値以下でなければなりません。[Inherit from reference port]
— [Ref] 入力端子を有効にし、[Ref] 入力端子の可変サイズ信号からサンプル時間、最大サイズ、および現在の出力サイズを継承するブロックを構成するには、この値を選択します。これらにより最大許容出力シーケンス長が設定されます。
依存関係
このパラメーターを有効にするには、[Output variable-size signals] を選択します。
Maximum output size — Maximum output size
[10 1]
(既定値) | [n 1] 形式のベクトル
ブロックの最大出力サイズを指定します。n は正のスカラーです。
例: [10 1]
の場合は、出力信号の最大サイズが 10 行 1 列として指定されます。
依存関係
このパラメーターを有効にするには、[可変サイズの信号の出力] を選択し、[最大出力サイズ ソース] を [ダイアログ パラメーター]
に設定します。
サンプル時間 — 出力サンプル時間
1
(既定値) | -1 | 正のスカラー
正のスカラーは、出力信号の各サンプル間の時間を秒単位で指定します。[サンプル時間] を -1
に設定すると、出力信号は下流からサンプル時間を継承します。[サンプル時間] パラメーターと [フレームあたりのサンプル数] パラメーターの関係の詳細については、サンプル タイミングを参照してください。
例: 1
は 1 秒のサンプル時間を指定します。
依存関係
このパラメーターを有効にするには、[Output variable-size signals] をオフにします。
フレームあたりのサンプル数 — フレームあたりのサンプル数
1
(既定値) | 正の整数
出力信号の 1 チャネル内のフレームあたりのサンプル。正の整数として指定します。[サンプル時間] と [フレームあたりのサンプル数] の関係の詳細については、サンプル タイミングを参照してください。
依存関係
このパラメーターを有効にするには、[Output variable-size signals] をオフにします。
Reset on nonzero input — Reset on nonzero input
off (既定値) | on
Rst
入力端子を追加にするには、このパラメーターを選択します。詳細については、リセット動作を参照してください。
Enable bit-packed outputs — Enable bit-packed outputs
off (既定値) | on
[Number of packed bits] および [Interpret bit-packed values as signed] パラメーターを使用可能にするには、このパラメーターを選択します。
このパラメーターが選択されると、オブジェクトは長さ M の列ベクトルを出力します。これには、長さ P のビット ワードの最上位ビット (MSB) の 1 番目の整数表現が含まれます。M は [フレームあたりのサンプル数] パラメーターで指定されたフレームあたりのサンプル数です。P は [Number of packed bits] パラメーターで指定されたビットパックされたワードのサイズです。
メモ
ビットパックされたワードの左から 1 番目のビットには、整数表現の最上位ビットが含まれます。
Number of packed bits — Number of packed bits
8 (既定値) | 範囲 [1, 32] の整数
圧縮ビットの数。範囲 [1, 32] の整数として指定します。
依存関係
このパラメーターを有効にするには、[Enable bit-packed outputs] を選択します。
Interpret bit-packed values as signed — Interpret bit-packed values as signed
off (既定値) | on
選択すると、ビットパックされた値が符号付き整数データ値として解釈され、オフにすると、符号なし整数データ値として解釈されます。選択されたときに、最上位ビット (符号ビット) の 1 は負の値を示します。
依存関係
このパラメーターを有効にするには、[Enable bit-packed outputs] を選択します。
出力データ型 — 出力データ型
double
(既定値) | boolean
| Smallest unsigned integer
出力データ型。[double]
、[boolean]
、または [Smallest unsigned integer]
として指定します。
[Enable bit-packed outputs] をオフにした場合、出力データ型は
double
、boolean
またはSmallest unsigned integer
に指定できます。[Output data type] パラメーターをSmallest unsigned integer
に設定した場合、出力のデータ型はモデルの [Configuration Parameters] ダイアログ ボックスの [Hardware Implementation] ペインで使用されている設定に基づいて選択されます。[Hardware Implementation] ペインでASIC/FPGA
が選択されている場合、出力データ型ufix(1)
が理想的な最小 1 ビット サイズになります。その他の選択肢を選んだ場合は、1 ビットに収まるうちで最小の語長となる符号なし整数とされ、通常は対応する文字のサイズとなります (たとえば、uint8
)。[Enable bit-packed outputs] が選択される場合、出力データ型は
double
またはSmallest unsigned integer
に指定できます。[Output data type] パラメーターがSmallest unsigned integer
に設定されると、出力データ型は、[Interpret bit-packed values as signed] および [Number of packed bits] パラメーターと、モデルの [Configuration Parameters] ダイアログ ボックスの [Hardware Implementation] ペインで使用されている設定に基づいて選択されます。ASIC/FPGA
が [Hardware Implementation] ペインで選択されている場合、出力データ型は [Interpret bit-packed values as signed] パラメーターに基づいてsfix(n)
またはufix(n)
などの理想的な最小 n ビット サイズになります。他のすべての選択の場合、最も小さな利用可能なワード長が n ビットに十分収まる符号付きまたは符号なし整数になります。
ブロックの特性
データ型 |
|
多次元信号 |
|
可変サイズの信号 |
|
詳細
単純なシフト レジスタ発生器
単純なシフト レジスタ発生器 (SSRG) として実装された線形フィードバック シフト レジスタ (LFSR) は、PN シーケンスの生成に使用されます。このタイプのシフト レジスタは、フィボナッチ実装とも呼ばれます。例については、線形フィードバック シフト レジスタでの PN シーケンス生成のモデル化を参照してください。
[Generator Polynomial] パラメーターはシフト レジスタのフィードバック接続を決定します。これは、z の原始バイナリ多項式で、grzr+gr–1zr–1+gr–2zr–2+...+g0 となります。係数 gk=0 から r までについては、係数 gk は、k 番目のレジスタから加算器への接続がある場合には 1 です。多項式は原始でなければならないため、[Generator Polynomial] パラメーターの最初の項 gr と定数項 g0 は 1 でなければなりません。[Initial states] パラメーターは、レジスタの初期値を指定します。たとえば、次の表は生成多項式 p(z) = z8 + z2 + 1 に対応するパラメーター値の 2 つのセットを示しています。
量 | 例 1 | 例 2 |
---|---|---|
生成多項式 | g1 = [1 0 0 0 0 0 1 0 1] | g2 = [8 2 0] |
生成多項式の次数 | 8、つまり length(g1)-1 です。 | 8 |
初期状態 | [1 0 0 0 0 0 1 0] | [1 0 0 0 0 0 1 0] |
各タイム ステップで、発生器内のすべての r レジスタは、シフト レジスタに入ってくる矢印の値に従い、それぞれの値を更新します。加算器は 2 を法とする加算を実行します。LFSR の出力には、m マスク ベクトルにあるすべての接続の合計が反映されます。
[Output mask vector (or scalar shift value)] パラメーター m によって、PN シーケンスの開始点のシフトが決まります。詳細については、PN シーケンスの開始点のシフトを参照してください。
PN シーケンスの開始点のシフト
PN シーケンスの開始点をシフトするには、[Output mask vector (or scalar shift value)] パラメーターを次のように指定します。
シフトの長さを表す整数。
[Output mask vector (or scalar shift value)] の既定の設定 0 はシフトなしに対応します。単純なシフト レジスタ発生器 の LFSR シフト レジスタの図に示したように、唯一の接続が m0 というラベルの付いた矢印に沿っている場合、シフトはありません。
次の表は、[Output mask vector (or scalar shift value)] を 0 に設定した場合に発生するシフトと正の整数 d に設定した場合に発生するシフトを示しています。
T = 0 T = 1 T = 2 ... T = d T = d+1 Shift = 0 x0 x1 x2 ... xd xd+1 Shift = d xd xd+1 xd+2 ... x2d x2d+1 生成多項式の次数と同じ長さのバイナリ ベクトル。単純なシフト レジスタ発生器の LFSR シフト レジスタの図は、マスク ベクトル m として指定された [Output mask vector (or scalar shift value)] を示しています。このバイナリ ベクトルは N 個の要素をもっていなければなりません。ここで N は生成多項式の次数です。マスク ベクトルを計算するには、関数
shift2mask
を使用します。このバイナリ ベクトルは、最大次数 r–1 の z の多項式 mr–1zr–1 + mr–2zr–2 + ... + m1z + m0 に対応します。シフト d に対応するマスク ベクトルは、g(z) を法とする m(z) = zd を表すベクトルです。ここで、g(z) は生成多項式です。
たとえば、生成多項式の次数が 4 である場合、d= 2 に対応するマスク ベクトルは多項式 m(z) = z2 を表す
[0 1 0 0]
です。
リセット動作
発生器シーケンスをリセットするにはまず、[Reset on nonzero input] パラメーターを選択して [Rst] 入力端子を有効にする必要があります。リセットがない場合に PN Sequence Generator ブロックが [1 0 0 1 1 0 1 1]
を出力すると想定します。次の表は、指定されたパラメーター値に対する PN Sequence Generator ブロック出力に与える影響を示しています。
リセット信号 | リセット信号の設定 | PN Sequence Generator ブロック | リセット信号と出力信号 |
---|---|---|---|
リセットがない |
|
| |
スカラーのリセット信号 |
|
| |
ベクトルのリセット信号 |
|
|
リセットがない場合、ブロックはシーケンスをリセットせずに出力します。スカラーとベクトルのリセット信号の場合、ブロックはリセット信号 [0 0 0 1 0 0 0 0]
を [Rst] 端子への入力とします。リセット信号の 4 番目のビットが 1
で、[サンプル時間] が 1
であるため、ブロックはシーケンス出力を 4 番目のビットでリセットします。
可変サイズの出力の場合、ブロックはスカラーのリセット信号入力のみをサポートします。
最大長のシーケンス
次数 r をもつ生成多項式の最大長のシーケンスを生成するには、[Generator polynomial] を次の表の値に設定します。最大のシーケンス長は 2r – 1 です。
r | 生成多項式 | r | 生成多項式 | r | 生成多項式 | r | 生成多項式 |
---|---|---|---|---|---|---|---|
2 | [2 1 0] | 15 | [15 14 0] | 28 | [28 25 0] | 41 | [41 3 0] |
3 | [3 2 0] | 16 | [16 15 13 4 0] | 29 | [29 27 0] | 42 | [42 23 22 1 0] |
4 | [4 3 0] | 17 | [17 14 0] | 30 | [30 29 28 7 0] | 43 | [43 6 4 3 0] |
5 | [5 3 0] | 18 | [18 11 0] | 31 | [31 28 0] | 44 | [44 6 5 2 0] |
6 | [6 5 0] | 19 | [19 18 17 14 0] | 32 | [32 31 30 10 0] | 45 | [45 4 3 1 0] |
7 | [7 6 0] | 20 | [20 17 0] | 33 | [33 20 0] | 46 | [46 21 10 1 0] |
8 | [8 6 5 4 0] | 21 | [21 19 0] | 34 | [34 15 14 1 0] | 47 | [47 14 0] |
9 | [9 5 0] | 22 | [22 21 0] | 35 | [35 2 0] | 48 | [48 28 27 1 0] |
10 | [10 7 0] | 23 | [23 18 0] | 36 | [36 11 0] | 49 | [49 9 0] |
11 | [11 9 0] | 24 | [24 23 22 17 0] | 37 | [37 12 10 2 0] | 50 | [50 4 3 2 0] |
12 | [12 11 8 6 0] | 25 | [25 22 0] | 38 | [38 6 5 1 0] | 51 | [51 6 3 1 0] |
13 | [13 12 10 9 0] | 26 | [26 25 24 20 0] | 39 | [39 8 0] | 52 | [52 3 0] |
14 | [14 13 8 4 0] | 27 | [27 26 25 22 0] | 40 | [40 5 4 3 0] | 53 | [53 6 2 1 0] |
これらの多項式が表すシフト レジスタ構成の詳細については、Digital Communications by John Proakis を参照してください[1]。
サンプル タイミング
出力更新間の時間は、[フレームあたりのサンプル数] と [サンプル時間] パラメーター値の積に等しくなります。たとえば、[サンプル時間] と [フレームあたりのサンプル数] のそれぞれが 1
に等しい場合、ブロックは毎秒 1 サンプルを出力します。[フレームあたりのサンプル数] を 10 に増やすと、ブロックは 10 秒ごとに 10 行 1 列のベクトルを出力します。このタイミングにより、同等の出力レートが [フレームあたりのサンプル数] パラメーターに依存しないことが確実になります。
参照
[1] Proakis, John G. Digital Communications. 5th ed. New York: McGraw Hill, 2007.
[2] Lee, J. S., and L. E. Miller. CDMA Systems Engineering Handbook. Boston and London. Artech House, 1998.
[3] Golomb, S.W. Shift Register Sequences. Laguna Hills. Aegean Park Press, 1967.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ は、HDL の実装および合成ロジックに影響を与える、追加の構成オプションを提供します。
このブロックは 1 つの既定の HDL アーキテクチャをもっています。
ConstrainedOutputPipeline | 設計内で既存の遅延を移動することによって出力に配置するレジスタの数。分散型パイプラインは、これらのレジスタを再分散しません。既定の設定は |
InputPipeline | 生成コードに挿入する入力パイプライン ステージの数。分散型パイプラインと制約付き出力パイプラインは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成コードに挿入する出力パイプライン ステージの数。分散型パイプラインと制約付き出力パイプラインは、これらのレジスタを移動できます。既定の設定は |
ブロック上の [Output mask source] として
[入力端子]
を選択できます。この場合、Mask
入力信号は、データ型ufix1
のベクトルでなければなりません。[Reset on nonzero input] を選択した場合、
Rst
端子への入力のデータ型はBoolean
でなければなりません。double
型の出力は、HDL コード生成でサポートされません。その他のすべての出力型 (ビットパックされた出力を含む) はサポートされます。Resettable Synchronous Subsystem (HDL Coder) 内で、このブロックの HDL を生成することはできません。
[トリガー信号をクロックとして使用] オプションを選択した場合、Triggered Subsystem 内でこのブロックの HDL を生成できません。HDL コード生成のための Triggered Subsystem の使用 (HDL Coder)を参照してください。
バージョン履歴
R2006a より前に導入R2020a: 自動的にこのブロックを現在のバージョンに更新する既存モデル
R2020a 以降、Simulink® では R2015b より前で利用可能だったバージョンの PN Sequence Generator ブロックは使用できなくなりました。
既存のモデルはソース ブロックは連続する時間サンプルのフレームをフレーム属性を使用せずに出力するで通知されたバージョンの PN Sequence Generator ブロックを読み込むように自動的に更新されます。ブロック転送の詳細については、転送テーブルを使用したライブラリ ブロックの互換性の維持 (Simulink)を参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)