変更要約: 初版
2.6ハードウェアと組込み
FE/SGの論理回路・フリップフロップの基礎を踏まえ、組合せ回路(半加算器/全加算器)と順序回路の設計、真理値表からの回路読み取りを深掘りします。さらにIoTデバイス(センサ/アクチュエータ)の実務的な設計判断、リアルタイムOS(RTOS)の応答性、組込み特有の省電力設計(動的電圧・周波数スケーリング等)まで扱います。
FE/SGでは組合せ回路・順序回路の区別が問われますが、応用情報ではさらに一歩踏み込み、具体的な回路(加算器)を真理値表から読み解く力や、組込みシステムで避けて通れないリアルタイム性・省電力という実務要件まで理解しておく必要があります。
2.6.1半加算器と全加算器
| 入力A | 入力B | 桁上げ入力(Cin) | 和(S) | 桁上げ出力(Cout) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
- 半加算器=2つの1ビット入力を加算し、和(S)と桁上げ(C)を出力する組合せ回路。入力A・Bに対し、S=AとBの排他的論理和(XOR)、C=AとBの論理積(AND)という論理式で実現されます。ただし半加算器は下位桁からの桁上げ入力を受け取れないという制約があり、単体では複数桁の加算を連結できません。
- 全加算器=半加算器の制約を解消し、2つの1ビット入力に加えて下位桁からの桁上げ入力(Cin)も受け取って、和(S)と上位桁への桁上げ出力(Cout)を求める組合せ回路です。全加算器を桁数分だけ連結(Coutを次の桁のCinへつなぐ)することで、任意の桁数の2進数加算回路を構成できます。上の表は全加算器の真理値表(A・B・Cinの組合せに対するS・Coutの例)です。
「半加算器=下位からの桁上げを受け取れない(S=XOR、C=AND)」「全加算器=桁上げ入力(Cin)も受け取り複数桁を連結できる」「全加算器を連結すれば任意桁数の2進加算回路になる」が最頻出です。真理値表からS・Coutの値を読み取らせる問題や、AND/OR/XORの組合せから論理式を構成させる問題も繰り返し出ます。
全加算器の真理値表を実際に検算してみましょう。入力A=1、B=1、下位桁からの桁上げ入力Cin=1という組合せを考えます。2進数の加算として素朴に計算すると、1+1+1=3(10進)=11(2進)です。2進数の「11」は下の桁が1、上の桁(桁上げ)が1を意味するため、和S=1、桁上げ出力Cout=1となり、上の表の最終行(A=1・B=1・Cin=1のとき S=1・Cout=1)と一致します。同様にA=1、B=1、Cin=0の組合せでは、1+1+0=2(10進)=10(2進)となり、S=0、Cout=1です。この一致は偶然ではなく、全加算器の論理式が「3つの1ビット入力の合計を2進数2桁(S・Cout)で正しく表現する」ように設計されているために成り立ちます。この仕組みを踏まえると、8ビットの2進数どうしを加算する回路は、全加算器を8個連結し、下位桁の全加算器のCoutを次の桁の全加算器のCinへ順につないでいけば実現できることが分かります(最下位桁だけはCinに0を固定した回路、あるいは半加算器を使うこともあります)。IoTデバイスの実務設計に話を移すと、多くの組込み機器はリアルタイムOS(RTOS)の上で動作します。汎用OSが「平均的なスループット」を重視するのに対し、RTOSは決められた時間内に必ず処理を完了させる(応答時間の予測可能性)ことを最優先します。例えば自動車のエアバッグ制御では、衝突検知センサからの入力に対し「平均で速い」だけでは不十分で、最悪の場合でも規定時間内に必ずアクチュエータ(点火装置)を作動させることが要件になり、これを保証する設計思想がハードリアルタイムです(多少の遅延が許容される用途はソフトリアルタイムと呼び分けます)。バッテリー駆動のIoTデバイスでは、使わない回路ブロックへの電力供給を止める、処理負荷に応じてクロック周波数と電圧を動的に下げるDVFS(Dynamic Voltage and Frequency Scaling、動的電圧・周波数スケーリング)といった省電力設計が稼働時間を左右する重要な設計要素になります。
ひっかけ: 「半加算器は下位桁からの桁上げ入力を受け取れるため、単体で複数桁の加算回路を構成できる」は誤りです。下位からの桁上げ入力(Cin)を受け取れるのは全加算器で、半加算器にその機能はなく単体では多桁加算に連結できません。また「リアルタイムOSは平均処理速度が最も速いことを最優先する」も誤り=RTOSが最優先するのは平均速度ではなく、決められた時間内に必ず処理を完了させる応答の予測可能性です。「DVFSはクロック周波数のみを操作し電圧は変更しない」も誤り=DVFSはクロック周波数と電圧の両方を負荷に応じて動的に調整する省電力技術です。
2.6.2この節のまとめ
- 半加算器=下位からの桁上げ入力を受け取れない(S=XOR、C=AND)。全加算器=Cinも受け取り連結可。連結すれば任意桁数の加算回路になる
- リアルタイムOS(RTOS)は平均速度でなく応答時間の予測可能性(ハードリアルタイム/ソフトリアルタイム)を最優先
- DVFSはクロック周波数と電圧を負荷に応じ動的調整する省電力技術。IoTデバイスはセンサ(入力)+アクチュエータ(出力)で構成
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 2つの1ビット入力に加え下位桁からの桁上げ入力も受け取り、和と上位桁への桁上げを出力する回路はどれか。この回路を連結すれば任意桁数の2進加算器を構成できる。
Q2. 全加算器においてA=1、B=0、Cin=1が入力された場合の和(S)と桁上げ出力(Cout)の組合せはどれか。
Q3. 自動車のエアバッグ制御のように、最悪の場合でも規定時間内に必ず処理(点火装置の作動)を完了させることが求められる設計要件はどれか。

