今WR-X VisionのI2Cインターフェースモジュールのドキュメントを書いているのだが、かなり前に作ったものなので、自分でも結構忘れているのであったw
で、I2C通信のおさらいをしようと思い、Verilogプログラムを組むときに見たフィリップスのI2C仕様書は複雑するぎるので、もっと簡単な説明をと思って、ネットで調べてみた。
すると、こんなものがあった。
http://journal.mycom.co.jp/column/sopinion/130/
なんか、I2Cの説明にも、えっ!?というところがあるが、まぁそれはいいとして。
この中に、こんな一節がある。
「通常、Shared BusではWired ORという方式が取られる。つまりバスに接続された全てのデバイスが”L”の信号を出している時のみバスの値は”L”で、一つでもデバイスが”H”の信号を出していれば、バスの値は”H”になる。これに対し、Wired ANDでは全てのデバイスが”H”の信号を出さない限り、バスは”L”のままである。」
まぁ、I2Cはこの説明でいうところのWired ANDなわけだが。
(・Θ・)はこの説明が一番気になったのだが、これって本当なのだろうか?
(・Θ・)は随分長い間ハードウェアの回路を見てきているが、ココで言うところの「通常用いられているWired OR」という回路を全く見たことがないのだが。
Wired ORってことは、つまり2つのICとかからの出力がどっちか一方がHになったら、その信号線はHになるっていうことでしょ?
っつーことは、なに、デバイスの出力段がPNPトランジスタやPch FETになっていて、信号線をプルダウンして使うのが一般的だってこと???
うっそ〜w
そんな回路見たことないぞw
ロジックICでもNPNやNchFETのオープンコレクタやオープンドレインは普通にあるが、その逆は多分ないと思うんだが。
と、どうでもいいところに突っ込みを入れたくなったつちのこなのであった。
なんだか難しいお話ですね((((;゜Д゜))))
釣られてみた
釣られてもオチがない、落ちない(バスの値は"H"になる)という事で。
およびでない ? 失礼しました。