テクラボで始めるマイコン超入門 ~読めばわかるCPU・メモリ・周辺機能~
........
- 更新日
- 公開日
- 2024.09.30
マイコンを使用した開発の第一歩として、必要な情報やノウハウを解説します。マイコンの仕組みや機能について解説し、既に設計に携わっている方にも、基本に立ち返って学んでいただける内容です。また、設計におけるポイントや注意点についても解説し、理解を深めることを目的としています。
INDEX
1. マイコンとは?
様々な機器に組み込まれ、利用される小さなコンピュータはマイクロコンピュータやマイクロコントローラと呼ばれ、略称としてマイコンと呼ばれます。MCU(Micro Controller Unit)とも呼ばれ、CPU、メモリ、周辺機能を1チップに集積したものをシングルチップマイコンと呼びます。パソコン、カメラ、スマホ、冷蔵庫、洗濯機、そして自動車に至るまで、あらゆる電化製品にマイコンが組み込まれています。
マイコンを使うメリット
トランジスタやダイオードの単体素子だけを用いた回路構成(ディスクリート)や専用回路と比較して、マイコンを使用するメリットについて、以下の4点が挙げられます。
- 標準品としての入手性
- 部品数の削減
- 柔軟なシステム構成
- ソフトウェア交換の容易さ
標準品としての入手性
マイコンは標準品であり、入手も容易です。使用したい機能に応じて幅広いラインナップから選定できます。また、専用回路と比較して、動作を変更する度に電子部品を組みなおす必要がありません。そのため、設計や開発に掛かる時間や費用を削減することが可能です。
部品数の削減
マイコンには様々な周辺機能が搭載されています。そのため、総合的な部品数を削減することが可能です。また、部品数の削減により、故障発生リスクの低減や、製品サイズの最小化を実現できます。
柔軟なシステム構成
マイコンはソフトウェアによって、システムの構成を自由に構築することが可能です。そのため、専用回路と比較してシステム構成をプログラムで容易に変更できます。
ソフトウェア交換の容易さ
マイコンのソフトウェアは交換可能であり、プログラムを更新することで、機能の変更や追加が可能です。また、既存のソフトウェアを流用できるため、安価かつ容易に別のシステムを開発できます。
2. マイコンの基礎構成
マイコンはCPUとメモリ、周辺機能などで構成されています。メモリには事前に用意された命令の組み合わせ(プログラム)が記憶されており、CPUはそれらの命令を順次読み出して実行します。
プログラムによって、マイコンは電子機器の動作の要となる入出力装置の制御を行っています。マイコンの周辺機能と入出力装置を接続することで、
- センサ等の入力装置からの入力
- 入力の加工(演算)
- 演算結果からモータ等の出力装置を駆動
という動作が可能です。
入力信号
マイコンの入力信号には、デジタル信号とアナログ信号の2種類があります。
デジタル信号
スイッチの入力信号などに使用される信号です。電源電圧が5Vである場合、ハイが5V、ローが0Vとなり、マイコン側はハイを1、ローを0と認識します。マイコンの電源電圧等によって、電圧のハイボルテージは変わります。
アナログ信号
アナログ信号は波の形をしており、振幅(大きさ)や周波数(速さ)が時間とともに変わります。情報は連続的な値として表現されるため、細かい変化を含む入力の変化を取得可能です。マイコン側はA/D(アナログ/デジタル)変換を行うことで、アナログ信号をデジタル信号に変換し、数値として認識します。
CPU
CPU(Central Processing Unit)は指揮官として、マイコン全体を制御します。加減算、論理演算、乗算などの演算処理や、周辺機器とのデータのやり取りについて、どのように動作するのかを指示します。CPUがなければ、マイコンに搭載されたハードウェアは動作できません。
CPUの動作
CPUがメモリから命令の実行やデータを読み書きする際、CPUはアドレスバスを介し、指定されたアドレスにアクセスします。その後、データバスを介し、メモリから命令を読み取り、デコード回路や演算回路にて命令を実行します。
※1 ALU(Arithmetic and Logic Unit):算術演算および論理演算を行う回路
命令を実行する手法の1つである「5段パイプライン」を例として解説します。「5段パイプライン」は1つの命令を5段階の動作に分けて処理します。動作は以下の5段階です。
- 命令フェッチ(IF):メモリから命令を読み出す
- 命令デコード(ID):命令を解読する
- エグゼキュート(EX):命令を実行する
- メモリアクセス(MA):書き込みたいメモリのアドレスを特定する
- ライトバック(WB):特定したアドレスにデータを書き込む
この5段階の処理を、クロックと呼ばれるマイコンのパルス信号(タイミング信号)に同期し、繰り返し実行します。図6のように、1クロックにつき1段階を処理するため、5段階の合計(1命令)で5クロック掛かります。パイプライン構成の場合、複数の命令の異なる段階を同時に処理できます。例えば、2クロック目にて、「最初の命令の命令デコードを実行」と同時に、「次の命令の命令フェッチを実行」が可能です。このように並列処理を行うことで、CPUのリソースを有効に活用できます。
プログラムとメモリの関係
開発者が作成したプログラム(命令の組み合わせ)はメモリ空間内に配置されます。マイコンのメモリ空間にはROM、RAM、特殊機能レジスタ等が存在します。
ROM(Read Only Memory)
その名の通り、読み込みのみを行うメモリです。ROMには命令を行うための、プログラムや定数データが格納されます。ROMに記録した内容は、マイコンの電源を落としても保存状態が維持されます。プログラム実行中の書き換えは基本的にできません。実行中の書き換えには特殊な方法が必要になります。
RAM(Random Access Memory)
一時的に内部に保存しておきたい情報を記録します。記録した内容は書き換えが可能です。RAMの記録はマイコンの電源を落とすと削除されます。
特殊機能レジスタ(SFR:Special Function Register)
マイコンに搭載されている周辺機能の動作を制御します。メモリと同じアドレス空間にマッピングされているため、CPUはメモリへのアクセスと同じバスを使用して、メモリと同じように特殊機能レジスタにアクセス可能です。これをメモリマップドIO方式と呼びます。
3. マイコンの周辺回路と機能
本項では、マイコンを動作させるために必要となる周辺回路とその機能について解説します。
周辺回路
マイコンを動作させるために必要となる周辺回路は3つあります。
- 電源回路
- 発振回路
- リセット回路
電源回路
電子機器において、電源は必須の要素です。一般的なマイコンは3.3Vや5Vといった直流電圧で動作するため、動作に必要な電圧を供給する必要があります。
電源回路は、外部(商用電源や電池)から供給される電力を、マイコンに供給するための回路です。マイコンの動作に適切な電圧、電流に変換し、供給する役割を持ちます。マイコンに電力を供給する際の要点として、「絶対最大定格」と「推奨動作条件」という電気的特性(※2)が規定されています。
※2 電気的特性:マイコンが正しく効率的に動作するために必要となるパラメータ。電圧、電流、電力、抵抗等がある。
絶対最大定格
電子機器に物理的な損傷や、極度の劣化が生じないことを保証する条件です。電気的特性に規定されており、一瞬たりとも超えてはならない規格です。絶対最大定格を一瞬でも超えてしまうと、品質保証ができません。電子機器が損傷しないよう、必ずこの定格値を超えない範囲で使用する必要があります。
推奨動作(動作保証)条件
マイコンの正常動作を保証する条件です。電気的特性に規定される「推奨動作条件」を1項目でも満たさなければ、電気的特性に記載されたスペックは保証されません。
発振回路
クロックとは、マイコンの動作を同期させ、処理速度やタイミングを決める一定周期のパルス信号です。1秒間のクロック振動数のことを周波数と呼び、Hz(ヘルツ)という単位で表します。数値が大きい程、マイコンの処理速度が上昇します。例えば、最大動作周波数が32MHz(3,200万回/秒のクロック振動)のマイコンのクロックは、1周期(1クロック周期)が約31nsとなります。
外部クロック
マイコンの外部から供給されるクロックを「外部クロック」といいます。外部クロックには主に水晶発振子やセラミック発振子が使われます。
内部クロック
マイコンに入力された外部クロックを、マイコン内部にて逓倍(※3)/分周(※4)することで「内部クロック」を生成できます。CPUの命令実行や周辺機能の動作の基準となるクロックであり、「システムクロック」や「CPUクロック」と呼ばれます。
※3 逓倍:周波数をn倍にすること
※4 分周:周波数を1/n倍にすること
オンチップオシレータ
マイコン内部に搭載されたクロック発生回路を「オンチップオシレータ」と呼びます。この回路を使用することで、外付けの発振回路を削減できます。また、外付けの発振回路が停止してしまった際は、代用クロックとして活用可能です。
リセット回路
電子機器の電源投入時、マイコンは不安定な状態になるため、正常に動作させるにはリセットによる初期化が必要です。リセットは、マイコンに電源とクロックが安定して供給されてから、リセット信号をローレベルに一定期間保つことで行います。これには専用のリセットICや、抵抗とコンデンサを用いた回路でリセット信号を生成し、マイコンのリセット信号端子に入力してマイコンを初期化します。
リセット
CPU動作中にリセット端子にローレベルを入力すると、CPUはリセット状態となりマイコンが初期化されます。リセット信号入力端子の電圧がハイレベルに変化すると、リセット状態が解除されてプログラム実行状態となります。プログラム実行中、リセット端子には常にハイレベルの信号を入力します。
パワーオンリセット(POR)
電源電圧が検出電圧以下になると、マイコン内部でリセット信号が発生し、動作電圧以上に回復した際にリセットが解除される機能です。
周辺機能
続いて、マイコンの代表的な周辺機能を紹介します。
I/Oポート
端子の入出力制御が可能です。汎用的な用途に使用可能であり、GPIOとも呼ばれます。スイッチのON/OFFを端子の入力状態で判定し、端子の出力によってLEDの点灯/消灯を制御できます。
タイマ機能
一定時間のカウントや、入力信号の計測が可能です。パルス信号を出力するPWM、時間計測(時計機能)が可能なRTC、マイコンの異常状態を検知するための制限時間を設定できるWDTなどの機能があります。
通信機能
通信規格に従い、外部機器との通信を行う機能です。装置間の通信で一般的に使用されるUART、車載分野で使用されるCAN、センサや外部メモリとの接続によく用いられるI2CやSPI、さらにマイコンによってはUSBやEtherに対応しているものもあります。
A/D変換、D/A変換
アナログ入力をデジタル値に変換するADCや、設定したデジタル値をアナログ出力に変換するDAC機能があります。
メモリ転送
他の周辺機能からCPUを介さず、ダイレクトにメモリへアクセスすることが可能です(DMAC)。これにより、データのやり取りを高速に行えるため、システム全体のパフォーマンスが向上します。
マイコンの周辺回路や周辺機能を使用した製品の一例として、体温計の仕組みを考えてみます。
マイコンを動作させるために、乾電池から供給される電力を電源回路で変換し、適切な電圧としてマイコンに供給します。リセット回路でマイコンを初期化し、発振回路でクロックを供給します。スイッチが押されたかどうかをマイコンのGPIOで検知し、A/Dコンバータを用いて温度センサから温度を取得します。温度が測定されると、SPIなどを使ってLCDに表示されます。測定が終了すると、PWM機能を使用してブザーを鳴らします。
あくまで一例ですので、別の機能や手法で実現することも考えられます。あらかじめご了承ください。
4. まとめ
本記事のまとめです。マイコンの起動には、以下の3つの周辺回路が必要です。
- 電源回路
- 発振回路(クロック)
- リセット回路
マイコンが起動すると、メモリからCPUがプログラムを読み出して解析し、入力装置から入力された信号等の条件によって各命令を実行します。そして命令により、周辺機能のレジスタに設定した値によって出力装置へ出力されます。このように、マイコンが正しく動作するためには、各回路が連携し、プログラムが適切に実行されることが重要です。これらの基本的な知識を習得していただき、マイコンを活用したさらなる開発や応用にお役立ていただければ幸いです。
(執筆者:渡辺秀侑、編集者:伊藤正博、内田将之)