- 論理ゲートの真理値表とタイミングチャートを読み、回路と論理式を行き来する
- 組合せ回路(加算器・デコーダ・マルチプレクサ)と順序回路(フリップフロップ・カウンタ)の違い
- HDL から論理合成を経て FPGA・ASIC になるまでの、カスタム IC の作られ方
- センサ・アクチュエータ・A/D・D/A・PWM という組込み部品の役割と信号の向き
- D/A 出力電圧・タイマ割込み時間・ビットマップ番地・平均消費電流という 4 つの計算の型
- 低消費電力技術と、IoT デバイスの通信インタフェース・セキュリティ
科目 A では直近 10 年 19 回で 64 問、1 回平均 3.4 問が出ています(最多 6 問、最少 0 問と回による振れ幅が大きい分野です)。64 問のうち 32 問がシラバス小分類「組込みシステムの構成部品」に集中し、センサ・アクチュエータ・タイマ・D/A 変換が柱になります。3 問確保が目標です。科目 B で問 7「組込みシステム開発」を選ぶ人は、本章が知識面の土台になります(解き方の手順は第 24 章)。
論理ゲートと真理値表 ― 回路・波形・論理式を行き来する
コンピュータの演算はすべて、電圧の高低(1 と 0)を組み合わせる論理回路で行われます。その最小部品が論理ゲートで、応用情報で問われるのは 6 種類だけです。ゲートの名前を覚えるのではなく、真理値表を書けることが目的です。試験では回路図・タイミングチャート・論理式のどれかを与えられ、残りに変換させられます。
| 入力 A | 入力 B | AND(論理積) | OR(論理和) | XOR(排他的論理和) | NAND | NOR |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
NOT(否定)は入力 1 に対し出力 0 を返すゲートで、AND の出力に NOT を付けたものが NAND、OR に付けたものが NOR です。XOR は「入力が異なるとき 1」なので、2 つの値が一致するかどうかの判定に使えます。XOR の出力をさらに反転した XNOR は「一致回路」と呼ばれ、直近 10 年でも一致回路として 1 回出題されています。
電圧が高い状態を 1 と決めるのが正論理、低い状態を 1 と決めるのが負論理です。同じ回路でも正論理で見れば AND、負論理で見れば OR に読めるため、問題文が「負論理」と断っていたら真理値表の 0 と 1 を読み替えてから解きます。
ド・モルガンの法則と論理式の簡単化
回路図を論理式に直すときの主役がド・モルガンの法則です。NOT(A・B) = NOT A + NOT B、NOT(A + B) = NOT A・NOT B の 2 本で、「否定を配ると AND と OR が入れ替わる」と覚えます。NAND だけで組んだ回路を解くときは、NAND を「AND の否定」ではなく「入力を反転させた OR」と読み替えると、AND と OR の混在した式が一気に整理できます。
真理値表から論理式を作るときは、出力が 1 になる行ごとに入力の積(AND)を書き、それらを和(OR)でつなぎます。この形を加法標準形といいます。加法標準形はそのままだとゲート数が多いので、共通因数をくくり出したりカルノー図を使ったりしてゲート数を減らします。これが論理圧縮(論理式の簡単化)で、カルノー図の手順そのものは第 2 章で扱います。ゲート数が減れば面積・消費電力・遅延がすべて小さくなるため、論理設計では性能・設計効率・コストの三つを見比べて構成を決めます。
クロックと同期式設計
回路全体で共通のクロック信号を配り、そのエッジ(立上り・立下り)のタイミングでだけ状態を更新する設計を同期式設計といいます。すべての素子が同じ拍子で動くので、信号の到達時間のばらつき(遅延)を「クロック周期以内に収まればよい」という 1 つの条件に押し込めることができ、タイミング設計が単純になります。論理設計の工程は、必要な機能から回路の構成を決める回路設計と、信号が次のクロックまでに確実に届くかを検証するタイミング設計に分かれます。ゲート段数を減らす論理圧縮は、面積とコストだけでなくこの遅延にも効きます。これに対し非同期式設計はクロックを使わず、前段の完了信号で次段を動かします。消費電力を抑えやすい一方、ハザード(一瞬だけ出る誤った出力)の検証が難しく、現在のディジタル回路の大半は同期式です。
組合せ回路 ― 加算器・デコーダ・マルチプレクサ
出力がそのときの入力だけで決まる回路を組合せ回路といいます。過去の入力を覚えないので、真理値表を書けば動作が完全に決まります。演算装置の中核である加算器がその代表です。
1 桁の 2 進数 A と B を足す半加算器は、和 S を XOR、桁上がり C を AND で作ります(第 4 章で扱った型です)。しかし半加算器は下位桁から上がってくる桁上がりを受け取れません。そこで半加算器を 2 個と OR 回路 1 個を組み合わせ、下位からの桁上がり Cin も足し込めるようにしたものが全加算器です(図 7-2)。全加算器を n 個並べ、各段の桁上がり出力を次段の桁上がり入力につなぐと n ビットの加算器(リプルキャリー加算器)になります。この構成は桁上がりが下位から上位へ順に伝わるため、ビット数が増えるほど遅延も増えます。
加算器のほかに押さえるべき組合せ回路は次の 4 つです。いずれも「入力の組合せから出力が一意に決まる」点は共通で、用途で覚え分けます。
| 回路 | 動作 | 使われ方 |
|---|---|---|
| デコーダ | n ビットの入力を 2n 本の出力の 1 本だけ 1 にする | アドレスから 1 つのメモリチップを選ぶ、7 セグメント表示の駆動 |
| エンコーダ | 2n 本の入力のうち 1 になった線の番号を n ビットで出す | キー入力の番号化、割込み要求の番号化 |
| マルチプレクサ(セレクタ) | 選択信号で複数の入力から 1 つを選んで出力する | 複数センサの信号を 1 本の A/D 変換器で読む |
| パリティ生成回路 | XOR を連ねて 1 の個数の偶奇を求める | 通信・メモリの誤り検出用パリティビットの生成 |
FPGA の内部で組合せ回路を実現する仕組みが LUT(Look Up Table)です。真理値表そのものを小さなメモリに書き込んでおき、入力をアドレスとして引くことで任意の論理関数を実現します。ゲートを配線し直すのではなく表の中身を書き換えるだけなので、後述のように出荷後でも回路を変更できます。
順序回路 ― フリップフロップ・レジスタ・カウンタ
出力が「現在の入力」だけでなく「これまでの経緯(内部状態)」でも決まる回路を順序回路といいます。1 ビットを記憶する最小単位がフリップフロップ(FF)で、レジスタもカウンタもメモリセルも、FF を並べたものです。
基本形の RS フリップフロップは、NAND ゲート 2 個の出力を互いの入力へたすき掛けに戻した回路です。NAND は「入力のどちらかが 0 なら出力 1」なので、S 側に 0 を与えると出力 X が 1 に確定し(セット)、R 側に 0 を与えると X が 0 に確定します(リセット)。そのあと S も R も 1 に戻すと、たすき掛けの帰還によって直前の状態がそのまま保たれます(図 7-3)。この「入力を戻しても状態が残る」性質が記憶の正体です。
| 種類 | 入力 | 特徴 |
|---|---|---|
| RS フリップフロップ | S(セット)、R(リセット) | 最も基本。S と R を同時にアクティブにする入力は禁止(出力が不定になる) |
| D フリップフロップ | D(データ)、クロック | クロックのエッジで D の値をそのまま取り込む。レジスタやシフトレジスタの構成要素 |
| JK フリップフロップ | J、K、クロック | RS の禁止入力を「反転(トグル)」に割り当てて解消したもの |
| T フリップフロップ | T(トグル)、クロック | T が 1 のたびに出力が反転。カウンタ・分周器の基本部品 |
クロックのレベル(高い間ずっと)で入力を通す回路をラッチ、クロックのエッジ(変化する瞬間)だけで取り込む回路をエッジトリガ型のフリップフロップと呼び分けます。同期式設計ではエッジトリガ型を使うのが基本です。
D フリップフロップを n 個並べて同じクロックを配れば n ビットのレジスタになり、前段の出力を次段の入力につなげば シフトレジスタ(クロックごとにビットが 1 つずつ移動する)になります。シフトレジスタは直列(1 本の線)と並列(n 本の線)のデータ形式を相互変換できるため、UART など直列通信の送受信部で使われます。
T フリップフロップを段数分つなげばカウンタになります。T フリップフロップは入力パルス 2 回で 1 周するので、1 段で周波数が 1/2 になります。これを利用してクロックの周波数を下げる回路が分周器で、n 段つなげば 1/2n の分周比が得られます。タイマ割込みの周期計算で必ず出てくるので、次の関係を覚えておきます。
カウンタの種類とメモリセル
カウンタには、全段が同じクロックで一斉に動く同期式カウンタと、前段の出力を次段のクロックに使う非同期式カウンタ(リプルカウンタ)があります。非同期式は回路が単純な半面、桁上がりが段を伝わる間だけ誤った値が現れるため、高速な用途では同期式を使います。カウンタは上限を超えると 0 に戻る桁あふれを起こし、16 ビットなら 65,535 の次が 0 です。2 つの時刻の差で経過時間を求めるときは、桁あふれした分(65,536)を足して補正します。科目 B でこの補正が繰り返し問われます。
記憶素子の 1 ビット分をメモリセルといいます。SRAM のセルはフリップフロップそのもので、電源が入っている限り内容を保持でき高速ですが、1 ビットあたりの素子数が多く大容量化には向きません。DRAM のセルはコンデンサ 1 個とトランジスタ 1 個で構造が単純なので大容量にできる代わりに、電荷が抜ける前に再書込み(リフレッシュ)が要ります。メモリの種類と記憶階層は第 4 章で扱います。
半導体素子とカスタム IC ― HDL・FPGA・ASIC・SoC
論理回路の実体はトランジスタです。半導体素子の中で試験に出るのは、電流を一方向にだけ流すダイオード(交流を直流にする整流作用、規定電圧を超えた波形を切り落とすクリッパ回路)と、小さな入力で大きな電流を制御するトランジスタの 2 つが中心です。現在のディジタル IC はほぼすべて CMOS(Complementary MOS。正式には Complementary Metal-Oxide-Semiconductor の略)で作られています。CMOS は p 型と n 型の MOS トランジスタを対で使い、切り替わる瞬間以外はほとんど電流が流れないため、消費電力を小さくできるのが特長です。
| 素子・用語 | 正式名称・意味 | 役割 |
|---|---|---|
| LED / OLED | 発光ダイオード / 有機 EL | 順方向に電流を流すと発光する。OLED は素子自体が光るためバックライトが不要 |
| フォトトランジスタ | ― | 光を受けて電流を流す。光センサとして使う |
| フォトカプラ | ― | LED とフォトトランジスタを 1 パッケージ化し、光で信号を渡して電気的に絶縁する |
| フォトインタラプタ | ― | 発光部と受光部の間を物体が遮ったことを検出する。位置・回転の検出に使う |
| トライアック / パワー半導体 | ― | 交流の大電力を制御する。モータやヒータの駆動に使う |
| IC / LSI / VLSI | 集積回路 / 大規模集積回路 / Very Large Scale Integration | 集積度の呼び分け。素子数が増えるほど大規模になる |
| バイポーラ / BiCMOS | ― / Bipolar Complementary MOS | バイポーラは高速だが消費電力が大きい。BiCMOS は両者を混載して速度と低消費電力を両立 |
| 抵抗・コンデンサ・コイル・トランス | 受動素子 | 抵抗は電流制限、コンデンサは電荷の蓄積と平滑・ノイズ除去、コイルは電流変化の抑制、トランスは電圧の変換 |
| 液晶(LCD) | ― | 電圧で液晶分子の向きを変え、バックライトの光の透過量を制御して表示する |
| 電気泳動型電子ペーパー | ― | 帯電した白黒の粒子を電界で動かして表示する。表示を保つのに電力が要らない |
| インバータ | ― | 直流を交流に変換する回路。太陽光発電の系統連系やモータの可変速駆動に使う(論理回路の NOT ゲートも同じ名で呼ばれるので文脈で判断する) |
| バイポーラメモリ | ― | バイポーラトランジスタで構成した高速なメモリ。消費電力が大きく、現在の主流は CMOS 系 |
| MEMS | Micro Electro Mechanical Systems | 半導体プロセスで機械構造を作り込む技術。加速度センサ・ジャイロセンサの実現に使う |
用途に合わせて中身を作り込む IC をカスタム IC といいます。回路の作り方は、HDL(Hardware Description Language:ハードウェア記述言語。Verilog HDL・VHDL が代表)で回路の動作を記述し、論理合成ツールにゲートの接続情報(ネットリスト)へ変換させる、という流れです(図 7-4)。同じ記述から、書換えのできる FPGA にも、専用に製造する ASIC にも展開できます。
| 用語 | 正式名称 | 要点 |
|---|---|---|
| ASIC | Application Specific IC | 特定用途向けに専用設計・専用製造する IC。量産すれば単価・消費電力・性能で有利だが、製造後は回路を変更できない |
| FPGA | Field Programmable Gate Array | 基板に実装した後でも内部の論理を書き換えられる IC。試作や少量生産、仕様変更のある用途に向く |
| PLD | Programmable Logic Device | 書換え可能な論理デバイスの総称。FPGA はその代表格 |
| SoC | System on a Chip | CPU・メモリ・周辺回路など複数の機能を 1 チップに集積。占有面積を縮小して小型化・高速化・低コスト化を実現する |
| コデザイン | ― | ハードウェアとソフトウェアの役割分担を同時並行で設計する手法。どの処理を回路にするかを早期に決める |
| CORDIC | COordinate Rotation DIgital Computer | 加算とシフトだけで三角関数などを計算するアルゴリズム。乗算器を持たない小規模回路で使う |
| オープンソースハードウェア | ― | 回路図や HDL 記述を公開し、誰でも改変・製造できるようにしたハードウェア |
組込みシステムの構成部品 ― センサとアクチュエータ
組込みシステムは、外界の状態をセンサで電気信号として取り込み、マイコンで判断し、アクチュエータで外界に働きかける、という一巡で成り立っています(図 7-5)。この変換の向きが最頻出の論点です。センサは「物理量 → 電気信号」、アクチュエータは「電気信号 → 力学的な運動」で、向きを逆にした選択肢が定番の誤答肢になります。
| 部品 | 役割 | 補足 |
|---|---|---|
| マイクロプロセッサ(MPU) | 演算・制御を行う CPU 本体 | メモリや周辺回路は外付け |
| マイクロコントローラ(MCU) | CPU にメモリ・タイマ・A/D・入出力ポートまで 1 チップ化したもの | 組込み機器の中心。「マイコン」はこちらを指すことが多い |
| DSP | Digital Signal Processor。積和演算を高速に繰り返す専用プロセッサ | 音声・画像・通信のフィルタ処理に使う |
| センサ | 温度・光・加速度などの物理量を電気信号に変換する | 入力側。MEMS 技術で小型化が進んだ |
| アクチュエータ | エネルギー源のパワーを回転・直進などの動きに変換する | 出力側。モータ・ソレノイド・サーボが代表 |
| 電源回路・電池 | 各部に必要な電圧を安定して供給する | 交流を直流にする整流・平滑もここで行う |
| 監視回路・診断プログラム | 装置の異常を検出して安全側に倒す | ウォッチドッグタイマ、起動時の自己診断 |
| フラッシュメモリ | 電源を切っても内容が消えない書換え可能メモリ | 書換え回数の上限を平準化する制御がウェアレベリング |
| RFID | Radio Frequency IDentification。無線の IC チップで人や物を識別・管理する | パッシブ方式は電池を持たず、アンテナで受けた電波の電力で通信する |
汎用入出力ポートとビット操作
マイコンがスイッチや LED を直接つなぐ端子が汎用入出力ポート(GPIO)です。ポートはバイト単位で読み書きするため、特定のビットだけを操作するときは論理演算を使います。ある位置を 1 にするにはそのビットだけ 1 のマスクとの OR、0 にするにはそのビットだけ 0 のマスクとの AND、反転するにはそのビットだけ 1 のマスクとの XOR を取ります。スイッチの押下を検出するときは、前回読んだ値と今回読んだ値の XOR で「変化したビット」を求め、今回値との AND で立上りか立下りかを判定します。第 1 節の論理ゲートが、そのまま組込みプログラムの道具になります。
機械式スイッチは接点が触れる瞬間に数ミリ秒間 0 と 1 を細かく繰り返します(チャタリング)。そのまま読むと 1 回の操作を複数回と数えてしまうため、一定時間待ってから読み直す、数回連続で同じ値になったら確定する、複数回の読取りの多数決を取る、といった確定処理を入れます。科目 B では、この確定処理を入れる理由を記述させる設問が繰り返し出ています。
センサの種類
センサは「何の物理量を測るか」で覚えます。科目 A では車載・産業用途の題材が増えており、直近 3 年ではドップラーセンサ・LiDAR・ADAS 用センサ・回転センサが各 1 回登場しました。
| センサ | 測る量・原理 | 用途の例 |
|---|---|---|
| 温度センサ | サーミスタの抵抗変化、熱電対の起電力 | 空調、機器の過熱保護 |
| 光センサ | フォトダイオード・フォトトランジスタの受光電流 | 照度に応じた画面の明るさ調整 |
| 加速度センサ・ジャイロセンサ | MEMS の可動構造の変位、角速度 | 姿勢検出、歩数計、手ぶれ補正 |
| 超音波センサ・LiDAR | 反射波が戻るまでの時間から距離を求める | 障害物検知、自動運転の測距 |
| ドップラーセンサ | 反射波の周波数変化から移動速度を求める | 人の接近検知、速度測定 |
| 回転センサ | 回転に同期したパルスを出力する | モータの回転数計測(毎秒回転数 = 1 秒間のパルス数 ÷ 1 回転あたりのパルス数) |
表示メモリの番地計算
組込み機器の LCD は、画面の各画素が主記憶上の決まった番地に対応するビットマップ方式で描画します。番地の求め方は 2 回出題(令和 4 年春 問 21、令和 6 年春 問 22)されており、行の折り返しを掛け算で表すだけの型です。
計算の型: ビットマップ表示メモリの番地
番地 = 先頭番地 + (y × 横方向の画素数 + x) × 1 画素当たりのバイト数
例題: 横 640 × 縦 480 画素、1 画素 2 バイト、先頭番地 0 の LCD がある。座標 (x, y) = (7, 6) の画素は何番地か。
- その画素より前にある画素数を数える: y × 640 + x = 6 × 640 + 7 = 3,847
- 1 画素のバイト数を掛ける: 3,847 × 2 = 7,694
- 先頭番地を足す: 0 + 7,694 = 7,694 番地
1 画素 1 バイトと思い込むと 3,847 番地、x と y を入れ替えると別の値になります。まず「1 画素何バイトか」を問題文で確認します。
A/D・D/A 変換と PWM ― アナログとディジタルの橋渡し
センサが出すのは連続的に変化するアナログ信号、マイコンが扱うのは離散的なディジタル値です。この橋渡しをするのが A/D 変換器(アナログ → ディジタル)と D/A 変換器(ディジタル → アナログ)です。A/D 変換は、一定周期で値を読む標本化(サンプリング)、読んだ値を段階に丸める量子化、段階を 2 進数にする符号化の 3 段階で行います。1 秒あたりの標本化回数がサンプリング周波数、量子化の段階数を決めるのが量子化ビット数(分解能)です。
D/A 変換器の出力は、入力値が 1 増えるごとに一定量ずつ上がる階段状になります(図 7-6)。この 1 段の高さが 1 LSB(Least Significant Bit:最下位ビット 1 個分の電圧)で、D/A 変換の計算問題はすべてこの 1 段の高さから組み立てます。
計算の型: D/A 変換器の出力電圧
出力電圧 = 1 LSB の電圧 × 入力値 (1 LSB = フルスケール電圧 ÷ 2n、n はビット数)
例題: 1 LSB が 10 mV の 8 ビット D/A 変換器に、16 進数 82 を入力したときの出力電圧は何ミリボルトか。
- 入力値を 10 進数に直す: 16 進数 82 = 8 × 16 + 2 = 130
- 1 LSB を掛ける: 130 × 10 mV = 1,300 mV
- 単位をそろえて答える: 1,300 mV(= 1.3 V)
16 進数のまま 82 × 10 = 820 mV としないこと、mV と V を混同しないことが失点の分かれ目です。
PWM 制御とモータの駆動
モータの回転速度を変えるとき、電圧そのものを上下させると効率が悪く発熱します。そこで電圧は一定のまま、オンにしている時間の割合(デューティ比)だけを変える方式が PWM(Pulse Width Modulation:パルス幅変調)制御です。周期も高さも変えず、パルスの幅だけが変わるのが PWM の波形です(図 7-7)。誤答肢では振幅が変わる波形や周期が変わる波形、正弦波が並ぶので、3 つを見比べて覚えます。
モータを正転・逆転の両方向に回すには、4 個のスイッチング素子を H 字型に配置した H ブリッジ回路を使い、対角のスイッチ 2 個を組で入れる向きを切り替えます。PWM と組み合わせれば、向きと速度を同時に制御できます。
機械・制御の 4 方式
| 方式 | 仕組み | 例 |
|---|---|---|
| オープンループ制御 | 結果を測らずに、決めた操作量をそのまま与える | 電子レンジのタイマ加熱 |
| クローズドループ制御(フィードバック制御) | 結果をセンサで測り、目標との差を打ち消すよう操作量を修正する | 設定温度を保つ空調、速度を保つクルーズコントロール |
| シーケンス制御 | あらかじめ決めた順序で工程を進める | 洗濯機の給水・洗い・すすぎ・脱水 |
| PWM 制御 | デューティ比で平均的な供給電力を変える | モータの速度調整、LED の調光 |
工場のシーケンス制御を担う専用コントローラが PLC(Programmable Logic Controller)です。リレー回路の考え方をプログラムで置き換えたもので、産業機器の制御に広く使われています。
タイマ・割込み・ウォッチドッグとリアルタイム性
組込みシステムでは「いつ処理するか」がハードウェアで決まります。その中心がタイマです。マイコンのタイマは、クロックを分周器で遅くし、その 1 拍ごとにダウンカウンタを 1 ずつ減らし、0 になった瞬間に割込みを発生させる、という構造をしています(図 7-8)。
計算の型: タイマ割込みまでの時間
時間 = カウンタ初期値 × 分周比 ÷ クロック周波数
例題: クロック周波数 10 MHz、分周比 1/30 のタイマに、ダウンカウンタの初期値 100 を設定した。最初の割込みが発生するまでの時間は何マイクロ秒か。
- カウンタが 1 減るのに必要なクロック数を出す: 分周比 1/30 なので 30 クロック
- 0 になるまでのクロック数を出す: 100 × 30 = 3,000 クロック
- クロック周波数で割って時間にする: 3,000 ÷ 10,000,000 = 0.0003 秒 = 300 μs
逆に「指定した時間から設定値を求める」問われ方もあります。そのときは設定値 = 時間 × クロック周波数 ÷ 分周比 で求め、16 ビットタイマなら 65,535 以内に収まるかを必ず検算します(科目 B で繰り返し問われる論点です)。
割込みとイベント駆動
センサの変化やタイマの満了など、外部の出来事をきっかけに処理を始める作り方をイベント駆動といいます。きっかけとなるハードウェアの信号が割込みで、CPU は実行中の処理を中断して割込みハンドラへ飛び、終わったら元の処理に戻ります。割込みが発生してからハンドラの処理が始まるまでの遅れを割込みレイテンシといい、これが応答時間の下限を決めます。割込みハンドラは短くし、時間の掛かる処理はタスクへ通知して任せるのが定石です。重要な処理の途中で割り込まれると困る区間では割込みマスクで一時的に受付を禁止しますが、マスクしている間に来た事象を取りこぼす危険があるため、区間は最小にします。
ウォッチドッグタイマ
ウォッチドッグタイマ(WDT)は、暴走やハングアップを検出する監視回路です。正常なプログラムは一定時間ごとに WDT のカウンタをクリアし続けます。プログラムが停止するとクリアが来なくなり、カウンタがしきい値に達した時点で WDT がシステムをリセットします(図 7-9)。「一定時間内にクリアされなければ異常とみなしてリセットする」という定義が、直近 10 年で 3 回(平成 29 年秋、令和元年秋、令和 3 年秋)そのまま出題されています。
リアルタイムシステム
リアルタイムシステムとは「定められた制限時間内に応答を返すシステム」です。速いことではなく間に合うことが要件である点が最重要で、この定義は直近 10 年で 2 回(令和元年秋 問 5、令和 7 年春 問 4)出題され、どちらも同じ趣旨が正解でした。締切を 1 回でも過ぎたら致命的になるものをハードリアルタイム(エアバッグの展開、モータの転倒制御)、多少の遅れなら品質低下で済むものをソフトリアルタイム(動画再生、券売機の画面更新)といいます。設計時は、最悪の場合の応答時間(割込みレイテンシ + 処理時間 + 他タスクによる待ち)が締切に収まるかで判断します。
科目 B「組込みシステム開発」へのつなぎ
科目 B では、直近 10 年の 19 回すべてで「組込みシステム開発」が出題され、問番号も問 7 で固定されています。問われるのは組込み固有の知識量ではなく、本文と図表の仕様を読み取り、時間・容量・状態を突き合わせる力です。本章の知識がそのまま得点になるのは、次の 5 つの計算です。
| 計算の型 | 式 | 点検すること |
|---|---|---|
| タイマ設定値 | 設定時間 ÷ (分周比 ÷ クロック周波数) | 16 ビットなら 65,535 以内に収まるか |
| データ量 | 横 × 縦 × 1 画素のビット数 × フレーム数 × 秒数 | 台数・チャネル数を掛け忘れていないか |
| 通信時間 | (1 ÷ ビットレート) × (データ + スタート・ストップビット) × バイト数 | ビットとバイト、bps と Bps の取り違え |
| 処理時間 | 最短は最少経路、最長は最悪経路 + 待ち時間 | 最長を最短と同じ経路で数えていないか |
| 平均消費電流 | 各状態の (電流 × 時間) の合計 ÷ 周期 | 単位(mA と μA)と指定された桁数 |
計算以外では、状態遷移図の読解と設計、タスク間で何を通知するか、割込みからのタスク起床、確定処理を入れる理由といった論点が繰り返し問われます。解き方の手順とオリジナル演習は第 24 章にまとめています。なお、クロス開発・ICE・エミュレータ・MISRA といった組込みソフトウェアの開発環境は第 13 章で扱います。
消費電力・電源と IoT デバイス
電池で動く組込み機器では、消費電力が製品寿命そのものを決めます。CMOS 回路の消費電力は、信号が切り替わるときに流れる電流(動的電力)と、切り替わっていなくても漏れ続けるリーク電流(静的電力)の和です。半導体の微細化(プロセスルールの縮小)は動的電力を下げる一方でリーク電流を増やすため、使っていない部分の電源そのものを切る技術が重要になりました。発熱は素子の寿命と誤動作に直結するので、消費電力の見積りはヒートシンクや筐体設計といった熱設計とセットで行います。
| 技術 | 仕組み | 効くのは |
|---|---|---|
| クロックゲーティング | 使っていないブロックへのクロック供給を止める | 動的電力 |
| パワーゲーティング | 使っていないブロックへの電源供給そのものを遮断する | リーク電流(静的電力) |
| DVFS | Dynamic Voltage and Frequency Scaling。負荷に応じて動作周波数と電圧を動的に下げる | 動的電力(電圧の 2 乗で効く) |
| スリープ・間欠動作 | 普段は休止し、必要なときだけ短時間起きて処理する | 平均消費電流 |
| エネルギーハーベスティング | 振動・光・熱・電波・押す力など周囲の微小なエネルギーを収穫して電力にする | 電池交換の不要化 |
計算の型: 間欠動作の平均消費電流と電池寿命
平均消費電流 = 待機電流 + (動作電流 × 1 周期あたりの動作時間 ÷ 周期) / 稼働時間 = 電池容量 ÷ 平均消費電流
例題: 60 秒ごとに 0.2 秒だけ 30 mA で送信し、それ以外は 20 μA で待機する IoT 端末がある。容量 1,200 mAh の電池でどれだけ動くか。
- 動作分を 1 周期に平均する: 30 mA × 0.2 秒 ÷ 60 秒 = 0.1 mA = 100 μA
- 待機電流を足す: 100 μA + 20 μA = 120 μA = 0.12 mA
- 電池容量を平均電流で割る: 1,200 mAh ÷ 0.12 mA = 10,000 時間(約 416 日)
mA と μA の混在が最大の失点源です。先にどちらかへ単位をそろえてから足します。周期を延ばすか動作時間を縮めれば平均電流は下がる、という関係も併せて押さえます。
IoT デバイスの通信インタフェース
組込み機器の通信は、基板の中(センサとマイコンの間)、機器と機器の間、機器とクラウドの間の 3 層で使い分けます。距離・速度・消費電力のどれを優先するかで選択肢が決まります。
| インタフェース | 用途・距離 | 特徴 |
|---|---|---|
| I2C | 基板内(数十 cm) | 2 本の信号線(クロックとデータ)に複数のデバイスをぶら下げ、アドレスで選ぶ |
| SPI | 基板内(数十 cm) | 4 本前後の信号線で全二重。I2C より高速だがデバイスごとに選択線が要る |
| UART | 機器間(数 m) | 調歩同期式の直列通信。スタートビットとストップビットを付けて送る |
| CAN | 車載・産業(数十 m) | ノイズに強い差動 2 線。優先度付きの調停で衝突を解決する |
| Bluetooth Low Energy(BLE) | 近距離(数十 m) | 低消費電力の近距離無線。ウェアラブル機器とスマートフォンの接続に使う |
| Zigbee | 近距離(数十 m) | 低速・低消費電力でメッシュ状に多数のノードをつなげる |
| LPWA(LoRa・Sigfox) | 広域(数 km、環境や設置条件による目安) | Low Power Wide Area。低速だが省電力で遠くまで届く。電池で数年動く見守り・検針端末向け |
| 5G | 広域 | 高速・大容量に加え、低遅延と多数同時接続を特徴とする移動通信 |
IoT デバイスのセキュリティと電源
IoT 機器は、設置台数が多く管理者の目が届きにくいうえ、出荷時のまま何年も使われがちです。出荷時の初期パスワードを変更しないまま運用することが最大の弱点で、これを踏み台にした大規模なボットネットの被害が知られています。対策の基本は、初期パスワードの強制変更、不要なポートやサービスの停止、ファームウェアを遠隔で安全に更新できる仕組み(更新ファイルへのディジタル署名と検証)、そして分解や信号の観測によって内部の鍵を読み出されないようにする耐タンパ性の確保です。電源側では、機器を電池で動かすか、給電線を引くか、ハーベスティングで賄うかが設計の分かれ目になります。データセンターでは、交流と直流の変換回数を減らして損失を抑える直流給電も採用されています。
ひっかけポイント
理解度チェック(科目 A 形式)
Q1. アクチュエータの説明として、最も適切なものはどれか。
- 光や温度などの物理量を検出して電気信号に変換する
- 微弱な電気信号を大きな電気信号に増幅する
- エネルギー源のパワーを、回転や直進などの動きに変換する
- アナログ信号を一定周期で標本化してディジタル値に変換する
正解: ウ アクチュエータは電気などのエネルギーを力学的な運動に変える出力側の部品で、モータやソレノイドが代表です。ア は変換の向きが逆でセンサの説明、イ は増幅回路の説明、エ は A/D 変換器の説明です。
Q2. パッシブ方式の RFID タグの説明として、適切なものはどれか。
- 読取り機から送られた電波をアンテナで受け、その電力を使って応答する
- 内蔵した電池の電力で、自ら電波を発信して情報を送る
- 印刷されたパターンに光を当て、反射光の濃淡でコードを読み取る
- 磁気ストライプに記録した情報を、接触させて読み取る
正解: ア パッシブタグは電池を持たず、読取り機の電波から電力を得るため小型・安価で電池交換が不要です。イ はアクティブ方式の説明、ウ はバーコードや二次元コード、エ は磁気カードの説明です。
Q3. ウォッチドッグタイマの機能として、適切なものはどれか。
- 一定周期で割込みを発生させ、周期的な処理を起動する
- 電源を切っても現在時刻を保持し、計時を続ける
- 一定時間ごとに動作ログを外部の記憶装置へ書き出す
- 一定時間内にクリアされなければ異常とみなし、システムをリセットする
正解: エ ウォッチドッグタイマは、正常なプログラムが周期的にクリアし続けることを前提に、クリアが途絶えたら暴走と判断してリセットや強制終了を行う監視回路です。ア はインターバルタイマ、イ はリアルタイムクロック(RTC)、ウ はロギング機能の説明です。
Q4. 1 LSB が 20 ミリボルトの 8 ビット D/A 変換器に、16 進数 41 を入力した。出力電圧は何ミリボルトか。
- 820
- 1,300
- 2,600
- 5,120
正解: イ 16 進数 41 は 4 × 16 + 1 = 65 なので、65 × 20 mV = 1,300 mV です。ア は 41 を 10 進数として掛けた誤り、ウ は入力値を 2 倍した誤り、エ はフルスケール(256 × 20 mV)の値です。
Q5. HDL の説明として、適切なものはどれか。
- 業務の流れや構造をモデルとして図示するための記法
- OS の機能を呼び出すための標準ライブラリの仕様
- 回路の構造や動作を記述し、論理合成によって論理回路に変換できる言語
- Web ページの構造と内容を記述するためのマークアップ言語
正解: ウ HDL(ハードウェア記述言語)は Verilog HDL や VHDL が代表で、記述から論理合成ツールがネットリストを生成し、FPGA や ASIC に実装できます。ア はモデリング記法、イ は API の説明、エ は HTML の説明で、いずれも回路を合成する言語ではありません。
Q6. 直流モータの回転速度を PWM 制御する場合の駆動波形の特徴はどれか。
- 電圧の高さと周期は一定のまま、オンにしている時間の割合が変わる
- 周期は一定のまま、電圧の高さが変わる
- 電圧の高さは一定のまま、周期が変わる
- 正弦波の振幅が回転速度に応じて変わる
正解: ア PWM はデューティ比(オン時間の割合)で平均供給電力を変える方式なので、高さも周期も変わりません。イ は振幅変調、ウ は周波数を変える制御、エ はアナログの正弦波駆動であり、いずれもパルス幅変調ではありません。
Q7. エネルギーハーベスティングの適用例として、適切なものはどれか。
- 使用していない回路への電源供給を遮断して消費電力を削減する
- 負荷に応じて CPU の動作周波数と電圧を下げる
- 大容量の電池を短時間で充電できるようにする
- スイッチを押す力を電力に変換し、電池を持たないリモコンを動かす
正解: エ エネルギーハーベスティングは、振動・光・熱・電波・人の操作力など周囲の微小なエネルギーを収穫して電力にする技術です。ア はパワーゲーティング、イ は DVFS で、どちらも消費を減らす技術であって発電ではありません。ウ は充電技術です。
Q8. リアルタイムシステムの説明として、適切なものはどれか。
- 入力に対して、常にシステムの最短時間で応答するシステム
- 定められた制限時間内に処理を完了して応答するシステム
- 複数の利用者が同時に対話的に利用できるシステム
- 一定量のデータをためてから、まとめて一括処理するシステム
正解: イ リアルタイム性の要件は「速いこと」ではなく「期限に間に合うこと」です。ア は最短時間という別の要件にすり替えた肢、ウ は TSS(時分割システム)、エ はバッチ処理の説明です。
Q9. クロック周波数 8 MHz、分周比 1/16 のタイマに、ダウンカウンタの初期値として 250 を設定した。最初の割込みが発生するまでの時間は何マイクロ秒か。
- 31.25
- 250
- 500
- 4,000
正解: ウ カウンタが 1 減るのに 16 クロック要るので 250 × 16 = 4,000 クロック、4,000 ÷ 8,000,000 = 0.0005 秒 = 500 μs です。ア は分周比を掛け忘れた値、イ は初期値をそのまま時間と読んだ値、エ は時間に換算せずクロック数のまま答えた値です。
Q10. 横 800 × 縦 600 画素、1 画素 2 バイトのビットマップ表示メモリがあり、先頭番地は 0 である。座標 (x, y) = (10, 5) の画素に対応する番地はどれか。座標の原点は左上とする。
- 4,010
- 8,000
- 16,010
- 8,020
正解: エ (5 × 800 + 10) × 2 = 4,010 × 2 = 8,020 番地です。ア は 1 画素 1 バイトとした誤り、イ は x の分を足し忘れた誤り、ウ は x と y を取り違えた(10 × 800 + 5)× 2 の誤りです。
Q11. 2 入力の論理ゲートについて、両方の入力が 1 のときだけ出力が 0 になり、それ以外の入力の組合せでは出力が 1 になる。このゲートはどれか。
- NAND
- AND
- NOR
- XOR
正解: ア 両入力 1 で出力 0、それ以外で 1 は AND の否定、すなわち NAND です。イ は同じ区間で出力が 1 になるので逆、ウ は両入力 0 のときだけ出力が 1、エ は入力が異なるときだけ 1 になり、両入力 0 でも出力が 0 になる点で条件に合いません。
Q12. 論理式 NOT(A・B) と等価な式はどれか。ここで「・」は論理積、「+」は論理和、NOT は否定を表す。
- NOT A・NOT B
- NOT A + NOT B
- A + B
- NOT(A + B)
正解: イ ド・モルガンの法則により、否定を各項に配ると論理積は論理和に入れ替わります。ア と エ は NOT(A + B) と等価な式であり、両方が 0 のときだけ 1 になるので異なります。ウ は否定が付いておらず、両方が 1 のときの値が逆になります。
Q13. 基板に実装した後でも、内部の論理回路を利用者が書き換えられる IC はどれか。
- ASIC
- DSP
- FPGA
- SoC
正解: ウ FPGA は書換え可能な論理デバイス(PLD)の代表で、実装後でも構成情報を書き換えて回路を変更できます。ア は特定用途向けに製造した後は変更できない IC、イ は積和演算に特化したプロセッサ、エ は複数機能を 1 チップに集積したもので、いずれも論理を自由に書き換える仕組みではありません。
Q14. NAND ゲート 2 個をたすき掛けに接続した RS フリップフロップがある。入力 S = 0、R = 1 として出力が X = 1、Y = 0 になった後、S を 1 に戻した。このときの出力はどれか。
- X = 0、Y = 0
- X = 0、Y = 1
- 不定になる
- X = 1、Y = 0
正解: エ NAND 型では S も R も 1 のとき直前の状態が保持されるので、セット後の X = 1、Y = 0 がそのまま残ります。ア は両出力が同時に 0 になる状態で NAND 型では起こりません。イ はリセット後(R = 0)の値、ウ は S と R を同時に 0 にした禁止入力のときの説明です。
まとめ
| 論点 | 覚える形 | 典型的な誤答 |
|---|---|---|
| ゲートの判定 | 両入力 1 で出力 0 なら NAND、1 なら AND | 否定の有無を取り違える |
| ド・モルガン | NOT(A・B) = NOT A + NOT B | 否定を配るときに ・ と + を入れ替え忘れる |
| 全加算器 | 半加算器 2 個 + OR 1 個。n 個で n ビット加算器 | 半加算器だけで桁上がり入力を扱えると考える |
| RS フリップフロップ(NAND 型) | S = R = 1 で保持、S = R = 0 は禁止 | 保持を「不定」と答える |
| 分周器 | フリップフロップ 1 段で 1/2、n 段で 1/2n | 段数と分周比の対応を逆にする |
| HDL・FPGA・ASIC | HDL 記述 → 論理合成 → FPGA(書換え可)/ASIC(製造後は不可) | HDL を汎用プログラミング言語と混同する |
| センサとアクチュエータ | 物理量 → 電気信号/エネルギー → 動き | 変換の向きを逆にする |
| RFID | パッシブは受電して応答、アクティブは電池内蔵で発信 | パッシブを電池内蔵と説明する |
| D/A 変換 | 出力電圧 = 1 LSB × 入力値、1 LSB = フルスケール ÷ 2n | 2n と 2n−1、V と mV、16 進と 10 進の混同 |
| PWM | 高さと周期は一定、オン時間の割合だけが変わる | 振幅や周期が変わる波形を選ぶ |
| タイマ割込み | 時間 = 初期値 × 分周比 ÷ クロック周波数 | 分周比を掛け忘れる、ビット幅の上限を検算しない |
| ビットマップ番地 | 先頭 + (y × 横画素数 + x) × 画素バイト数 | 1 画素 1 バイトと決めつける、x と y を入れ替える |
| ウォッチドッグタイマ | 期限内にクリアされなければリセット | インターバルタイマや RTC と混同する |
| リアルタイムシステム | 制限時間内に応答(速さではなく期限) | 「最速で応答」と答える |
| 低消費電力 | クロックゲーティング=動的電力、パワーゲーティング=リーク電流、DVFS=周波数と電圧 | ハーベスティング(発電)を省電力技術と混同する |
| 平均消費電流 | 待機電流 + 動作電流 × 動作時間 ÷ 周期 | mA と μA を混在させたまま足す |
ハードウェアは科目 A で 1 回平均 3.4 問と多くはありませんが、そのうち半分が「組込みシステムの構成部品」に集中し、しかも同じ文言の再出題が目立ちます。この章の表と 4 つの計算の型を押さえれば、少ない学習量で確実に得点できる分野です。次の第 8 章では、ここで扱った表示デバイスの先にある、ユーザーインタフェースとマルチメディアの表現技術を扱います。