エンジニアの電気屋さん

現役エンジニアが電気のトピックについて現物交えてご紹介します。

どうもミソジです。
今回はLTSPICEでI2C,UART,SPIシミュレーションを行う過程の記事LTSPICEでI2C,UART,SPI等のシミュレーションをしてみた_モデル準備編」を紹介します

前回まで実際にラズベリーパイとI2C複数デバイスをつなげてアナライザを使って波形を見ていましたが、今回はLTSPICEでI2C等のシミュレーションを行う事前準備をしたいと思います。

前回記事のリンクはこちらです
sP_20180401_135924.jpg


目次
1.LTSPICEのI2Cのモデルを用意するには
2.IBISモデル⇒SPICEモデルの変換の仕方
3.変換するIBISモデルを拾ってくる
4.SPICEモデル頑張って作ってみた
5.SPICEモデルをLTSPICEで使えるように整える
6.まとめ・感想


1.LTSPICEのモデルを用意するには

はい、いきなり最難関の項目ですね。
LTSPICEでI2C,UART,SPIなど評価する際に一番難しいことと言えば「モデルを用意する」ことに尽きると思います

LTSPICEのデフォルトではCPUやI2C,UART,SPIのEEPROM,センサ等は有りませんので自らモデルを用意するしかありません。

またLTSPCIEに直接使えるCPU,I2Cデバイスの「SPICEモデル」はネットを探してもほとんど無いのが現状だと思います
i2c100.PNG


しかしデバイスメーカはLTSPICEには直接は使えないですが「IBISモデル」を提供しているケースはよくあります。下記例はI2CのEEPROMの例です
i2c112.PNG


そのため今回は「IBISモデル」⇒「SPICEモデル」に変換してLTSPICEでシミュレーションを行って行きたいと思います

2.IBISモデル⇒SPICEモデルの変換の仕方
この章に関しては詳細に書き出すとまとめきれないので今回は概要を記載しときます。(また詳細版は違う記事を起こしたいと思います)

※筆者もシミュレーションの専門家ではないので、あくまで個人的な遊びのシミュレーションということでお願いします

筆者が調べた中では2つほど変換ツールを見つけれました。

結論から言いますと今回は②の「IBIS-PSpice Converter Ver 3.0」を利用してIBISモデルからSPICEモデルを作ってみました

①IBIS2SPICE
IBISの本家HPであるIBIS Open Forumにも記載がありました。ここのサイトはIBISの規格書などがあり勉強になると思います。下記のようにIBIS自体の構成など書いてあります
ibis2.PNG

この中の「FREETools」紹介されているツールが下記のIBIS2SPCICEになります。
名前と電話番号アドレスなど適当に登録すれば使えてダウンロードできました

但し無料で公開されているのはIBIS_Ver1.1,2.1と大分古いようですソフトとしては1998年に作られたものが公開されているようです。(現在201805時点の最新IBISのVerは6.1ということです)
ibis1.PNG

多分これでも単純なI/Oは変換できそうですが、他にないか他にも探してみました

IBIS-PSpice Converter Ver 3.0
ネットでも結構探していましたが「①以外の変換ツールが見つからない…」と思っていましたが以前買った2017年10月のトラ技の付録CDに載っていました!その時の記事はこちらから
sP_20171002_043323.jpg

付録のDVDにプリント基板開発のツールが沢山入っていました。


いざ開いてみるといきなりポップアップが出てきて
ibis4.PNG

対応している形式としては「I/O」「3-state」のみということですがIBIS Ver3.2まで対応しているということです。

現状のデバイスではよく見かけるのはIBIS Ver4.2ですが、まぁ「I/O」と「3-state」は昔からあるIOタイプだからなんとかなるでしょう(と適当な筆者な考えです。まぁプライベートのシミュレーションということで見逃してください)

ibis5.PNG

作成されたのは2005年ですが北海道大学の吉川先生という方が作ってくれたようです。

日本人が作成してくれて少なからず日本の注記も多少有り、①のツールより取っ掛かりやすかったです。

大変便利なツールを残していただき、吉川先生にはこの場を借りてお礼を申し上げます。


3.変換するIBISモデルを拾ってくる

今回はI2Cのマスター側となるCPU、スレーブ側のデバイスのIBISモデルを例にしてみました。どこからか拾ってくる必要がありましたのでネット上で探していきました。

(1)CPUのIBISモデル
最初はラズベリーパイのCPU(Broadcom BCM2837等)のIBISモデルを使おうとしていましたがが見つからず…。
sP_20180512_095551.jpg

そのためI2CのIFを持っているCPUを適当に探します。IntelとかTIなどが登録無しにIBISモデルを簡単にダウンロードできるので、今回はTIの「AM3352」というものにしました。TIのリンク先はこちらからです。

ラズベリーパイのように小さいボードの「BeagleBone」で使われているCPUです。



上記をラズベリーパイの代わりに見立てて使いたいと思います。
Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品
Raspberry Pi
2016-02-29




※本来は筆者が持っている安いマイコン(MSP430)の軽いデータ量のIBISモデルを持って来ようと思ったのですが、無かったです。
sP_20180512_092731.jpg
TI掲示板見るとメーカ曰く、「もっと高速通信をするデバイスじゃないとIBISモデル要らないでしょ」という感じでした。掲示板リンク先はこちらから


(2)I2Cのスレーブ側となるデバイスのIBISモデル

こちらに関しては以前から使っているEEPROMのIBISモデルがありました。リンク先はこちらから
ibis6.PNG
EEPROMの詳細は下記となります。
EasyWordMall AT24C256 I2C インターフェースEEPROMメモリモジュール
Apple Trees E-commerce co., LT






「スポンサーリンク」



4.SPICEモデル頑張って作ってみた
先ほどIBISモデルは手に入れたのでSPICEモデルを作っていきます
正直なところツール使ってのIBIS⇒SPICEモデル変換も一筋縄ではいきません

特にCPU等は変換途中でエラーが沢山出ますので対応して狙ったモデルを変換するようにIBISモデルを弄る必要があります。
ibis7.PNG
ここは地道な作業ですが、IBISファイルをテキストエディタを見つつ変換に必要・不要な箇所を修正していきましょう

(特にCPUは細かい設定が多々あるので大変です)。まずは変換したいピンのモデル名を見て原因を追っていきます
i2c37.PNG

今回はモデルに細かな設定があったのでツールが変換できなかった様子です
必要ない細かい設定名はツールが迷わないように一旦削除してしまいましょう
i2c38.PNG

他に細かい修正した箇所もあるのですが、何とか変換することができました。
(また細かい修正などは別記事にしたいと考えています)
ibis8.PNG

同様にデバイス側EEPROMのSPICEモデルも作っていきます。
EEPROM側は細かな設定が無いのでCPUよりはSPICEモデル作るのは楽だと思います


5.SPICEモデルをLTSPICEで使えるように整える
(1)送信側のモデル
ようやくSPICEモデルが入手できたのでこれをLTSPICEで使えるようにサブサーキット化します。
作ったSPICEモデルの中身を確認し、接続に対応させてサブサーキットのファイルを作成してあげます。
i2c25.PNG

今回はIBIS-PSpice Converter Ver 3.0のツールを使いましたので、そちらの出力形式に合わせてサブサーキットを作りますと「1_IN,2_OUT,3_VCC,4_VSS」ですので下記のような形作ってみました。
i2c20.PNG

これが実際どういうモデルのかというと、そもそもIBISモデルの構造から説明する必要があるのですが詳細は省略します。(「IBISモデル」でググれば簡単にでてきますので…)。
筆者が考えているイメージとしては下記です。
ibis11.PNG  

作ったサブサーキットに作ったSPICEモデルをリンクさせてあげます
ibis10.PNG

これで送信側(ドライバ・マスター)のモデルが作成完了しました。

(2)受信側のIBISモデル
受信側のIBISモデルに対しては、どこまで作りこむというのがあるのですが今回は簡単に「パッケージのRCL成分」と「パッドまたはダイの容量成分C_comp」だけ入れて終わりにしたいと思います。
イメージとしては下記イメージです
ibis12.PNG
もしかしたら本来はこちらのリンク先の「レシーバモデル」のように電源・GNDも作って上記橙色のクランプダイオード分まで入れこむ必要があるかもしれませんが手間なので省略します。

そのためIBISモデルを必要情報を引っ張ってきましょう

IBISモデルの一番最初に出てきます。今回はTyp値を使います
ibis13.PNG


まずは送信側同様に受信側のサブサーキットを作ります。今回は「1_Pin,2_Die,3_Vss」と作ってみました。
ibis14.PNG

ライブラリをテキストで作ってあげます。
ibis15.PNG

下記のように何時ものブロック図で書いてもらっても結構です
特にRCLだけですので、ここらへんは好きに作ってもらっていいと思います
ibis16.PNG

あとはサブサーキットに作ったSPICEモデルをリンクさせてあげます。これで完成です
ibis17.PNG



「スポンサーリンク」

6.まとめ・感想
これにてシミュレーションで使える送信側と受信側のモデルが用意できました。
今回はI2Cのモデルを用意しましたが、同様にUART、SPI等のIFのモデルが作成できます。

モデルの妥当性が怪しい箇所があると思いますが、個人的にIFのシミュレーションをして動作確認程度ならばこれで十分かと思います。

次回は作ったモデルが本当にICのスペック通り機能しているのか妥当性を確認しています。

<<20180721追記>>
作成したSPICEモデルのDC特性を検証した記事をアップしました。

IBISモデルから作ったSPICEモデルのDC特性を検証してみた_モデル検証編
リンク先はこちらからです
ibis23.PNG



今日はここまでにしたいと思います
どうもありがとうございました


ラズベリーパイで簡単にI2C通信ができます。

EEPROMの詳細は下記となります。

どうもミソジです。
今回は社会人のための自己啓発の記事として「社会人としての必要な力が付く!気軽に読めるおススメ雑誌を紹介します

まだ社会人歴10年も達していない筆者ですが、新人・若手~現在の中堅までに「やっておいてよかった」ことの一環を紹介してきたいと思います

目次
1.社会人として必要な力とは?
2.(社会人としての)力がある人とは?
3.(社会人としての)力がある人に聞いてみた
4.理解することをやめない
5.とは言っても、仕事中に全て理解するのは難しい
6.通勤・休みの隙間時間に落ち着いて理解してみる
7.考えるツールとして本・雑誌を使ってみる
8.おススメ雑誌「日経ビジネスアソシエ」
9.スマホ・タブレットで隙間時間に見れる
10.Kindle Unlimitedならば1年分まとめて読める
11.まとめ・感想

1.社会人として必要な力とは?
figure_question
はい、
正直なところ筆者もまだよく分かっていません。(そんな中でこんな記事作成して、申し訳ないです…)

そもそも本当に社会人に求められる力とは何なのでしょうか?「コミュ力」?「協調性」?「プレゼンテーション力」?と挙げていけばいくらでもあると思います…。


まぁ正直なところ「社会人として必要な力」を社会人全員が身につけていれば…
「会議・打ち合わせで議論の内容が脱線する」、
「チーム内の方向性が定まっておらずプロジェクトの後戻りが発生する」

よく
ありがちな失敗例が綺麗に無くなると思います。


しかし、筆者の会社の職場を見ても(筆者含めて)よく失敗しています。どこの職場を見てもそうではないでしょうか?

「社会人として必要な力」が十分にある人は少なく、また逆に数少ないですがしっかり理解している人が
職場でのエース・中枢のメンバーになっているのが現状と思います。

2.(社会人としての)力がある人とは?
business_tayoreru_man (1)
では力がある人とは誰になるかというと、多くの人だと「上司」になるケースが多いのではないでしょうか。(上司が無能・できない方はごめんなさい…)

やはり筆者の上司を見ても、「人に指示するときの説明」「開発・企画打ち合わせ時の発言」と何をさせても上手いです。

悔しいですが筆者と比べて上司は「社会人としての底力」が圧倒的に上です。(まぁ、たまに要らないカチンとくる一言・指摘があるのはご愛嬌だと思いますが)

限られた人材・予算でチーム・部署を回して無理と呼べるような納期を順守して、さらに頭の固い「上の上の上司」どもを納得させる仕事を何十年もやっているので上司はそこらの社員とは経験値が違います。



「スポンサーリンク」

3.(社会人としての)力がある人に聞いてみた
筆者はエンジニアで設計・開発して終わりではなく、その結果を他人(上司)に承認をもらって初めて成果になります。承認をもらう場が会議(レビュー)・打ち合わせの場になるケースが多いです。

そのとき、たまに(筆者もですが)会議で全くよく分からない説明する奴がいます。(まぁエンジニアなんて説明が難しくなるのは仕方がないといえば仕方がないのですが…)。

こういう場は本当に眠くなります。
kaigi_inemuri

しかしチームのほとんどが「???」となる中、上司だけは説明内容を「的確に理解」して「的確に指摘」します。経験値の差もあるはずですが、上司も初めて聞く説明ですので条件は同じなのに「なぜこんなに差が付く」のか一度直接聞きました。そしたら・・・上司のコメントは

「理解しようとしているから」そして「分からない箇所あったら、そこで止めて聞くから」と単純の答えでした。


4.理解することをやめない
まぁ後者の「分からない箇所があったら、そこで止めて聞く」は上司特権だと思います。
全員がそれをしていたら会議・打ち合わせが進まなくなります。

※新人の皆様は分からない箇所がありましたらメモして後でググるなりして調べて、そして自分で考えて分からない箇所のみを先輩・上司に聞いた方がいいでしょう。

(都度聞いていたら先輩・上司に煙たがられるので注意しましょう。というか上記行動をとれる新人は大体優秀な奴が多いです。)

やはり重要な「社会人としての必要な力」のベースになるのは「理解すること」に尽きます。

分からなかったことを一つ一つ自分の腹に落とし込んでいくことで、社会人としての力が徐々に備わっていくのでは?と考えています
kangaeruhito



5.とは言っても、仕事中に全て理解するのは難しい
「何当たり前のこと言ってるんだ?」と思われる方も多いと思いますが、意外にこれが難しいです。社会人となると1日の仕事量が圧倒的なタスクとなり自分が理解しようとしなくても、次々に仕事をこなす必要があります。
isogashii_hakui_man

例えば下記のような例です

・プレゼンするにも内容を理解して(考えて)説明するのとしないのでは聞き手の分かりやすさに大きな差がでます。

・会議の内容は考えて聞かず、「ぼーっと聞いているだけ or 他事(内職)をしている」では何も理解できませんし、適切な指摘もできません。

しかし特に新人・若手の頃は雑務も多く、すべてのことを一から理解している暇もなく1日が終わってしまうと思います

6.通勤・休みの隙間時間に落ち着いて理解してみる
となると何時理解すればいいのか?という話になりますが、ほんの15分だけでもいいので通勤・休み等に時間を作るのが一番かと筆者は思います。
yoga_meisou_man
仕事中は「意味が分からん?」と思っていたことも、仕事外にリラックスして気楽に考えてみることで意外に「すっと腹に落ちる」時が良くあります。やはり仕事中ですと1分1秒に追われていますので落ち着いて理解することが難しいです。

貴重な休日の1日全てを使う必要はありません。(むしろそう意気込むとだいたい失敗します)。僅かな時間でも「今週を振り返る・次週に繋げる」時間を作るのが重要だと思います


7.考えるツールとして本・雑誌を使ってみる
book_hirameki_keihatsu_man
分からなかったことを理解するにあたって、いきなり土日に考え始めても大分苦しいかと思います。
(多分考えて5分ぐらいで大体脱線・あきらめているかと思います)

ではどうするかというと、一番な簡単の方法は「本・雑誌」を使うことですね。

現在分からないことに関する本・参考書があれば一番ベストだと思いますが、それに少しでも関連することであれば何でも構わないと思います。(本当に困っていることならば、なかなかピンポイントで解決する本・参考書がなかなか無いです)

「本・雑誌」はあくまでツールであり読むことが目的ではありません。

外部から情報を取り入れ、自分の考えを刺激・リフレッシュすることが目的です。

今まで分からなかった物事に関連する参考書・自己啓発本を探して直接難しい答えを探しに行くのではなく、一度リラックスして気楽に一歩ずつ理解を進めるのも大事だと思います。

8.おススメ雑誌「日経ビジネスアソシエ」
筆者がおススメしたい雑誌は「日経ビジネスアソシエ」です。

毎月発行されているビジネス雑誌で、本でも電子書籍でも買えます。
「日経」でビジネス雑誌となるとなんか固いような難しいような印象があるかもしれませんが、結構気楽に読めます。そして面白いです。

技術的なことからお金のことまで幅広い雑誌となり、様々な情報が入ってきます。

そして内容が実務的で、何かしら自分の周りで起きていることに活かせる内容が多いです


やはり雑誌は本・参考書に対して情報量が落ちますが、気楽に読めるという点では一番かと思います。

9.スマホ・タブレットで隙間時間に見れる
やはり日経ビジネスアソシエのいいところとしては電子書籍(Kindle)に対応していということです。
sDVC00002 (2).jpg

上記のようにスマホで読むことができ隙間時間に読むことができます。

雑誌と比べて「購入しても嵩張らない」、「通勤の際に持ち運びが便利」など電子書籍(Kindle)の方が便利な点が多いかと思います

10.Kindle Unlimitedならば1年分まとめて読める
さらに日経ビジネスアソシエのいいところはKindle Unlimitedでバックナンバーを約1年分読めます
日経ビジネスアソシエ 2017年 12月号 [雑誌]
日経ビジネスアソシエ 2018年 1月号 [雑誌]日経ビジネスアソシエ 2018年 2月号 [雑誌]
日経ビジネスアソシエ 2018年 3月号 [雑誌]日経ビジネスアソシエ 2018年 4月号 [雑誌]日経ビジネスアソシエ 2018年5月号 [雑誌]

日経ビジネスアソシエは月ごとでメインのトピックが「お金」「出世」「働き方」などと異なっています。最新号でないバックナンバーも読むことで様々な種類の情報を取り入れることで、社会人としての力も上がっていくと思います。


特に「まだ一度もKindle Unlimitedを登録していない方」は1か月無料で体験して読むことができます。つまり1年分のバックナンバーをタダで読めます。


正直合わなかったら1か月の間に退会すればいいだけですので、一度登録してみてはいかかでしょうか。通勤・土日の隙間時間が充実します

11.まとめ・感想
筆者もサラリーマン(エンジニア)を10年足らずやっていますが、やはり「理解しよう」とする気持ちを新人・若手時代に(おそらく少しですが)持って行動していたのは今の自分の財産になっていると日々感じます。

やはり「社会人としての力」は一朝一夕で身に付くものでなく日々の積み重ねで力を付けていくことになると考えています。

特に新人・若手の方は目の前の業務で手一杯になりがちですが、隙間時間でいいので一度頭をリフレッシュして「理解する」ことを継続していけば

必ず一つ一つの物事が分かっていき社会人としての力」が備わっていきます。

「理解する」の手段で今回筆者が紹介した「本・雑誌を読む」あくまで一例でそれ以外にも各自に合った方法がいろいろあると思いますのが、一番簡単で楽な手段ですので何をするかで迷ったら一度試してもらえれば幸いです

今日はここまでにしたいと思います
ありがとうございました。




どうもミソジです。
今回は筆者が持っているラズベリーパイとI2C複数デバイスをつなげてアナライザを使い「I2Cで複数スレーブ接続の波形を見てみた」を紹介します

CPUは1本のI2Cで複数デバイス接続している際でもしっかり何処にデバイスがあるか見つけてくれます。実際にどうやっているかをアナライザで確認してみました


目次
1.ラズベリーパイとI2Cデバイスを複数つなげてみる
2.i2cdetectが何を行っているのか確認する
3.隣接するアドレス間の周期を確認してみる
4.離れたアドレス間の周期を確認してみる
5.まとめ・感想

1.ラズベリーパイとI2Cデバイスを複数つなげてみる
環境構築は前回記事と同じになります。詳細はこちらをご確認ください
実際につなげた写真がこちらとなります。
「ラズベリーパイ」「I2Cデバイスを2つ(EEPROMと加速度センサ)」接続しています
sP_20180512_095551.jpg

回路図的には下記の形になります。「3.3V」「GND」「SDA」「SCL」ブレッドボードにジャンパー接続するだけで簡単に可能です。
※ラズベリーパイのGPIOピン配置は新しい型に合わせています
i2c100.PNG 

そしてラズベリーパイを設定・起動してI2C先にデバイスがいるか「i2cdetect」のコマンドで確認できます。
赤字の50,58がEEPROM青字の68が加速度センサのアドレスになります
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi@raspberrypi ~ $ sudo i2cdetect -r -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: 50 -- -- -- -- -- -- -- 58 -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --      
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

そしてアナライザをSCL、SDAの箇所に接続して「i2cdetect」しているときの波形を確認します。
sP_20180401_135924.jpg

2.i2cdetectが何を行っているのか確認する
それではi2cdetectで実際どのようにしてデバイスを検知しているのかを確認してみました

i2cdetectのコマンドのデフォルトでは0x03~0x77のアドレスにすべてRead命令してACKが返ってきたものに関してデバイスがあると認識しているようです。
i2c108.PNG
上記のように「0x1*」で各ブロックになっています


「スポンサーリンク」

3.隣接するアドレス間の周期を確認してみる
今回はI2CのクロックのSCLは100kbps(100kHz)ですので1周期10μsになっていることが波形からも分かります
i2c103.PNG


i2cdetectでの各アドレス間の周期はどうなっているのか確認してみます
まず連続でデータを取りにいっている0x20~0x2Fのアドレス周辺の周期を見てみました
i2c110.PNG

5周期ほど確認しましたが結果は「290us,264us,221us,217us,230us」と一定ではありませんでした。
ラズベリーパイ内(Linux)でのデータのやり取り時間があるのですかね?もし今度機会があればRTOSでも確認してみたいと思います
i2c109.PNG


4.離れたアドレス間の周期を確認してみる
あと離れたアドレスのブロックごとの周期を確認してみました。
下記のように「0x2*」~[0x3*]などの各ブロック周期を見てきます
i2c108.PNG

こちらも5周期ほど確認しましたが、やはりこちらも「963us,797us,804us,822us,809us」とバラつきが多くありました。
i2c111.PNG


5.まとめ・感想
「I2Cは指定の周期でほぼずれなくデータやり取りしているんだろうな」と考えていましたがいざ実際に測定してみると、意外にバラつきなどがあり新たな発見でした。

データシート見て確認するのもいいですが、やはり実物の波形見て今一度現実と認識のずれを把握する重要ですね

今日はここまでにしたいと思います
どうもありがとうございました


1000円足らずでアナライザが購入できます
HiLetgo 24MHz 8チャンネル USBロジックアナライザ 8CHロジックアナライザ UART IIC SPI デバッグ MCU FPGA ARMに対応 [並行輸入品]
HiLetgo






ラズベリーパイで簡単にI2C通信ができます。

EEPROMの詳細は下記となります。

↑このページのトップヘ