今回はLTSPICEでI2C,UART,SPIシミュレーションを行う過程の記事「LTSPICEでI2C,UART,SPI等のシミュレーションをしてみた_モデル準備編」を紹介します
前回まで実際にラズベリーパイとI2C複数デバイスをつなげてアナライザを使って波形を見ていましたが、今回はLTSPICEでI2C等のシミュレーションを行う事前準備をしたいと思います。前回記事のリンクはこちらです
LTSPICEのモデルを用意するには
はい、いきなり最難関の項目ですね。LTSPICEでI2C,UART,SPIなど評価する際に一番難しいことは「モデルを用意する」ことに尽きると思います
LTSPICEのデフォルトではCPUやI2C,UART,SPIのEEPROM,センサ等は有りませんので自らモデルを用意するしかありません。
またLTSPICEに直接使えるCPU,I2Cデバイスの「SPICEモデル」はネットを探してもほとんど無いのが現状だと思います
しかしデバイスメーカはLTSPICEには直接は使えないですが「IBISモデル」を提供しているケースはよくあります。下記例はI2CのEEPROMの例です
そのため今回は「IBISモデル」⇒「SPICEモデル」に変換してLTSPICEでシミュレーションを行って行きたいと思います
IBISモデル⇒SPICEモデルの変換の仕方
この章に関しては詳細に書き出すとまとめきれないので今回は概要を記載しときます。(また詳細版は違う記事を起こしたいと思います)
※筆者もシミュレーションの専門家ではないので、あくまで個人的な遊びのシミュレーションということでお願いします
筆者が調べた中では2つほど変換ツールを見つけれました。
結論から言いますと今回は②の「IBIS-PSpice Converter Ver 3.0」を利用してIBISモデルからSPICEモデルを作ってみました
IBIS2SPICE
IBISの本家HPであるIBIS Open Forumにも記載がありました。ここのサイトはIBISの規格書などがあり勉強になると思います。下記のようにIBIS自体の構成など書いてあります
この中の「FREETools」紹介されているツールが下記のIBIS2SPCICEになります。
名前と電話番号アドレスなど適当に登録すれば使えてダウンロードできました
但し無料で公開されているのはIBIS_Ver1.1,2.1と大分古いようです。ソフトとしては1998年に作られたものが公開されているようです。(現在201805時点の最新IBISのVerは6.1ということです)
多分これでも単純なI/Oは変換できそうですが、他にないか他にも探してみました
IBIS-PSpice Converter Ver 3.0
ネットでも結構探していましたが「①以外の変換ツールが見つからない…」と思っていましたが以前買った2017年10月のトラ技の付録CDに載っていました!
その時の記事は下記リンク先からお願いします
付録のDVDにプリント基板開発のツールが沢山入っていました。
いざ開いてみるといきなりポップアップが出てきて
対応している形式としては「I/O」と「3-state」のみということですがIBIS Ver3.2まで対応しているということです。
現状のデバイスではよく見かけるのはIBIS Ver4.2ですが、まぁ「I/O」と「3-state」は昔からあるIOタイプだからなんとかなるでしょう(と適当な筆者な考えです。まぁプライベートのシミュレーションということで見逃してください)
作成されたのは2005年ですが北海道大学の吉川先生という方が作ってくれたようです。日本人が作成してくれて少なからず日本の注記も多少有り、①のツールより取っ掛かりやすかったです。
大変便利なツールを残していただき、吉川先生にはこの場を借りてお礼を申し上げます。
変換するIBISモデルを拾ってくる
今回はI2Cのマスター側となるCPU、スレーブ側のデバイスのIBISモデルを例にしてみました。どこからか拾ってくる必要がありましたのでネット上で探していきました。
CPUのIBISモデル
最初はラズベリーパイのCPU(Broadcom BCM2837等)のIBISモデルを使おうとしていましたがが見つからず…。
そのためI2CのIFを持っているCPUを適当に探します。IntelとかTIなどが登録無しにIBISモデルを簡単にダウンロードできるので、今回はTIの「AM3352」というものにしました。TIのリンク先はこちらからです。
ラズベリーパイのように小さいボードの「BeagleBone」で使われているCPUです。
上記をラズベリーパイの代わりに見立てて使いたいと思います。
※本来は筆者が持っている安いマイコン(MSP430)の軽いデータ量のIBISモデルを持って来ようと思ったのですが、無かったです。
TI掲示板見るとメーカ曰く、「もっと高速通信をするデバイスじゃないとIBISモデル要らないでしょ」という感じでした。掲示板リンク先はこちらから
I2Cのスレーブ側となるデバイスのIBISモデル
こちらに関しては以前から使っているEEPROMのIBISモデルがありました。リンク先はこちらから
EEPROMの詳細は下記となります。
SPICEモデル頑張って作ってみた
先ほどIBISモデルは手に入れたのでSPICEモデルを作っていきます
正直なところツール使ってのIBIS⇒SPICEモデル変換も一筋縄ではいきません。
特にCPU等は変換途中でエラーが沢山出ますので対応して狙ったモデルを変換するようにIBISモデルを弄る必要があります。
ここは地道な作業ですが、IBISファイルをテキストエディタを見つつ変換に必要・不要な箇所を修正していきましょう。
(特にCPUは細かい設定が多々あるので大変です)。まずは変換したいピンのモデル名を見て原因を追っていきます
今回はモデルに細かな設定があったのでツールが変換できなかった様子です
必要ない細かい設定名はツールが迷わないように一旦削除してしまいましょう
他に細かい修正した箇所もあるのですが、何とか変換することができました。
(また細かい修正などは別記事にしたいと考えています)
同様にデバイス側EEPROMのSPICEモデルも作っていきます。
EEPROM側は細かな設定が無いのでCPUよりはSPICEモデル作るのは楽だと思います
SPICEモデルをLTSPICEで使えるように整える
送信側のモデル
ようやくSPICEモデルが入手できたのでこれをLTSPICEで使えるようにサブサーキット化します。作ったSPICEモデルの中身を確認し、接続に対応させてサブサーキットのファイルを作成してあげます。
今回はIBIS-PSpice Converter Ver 3.0のツールを使いましたので、そちらの出力形式に合わせてサブサーキットを作りますと「1_IN,2_OUT,3_VCC,4_VSS」ですので下記のような形作ってみました。
これが実際どういうモデルのかというと、そもそもIBISモデルの構造から説明する必要があるのですが詳細は省略します。(「IBISモデル」でググれば簡単にでてきますので…)。
筆者が考えているイメージとしては下記です。作ったサブサーキットに作ったSPICEモデルをリンクさせることができました。
これで送信側(ドライバ・マスター)のモデルが作成完了しました。
受信側のモデル
受信側のIBISモデルに対しては、どこまで作りこむというのがあるのですが今回は簡単に「パッケージのRCL成分」と「パッドまたはダイの容量成分C_comp」だけ入れて終わりにしたいと思います。
イメージとしては下記イメージです
もしかしたら本来はこちらのリンク先の「レシーバモデル」のように電源・GNDも作って上記橙色のクランプダイオード分まで入れこむ必要があるかもしれませんが手間なので省略します。
そのためIBISモデルを必要情報を引っ張ってきましょうIBISモデルの一番最初に出てきます。今回はTyp値を使います
まずは送信側同様に受信側のサブサーキットを作ります。今回は「1_Pin,2_Die,3_Vss」と作ってみました。
ライブラリをテキストで作ってあげます。
下記のように何時ものブロック図で書いてもらっても結構です。特にRCLだけですので、ここらへんは好きに作ってもらっていいと思います
あとはサブサーキットに作ったSPICEモデルをリンクさせてあげます。これで完成です
まとめ・感想
これにてシミュレーションで使える送信側と受信側のモデルが用意できました。今回はI2Cのモデルを用意しましたが、同様にUART、SPI等のIFのモデルが作成できます。
モデルの妥当性が怪しい箇所があると思いますが、個人的にIFのシミュレーションをして動作確認程度ならばこれで十分かと思います。
次回は作ったモデルが本当にICのスペック通り機能しているのか妥当性を確認しています。
<<20180721追記>>
作成したSPICEモデルのDC特性を検証した記事をアップしました。「IBISモデルから作ったSPICEモデルのDC特性を検証してみた_モデル検証編」
今日はここまでにしたいと思いますどうもありがとうございました
ラズベリーパイで簡単にI2C通信ができます。
EEPROMの詳細は下記となります。
コメント