TNJ-012:SPICEの伝送線路モデルを使って遅延信号を作ってみる
2014年10月10日公開
はじめに
とあるところで、複数の遅延した信号同士が足し算されたようすを示す必要性(どうやら「マルチパス」というものの例を示したかったらしい…)があったため、ちょっとADIsimPE(ADI simulator Personal Edition; 新しいアナログ・デバイセズのSPICEツール)を使って作ってみました。その結果をご紹介します。なおこのツールはSIMetrixベースなのでSIMetrixでも同じシミュレーションを実行できます。
伝送線路モデルで遅延信号を作る
「さて、どうやって遅延した信号を作るか?」ですが、SPICEでは「伝送線路」(Transmission Line)というモデルで遅延した信号を作ることができます。
ADIsimPEではロス有り、ロス無し(ロスレス。抵抗成分による減衰が無い)伝送線路の解析は簡単にできます。ADIsimPEの回路入力画面の左側にあるリンク、Searchをクリックして、以下の図1のSearchボックスにTransmission(もしくはその途中まで)と入力すると、伝送線路モデルを選ぶことができます。ロス有りの伝送線路(Lossy Transmission Line)もうまく使えれば大変うれしいことですが、とはいっても、今回のこの目的(信号遅延を発生させるだけ)であれば、このロスレスのモデルでも十分に対応ができます。

図1.Searchボックスで見つけられる伝送線路モデル
一番簡単な回路でまず実験してみる
ちゃんと動くかどうかの確認を、図2のような一番簡単な回路にして、シミュレーションしてみました。この回路は基本的な動作を確認してみるもので、目的の遅延時間が得られるかどうかがポイントです(というよりそれだけが目的)。信号源は5Vデジタル信号(CLK)+ 50Ωの出力インピーダンス、負荷側は120Ωを接続してあり、これで反射係数はΓ = 0.41になります。
信号源のクロックは矩形波5Vとし、CLK周波数は2.5kHz(周期400us)、伝送線路は50Ωで遅延時間50usです。
これでシミュレーションしてみた結果が図3です。緑が入力(P1)で、赤が出力(P2)です。緑のように伝送線路の入力側の波形が最初2.5Vまで立ち上って、50usの時間後に出力の赤が変化していることがわかります。
さらに反射係数が0.41なので、緑の入力側が2.5 + (2.5×0.41) = 3.525Vにステップ状に(50us + 50us = 100usのタイミングで)変化するようすが得られます。このように50Ω伝送路をSPICEで実現できることがわかりました。
なおADIsimPEでは、矩形波信号源となるものはVoltage Waveform Generatorと、このUniversal Sourceが利用できます。Voltage Waveform Generatorモデルについてはrise/fall時間がデフォルトでは500nsになっています。そのため、より高速な時間変動をシミュレーションする場合には、図4で示すUniversal Sourceの「立ち上り時間 Rise」と「立ち下り時間 Fall」のパラメータを変更してください。ここでは10psに設定してあります。


図3. 一番簡単な回路でのシミュレーション結果

図4. 高速でシミュレーションする際はCLOCK_VOLTAGEの立ち上り時間と立ち下り時間を設定する
ネットリストで表すとどうなる?
ところでこれをSPICEネットリストでは、以下のように表すことができます。
T1 2 0 3 0 Z0=50 TD=50us
T1は伝送線路機能自体(頭文字のT)とそのモデル名、2は入力ポート、3は出力ポート(入出力は双方向なので入/出は意識することはない)、2個の0はグラウンドのポートになります。Z0は伝送線路の特性インピーダンス、TDは線路の遅延時間です。
[Tx] [InPort] [InPort] [InGnd] [OutPort] [OutGnd] [Z0] [PropagationTime] という文法です。ここでは、[InPort] = 2、[OutPort] = 3と(仮に)してあります。これは大体10kmの同軸ケーブルに相当します(波長短縮率を66%と考えて。真空での位相速度/光速なら15kmに相当)。

図5.7 path遅延モデルのSPICEシミュレーション回路
実際の遅延モデルを作ってみる
この伝送路をシミュレーション上で作りたかったのは、複数の伝送遅延路を作りたかったからでありました。最終的なシミュレーション回路では7経路(7 pathと言う)の遅延波形を合成したいというところです。またそれぞれの遅延系(6経路)には加算係数をつけてあります。それぞれのパラメータを以下に示します。
T1 TD=100us × -0.3
T2 TD=200us × 0.2
T3 TD=500us × -0.1
T4 TD=600us × 0.05
T5 TD=700us × -0.05
T6 TD=800us × -0.2
この回路ではU1にてV1のランダム・ノイズをラッチすることで2.5kbpsのランダム・パターンを発生させ、LAP1をバッファとしたサレンキー・フィルタでその信号を波形整形します。電圧源V4で信号を-2.5Vオフセットさせて、LAP1の出力が0Vを中心にスイングするようにしてあります。
LAP1出力には伝送線路の信号源抵抗に相当する50Ωを接続してありませんが、これはそれぞれの伝送線路の出力側でそれぞれ終端してあるので(反射が無いので)、省いてあります。
合成の部分は電流出力モデルを使用
合成の部分ですが、それぞれの50Ω伝送路は50Ωで終端整合させないといけないので、これをそれぞれLaplace Transfer Functionの出力を電流出力にして、これらを直結とLAP2~LAP7の計7経路を束ね合せて1Ωの抵抗に流入させます。なおVCCSモデルで変換することもできます。
こうすれば(電流出力なので)シミュレーション上で簡単に信号合成ができるわけですね。

図6.遅延が合成された状態のシミュレーション結果
図6は「遅延なし(×1倍)+ Σ(LAP1~LAP6)」として全体を合成してみた結果です。ビットレートは2.5kbpsです。なお繰り返しますが、50Ωの抵抗で各伝送線路を終端しているので、反射なく(伝送遅延だけの)信号を得ることができています。
図中で一番上が2.5kbps相当のクロック波形で、真ん中のふたつがLAP1の入力と出力である単一経路相当(T0だけの伝送路)の波形、いちばん下が複数(7 path)の伝送遅延路を通して得られた波形です。
アイパターン表示は別のツールを利用
最終的には1 UI(Unit Interval; 1ビット相当の時間)に相当するアイパターンを作りたかったのですが、その図はADIsimPEやSIMetrix Introだけでは作ることはできません。
そこでNI Multisimを今回は使って
そこでこの図の作成はNI Multisimの力を借りることになりました。同じ回路を作って、そのシミュレーションで得られた波形データをGrapherから
ツール > Excelにエクスポート
という機能を使って、Excelファイルとして落として、それを必要な部分だけをコピー&ペーストしてテキストファイルとし、MATLABに読み込ませます。さらにSPICEシミュレーションではタイムポイントが一定ではないため、MATLABのinterp1()関数で一定時間にリサンプルし、同じくeyediagram()で表示させてみました。
図7と図8はこれにより得た波形です。図7はLAP1相当の出力として単一経路相当の(伝送遅延路を通さない)波形(図6の真ん中の2波形に相当)、図8は複数(7 path)の伝送遅延路を通して得られた波形(図6の下に相当)です。

図7. LAP1の出力として単一経路相当の(伝送遅延路を通さない)波形(図6の真ん中の2波形に相当)
図8. 複数(7 path)の伝送遅延路を通して得られた波形(図6の下に相当)
伝送線路のSPICEネット表記についてなど
SPICEでの伝送線路ブロックのネットリスト上の表記は先に示したとおりですが、このように表記もすることができます。
T1 2 0 3 0 Z0=50 F=1kHz NL=0.2m
ここで[Txxは伝送線路機能名] [InPort] [InGnd] [OutPort] [OutGnd] [Z0] [Frequency] [Normalized Electrical Length]という文法です。F [Frequency]は伝送線路に通すと仮定する周波数、NL [Normalized Electrical Length]はその周波数での「波長で規格化」した電気長(波長短縮率も考慮した長さ)です。NLはデフォルトでは0.25、つまり1/4波長となります。結局は
TD = NL/F
という関係になっているだけで、TDと同じことを表しています。ADIsimPEではTDで指定します。なおNI Multisimでは、TDを指定するものがLOSSLESS_LINE_TYPE1に相当し、FとNLを指定するものがLOSSLESS_LINE_TYPE2に相当します。
ロスレス伝送線路の基本モデルのご紹介
またおまけですが、SPICEでのロスレス伝送線路を表現している基本モデルを図9にご紹介しておきます。この基本モデルを見てみると、「グラウンド側」という明確な規定がされていません。なぜSPICEツールの伝送線路モデルが図2で示したような4端子の図形になっているのかが分かるかと思います。

著者について
デジタル回路(FPGAやASIC)からアナログ、高周波回路まで多...
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}