ハードウェア(論理回路など)

このページでは、NANDや半加算器などの論理回路、フリップフロップ、LSIの設計と低消費電力化、A/D変換、センサを使ったコンピュータ制御がわかります。

  • 一言で言うと:
    • コンピュータの中身を「電気の部品」のレベルで見る話。0と1を計算する回路、覚える回路、それをまとめたチップ(LSI)、電気を節約する工夫、アナログとデジタルの変換、機械を動かす制御まで。

計算する回路(組合せ論理回路)→ 覚える回路(順序論理回路)→ チップにまとめる(LSIの設計・開発)→ 電気を節約する(低消費電力LSI)→ アナログとつなぐ(データコンバータ)→ 機械を動かす(コンピュータ制御)

覚え方の軸

  • 論理回路は「覚えるか、覚えないか」で2つに分かれる:
    • 入力だけで出力が決まる(組合せ論理回路)⇔ 過去の状態も使う(順序論理回路=フリップフロップ)
  • すべての回路はNANDだけで作れる:
    • 「同じ2つを入れたNAND=NOT」が出発点。AND・ORもNANDの組合せで作れる
  • 消費電力は「動くときの電力(ダイナミック)」と「漏れる電力(スタティック)」の2つ:
    • ダイナミックは電圧²×周波数に比例 → 電圧と周波数を下げる。スタティック(リーク)は電源を切る(パワーゲーティング)
  • A/D変換の細かさは「幅 ÷ 2のビット数乗」の1本の式:
    • 測れる最大値は「上限 − 1目盛り」
  • 制御は「順番どおり(シーケンス)」「結果を見て直す(フィードバック)」「乱れを先回りして直す(フィードフォワード)」の3つ:
    • 流れは「センサで測る → コンピュータが判断 → アクチュエータで動かす」

組合せ論理回路:0と1を計算する回路

  • このまとめでの書き方:
    • 否定は本来上線(A̅)で書くが、ここでは ¬A(Aの否定)、¬(A・B)(A・B全体の否定)と書く。「・」はAND、「+」はOR、「⊕」はXOR
  • 論理演算:
    • 1(真:True)か0(偽:False)の2通りの値しかとらない演算
  • 論理素子:
    • 論理演算を行う最小の回路。論理ゲート、または単にゲートともいう
  • 論理回路:
    • 論理素子の組合せでできた回路。組合せ論理回路のほかに順序論理回路(順序回路)がある
  • AND・OR・NOTを組み合わせれば、すべての論理演算を表現できる
素子 出力Yが1になるのは 論理式
論理積素子(ANDゲート) A、Bがともに1のときだけ A・B
否定論理積素子(NANDゲート) A、Bがともに1のときだけ0(それ以外は1) ¬(A・B)
論理和素子(ORゲート) A、Bの少なくとも一方が1 A+B
否定論理和素子(NORゲート) A、Bがともに0のときだけ1 ¬(A+B)
排他的論理和素子(XORゲート) A、Bが異なるとき1(同じなら0) A⊕B
論理否定器(NOTゲート) Aが0のとき1(1なら0) ¬A
  • 組合せ論理回路:
    • 入力に対して出力が一意に決まる論理回路。同じ機能でも、素子の組合せ方でいろいろな構成がある
  • 論理回路の設計の流れ:
    • 真理値表の作成 → 論理式を求める → 論理回路の設計
  • 真理値表:
    • 条件の真偽(T、F)や入力(1、0)の組合せごとに、論理式や論理回路の出力がどうなるかを表したもの
  • 論理式の求め方:
    • 出力が1になる入力条件すべての論理和をとる(加法標準形)
    • 論理式の簡略化には、演算則(ド・モルガンの法則など)やカルノー図を使う
  • 例:「入力AとBがともに0のときだけ1を出力する」回路
    • 真理値表:
      • (A,B)=(0,0)→1、(0,1)→0、(1,0)→0、(1,1)→0
    • 加法標準形:
      • 出力が1になるのは1通りだけなので ¬A・¬B
    • ド・モルガンの法則で:
      • ¬A・¬B = ¬(A+B)。つまりNORゲート1つでも、「NOT2つ+AND1つ」でも作れる
  • ド・モルガンの法則:
    • ① ¬(A・B) = ¬A + ¬B
    • ② ¬(A+B) = ¬A・¬B
    • 覚え方:
      • 「全体の否定を外すと、・と+が入れ替わる」
  • 等価回路:
    • 回路の構成は違っても、同じ結果を出力する論理回路
  • 半加算器:
    • 1桁の2進数AとBを足す回路(1桁だけの加算)。下の桁からの桁上げは扱わない
    • S(和の1桁目):
      • AとBが異なるとき1 → S=¬A・B + A・¬B = A⊕B(XOR)
    • C(桁上げ):
      • AとBがともに1のとき1 → C=A・B(AND)
    • ★試験では構成する素子が問われる:
      • XORゲート1つ + ANDゲート1つ
    • ほかの作り方:
      • ANDゲート3つ+ORゲート1つ+NOTゲート2つでも作れる。XORは (A+B)・¬(A・B) とも等価なので、少なくとも3通りの作り方がある(実際はもっと多い)
    • 例:
      • 1+1 → S=0、C=1(2進数で「10」)
  • 全加算器:
    • 入力A、Bのほかに、下の桁からの桁上げも入力にする加算回路。複数桁の加算に使う
    • 例:
      • リップルキャリー加算器(全加算器を並べ、桁上げを順に上の桁へ送る。一番下の桁上げ入力には0を設定)
  • 機能が複雑になるほど、たくさんの論理式が考えられる:
    • 性能、設計のしやすさ、コストなどから最適な論理式を選んで回路を作る
  • NANDだけで何でも作れる(★頻出)
    • X NAND Y:
      • XとYの否定論理積 ¬(X・Y)
    • ① X AND Y =
      • (X NAND Y) NAND (X NAND Y)
    • ② X OR Y =
      • (X NAND X) NAND (Y NAND Y)
    • ③ NOT X =
      • X NAND X
    • ②の理由:
      • X NAND X = ¬X、Y NAND Y = ¬Y。¬X NAND ¬Y = ¬(¬X・¬Y) = X+Y(ド・モルガン②)
    • ★NANDだけでORを作る回路(②)は頻出。覚えておく
    • 利点:
      • 使うゲートをNANDに限ると設計しやすい。NANDを多用した回路が増えている
    • MA法:
      • NANDゲートだけで論理回路を作る手法の一つ

順序論理回路:記憶できる回路

  • 順序論理回路(順序回路):
    • 過去の入力による状態と現在の入力で出力が決まる論理回路
    • コンピュータの基本機能は「演算と記憶」。組合せ論理回路は記憶できないので、記憶できる順序論理回路が必須
  • フリップフロップ(Flip-Flop:FF)回路:
    • 1ビットの情報を記憶する回路。順序論理回路の基本構成要素。SRAMなどで使われる
  • RSフリップフロップ(RS-FF):
    • 最も基本のフリップフロップ。「ORゲート+NOTゲート」を2組たすきがけにした形で描かれることが多い
    • “RS”は「リセット・セット」の意味
    • 入力sがセット側、rがリセット側。yが記憶される1ビット、xはyの否定
s r y 意味
0 0 0または1(前の状態) 保持(前の状態をそのまま維持)
0 1 0 リセット(0を記憶)
1 0 1 セット(1を記憶)
1 1 ― 出力が確定しないため入力禁止
  • ★試験のポイント:
    • 「x=0、y=1の状態から x=1、y=0 に変える入力は?」のように問われる
    • xはyの否定なので、「y=1からy=0に変える入力は?」と読み替える → 答えは s=0、r=1(リセット)
  • 試験では、NANDゲート2つで作るNAND型RSフリップフロップも出題されている

LSIの設計・開発:チップを作る技術

  • LSI(Large Scale Integration):
    • 加算器、メモリ(FF)、シフトレジスタ、特定用途向けの回路などを組み込んだ大規模なIC(集積回路)
  • FPGA(Field Programmable Gate Array):
    • ユーザーが自由に設計して使えるLSI(フィールドプログラマブルロジック)の代表
    • プログラムの記憶要素にSRAMを使うFPGAは、回路を高速に書き換えられ、書換え回数に制限がない
  • FPGAの設計フロー
    1. 機能の記述:
      • FPGAが担う機能・動作を、ハードウェア記述言語で書く
    2. 論理合成:
      • 書いたソースコードを回路に変換する
    3. 配置配線:
      • 回路の配置位置と、回路どうしをつなぐ配線経路を決める。入出力信号をFPGAのどのI/Oピンに割り当てるかも決める
    4. 書込みと動作検証:
      • 生成した回路情報をFPGAに書き込み、動作を検証する
    5. やり直し:
      • 動作不良や仕様変更があれば①に戻る
  • ハードウェア記述言語(HDL):
    • 代表はVHDL、Verilog-HDL。HDLのほか、回路図(ブロック図)を使うこともある
  • SystemC:
    • C++をベースにしたシステムレベル記述言語
    • HDLより抽象度の高い記述ができ、設計効率が上がる
    • システムLSIのハードウェアと、その上で動くシステムソフトウェアを一貫して設計できる
    • 設計の初期段階で使うと、ハードとソフトの仕様を早い段階で合わせられる(コデザイン)
  • IPコア(Intellectual Property Core):
    • SoCなどのLSIを作るための、再利用できる機能ブロックの回路設計情報
    • ソフトウェアの「ライブラリ」にあたる。LSIを一から作るより開発期間を短くできる
  • システムLSI:
    • 機能や種類の違うICを組み合わせ、全体で1つのシステムとして働くようにしたもの
  • SoC(System on a Chip):
    • 複数のチップで作っていた、システムに必要な機能を1つのチップで実現したもの。システムLSIの一種
  • ASSP:
    • ある特定の機能に限定した集積回路。複数の顧客向けの汎用部品として提供される
  • ASIC:
    • ユーザーの要求に合わせて、複数機能の回路を1つにまとめた大規模集積回路(カスタムIC)

低消費電力LSIの設計技術:電気を節約する

  • 背景:
    • 集積度が上がるにつれ、LSIの消費電力は年々増えている。冷却の面でも問題
    • センサネットワークのノードやRFIDタグなどは、電池の充電や交換がとても難しいので、低消費電力化が必須
  • センサネットワーク:
    • 小型のセンサ付き無線機器を分散配置し、協調して動かして、環境や物理的な状況を観測する通信ネットワーク。IoTのコア技術の一つ
  • 基本の設計方針:
    • 性能を落とさずに電力を抑えるには、不要不急の回路ブロックを止めるか、遅く動かす
  • LSIの消費電力は2つ:
    • ダイナミック電力とスタティック電力(リーク電力)
  • ダイナミック電力:
    • 回路ブロックの動作(スイッチング動作)に伴って消費される電力
    • スイッチング:
      • 信号を流したり切ったりする動作
    • 大きさは電源電圧Vの2乗と周波数fの積に比例(V²×f)
    • 電圧と周波数を下げれば減るが、電圧を下げると性能が落ちて遅くなる → 次の技術で解決する
    • 例:
      • 電圧を半分にすると、ダイナミック電力は (1/2)² = 1/4 になる(周波数が同じ場合)
技術 やり方
マルチVDD 高性能が必要なブロックには従来の電圧、あまり速さが要らないブロックには低い電圧を使う(ブロックごとに電圧を変える)
DVS(Dynamic Voltage Scaling) 負荷(仕事量)に応じて電源電圧を動的に変える
DVFS(Dynamic Voltage and Frequency Scaling) 電源電圧と動作周波数の両方を動的に変える
  • DVS・DVFSの考え方:
    • プロセッサの負荷は時間で変わる。負荷が軽いときは高性能で動かす必要がないので、電圧や周波数を下げる
  • クロックゲーティング:
    • 古くからある手法。ダイナミック電力の30〜50%はクロック分配回路で消費されることに着目し、クロックが要らない回路へのクロック供給を止める
  • スタティック電力(リーク電力):
    • 動作の有無に関係なく漏れ出すリーク電流で消費される電力
  • パワーゲーティング(★試験によく出る):
    • 動く必要がない回路ブロックへの電源供給を遮断して、リーク電流を減らす。リーク電力対策の代表
    • 問題点:
      • 電源を切ると記憶データを保持できない
    • 対策:
      • リーク電流が小さいリテンション・フリップフロップを使う
  • リテンション・フリップフロップ:
    • 主要部分のFF(高速・リーク電流大)の横に置く、低速・リーク電流小のFF。“リテンション”は「保持・記憶」の意味
    • 電源を切る直前に、FFの出力をリテンションFFに入れてデータを保持する(遮断中はリテンションFF以外は止まる)
    • 電源が戻ったら、リテンションFFから主要FFにデータを戻し、回路ブロックの状態を復元する
  • その他の関連技術
    • メモリの消費電力削減:
      • 使っていないメモリセグメントを止める
    • スタンバイ時の電源制御:
      • システムLSIのように1チップで多くの機能を持つ場合、全モジュールが常に動く必要はない。使わないモジュールの電源を切る
      • 例:
        • 携帯電話の待受け中は、着信処理に必要なモジュール以外の電源を切る

データコンバータ:アナログとデジタルの変換

  • データコンバータ:
    • A/Dコンバータ、D/Aコンバータのこと。アナログ信号を入力とする機器に欠かせない回路
  • A/Dコンバータ(A/D変換器):
    • アナログ信号をデジタル信号に変換する電子回路。アナログ信号の振幅を一定の時間間隔で切り出し、デジタル信号にして出力する
    • 精度を決める要素:
      • 分解能と変換速度(サンプリング周波数)
    • A/D変換の代表的な方式にPCMがある
    • サンプリング周波数が低すぎると、元のアナログ信号を復元できない。どのくらいの速さでサンプリングするかは標本化定理に従う
  • 分解能:
    • 変換の細かさ。デジタル出力値を1変化させる入力信号の最小変化ともいえる
    • 式:
      • 分解能 = 入力電圧のレンジ(フルスケールレンジ)÷ 2^出力ビット数
    • 0〜10Vを3ビットで変換:
      • 10 ÷ 2³ = 10 ÷ 8 = 1.25V(1.25V変わるとデジタル値が1変わる。量子化の単位が1.25V)
    • 0〜10Vを8ビットで変換:
      • 10 ÷ 2⁸ = 10 ÷ 256 ≒ 0.039V
    • 同じレンジなら、ビット数が多いほど正確に変換でき、量子化誤差(変換時の誤差)も小さい
  • LSB(Least Significant Bit):
    • A/D変換の最小単位(最下位ビットの重み)。上の3ビットの例ではLSB=1.25V
  • 実際に測れる最大値:
    • レンジの上限そのものではなく、上限 − 1LSB
    • 3ビット・0〜10Vの場合、デジタル値は000〜111の8段階なので、最大値は 10 − 1.25 = 8.75V
    • 入力が−5V〜5Vの場合:
      • 測れる範囲は −5V 〜 5 −(10÷2³)V
  • 例題:
    • 0〜8Vを4ビットで変換すると、分解能は 8 ÷ 2⁴ = 8 ÷ 16 = 0.5V。測れる最大値は 8 − 0.5 = 7.5V
  • A/Dコンバータに必要な最小ビット数(例)
    • 条件:
      • LSBが 1/256 V、負の値を2の補数で表し、−512V 〜 512 −(1/256) V を測りたい
    • Nビットの2の補数で表せる範囲は −2^(N−1) 〜 2^(N−1) − 1。1ビットの重みが1/256なので、−2^(N−1) × (1/256) = −512 を満たすNを求める
    • 256=2⁸、512=2⁹ なので、2^(N−1−8) = 2⁹ → N−1−8=9 → N=18ビット
    • 別解:
      • LSB = 全体の幅(512×2)÷ 2^N = 1/256 → 2^(9+1−N) = 2^(−8) → N=18
  • D/Aコンバータ(D/A変換器):
    • A/Dと逆に、デジタルをアナログに変換する。考え方もA/Dの逆
    • 例:
      • 3ビット、出力レンジ0〜10V(実際は0〜10−1.25V)なら、デジタル値が1変わると出力が1.25V変わる

コンピュータ制御:機械を動かす

  • 制御:
    • 機械や装置に適切な操作を加えて、目的の動作をさせたり、目標の状態に保ったりすること
  • 自動制御:
    • 制御が自動的に行われるもの
  • シーケンス制御:
    • 制御対象に、状態に応じた複数の段階があるときに使う。「あらかじめ決められた順序に従って、制御の各段階を一つずつ進めていく」方式(例:洗濯機の「洗い → すすぎ → 脱水」)
    • 以前はリレーという回路(スイッチ)を使っていたが、今はリレーの代わりにPLC(Programmable Logic Controller)を多く使う
    • PLC:
      • パソコン上でプログラミングできる制御装置。ふつうラダー図という言語でシーケンスプログラムを書く
    • ラダー図:
      • シーケンス回路図を、ラダーシンボル(記号)で図にしたもの。専用ソフトで作れば、変換からPLCへの書込みまでできる。ラダーは“梯子”の意味(回路が梯子のように見える)
  • フィードバック制御:
    • 目標値と、検出器やセンサから得た測定値を比べながら、目標値に一致させるように制御する(例:エアコンが室温を測りながら設定温度に近づける)
    • 外乱による影響を、すぐにフィードバックして修正する
  • フィードフォワード制御:
    • 外乱を検知してその影響を解析し、影響が出る前に必要な修正動作(修正量)を決める(例:ドアが開いたのを検知して、室温が下がる前にヒーターを強める)
    • ふつうはフィードバック制御と併用する
  • センサの種類(試験に出たもの)
センサ 何を測る?
サーミスタ 温度で電気の流れにくさ(抵抗値)が変わる電子部品。温度検知、温度補償、過熱検知、過電流保護など
ジャイロセンサ 角速度センサともいう。角速度、傾き、振動を検出する
距離画像センサ 対象物までの距離を測る。最もよく使う方式がTOF(Time of Flight)。光源から出したレーザなどの光が、対象物に反射して戻るまでの時間で距離を測る。家庭用ゲーム機や自動車のADAS(先端運転支援システム)で使う
ひずみゲージ 変形(ひずみ)を感知する
ホール素子 ホール効果を使った、非接触型の磁気センサ
ウェアラブル生体センサ ウェアラブルデバイス(腕や衣服など身体に着けて使うデバイスの総称)に取り付ける生体センサ
  • LiDAR(Light Detection And Ranging):
    • TOF方式で、自動運転に使われるセンサ。距離だけでなく、対象物の方向や形まで測れる
  • ホール効果:
    • 物質に流れる電流に垂直に磁場をかけると、電流と磁場の両方に垂直な方向に起電力(電界)が現れる現象
  • アクチュエータ:
    • 電気エネルギーや、油圧・空気圧などの流体エネルギーを、制御信号に基づいて回転や並進などの動きに変える装置
    • コンピュータ制御の流れ:
      • センサで状態を検出 → 制御機器が判断して電気信号(制御信号)に変える → アクチュエータで力学的・機械的な動きに変える
    • 種類:
      • 電気式、油圧式(油圧でシリンダ内のピストンを動かす、回転運動を得る)、空気圧式(空気の圧縮膨張でピストンを動かす、回転運動を得る)
    • 電気式の例:
      • DCサーボモータ(直流サーボモータ。ロボットなど)、DCブラシレスモータ(パソコンのファンなど)、ステッピングモータ(プリンタの用紙送りなど)
  • アクチュエータ駆動回路:
    • 単にアナログの電圧を出すものと、電圧のON/OFFを繰り返すスイッチング型がある
  • PWM制御(Pulse Width Modulation:パルス幅変調):
    • 1周期に対するONの時間の割合(デューティ比)を変えて、モータの速さを制御する
    • ONの時間(パルス幅)を長くする → 高い電圧 → モータが速く回る
    • ONの時間を短くする → 低い電圧 → モータがゆっくり回る
    • 例:
      • 周期10ms、ONが3msならデューティ比は3÷10=30%。振幅5Vなら平均電圧は5×0.3=1.5V

混同しやすいペア

  • 組合せ論理回路(入力だけで出力が決まる)/順序論理回路(過去の状態も使う。記憶できる)
  • NAND(ともに1のときだけ0)/NOR(ともに0のときだけ1)
  • XOR(異なるとき1)/OR(少なくとも一方が1)
  • 半加算器(XOR+AND。下からの桁上げなし)/全加算器(下からの桁上げも入力にする)
  • RS-FFのリセット(s=0、r=1 → y=0)/セット(s=1、r=0 → y=1)/s=r=1は禁止
  • ASSP(特定機能、複数の顧客向けの汎用部品)/ASIC(特定ユーザー向けのカスタムIC)
  • システムLSI(複数のICを組み合わせて1システム)/SoC(1チップで実現。システムLSIの一種)
  • HDL(VHDL、Verilog-HDL)/SystemC(C++ベース。より抽象度が高い)
  • マルチVDD(ブロックごとに電圧を変える)/DVS(電圧を動的に変える)/DVFS(電圧と周波数を動的に変える)
  • クロックゲーティング(クロックを止める。ダイナミック電力対策)/パワーゲーティング(電源を止める。リーク電力対策)
  • フィードバック(結果を測って直す)/フィードフォワード(外乱を検知して先回りで直す)
  • 分解能(幅÷2^ビット数)/測れる最大値(上限 − 1LSB)

← 03 コンピュータ構成要素・ハードウェアの目次に戻る

タイトルとURLをコピーしました