書いている人のスキル
- プログラミングスキルは普通
- ネットワークやったことある
- とりあえず、Ethernet は一通り
- ネットワーク機器は Cisco, Juniper あたりを触ったり
- 電子工作は趣味
- ロジック IC を使って遊んだり
- CPU (TD4) を作ってみたり
- CPU の創りかた(TD4)をブレッドボードで作ってみた話 - saino.me (kaishuu0123)
調べるに至った動機
- 「パラレルはどんどんバスの幅増やせば高速だからめっちゃいいじゃん?デメリットあんの?」
- 「なんで逆にシリアルはこんな面倒くさい手続きを踏まないといけないんだろう」
- クロック生成とクロック同期が凄く面倒
- いや、ラズパイとかにある I2C ドライバとか使えば確かに楽なんですけど、I2C を自前でやろうとすると意外と面倒なんです
- 電子工作をしている上で秋月などで売っている EEPROM は大体がシリアル通信(I2C, SPI)になっている
- 電子工作の勝手上、というか自分の理解しやすさ的には圧倒的にパラレル通信の方がわかりやすい
- 特定のバスを 1 or 0 に設定すれば書き込みなどが制御できるため
というのが動機です。
シリアル通信になっている身近な規格
- RS-232 (シリアルポート)
- Ethernet
- USB
- PCI Express
- SATA
- SPI
- I2C
とこんなにも色々な規格に使われています。みんなシリアルになっていて疑問は深まるばかり。
調べてみた結果
ネットで延々と検索しましたが、あまり納得の行く説明が見つかりませんでした。
そこで、「Interface (インターフェース) 2009年 02月号」を中古で取り寄せたところ非常に納得が行く説明が書かれていました。
私の要約ですが、つらつらと書いていきます。
- バンド幅を上げるためにすぐ思い浮かぶのは、クロックを高速化するか、データバスの幅を広げること
- バンド幅が増えるたびに、ハードウェア(基盤)上で専有する本数が増えていくため、専有面積が増えてしまう(小型化しづらくなる)
- 一方クロック周波数を上げると、タイミングのずれ(スキュー)が大きな要因になってくる
- 大量の信号を同時スイッチングすると不要輻射も増える
- 更に複数デバイスを使い始める(PCI などで複数枚のカードを挿すとか)とバスのアービトレーションのオーバーヘッドも高くなる
とまぁ、パラレル通信を高速化しようとすると、数々のデメリットが出てくるようです。
PC のマザーボードなんかは実際に見てみるとまさしく配線の鬼みたいなもんですしね。
シリアルはこれに比べると線数は非常に少なく済みますね。
2022/08/06 追記
思いつきかつ単純な理由ですが、ディスプレイに何らかの表示をするときにいちいちパラレルにする場合、芯線が増えるので「ものすごく太いケーブル」を用意しないといけないですね
それはだめだって言うことでシリアルになるのも1つの理由な気がしました。
最後に
今まで電子工作をやるときには、「パラレルの EEPROM はないのかー」とか凄くこだわってましたが、これだけ周りの規格がシリアル化しているとなると、シリアルに準じるのがいいのだろうと納得しました。
簡単な工作ではなく、回路設計まで手を伸ばすとこういったことが体系的に学べるんでしょうか?
とにかくスッキリできました( ╹▽╹ )