自作コンピュータの作り方  第3話

#　第3話　マザーボードの機能について

第１話は以下より
https://qiita.com/nonNoise/items/c4800ac35c529c04e941
第2話は以下より
https://qiita.com/nonNoise/items/01427a281ceb7bdc0238

急に来られた方が困らない用に、以下にこの話の目的を書きます。

**"自作の組込みマザーボードを作って自作のコンピュータを作りたい"**

そんなマニアックな願望があり、偏った知識で語っていきます。

# マザーボードの機能について

早速、マザーボードの話をしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12499/92e9b594-be4e-32ab-fbbc-29cf65800e0b.png)

図を書きました。

この図は、**マザーボード**を模して書いてます。

良いですか？**マザーボード**です。

本来、こういった図は**「CPUアーキテクチャ」**で語られるモノですが、
**見ての通りバスの線を引いてません。**

今回は、**マザーボードの構成の話です。** CPUのアーキテクチャの話はまた別の機会に。


# PMIC
PMIC とは、パワーマネージメントICの事で、電源管理を行います。
CPUはマイコンと違い、特殊な立ち上がり方をします。
電圧区分が何種類かあったり、リセットのタイミングなどの処理をする必要があります。
そういった**CPUに合わせた電源**という意味で、PMICという機能が必要になります。
本来はPMICに関して書き出すと止まらないくらい、PMICの重要度は高いです。
例えば、
電源を入れた瞬間にCPUをフルで稼働させると消費電力がガッと上がってしまうのを、徐々に立ち上げたり。
CPUからスリープモードの通知を受けた際にスリープしたり。
高機能なPMICでは、USBのVBUS電源を管理してたりします。

色々やってるんです。しかもCPUに合わせてやってるんです。

なので、CPUに合わせたPMICを型番指定で、尚且つ、リファレンス回路通りに組む必要があります。

下手にオリジナルにすると、動かないだけではなく、動いてもCPUの性能が発揮できない場合があります。

忠実に、忠実に再現しましょう。忠実に。

#Clock
クロックです。CPUはクロックを与えなければ動きません。
近年のCPUでは、チップ内部にPLL（位相同期回路、要するにクロック数を倍々に上げることが出来る仕組み）があり、
定番は24MHｚぐらいを供給し、チップ内部で100MHzやら600MHzなどに上がります。
その為、CPUとPMICの次に集中しなければならない部分です。
クロックの配線については、多くの文献と多くの失敗談がありますが、**兎に角、近く短く配線する**のが大事です。

#EEOROM
言わずと知れたEEPROMです。特に新しい機能はなく、古くからあるI2Cの物に対応しているCPUが多く、
容量も1Kビット(128Byte)であったり、非常に小さい。
じゃぁ何で必要なの？いらなくね？？

いやいや・・・それが、マザボを作る上で見逃してはならない重要であり。
どうも、この先出てくる**U-BootやLinuxで、ボードの番号を識別するための識別ID**を**ここに記載します。**
識別なので、OS起動時に必要になってきたりします。
というのも、CPUが変わった際にプログラムを変えるというのは当然ですが、
基板のバージョンで変わるや外部回路構成で変わるといった感じで、色んな場面で必要になります。

更に更に・・・Ethernetを使う際の**MACアドレスを記載する**という超大事な仕事をします。
なので、あって困る物ではないので、**騙されたと思って追加しましょう。**

#RTC
RTCとは、**リアルタイムクロック**と言い、１秒を正確に生成するためのブロックです。
また、**RTCは１秒の他に、カレンダー機能、日時機能といった時間を司る機能を持ってます。**
これも重要かって？滅茶苦茶重要。特に近年には超重要。

近年のネットワークセキュリティーでは、**日時を使った暗号化や不正処理の確認を行います。**
その為、**日時の設定が出来なければセキュリティーも担保出来ない**という事です。
また、日時が設定できても、電源を止めた際にリセットされるのも悩ましいです。
その為、**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