概要
情報技術の基礎として理解しておきたい ハードウェア について、論理回路、半導体素子、故障原因、タイマー、その他の機能を整理する。
真理値表から半加算器を作り、状態を記憶する回路との違いを確認する。量産費用やタイマー周期を計算し、ウォッチドッグが何を検出できるかも処理の流れから考える。
この記事の構成
- 論理回路
半加算器の真理値表とSRラッチの状態保持から回路の役割を確認。 - 半導体素子の集積回路
半導体素子の集積回路の意味と要点を具体例から整理。 - 半導体の故障原因
半導体の故障原因の意味と要点を具体例から整理。 - タイマー
分周比とカウント数から周期を計算し、設定値の一つ分のずれを確認。 - その他機能
その他機能の意味と要点を具体例から整理。
論理回路
ハードウェアの構成部品となる電子・電気回路における基本的な論理回路には、次の回路記号がある。
-
OR回路:論理和
入力値 \(A\)、\(B\) の論理和 \(Y\) を表す。
-
AND回路:論理積
入力値 \(A\)、\(B\) の論理積 \(Y\) を表す。
-
NOT回路:否定
入力値 \(A\) の否定 \(Y\) を表す。
-
NOR回路:否定論理和
入力値 \(A\)、\(B\) の論理和の否定 \(Y\) を表す。
-
NAND回路:否定論理積
入力値 \(A\)、\(B\) の論理積の否定 \(Y\) を表す。
-
XOR (EXOR) 回路:排他的論理和
入力値 \(A\)、\(B\) が一致すれば \(Y = 0\)、一致しなければ \(Y = 1\) となる排他的論理和を表す。
上記の基本ゲートを組み合わせ、現在の入力だけで出力が決まる回路を組合せ回路という。これに対し、過去の状態も使って出力を決める回路を順序回路といい、\(1\) ビットの情報を保持するラッチやフリップフロップがある。ラッチは入力のレベルに応じて状態を取り込み、フリップフロップは一般にクロックのエッジで状態を更新する。
フリップフロップはレジスタやカウンターなどに利用される。SRAMの記憶セルも双安定回路によってビットを保持する。
-
RS型(SRラッチ)
RESET端子とSET端子の \(2\) つの入力を持つラッチ。以下はNOR回路を二つ組み合わせたアクティブHigh入力の例で、SET端子に \(Hi(1)\) が入力されると、RESETされるまで出力の状態を保持。
※ NAND回路で構成する場合は入力がアクティブLowとなり、保持と禁止の入力条件が逆になる。\(S\) \(R\) \(Q_{next}\) \(\overline{Q}_{next}\) \(0\) \(0\) 保持 保持 \(0\) \(1\) \(0\) \(1\) \(1\) \(0\) \(1\) \(0\) \(1\) \(1\) 禁止 禁止 -
JK型
J端子とK端子の \(2\) つの入力を持つクロック同期型の回路。クロックが有効なタイミングで \(J=K=1\) になると出力が反転し、RS型における禁止入力に相当する組合せも扱える。\(J\) \(K\) \(Q_{next}\) \(\overline{Q}_{next}\) \(0\) \(0\) 保持 保持 \(0\) \(1\) \(0\) \(1\) \(1\) \(0\) \(1\) \(0\) \(1\) \(1\) 反転 反転 上記以外に\(D\) 型、\(T\) 型などがある。
-
XORとANDを組み合わせると、1桁の加算になる
1 bitのAとBを足したときの和の下位ビットSと桁上がりCを考える。A B S(A XOR B) C(A AND B) 加算結果(2進数) 0 0 0 0 00 0 1 1 0 01 1 0 1 0 01 1 1 0 1 10 片方だけが1なら下位ビットが1になり、両方が1なら下位ビットは0、桁上がりが1になる。これが半加算器の基本である。ORだけでは1+1のときも下位ビットが1になってしまう。複数桁を足すには前の桁からの桁上がりも入力として扱う全加算器へ拡張する。
-
同じ入力で結果が変わるのは状態を記憶しているため
NORゲートによるSRラッチでS=0、R=0とした場合、以前のQが0なら0、1なら1を保持する。現在の入力が同じでも、過去の状態によって出力が異なる点が組合せ回路との違いである。S=R=1は二つの出力を互いに反転した状態に保てない禁止入力になる。そこから同時に0へ戻したときの最終状態も微小な遅延差に左右される。真理値表の「保持」と「禁止」を単に0か1を記入する欄と考えないことが大切になる。
半導体素子の集積回路
半導体素子とは半導体を素材に作られた回路素子(電気回路の構成要素)のことで、集積回路(IC:Integrated Circuit)、大規模集積回路(LSI:Large-Scale Integration)などがあり、以下の代表的な種類がある。
-
カスタムIC
利用者の要求に応じて特定用途向けに設計、製造される集積回路(IC)で、代表例にASICがある。FPGAは製造後に利用者が回路構成を書き換えられるプログラマブルロジックデバイスとなる。 -
システムLSI
CPU、メモリコントローラ、入出力回路など、システムに必要な複数の機能を一個の半導体チップへ集積した製品。SoC(System on a Chip)はこのように一つのIC上へシステムを実装したものを指し、部品点数の削減や小型化、省電力化につながる。 -
ASIC(Application-Specific Integrated Circuit)
製造時に回路設計を決めるカスタムIC。
特定用途に最適化でき、大量生産時の単価を抑えやすい一方、初期開発費が高く、設計から製造までの期間が長い。 -
FPGA(Field-Programmable Gate Array)
製造後に構成変更が可能なプログラマブルロジックデバイス。
利用者が回路構成を変更でき、ASICと比べて開発期間や初期開発費を抑えやすいが、開発費が不要になるわけではなく、大量生産時の単価は高くなる傾向がある。 -
MEMS(Micro Electro Mechanical Systems:微小電子機械システム)
シリコン基板などの上に電子回路、センサー、機械的に動くアクチュエーターなどの微細構造を集積したデバイス。
-
初期費用と一個あたりの費用を分けて比較する
量産数量による違いを示すため、仮の費用としてASICは初期費用100万円・一個10円、FPGAは初期費用10万円・一個100円とする。これは実製品の価格ではなく、計算のための設定である。数量を \(n\) 個とすると、総費用が等しくなるのは \(1{,}000{,}000+10n=100{,}000+100n\)、つまり \(n=10{,}000\) 個のとき。この条件では少量ならFPGA、大量ならASICの費用面が有利になる。
実際の選択には仕様変更の可能性、開発期間、性能や消費電力なども影響する。製品の単価だけを見ると、初期費用を回収できない少量生産での判断を誤る可能性がある。
半導体の故障原因
以下、半導体の主な故障メカニズム。
-
ESD破壊(静電破壊)
人体、装置、デバイスの帯電が起因し、静電気放電(ESD:ElectroStatic Discharge)で酸化膜や配線などが破壊されること。 -
ラッチアップ
CMOS内部に存在する寄生PNPN構造が導通し、電源とグラウンドの間に低抵抗経路が生じて過大電流が流れる現象。誤動作や素子の破壊につながる場合がある。 -
ストレスマイグレーション
絶縁層と熱膨張係数の差と温度上昇のストレスにより、金属配線にボイド(空洞)断線が発生し、半導体素子が不良になる現象。 -
エレクトロマイグレーション
電子と金属原子の運動量交換でイオンが移動することにより、金属配線にボイド(空洞)や断線が発生し、半導体素子が不良になる現象。
タイマー
タイマーとはクロック信号などをカウンターで数え、設定値への到達やオーバーフローを契機に割込みなどを発生させる装置のこと。
下記タイマーは組込みシステムで使用される。
-
インターバルタイマー
一定間隔でCPUに割込みを発生させるタイマー。
OSがソフトウェア上の時刻管理やタスク切替えなどに利用する場合がある。RTCとは役割が異なる。 -
ウォッチドッグタイマー
コンピュータ動作に異常がないか監視するためタイマー。
監視対象のソフトウェアが正常動作中に一定間隔でタイマーをクリアし、規定時間内にクリアされなければ異常と判断して、割込みやシステムリセットを発生させる。 -
RTC(Real-Time Clock) コンピュータが内蔵する時計でシステム電源が落ちてもバッテリバックアップなどにより時刻を刻み続ける特徴を持つ。
-
入力クロックを数える単位に直して考える
1 MHzのクロックを100分周すると10 kHzになり、カウンタが一つ進む間隔は \(1/10{,}000=100\) µsとなる。100回分で周期を作れば10 msになる。ただし、設定レジスタに書く値が「回数」なのか「0から数える最終値」なのかは区別が必要になる。0〜99の100状態で一周するカウンタと100回の入力を数える指定では、説明上の同じ100回でも設定値の表し方が異なる。クロック周期、分周比、カウント数を順に追うと、一つ分ずれる誤りを見つけやすい。
その他機能
以下、ハードウェアのその他機能。
-
診断プログラム
ハードウェアの動作試験を行い、故障箇所や問題原因の特定を支援するプログラムのこと。 -
オープンソースハードウェア
設計ファイルを公開し、ライセンス条件に従って誰でも調査、改変、配布、製造、販売できるハードウェアを指す。単に資料を無償公開するだけではなく、改変や再利用を認めるライセンスが必要となる。オープンソースソフトウェアについて
→ 応用情報技術 - ソフトウェア > オープンソースソフトウェア(OSS) -
エネルギーハーベスティング
特に身の回りにあるわずかなエネルギー(太陽光、照明光や機械の振動、熱エネルギーなど)を集め、電気に変換する技術のこと。
-
ウォッチドッグの更新が正常動作の確認になっているか
メイン処理が正常な一巡を終えるたびにウォッチドッグを更新し、一定時間更新されなければ復旧動作へ移す構成を考える。処理が無限ループへ入れば更新が止まり、異常を検出できる。一方、メイン処理と無関係なタイマー割込みが常に更新してしまうと、メイン処理が止まっていてもタイムアウトしない。更新する場所は「時間がたったこと」ではなく、「必要な処理が正常に進んだこと」を確かめられる場所に設ける必要がある。
まとめ
- ハードウェアは電気信号を論理値として扱い、組合せ回路は現在の入力、順序回路は入力と過去の状態から出力を決める。
- ORは少なくとも一方が真なら真となり、XORはどちらか一方だけが真の場合に真となる。
- ラッチとフリップフロップはどちらも状態を保持するが、値を取り込むタイミングが異なる。
- ASICは製造時に回路を固定し、FPGAは製造後に回路構成を変更できる。
- 半導体ではESD、ラッチアップ、配線材料の移動などが故障要因となる。ウォッチドッグタイマーはソフトウェアの異常を検知して割込みやリセットを行う。
- 組合せ回路と記憶を持つ回路では出力を決める条件が異なる。ウォッチドッグの更新は時間の経過だけでなく、必要な処理が進んだことの確認に対応させる。