ノイズ試験におけるEMI(エミッション)で問題になることがあるデジタル回路の高調波について解説します。
- 矩形波の周波数成分と包絡線
- 共振によるノイズ、EMI対策部品での対策
- LTspiceでのFFT波形確認
の3つに分けて解説します。この記事は「共振によるノイズ、EMI対策部品での対策」です。
目次
- 1. この記事について
- 2. シミュレーション一覧
- 2-1. 矩形波の周波数成分と包絡線
- 2-2. 基板上の共振による影響
- 3. 矩形波の周波数成分と包絡線
- 3-1. 矩形波の高調波
- 3-2. 矩形波の高調波(デューティ比変更)
- 3-3. LPFを通して高調波を除去
- 3-4. 正弦波の重ね合わせ
- 3-5. 台形波(形状のみ)
- 3-6. 台形波のスペクトラム
- 4. 基板上の共振による影響
- 4-1. リンギング波形
- 4-2. 立ち上がり時間変更時のリンギング波形
- 4-3. フェライトビーズ挿入による対策
- 5. LTspiceで使用した設定とコマンド
- 5-1. トランジェント解析
- 5-2. AC解析 (周波数特性)
- 5-3. データの圧縮を禁止
- 5-4. データの桁数を変更
- 5-5. フーリエ変換
- 5-6. パラメータ(変数)使用
- 5-7. シミュレーションモデルの取り込み
- 5-8. 電圧源の設定:矩形波(台形波)出力
- 5-9. FFTの表示
- 6. GitHubソースコードのダウンロード方法
この記事について
1つ目の包絡線の記事と2つ目の共振の記事で実施したシミュレーション回路図へのリンクと、シミュレーションの簡単な説明をしています。
使用したLTspiceコマンドについては、ページ内の「使用したコマンドのまとめ」をご覧ください。
LTspiceはアナログデバイセズが提供している回路シミュレータです。下記リンクからダウンロードできます。フリーで使用できます。
LTspice®は高性能なSpiceシミュレーション・ソフトウェアで、回路図入力、波形ビューワに改善を加え、スイッチング・レギュレータのシミュレーションを容易にするためのモデルを搭載しています。LTspiceとアナログ・デバイセズの多くのスイッチング・レギュレータとアンプに対応するマクロモデル、そして一般的な回路シミュレーションのためのデバイスライブラリをここからダウンロードできます。
シミュレーション一覧
矩形波の周波数成分と包絡線 (GitHubへ)
基板上の共振による影響 (GitHubへ)
矩形波の周波数成分と包絡線
ここでは、基板や素子の影響を考慮せず、抵抗負荷を使用しています。
矩形波の高調波


- 電圧源(Voltage)のファンクションでPULSEを選択して、矩形波を出力しています。
- フーリエ変換後の高調波のレベルを数値で取得するために、.fourコマンドを使用しています。
矩形波の高調波(デューティ比変更)


- PULSE設定のON時間を調整するとデューティ比を変えられます。
LPFを通して高調波を除去
LPF挿入前


LPF挿入後


- フィルタの形態と定数はカットアンドトライで適当に合わせています。
LPFの伝達関数


- AC解析でフィルタの周波数特性を表示しました。
正弦波の重ね合わせ


- オペアンプを使った加算器で信号を合成しています。
- 合成したい信号に合わせて、配線をカットしたりつないだりしてシミュレーションをしました。
台形波(形状のみ)


harmonic_05_trapezoidal_wave_shape.asc
- 説明用の台形波を出力するために作った回路です。
台形波のスペクトラム


harmonic_06_trapezoidal_wave.asc
- パルス幅による高調波の減衰と、立ち上がり時間による高調波の減衰が見るようにパラメータを調整しました。
基板上の共振による影響
ここからは容量負荷に変わります。
リンギング波形


- 基板の寄生成分および負荷容量によるリンギングを再現しました。
- ざっくりと次のように寄生成分を追加しています。
- R: 1mΩ/cm
- L: 10nH/cm
- C: 5pF/cm
立ち上がり時間変更時のリンギング波形


- 2種類の立ち上がり(立ち下がり)時間を.listコマンドで自動的に切り替えてシミュレーションをします。
- PULSEパラメータの「Trise」と「Tfall」の時間が変わるとON時間も調整が必要なので、ON時間もパラメータにしています。
フェライトビーズ挿入による対策
フェライトビーズの効果が見えやすいように、負荷容量を調整しました。
フェライトビーズ追加前の波形


resonance_03_ferrite_beads.asc
フェライトビーズ追加後の波形


resonance_04_no_ferrite_beads.asc
- 村田製作所製のフェライトビーズ BLM18RK601SN1 を使いました。
- メーカーからSPICEモデルが提供されているので、使わせていただきました。
- 外部モデルの使用方法は使用したコマンドの章で簡単に説明しています。
LTspiceで使用した設定とコマンド
トランジェント解析
.tran 0 2u 0 1p
過渡解析のコマンドです。GUIで設定できます。
Maximum Timestepを解析したい信号の周期の1/100程度にするのがポイントです。
AC解析 (周波数特性)
.ac oct 100 1meg 1G
周波数特性の解析ができます。GUIで設定できます。
- Type of sweep: スイープする感覚
- Octave: 2倍間隔
- Decade: 10倍間隔
- Linear: 等間隔
- List: 指定した周波数
- Number of points: 解析のステップ数
- Start frequency: 開始周波数
- Stop frequency: 終了周波数
データの圧縮を禁止
.options plotwinsize=0
データの圧縮を禁止します。FFTでフロアノイズが下がったり、スプリアスが減ります。
データの桁数を変更
.options numdgt=15
データの桁数を設定します(上記の場合は15桁)。圧縮禁止と同様に、FFTの精度が向上します。
フーリエ変換
.four 10Meg 7 1 V(OSC)
フーリエ変換を実行します。
後ほど紹介する「FFTの表示」との違いは、コマンド使用の場合は高調波のレベルを数値で取得できることです。
引数は前から順に
- 基本波の周波数
- 基本波を含めて何次の周波数まで解析するか
→ 省略した場合はデフォルトの9次まで解析する。 - シミュレーション終了からさかのぼって何周期分の波形をフーリエ変換するか
→ 省略すると1周期分、「-1」とすると過渡解析の全期間分となる。 - 測定したいノード
→ 複数ある場合は、スペース区切りで列挙する。
パラメータ(変数)使用
パラメータ(変数)を追加
PULSE(0 1 0 {tr} {tr} {ton} {cycle})
{ }で文字を囲むと、変数にすることができます。
この例ではPULSE電源の一部をパラメータにしていますが、抵抗値なども同様に変数を指定できます。
パラメータ(変数)に値を代入
.param cycle=100n ton=cycle/2-tr
変数に指定した文字列に対して、値を代入します。
スペースで区切って複数の変数に値を代入したり、計算式も使えます。
ステップ
.step param tr list 1n 10n
.stepコマンドを使うと、自動的に値を変えながらシミュレーションを実行できます。
上の例では、変数に代入する値として「1n」と「10n」をリストで指定しています。3つ以上指定することも可能です。
ほかにも方法があって、.step param trのあとに、[開始値] [終了値] [ステップ]という形で代入する値の範囲を指定することができます。
シミュレーションモデルの取り込み
外部モデルを使用するためには2つのステップがあります。
- .includeコマンドでファイルをインクルードする
- 回路図上で、シンボルとモデルを関連付ける
SPICEモデルのインクルード
.include BLM18RK601SN1.mod
ダウンロードしてきたSPICEシミュレーションモデルファイルを指定します。
回路図(ネットリスト)ファイルからの相対パスで記述します。回路図と同じフォルダに置いてある場合は上の例の通りでOKです。
SPICEモデルの関連付け
ここではフェライトビーズを使用するため、通常のインダクタ(L)のシンボルを使用しています。
- コントロール(Ctrl)キーを押しながら対象のシンボルを右クリックします
→ 下図のウィンドウが現れます - PrefixをXに変更します
- ValueをSPICEモデルの名前に変更します
- OKをクリックしてウィンドウを閉じます

電圧源の設定:矩形波(台形波)出力
PULSE(0 1 0 15n 15n 35n 100n)
電圧源からのPULSE出力のパラメータは次のとおりです。
- Vinitial[V]: 初期電圧
- Von[V]: ON時の電圧
- Tdelay[s]: 電圧変化が始まるまでの時間
- Trise[s]: 立ち上がり時間
- Tfall[s]: 立ち下がり時間
- Ton[s]: ONの時間 (立ち上がり完了から立ち下がり開始までの時間)
- Tperiod[s]: 周期
- Ncycles: 繰り返し回数 (0か空白なら無限に繰り返し)
回路図に表示されているPULSE(0 1 0 15n 15n 35n 100n)は上記のパラメータがスペース区切りで列挙されています。テキストを右クリックすると直接編集できます。
FFTの表示
FFT波形の表示方法をメモしておきます。
- 波形ウィンドウで右クリック
- View → FFT (画像1枚目)
- FFT解析したい信号を選択、オプションは適当に調整(デフォルトでも問題ないことが多い)してOKをクリック (複数選択可) (画像2枚目)
- 解析対象を複数選択した場合は表示する信号を選択するウィンドウが出るので、信号を選択 (表示も複数選択可)
- 周波数領域での波形表示


GitHubソースコードのダウンロード方法
別記事に書きます。(2020/4/4 公開予定)
コメントを残す