ハードウェア・回路・計測制御
応用情報技術者試験の科目Aに必要な組合せ回路と順序回路、全加算器とDフリップフロップ、半導体メモリ、標本化定理と量子化、センサー・アクチュエーターとフィードバック制御・PWMを、例題とオリジナル演習問題5問で学びます。
AP科目A・第11回 · 2026年度・シラバスVer.7.2に基づく独立した学習資料です。IPAとの提携はなく、合格を保証しません。 シリーズ一覧を見る
免責事項:本記事はIPA応用情報技術者試験(AP)科目Aの学習用非公式資料です。IPAとは無関係であり、出題範囲や出題傾向を保証するものではありません。最新情報は必ずIPAの公式資料で確認してください。後半の練習問題5問はすべてオリジナル問題であり、過去問題は使用していません。
学習インデックス
- AP 科目A 02:論理式・真理値表 — 論理演算の基礎(今回は再説明しません)
- AP 科目A 07:CPUの構造 — CPU内での加算器・レジスタの役割、記憶階層(今回は繰り返しません)
- AP 科目A 11:ハードウェア・回路・計測制御 ← 本記事
シラバス対応(Ver.7.2)
| 大分類/中分類 | 項目 | 今回扱う内容 |
|---|---|---|
| 1 基礎理論/1 基礎理論 | 3. 情報に関する理論(2)符号理論 | アナログとデジタル、標本化、量子化、A/D変換 |
| 1 基礎理論/1 基礎理論 | 5. 計測・制御に関する理論(1)信号処理 | サンプリング定理、A/D変換・D/A変換 |
| 1 基礎理論/1 基礎理論 | 5.(2)① 制御の考え方、仕組み | フィードバック・フィードフォワード、オープン/クローズドループ、応答特性、制御安定性、PWM制御 |
| 1 基礎理論/1 基礎理論 | 5.(2)② センサー・アクチュエーター | センサーで検出 → コンピュータが判断 → アクチュエーターで機械的動作へ変換 |
| 2 コンピュータシステム/3 コンピュータ構成要素 | 1. プロセッサ(5)、(6)① | 加算器・レジスタの役割(簡単な関連付け)、半加算器・全加算器、順序回路・組合せ回路 |
| 2 コンピュータシステム/3 コンピュータ構成要素 | 2. メモリ(1) | RAM/ROM、DRAM/SRAM、リフレッシュ、フラッシュメモリ、揮発性・不揮発性 |
| 2 コンピュータシステム/6 ハードウェア | 1.(1)電気・電子回路 | 組合せ論理回路・順序論理回路、XOR、フリップフロップ、タイミングチャート |
| 2 コンピュータシステム/6 ハードウェア | 1.(2)機械・制御 | オープンループ、クローズドループ、フィードバック制御、PWM制御 |
| 2 コンピュータシステム/6 ハードウェア | 1.(3)④ 組込みシステムの構成部品 | センサー、アクチュエーター、メモリ、A/D・D/Aコンバータ |
用語対照表
| 한국어 | 日本語 | English |
|---|---|---|
| 조합회로 | 組合せ回路 | combinational circuit |
| 순서회로 | 順序回路 | sequential circuit |
| 전가산기 | 全加算器 | full adder |
| 반가산기 | 半加算器 | half adder |
| 자리올림(캐리) | 桁上げ(キャリー) | carry |
| 배타적 논리합 | 排他的論理和(XOR) | exclusive OR (XOR) |
| 플립플롭 | フリップフロップ | flip-flop |
| 클록 / 상승 에지 | クロック/立上りエッジ | clock / rising edge |
| 타이밍 차트 | タイミングチャート | timing chart |
| 휘발성 / 비휘발성 | 揮発性/不揮発性 | volatile / nonvolatile |
| 리프레시 | リフレッシュ | refresh |
| 표본화(샘플링) | 標本化(サンプリング) | sampling |
| 표본화 정리 | 標本化定理(サンプリング定理) | sampling theorem |
| 에일리어싱 | エイリアシング(折返し雑音) | aliasing |
| 안티에일리어싱 저역통과 필터 | アンチエイリアシング用ローパスフィルタ | anti-aliasing low-pass filter |
| 양자화 / 양자화 오차 | 量子化/量子化誤差 | quantization / quantization error |
| 센서 / 액추에이터 | センサー/アクチュエーター | sensor / actuator |
| 오픈루프 / 클로즈드루프 | オープンループ/クローズドループ | open loop / closed loop |
| 피드백 제어 | フィードバック制御 | feedback control |
| 목표값 / 측정값(제어량) / 편차 | 目標値/制御量(測定値)/偏差 | setpoint / measured value / error |
| 제어기 / 제어대상(플랜트) | 調節部(コントローラ)/制御対象 | controller / plant |
| PWM(펄스폭 변조) / 듀티비 | PWM(パルス幅変調)/デューティ比 | PWM (pulse-width modulation) / duty cycle |
1. 組合せ回路と順序回路
- 組合せ回路:出力が現在の入力だけで決まります。内部状態(記憶)を持ちません。例:全加算器、デコーダ、マルチプレクサ。
- 順序回路:出力が現在の入力と内部状態(過去の履歴)で決まります。状態を記憶する素子(フリップフロップなど)を持ち、通常はクロックに同期して状態が変化します。例:レジスタ、カウンタ、シフトレジスタ。
- タイミングチャートは、時間軸上にクロック・入力・出力の0/1の変化を描いた図です。順序回路では「どのクロックエッジでどの値を取り込むか」を読み取ることが要点です。
- 実際の回路では、クロックエッジの直前・直後の一定時間、入力が安定している必要があり(セットアップ時間・ホールド時間)、満たさない場合は動作が保証されません。試験問題では通常、これを満たすものとして扱います。
2. フリップフロップ:1ビットの記憶素子
フリップフロップは順序回路の基本素子で、1ビットを記憶します。今回扱うポジティブエッジトリガ型Dフリップフロップは、クロックが0→1に変わる立上りエッジの瞬間のDの値をQに取り込み、次の立上りエッジまでQを保持します。エッジとエッジの間にDが変化してもQは変化しません。レジスタは、このフリップフロップを複数並べたものです。
3. 半導体メモリの要点のみ
| 種類 | 記憶の原理(典型) | リフレッシュ | 電源遮断時 |
|---|---|---|---|
| SRAM | 双安定(フリップフロップ型)セル | 不要 | 内容は消える(揮発性) |
| DRAM | コンデンサ(キャパシタ)の電荷 | 必要(電荷が漏れるため周期的に再書込み) | 内容は消える(揮発性) |
| ROM/フラッシュメモリ | — | — | 内容を保持(不揮発性) |
- 試験では「リフレッシュが必要なのはDRAM」「SRAMも揮発性」「フラッシュメモリは不揮発性」を区別できれば十分です。
- 速度・容量や記憶階層の比較はAP 科目A 07の範囲なので、ここでは繰り返しません。
4. A/D変換:標本化 → 量子化 → 符号化
- 標本化(サンプリング):連続時間の信号を一定間隔(標本化周波数fs)で取り出します。
- 量子化:各標本値を有限個のレベルのいずれかに対応付けます。このとき生じる差が量子化誤差です。
- 符号化:レベル番号をNビットの2進コードで表します。Nビットで2^N通りのコードを表現できます。
標本化定理(サンプリング定理):信号が最高周波数fmaxに帯域制限されているとき、理論上 fs > 2·fmax(厳密には「より大きい」)であれば元の信号を復元できます。fs = 2·fmax という境界値は安全な選択ではなく、実務では余裕を持たせます。fs/2をナイキスト周波数といいます。
エイリアシング(折返し雑音):fs/2を超える周波数成分は、標本化後により低い周波数に折り返して現れ、元の信号と区別できなくなります。これを防ぐため、**ADCの前段(アナログ段)にアンチエイリアシング用ローパスフィルタ(LPF)**を置き、fs/2以上の成分をあらかじめ減衰させます。標本化した後にデジタル処理で取り除くことはできません。
5. センサー・アクチュエーター・フィードバック制御
- センサー:温度・光・距離・圧力などの物理量を電気信号に変換します。
- アクチュエーター:電気信号を機械的な動作や熱などに変換します(DCサーボモーター、ステッピングモーター、ソレノイド、ヒーターなど)。
- オープンループ制御:結果を測定して戻さず、あらかじめ決めたとおりに操作します。外乱があっても補正できません。(あらかじめ定めた順序で進めるシーケンス制御が代表例です。)
- クローズドループ(フィードバック)制御:測定値を目標値と比較して偏差を求め、偏差を小さくする方向に操作します。これが**ネガティブフィードバック(負帰還)**です。
- フィードフォワード制御:外乱を事前に測定し、その影響が現れる前に補正します。
- 構成要素:目標値 r、測定値(制御量)y、偏差 e、調節部(コントローラ)、アクチュエーター、制御対象、センサー。
- PWM制御:一定の周期の中でON時間の割合(デューティ比)を変えて平均電力を調整します。ON時間 = 周期 × デューティ比。
- 安定性の注意:フィードバックは偏差を小さくしようとする構造にすぎず、それ自体で安定性を保証するものではありません。ゲインが過大であったり**遅れ(むだ時間)**が大きかったりすると、オーバーシュート・振動(ハンチング)・発散が起こり得ます。応答特性(速応性・オーバーシュート・定常偏差)と安定性はあわせて検討する必要があります。
6. 例題A〜E
例題A:全加算器
定義:S = A XOR B XOR Cin、Cout = AB + Cin(A XOR B)。(XOR = 排他的論理和、AB = A AND B、+ = OR)
| A | B | Cin | A XOR B | S | AB | Cin(A XOR B) | Cout |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
検算:すべての行で A+B+Cin(10進)= 2·Cout + S が成り立ちます(例:1+1+1 = 3 = 2·1 + 1)。
トレース A=1、B=1、Cin=0:A XOR B = 0 → S = 0 XOR 0 = 0。AB = 1 → Cout = 1 + 0·0 = 1。つまり 1+1+0 = 2 = (10)₂ です。
全加算器は組合せ回路なので、出力は現在の入力(A、B、Cin)だけで決まり、以前の入力の影響は受けません。
例題B:ポジティブエッジトリガ型Dフリップフロップ
前提:初期値 Q = 0。各立上りエッジの直前でDは安定している(セットアップ時間・ホールド時間を満たす)。非同期のリセット/セット入力は使用しない。伝搬遅延は無視する。
| 立上りエッジ | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| エッジ直前のD | 1 | 0 | 1 | 1 |
| エッジ直後のQ | 1 | 0 | 1 | 1 |
- Qはエッジ直後に [1, 0, 1, 1] となり、エッジとエッジの間はその値を保持します。エッジ間でDが変化しても、Qは次の立上りエッジまで変化しません。
- 対比:組合せ回路であれば出力は入力に即座に(遅延分だけ遅れて)追従し、「保持」という概念がありません。Dフリップフロップは状態を記憶するため順序回路です。
例題C:標本化とデータ量
前提:アナログ信号は fmax = 3 kHz に帯域制限されている。モノラル(1チャネル)、12ビット/標本、ヘッダ・圧縮なし、長さ2 s。単位は kB = 1,000 B(10進)、KiB = 1,024 B(2進)。
- 理論上の条件:fs > 2·fmax = 6 kHz(厳密な不等号)。
- 選択:fs = 8 kHz → 8 kHz > 6 kHz なので条件を満たす(余裕あり)。
- 標本数:8,000 標本/s × 2 s = 16,000 標本。
- ビット数:16,000 × 12 bit = 192,000 bit。
- バイト数:192,000 ÷ 8 = 24,000 B = 24 kB(10進)。
- 2進単位:24,000 ÷ 1,024 = 23.4375 KiB。
3 kHzを超える成分(雑音など)が混入すると、fs/2 = 4 kHzを超える成分が低い周波数に折り返してエイリアシングが生じ得るため、ADCの前段にアナログのアンチエイリアシング用LPFを置きます。
例題D:量子化(10ビット、[0, 5 V))
規約(本記事で一貫して使用):理想的なユニポーラ(単極性)ADC。入力範囲 [0, 5 V)(0 Vを含み、5 Vを含まない)を 2^10 = 1,024個の均等な区間(ビン)に分けます。コードkは区間 [kΔ, (k+1)Δ) を表し、代表レベルを区間の中央 (k+½)Δ に置くことで、入力を最も近いレベルに対応付けます。クリッピング・雑音・非直線性は除外します。
- 量子化ステップ:Δ = 5/1,024 V = 0.0048828125 V = 4.8828125 mV
- 最大量子化誤差(最近接レベル基準):Δ/2 = 2.44140625 mV
- Vin = 2.50 V のコード:floor(2.50/Δ) = floor(2.50 × 1,024 / 5) = floor(512) = 512(2.50 Vは区間512の下端境界であり、[ , ) の規約により区間512に属する)
注意:両端の0 Vと5 Vをそれぞれコード0と1,023に合わせる Δ = 5/(2^10 − 1) という規約も存在しますが、本記事では混用しません。問題を解くときは、まず問題文に明示された規約を確認してください。
例題E:フィードバック制御とPWM
前提:ヒーターで温度を制御する。目標値 r = 25 °C、測定値 y = 22 °C。偏差の規約は e = r − y。偏差が正のとき、調節部は加熱を増やす出力を出す。PWM周期20 ms、デューティ比25%。理想的なスイッチングを仮定する。
- 偏差:e = 25 − 22 = +3 °C(目標より3 °C低い)。
- 信号の流れ:センサー → ADC → 調節部 → PWM/ドライバ → ヒーター(アクチュエーター) → 制御対象(室内・装置) → センサー(ループで戻る)。
- e > 0 → 加熱を増やす → yが上昇 → eが減少:操作が偏差を小さくする方向なのでネガティブフィードバックです。
- PWM:1周期あたりのON時間 = 20 ms × 0.25 = 5 ms(OFF 15 ms)。これは平均供給電力を決めるだけで、25 °Cへの到達や安定性を保証しません。
- オープンループとの対比:測定値を戻さず「デューティ比25%固定」で運転するだけでは、外気温の変化などの外乱を補正できません。
- 安定性:ゲインを過大にしたり、センサーや熱伝達の遅れが大きかったりすると、目標値の周りで振動したり不安定になったりし得ます。
7. 以前の回との関連(簡潔に)
- AP2(論理式・真理値表):全加算器のXOR・AND・ORの式や真理値表の読み方は、AP2の道具をそのまま使います。今回は再説明しません。
- AP7(CPU):CPUのALU内の加算器は全加算器をビット数分つないだもので、レジスタはフリップフロップの集まりです。CPUの構造・記憶階層はAP7を参照してください。
8. クイックシート
- 組合せ回路 = 現在の入力のみ/順序回路 = 入力 + 状態(記憶)
- S = A⊕B⊕Cin、Cout = AB + Cin(A⊕B)
- D-FF(立上りエッジ):エッジ時点のD → Q、エッジ間は保持
- SRAM:双安定セル・リフレッシュ不要・揮発性/DRAM:コンデンサ・リフレッシュ必要・揮発性/ROM・フラッシュ:不揮発性
- 標本化定理:fs > 2·fmax、ADCの前段にアンチエイリアシング用LPF
- データ量(bit)= fs × 時間 × ビット/標本 × チャネル数(ヘッダ・圧縮なし)
- kB = 1,000 B、KiB = 1,024 B
- [0, V) を 2^N 区間:Δ = V/2^N、最大誤差(最近接レベル)= Δ/2
- e = r − y、PWMのON時間 = 周期 × デューティ比
- ネガティブフィードバック ≠ 安定性の保証(ゲイン・遅れに注意)
9. よくある誤り
- 全加算器のSをORで計算する(1, 1, 0 → S = 1 と誤答)。
- D-FFのQがエッジ間でもDに追従すると考える(ラッチ/組合せ回路との混同)。
- D-FFの出力を1エッジ遅れて読む(シフトレジスタの次段との混同)。
- fs = 2·fmax を「十分」と判断する(厳密な不等号を無視)。
- ビットからバイトへの変換で ÷8 を忘れる、または kB と KiB を混同する。
- Δの計算で 5/2^10 と 5/(2^10−1) の規約を混用する。
- 最大量子化誤差をΔと誤解する(最近接レベルの規約ならΔ/2)。
- 偏差の符号の規約(r − y)を逆にする。
- デューティ比25%のON時間をOFF時間と取り違える。
- 「フィードバックなら必ず安定」と断定する。
10. 練習問題(オリジナル5問)
すべての問題は本記事のために新たに作成したオリジナル問題です。過去問題は使用していません。
問1 全加算器を S = A XOR B XOR Cin、Cout = AB + Cin(A XOR B) と定義する。A = 1、B = 1、Cin = 0 のときの出力として、正しいものはどれか。
- ア S = 0、Cout = 0
- イ S = 0、Cout = 1
- ウ S = 1、Cout = 1
- エ S = 1、Cout = 0
問2 ポジティブエッジトリガ型Dフリップフロップの初期値は Q = 0 である。4回の立上りエッジそれぞれの直前のDの値が順に [1, 0, 1, 1] であるとき(セットアップ時間・ホールド時間を満たし、非同期入力は使用しない)、Qの動作として正しいものはどれか。
- ア 各エッジ直後のQは [0, 1, 0, 1] である。
- イ 各エッジ直後のQは [1, 0, 1, 1] であり、エッジ間ではQはDの変化に即座に追従する。
- ウ 各エッジ直後のQは [1, 0, 1, 1] であり、エッジ間ではQは直前の値を保持する。
- エ 各エッジ直後のQは [1, 1, 1, 1] である。
問3 fmax = 3 kHz に帯域制限されたアナログ信号を、fs = 8 kHz、2秒間、モノラル、12ビット/標本でA/D変換する(ヘッダ・圧縮なし、kB = 1,000 B)。正しいものはどれか。
- ア 標本数16,000、データ量192,000バイト
- イ 標本数8,000、データ量12,000バイト
- ウ 標本数16,000、データ量23.4375 kB
- エ 8 kHz > 6 kHz なので標本化定理の条件を満たし、標本数16,000、データ量24,000バイト(24 kB)
問4 理想的な10ビットのユニポーラADCが、入力範囲 [0, 5 V) を 2^10 個の均等な区間に分け、入力を最も近いレベルに対応付ける(クリッピング・雑音・非直線性は除く)。量子化ステップΔと最大量子化誤差の組合せとして、正しいものはどれか。
- ア Δ ≒ 4.883 mV、最大誤差 ≒ 2.441 mV
- イ Δ ≒ 4.888 mV、最大誤差 ≒ 2.444 mV
- ウ Δ ≒ 4.883 mV、最大誤差 ≒ 4.883 mV
- エ Δ = 0.5 V、最大誤差 = 0.25 V
問5 ヒーターによる温度制御で、目標値 r = 25 °C、測定値 y = 22 °C、偏差 e = r − y と定義する。信号の流れは センサー → ADC → 調節部 → PWM/ドライバ → ヒーター → 制御対象 → センサー であり、eが正のとき加熱を増やす。PWM周期20 ms、デューティ比25%のとき、正しいものはどれか。
- ア e = −3 °C であり、1周期あたりのON時間は5 msである。
- イ e = +3 °C であり、1周期あたりのON時間は15 msである。
- ウ e = +3 °C であり、1周期あたりのON時間は5 msである。ネガティブフィードバックは偏差を小さくしようとするが、それ自体で安定性を保証するものではない。
- エ e = +3 °C であり、1周期あたりのON時間は5 msである。ネガティブフィードバックなので、振動せずに25 °Cへ収束することが保証される。
11. 解答と解説
| 問 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 正解 | イ | ウ | エ | ア | ウ |
問1(正解 イ)
- ア ✗ 1+1の桁上げを捨てています。AB = 1 なので Cout = 1 です。
- イ ✓ A XOR B = 0、S = 0 XOR 0 = 0。Cout = AB + Cin(A XOR B) = 1 + 0 = 1。
- ウ ✗ SをXORではなくOR(1 OR 1 OR 0 = 1)で計算しています。
- エ ✗ SとCoutの値を入れ替えています(1+1 = (10)₂ の桁上げがCout)。
問2(正解 ウ)
- ア ✗ エッジ直前のQ(以前の値)を出力として読み、1エッジずつ遅らせています。D-FFはそのエッジのDを、そのエッジ直後のQとして出力します。
- イ ✗ エッジ直後の値は正しいが、エッジ間でQがDに追従するという部分が誤りです。それは透過型ラッチ(または組合せ回路)の動作です。
- ウ ✓ 各立上りエッジでDを取り込んで [1, 0, 1, 1] となり、次のエッジまで保持します。
- エ ✗ 一度1になると1のままと仮定しています。2回目のエッジ直前は D = 0 なので Q = 0 になります。
問3(正解 エ)
- ア ✗ 192,000はビット数です。÷8をせずにバイトと誤表記しています。
- イ ✗ 長さ2秒を掛けていません(1秒分のみ計算)。
- ウ ✗ 23.4375はKiB(1,024 B単位)の値です。10進のkBでは24 kBです。
- エ ✓ fs = 8 kHz > 2 × 3 kHz = 6 kHz。8,000 × 2 = 16,000標本、× 12 = 192,000 bit = 24,000 B = 24 kB。
問4(正解 ア)
- ア ✓ Δ = 5/1,024 V = 4.8828125 mV ≒ 4.883 mV、最大誤差 Δ/2 = 2.44140625 mV ≒ 2.441 mV。
- イ ✗ 両端合わせの規約 5/(2^10 − 1) = 5/1,023 V を混用しています。問題の規約は [0, 5 V) を1,024区間に分けるものです。
- ウ ✗ 最大誤差をΔとしています(切捨て規約の場合の値)。最も近いレベルに対応付ける場合はΔ/2です。
- エ ✗ 2^10ではなくビット数の10で割っています。
問5(正解 ウ)
- ア ✗ 偏差を y − r で計算しており符号が逆です。規約は e = r − y = +3 °C です。
- イ ✗ 15 msはOFF時間(75%)です。ON時間は 20 ms × 0.25 = 5 ms です。
- ウ ✓ e = +3 °C、ON時間5 ms。ネガティブフィードバックは偏差を小さくする構造ですが、安定性はゲインや遅れなどに依存します。
- エ ✗ 偏差とON時間は正しいが、「安定収束が保証される」が誤りです。ゲインが過大であったり遅れが大きかったりすると、振動や不安定が生じ得ます。
12. セルフチェック
- 組合せ回路と順序回路の違いを「状態(記憶)」という言葉で説明できる。
- 全加算器の真理値表8行を式から再現できる。
- D-FFのタイミングチャートから、エッジ直後のQとエッジ間の保持を読み取れる。
- SRAM/DRAM/ROM・フラッシュのリフレッシュと揮発性を区別できる。
- fs > 2·fmax と、アンチエイリアシング用LPFの位置(ADCの前段)を説明できる。
- データ量を bit → B → kB/KiB に正確に換算できる。
- Δ = V/2^N と最大誤差Δ/2の前提となる規約を説明できる。
- e = r − y の符号とPWMのON時間を計算し、フィードバックが安定性を保証しない理由を説明できる。
13. 復習計画
- 1日後:クイックシートを見ずに、全加算器の式・真理値表とD-FFのトレースを書き直す。
- 3日後:例題C・Dの数値を変えて(例:fmax = 4 kHz、16ビット)再計算し、単位を点検する。
- 7日後:練習問題5問を解き直し、各誤答選択肢がなぜ誤りかを1行ずつ説明する。
出典
- IPA「応用情報技術者試験(レベル3)シラバス Ver.7.2」 https://www.ipa.go.jp/shiken/syllabus/omgdg50000005kq5-att/syllabus_ap_ver7_2.pdf (確認日:2026-10-21)
- 練習問題はすべてオリジナルであり、過去問題は使用していません。