メインコンテンツ

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

PN Sequence Generator

疑似ノイズ シーケンスを生成する

  • PN Sequence Generator block

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

説明

PN Sequence Generator ブロックは、線形フィードバック シフト レジスタ (LFSR) を使って一連の 2 値疑似乱数を生成します。疑似ノイズ シーケンスは、通常、疑似乱数スクランブルや直接シーケンス スペクトル拡散システムで使用されます。詳細については、詳細を参照してください。

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

すべて展開する

基本的な Simulink® ブロックで作成された線形フィードバック シフト レジスタ (LFSR) を使用することで、PN Sequence Generator ブロックから出力されるシーケンスをモデル化できます。

cm_ex__pnseq_vs_prim_sl モデルは、PN Sequence Generator ブロックを使用し、基本的な Simulink ブロックを使用して LFSR をモデル化することによって、生成多項式 p(z)=z^6+z+1 を生成します。離散ブロックの LFSR 図式モデルは、PN Sequence Generator ブロックの [初期状態] パラメーターおよび [出力マスク ベクトル (またはスカラー シフト値)] パラメーターを解釈します。PreLoadFcn コールバック関数は、ランタイム パラメーターを初期化します。Simulink ツールストリップからコールバック関数を表示するには、[モデル化] タブの [設計] ギャラリーで、[プロパティ インスペクター] をクリックします。

スコープの出力は、2 つの実装によって、一致する PN シーケンスが生成されることを示しています。

PN Sequence Generator ブロックを使用することで、長い周期の PN シーケンスを簡単に生成できます。さらに実験を行うため、モデルを開きます。設定を変更し、異なるパス遅延に対してパフォーマンスがどのように変化するかを確認したり、PN シーケンス発生器パラメーターを調整します。シミュレーションを実行する前に [初期状態] の値を変更することで、さまざまな初期状態で実験できます。すべての値において、生成される 2 つのシーケンスは同じです。

デジタル通信システムでは、タイミング同期のため、またパワー スペクトルの要件を満たすため、一般に加法スクランブルと加法デスクランブルを使用して入力データをランダム化します。Scramblerブロックは乗法スクランブルをサポートしますが、加法スクランブルはサポートしません。加法スクランブルを実行するには、PN Sequence Generatorブロックを使用できます。この例では、PN Sequence Generatorブロックによって生成された出力シーケンスで入力データをスクランブルすることにより、IEEE 802.11™ [1] で規定されている加法スクランブルを実装します。同様のワークフローをもつ MATLAB® の例については、comm.PNSequenceリファレンス ページの "入力データの加法スクランブル" の例を参照してください。

次の図は、IEEE 802.11™ の Section 17.3.5.5 [1] の図 17-7 で規定されている、生成多項式 $x^7+x^4+1$ を使用する加法スクランブラーを示しています。

802.11 で規定されているシフト レジスタと、PN Sequence Generator ブロックを使用して実装されたシフト レジスタを比較し、この 2 つのシフト レジスタの図が互いに鏡像になることを観察します。したがって、PN Sequence Generator ブロックを構成して加法スクランブラーを実装する場合、生成多項式、初期状態、およびマスク出力の値を逆にしなければなりません。レジスタの出力を先頭から取り出すには、シフト値に 7 を指定します。

802.11 スクランブラーの詳細については、[1] およびwlanScramble (WLAN Toolbox)リファレンス ページを参照してください。

cm_additive_scrambling モデルは、次の 2 つの加法スクランブラーの実装を使用して、生成されたスクランブリング シーケンスと、802.11 で規定された加法スクランブラーに従ってスクランブルされたデータ フレームを、スクランブルして比較します。

  • 離散のDelay (Simulink)ブロックと、XOR 演算子として構成されたLogical Operator (Simulink)ブロックから成るシフト レジスタ。

  • PN Sequence Generator ブロックと XOR 演算子。

加法スクランブラーの実装を比較するために、cm_additive_scrambling モデルでは以下を使用します。

  • スクランブルする入力信号を提供するBernoulli Binary Generatorブロック。

  • 生成多項式として $x^7+x^3+1$ を使用し、シフト レジスタの初期状態として [1 1 1 1 1 1 1] を使用し、スクランブル出力のシフト値として 7 を使用するように構成されたPN Sequence Generatorブロック。

  • 入力データにスクランブル シーケンスを適用するための XOR 演算子として構成されたLogical Operator (Simulink)ブロック。

  • 離散ブロックから成るシフト レジスタから出力されたスクランブル後のデータと、加法スクランブラーの PN シーケンス版が一致することを確認するError Rate Calculationブロック。

  • IEEE 802.11 規格の Section 17.3.5.5 で規定されている 127 ビット スクランブラー出力シーケンスを含むワークスペース変数を作成する PreLoadFcn コールバック関数。== 演算用に構成されたRelational Operator (Simulink)は、Signal From Workspaceブロックからの出力である 127 ビットのスクランブラー シーケンスを PN Sequence ブロックの出力と比較します。

加法スクランブルのシミュレーション

モデルを実行し、スクランブルされた入力シーケンスのエラー レートの計算結果、およびスクランブラー シーケンスの場合と等しいかどうかの比較結果を表示します。

Number of errors in scrambled output comparison is 0.
Number of mismatches comparing PN sequence output to IEEE 802.11 scrambler sequence 0.

参考文献

[1] IEEE Std 802.11™-2020 (Revision of IEEE Std 802.11-2016). "Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications." IEEE Standard for Information technology - Telecommunications and information exchange between systems. Local and metropolitan area networks - Specific requirements.

このモデルは、マルチパス伝送環境におけるシングルユーザー システムの疑似ランダム拡散をシミュレートします。これは、信号が複数のパスで受信される移動体チャネル環境と同等です。各パスの振幅と遅延は異なる場合があります。受信機は、ダイバーシティ受信を使用して独立したパスをコヒーレントに結合し、受信したマルチパス伝送からゲインを実現します。モデル化されたシステムではフェージング効果はシミュレートされず、受信機はパスの数とそれぞれの遅延を完全に認識します。

このモデルは、BPSK 変調されるランダムなバイナリ データ (実数) を使用します。これは、PN シーケンスで拡散されてから、マルチパス AWGN チャネルで送信されます。受信機は、逆拡散器、ダイバーシティ コンバイナー、および BPSK 復調器で構成されます。受信機は、データの拡散時に使用される PN シーケンスが理想的な自己相関特性をもつことによって、ダイバーシティ合成からゲインを達成します。

さらに実験を行うため、モデルを開きます。設定を変更し、異なるパス遅延に対してパフォーマンスがどのように変化するかを確認したり、PN シーケンス発生器パラメーターを調整します。

このモデルは、マルチパス伝送環境における 2 ユーザーの疑似ランダム拡散をシミュレートします。これは、信号が複数のパスで受信される移動体チャネル環境と同等です。各パスの振幅と遅延は異なる場合があります。受信機は、ダイバーシティ受信を使用して独立したパスをコヒーレントに結合し、受信したマルチパス伝送からゲインを実現します。モデル化されたシステムではフェージング効果はシミュレートされず、受信機はパスの数とそれぞれの遅延を完全に認識します。

このモデルは、BPSK 変調されるランダムなバイナリ データ (実数) を使用します。これは、PN シーケンスで拡散されてから、マルチパス AWGN チャネルで送信されます。受信機は、逆拡散器、ダイバーシティ コンバイナー、および BPSK 復調器で構成されます。

このモデルは、同じ送信データを使用して、一様に構成されたマルチパス AWGN チャネルでの 2 ユーザーの送信についてパフォーマンスを計算します。

個々のユーザーの送信が異なる PN シーケンスを使用して拡散されているため、ユーザーに対して計算されるエラー レートは異なります。データの拡散に使用されている非直交 PN シーケンスの相互相関特性が高いため、マルチパス環境では BER 性能が低下します。マルチパス環境には、アダマール シーケンスやカサミ シーケンスなど、直交性の高いシーケンスの方が適しています。ユーザー データの拡散時にアダマール符号シーケンスを使用するマルチパスの例については、単一パス チャネルにおけるマルチユーザー システムの直交拡散を参照してください。ユーザー データの拡散時にカサミ符号シーケンスを使用するマルチパスの例については、マルチパス チャネルにおけるマルチユーザー システムのカサミ拡散を参照してください。

さらに実験を行うため、モデルを開きます。設定を変更し、異なるパス遅延に対して、または個々のユーザーに異なる PN シーケンスを使用することでパフォーマンスがどのように変化するかを確認します。

端子

入力

すべて展開する

PN シーケンスを初期時間から遅延させる出力マスク。N 個の要素をもつバイナリ ベクトルとして指定します。N は生成多項式の次数です。

依存関係

この端子を有効にするには、[出力マスク ソース][入力端子] に設定します。

データ型: double | uint8 | ufix1

可変サイズ出力信号の出力サイズ。整数として指定します。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。

依存関係

この端子を有効にするには、[可変サイズの信号の出力] を選択し、[最大出力サイズ ソース][ダイアログ パラメーター] に設定します。

データ型: double

参照入力。最大および現在の出力シーケンス長を決定する列ベクトルとして指定します。Ref 入力は可変サイズ信号でなければなりません。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。

依存関係

この端子を有効にするには、[可変サイズの信号の出力] を選択し、[最大出力サイズ ソース][Inherit from reference input] に設定します。

データ型: double

シーケンス発生器のリセット。0 または 1 を指定します。詳細については、リセット動作を参照してください。

依存関係

この端子を有効にするには、[非ゼロの入力でリセットする] を選択します。

データ型: Boolean

出力

すべて展開する

PN シーケンス。バイナリ ベクトルとして返されます。出力のデータ型は、[出力データ型] によって指定されます。

パラメーター

すべて展開する

ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。

シフト レジスタのフィードバック接続を決定する生成多項式。次のいずれかのオプションとして指定します。

  • 定数項が 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 を表します。

シミュレーション開始時の PN シーケンス発生器のシフト レジスタの初期状態。バイナリ値行ベクトルとして指定します。ベクトルの長さは、[生成多項式] で指定される生成多項式の次数と等しくなければなりません。詳細については、単純なシフト レジスタ発生器および多項式の順序とシフト レジスタの方向を参照してください。

メモ

ブロックで非ゼロのシーケンスを生成するには、[初期状態] ベクトルに、非ゼロ要素が少なくとも 1 つ含まれていなければなりません。

出力マスク情報がブロックにどのように提供されるかを示す出力マスク ソース。次のいずれかとして指定します。

  • [Output mask vector (or scalar shift value)] パラメーター設定を使用するには [Dialog parameter]

  • Mask 入力端子を追加して使用するには [Input port]

出力マスク ベクトルまたはスカラー シフト値。整数スカラーまたは長さ N のバイナリ行ベクトルとして指定します。ここで、N は生成多項式の次数です。このパラメーターは、初期時間からの PN シーケンスの遅延を判断します。詳細については、PN シーケンスの開始点のシフトを参照してください。

依存関係

このパラメーターを有効にするには、[出力マスク ソース][ダイアログ パラメーター] に設定します。

シミュレーション中に可変長の出力シーケンスを有効にするには、このパラメーターを選択します。このパラメーターをオフにすると、ブロックは固定長のシーケンスを出力します。このパラメーターを選択すると、ブロックは可変長のシーケンスを出力できます。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。

正のスカラーは、出力信号の各サンプル間の時間を秒単位で指定します。[サンプル時間] を -1 に設定すると、出力信号は下流からサンプル時間を継承します。[サンプル時間] パラメーターと [フレームあたりのサンプル数] パラメーターの関係の詳細については、サンプル タイミングを参照してください。

例: 1 は 1 秒のサンプル時間を指定します。

依存関係

このパラメーターを有効にするには、[可変サイズの信号の出力] をオフにします。

出力信号の 1 チャネル内のフレームあたりのサンプル。正の整数として指定します。[サンプル時間][フレームあたりのサンプル数] の関係の詳細については、サンプル タイミングを参照してください。

依存関係

このパラメーターを有効にするには、[Output variable-size signals] をオフにします。

最大のシーケンス出力サイズの指定方法を選択します。

  • [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 列として指定されます。

依存関係

このパラメーターを有効にするには、[可変サイズの信号の出力] を選択し、[最大出力サイズ ソース][ダイアログ パラメーター] に設定します。

Rst 入力端子を追加にするには、このパラメーターを選択します。詳細については、リセット動作を参照してください。

[圧縮ビット数] および [ビットパックされた値を符号付きとして解釈] パラメーターを使用可能にするには、このパラメーターを選択します。

このパラメーターが選択されると、ブロックは (M×P) ビットを生成します。M[フレームあたりのサンプル数] パラメーターで指定されたフレームあたりのサンプル数です。P[圧縮ビット数] パラメーターで指定されたビットパックされたワードのサイズです。P ビットの各グループが整数にパックされます。その結果、M 個の要素を含む整数値の出力ベクトルが生成されます。出力のデータ型は、[出力データ型] によって指定されます。

メモ

整数表現の場合、P ビットの各グループの最上位ビットは MSB と見なされ、最下位ビットは LSB と見なされます。

圧縮ビットの数。範囲 [1, 32] の整数として指定します。

依存関係

このパラメーターを有効にするには、[ビットパックされた出力を有効にする] を選択します。

選択すると、ビットパックされた値が符号付き整数データ値として解釈され、オフにすると、符号なし整数データ値として解釈されます。選択されたときに、最上位ビット (符号ビット) の 1 は負の値を示します。

依存関係

このパラメーターを有効にするには、[ビットパックされた出力を有効にする] を選択します。

出力データ型。[double][boolean]、または [Smallest unsigned integer] として指定します。

  • [ビットパックされた出力を有効にする] をオフにした場合、出力データ型を doubleboolean または Smallest unsigned integer として指定できます。[Output data type] パラメーターを Smallest unsigned integer に設定した場合、出力のデータ型はモデルの [Configuration Parameters] ダイアログ ボックスの [Hardware Implementation] ペインで使用されている設定に基づいて選択されます。[Hardware Implementation] ペインで ASIC/FPGA が選択されている場合、出力データ型 ufix(1) が理想的な最小 1 ビット サイズになります。その他の選択肢を選んだ場合は、1 ビットに収まるうちで最小の語長となる符号なし整数とされ、通常は対応する文字のサイズとなります (たとえば、uint8)。

  • [ビットパックされた出力を有効にする] を選択した場合、出力データ型を double または Smallest unsigned integer として指定できます。[出力データ型] パラメーターが Smallest unsigned integer に設定されると、出力データ型は、[ビットパックされた値を符号付きとして解釈] パラメーターおよび [圧縮ビット数] パラメーターと、モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行] ペインで使用されている設定に基づいて選択されます。ASIC/FPGA[Hardware Implementation] ペインで選択されている場合、出力データ型は [Interpret bit-packed values as signed] パラメーターに基づいて sfix(n) または ufix(n) などの理想的な最小 n ビット サイズになります。他のすべての選択の場合、最も小さな利用可能なワード長が n ビットに十分収まる符号付きまたは符号なし整数になります。

ブロックの特性

データ型

Boolean | double | fixed point

多次元信号

なし

可変サイズの信号

あり

詳細

すべて展開する

参照

[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++ コードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する