# 第3話 マザーボードの機能について
第1話は以下より
https://qiita.com/nonNoise/items/c4800ac35c529c04e941
第2話は以下より
https://qiita.com/nonNoise/items/01427a281ceb7bdc0238
急に来られた方が困らない用に、以下にこの話の目的を書きます。
"自作の組込みマザーボードを作って自作のコンピュータを作りたい"
そんなマニアックな願望があり、偏った知識で語っていきます。
マザーボードの機能について
早速、マザーボードの話をしていきます。
図を書きました。
この図は、マザーボードを模して書いてます。
良いですか?マザーボードです。
本来、こういった図は**「CPUアーキテクチャ」**で語られるモノですが、
見ての通りバスの線を引いてません。
今回は、マザーボードの構成の話です。 CPUのアーキテクチャの話はまた別の機会に。
PMIC
PMIC とは、パワーマネージメントICの事で、電源管理を行います。
CPUはマイコンと違い、特殊な立ち上がり方をします。
電圧区分が何種類かあったり、リセットのタイミングなどの処理をする必要があります。
そういったCPUに合わせた電源という意味で、PMICという機能が必要になります。
本来はPMICに関して書き出すと止まらないくらい、PMICの重要度は高いです。
例えば、
電源を入れた瞬間にCPUをフルで稼働させると消費電力がガッと上がってしまうのを、徐々に立ち上げたり。
CPUからスリープモードの通知を受けた際にスリープしたり。
高機能なPMICでは、USBのVBUS電源を管理してたりします。
色々やってるんです。しかもCPUに合わせてやってるんです。
なので、CPUに合わせたPMICを型番指定で、尚且つ、リファレンス回路通りに組む必要があります。
下手にオリジナルにすると、動かないだけではなく、動いてもCPUの性能が発揮できない場合があります。
忠実に、忠実に再現しましょう。忠実に。
#Clock
クロックです。CPUはクロックを与えなければ動きません。
近年のCPUでは、チップ内部にPLL(位相同期回路、要するにクロック数を倍々に上げることが出来る仕組み)があり、
定番は24MHzぐらいを供給し、チップ内部で100MHzやら600MHzなどに上がります。
その為、CPUとPMICの次に集中しなければならない部分です。
クロックの配線については、多くの文献と多くの失敗談がありますが、兎に角、近く短く配線するのが大事です。
#EEOROM
言わずと知れたEEPROMです。特に新しい機能はなく、古くからあるI2Cの物に対応しているCPUが多く、
容量も1Kビット(128Byte)であったり、非常に小さい。
じゃぁ何で必要なの?いらなくね??
いやいや・・・それが、マザボを作る上で見逃してはならない重要であり。
どうも、この先出てくるU-BootやLinuxで、ボードの番号を識別するための識別IDをここに記載します。
識別なので、OS起動時に必要になってきたりします。
というのも、CPUが変わった際にプログラムを変えるというのは当然ですが、
基板のバージョンで変わるや外部回路構成で変わるといった感じで、色んな場面で必要になります。
更に更に・・・Ethernetを使う際のMACアドレスを記載するという超大事な仕事をします。
なので、あって困る物ではないので、騙されたと思って追加しましょう。
#RTC
RTCとは、リアルタイムクロックと言い、1秒を正確に生成するためのブロックです。
また、RTCは1秒の他に、カレンダー機能、日時機能といった時間を司る機能を持ってます。
これも重要かって?滅茶苦茶重要。特に近年には超重要。
近年のネットワークセキュリティーでは、日時を使った暗号化や不正処理の確認を行います。
その為、日時の設定が出来なければセキュリティーも担保出来ないという事です。
また、日時が設定できても、電源を止めた際にリセットされるのも悩ましいです。
その為、RTCにはバックアップ電源回路(ボタン電池か電解コンデンサ)を追加したいですね。
そうすれば、色々と救われます。
#JTAG
JTAGです。チップの状態確認やCPUのデバックに使えたりします。
OSやプログラムが動いていない状態であっても、JATGを使って確認することが出来ます。
開発中にブレークポイント(動作を一時停止して状態を確認する方法)を行う際などに使います。
正直、自分には利用する機会が無いが、実務では必須になる機能の一つです。
というのも、CPUの型番によって専用のJTAG機器が必要です。
悲しいことに、専用のJTAGは1台1万~2万円とかです。
また、より高性能なJTAGは10万超えだってあります。
その為、プロ以外は使用しなくてもいいと思います。何とかなります。Printfでかんばりましょう。
#RAM
RAMです。言わずと知れた、メモリーです。
パソコンでは、メモリーは人権とも言いますが、組込みコンピュータでもその通り、人権です。
ただパソコンと違うのは、組込みコンピュータではボードに固定されている事が大半です。
何故メモリスロットで後から交換出来ないのか分かりませんが、大半はボードに固定です。
その為、マザーボードを設計する際に容量を決めなければなりません。
また、CPUによってアドレスバスが決まっています。
このコア最新でしょ?え?ピンを減らすためにアドレスピン減らした?え?最新CPUでも256MBしかないの?
って事が起きます。悲しすぎます。人権を返せ!
まぁ、メーカーにも思う事はあるのでしょう。無駄にピンが大きいチップは値段もサイズも大きい訳で、基板の配線だって大変です。
また、回路を配線する上で最も大変な機能の一つです。
RAMにはDDR系列(DDR/DDR2/DDR3等)とSRAMの二種類ありますが、DDRは容量が高く、SRAMは高速だが容量が低いといった感じで構成に差が出る。用途に合わせて変更したいが、世間的にはDDRのほうが好まれている。
#ROM
ROMです。データを書き込んだら、電源を切っても記憶しています。
近年のROMは、SDカードを使った物が多く、基板に実装したい際はeMMCを使うことが多いです。
SDカードとeMMCは通信方式が似ているため、両対応な場面が多いです。
組込みの場では、SDカードが嫌われます。正直、何故嫌われているのか分かりませんが、以下のような意見を聞きます。
・SDカードは市販品だと耐久性に問題あり?
・eMMCは温度特性が良いため良い?
・SDカードは電気的特性がシビア?
・基板の振動でSDカードの端子が浮く?
・SDカードよりもeMMCのほうが電源ぶち抜きに耐性がある?
などなど
正しいのかどうか、自分にはわかりませんが、そういった意見があるかと思います。
こういった内容も自作コンピュータを行う上で比較出来たらいいなぁと思います。
#その他
CPUが持つインターフェース(USBやGPIO等)がこの後続きますが、それらは型番によって変わりますので割愛します。
ただ、マザーボードを作る上では、どの機能を有効にするかという意味では、非常に吟味して考えます。
また、マザーボードに部品を置く際に、どの場所にどの向きで置くかによって使い勝手が変わります。
そういった事を考えながら、マザーボードを作るのは面白いなって思います。
次回
しまった、ここの項目が長くなったので、一旦切ります。
次回は・・・CPU毎のマザーボード構成 です。
https://qiita.com/nonNoise/items/2130af358abaac70f270