2-1論理回路と論理設計
金曜の夕方、店長が店のガラス戸を指さしました。「焼き上がりの時刻を、外から見えるようにできないかな。11時のクロワッサンを待って、前の道で並んでくれるお客さんがいるんだよ」。ミナトは数字が光る小さな表示板を自分で作ることにして、部品の箱を作業台に広げます。細い足の生えた光る部品、黒くて小さな部品、押しボタン、それに電池。試しに組んでボタンを1回押すと、表示の数字は1ではなく、3つ進みました。奥では、オーブンが「180℃」の表示のまま、ヒータを入れたり切ったりする小さな音を立てています。ミナトは相棒に打ち込みました。「ボタンは1回しか押してないのに、なんで3つも進むの」
相棒の返事は、ボタンの話から始まりませんでした。「その前に、表示板の中を何が流れているかを確かめよう。流れているのは、電圧が高いか低いか、それだけだよ」。表示板もオーブンの操作パネルも、ミナトのスマートフォンも、中の電線の電圧が「高い」か「低い」かの2通りで情報を扱っています。この2つの状態を0と1に当てはめ、0と1の組み合わせで判断や計算をする回路を論理回路と呼びます。
表示板に「店が開いているときだけ、焼き上がりの時刻を光らせる」という決まりを入れるとします。条件は2つです。入力Aは「営業中のスイッチが入っている」、入力Bは「時刻が入力済みである」で、どちらも満たされたら1とします。出力は「表示が光る」なら1です。入力が2つなら、0と1の組み合わせは4通りしかありません。その4通りすべてについて出力を書き出した表を真理値表といいます。
| A(営業中) | B(時刻を入力済み) | 出力(表示が光る) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
真理値表の行の数は、入力が1つ増えるたびに2倍になります。入力が3つなら2×2×2で8行、4つなら16行です。行が少ないうちは、表を書けば漏れなく確かめられます。「休みの日なのに表示が光っていた」という不具合は、この表のどこかの行で出力を書き間違えた、という形で見つけられます。
ここから基本情報!基本の論理回路と論理式
電圧の高低と0・1の対応には、2通りの約束があります。電圧が高い状態を1、低い状態を0とする約束が正論理、反対に電圧が低い状態を1、高い状態を0とする約束が負論理です。ふだんは正論理で考えますが、部品によっては「電圧を下げると働く」ものがあり、負論理で読んだほうが素直に分かる場面もあります。
どんなに複雑な論理回路も、少数の基本の回路を組み合わせて作られています。入力がすべて1のときだけ出力が1になる回路がANDゲート(論理積回路、AND回路)です。上の真理値表は、ちょうどANDゲートの働きになっています。入力のどれか1つでも1なら出力が1になる回路がOR回路(論理和回路)、入力を1つだけとって0と1を反転させる回路が論理否定器(NOTゲート、NOT回路、インバータ)です。ANDの出力をNOTで反転させた働きをする回路はNAND回路と呼ばれます。
| A | B | AND(A・B) | OR(A+B) | NAND |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
回路の働きは、文字と記号でも書けます。ANDは「A・B」、ORは「A+B」、NOTはAの上に横線を引いて「A」と書き、NANDは「A・B」です。このように、論理変数と論理演算の記号で入力と出力の関係を表したものを論理式といいます。真理値表は「全部の行を並べた答え」、論理式は「その答えを出す回路の作り方」にあたります。
基本の回路を組み合わせた例に、多数決回路があります。3つの入力のうち2つ以上が1なら出力を1にする回路です。こむぎ堂のオーブンに温度計が3つ付いていて、「180℃に届いた」と判定した温度計が2つ以上なら届いたことにする、と考えてください。1つが故障して間違った値を出しても、判定は狂いません。入力が3つなので、真理値表は8行です。そのうち出力が1になるのは「011」「101」「110」「111」の4行で、論理式にすると「A・B+B・C+C・A」になります。どの2つが1でも、3つの項のどれかが1になるからです。
ここまでの回路は、いまの入力だけで出力が決まります。ところが表示板は、ボタンを押していない間も「いまは11時」という数字を覚えていなければなりません。1ビット(0か1の1つぶん)の状態を保持し、次に書き換えの信号が来るまで出力を保ち続ける回路がフリップフロップです。4個並べれば4ビット、2×2×2×2で16通りの状態を覚えられます。CPUの中のレジスタも、フリップフロップを並べて作られています。
同じ働きの回路でも、作り方は1通りではありません。多数決回路を、ANDを3個とORで組むこともできますし、NAND回路だけを4個使って組むこともできます。AとB、BとC、CとAをそれぞれ2入力のNANDに通し、その3つの出力をさらに3入力のNANDに通すと、出力は「A・B+B・C+C・A」と同じになります。NANDだけを組み合わせれば、AND・OR・NOTのどれでも作れるので、1種類の部品をそろえるだけで済みます。速さ(信号が通る回路の段数)、部品の数、作る手間や費用を比べながら、求める機能を実現する回路の構成と接続を決めていく作業を回路設計といいます。
基本情報の範囲ここまで
こうした回路を何百万、何十億とつないだものが、コンピュータのCPUやメモリです。とはいえ、0と1の約束をいくら確かめても、ボタンを1回押して数字が3つ進む理由は見えてきません。回路の側が正しいなら、調べるのは、回路に信号を入れる部品の側です。
2-2電子部品と集積回路
土曜の閉店後、ミナトは光る部品を1本ずつ電池につないで確かめていました。足の長いほうを電池のプラスにつなぐと赤く光り、向きを逆にすると、何度つなぎ直しても光りません。箱の底には、左右に足が何本も並んだ黒い部品が1つ残っています。これが表示板の頭脳にあたる部品でした。
表示板に使う部品の多くは、半導体でできています。半導体は、電気をよく通す金属と、ほとんど通さないゴムやガラスの中間の性質をもつ物質で、シリコン(ケイ素)がその代表です。不純物の混ぜ方を変えると、電流の流れる向きを決めたり、流れる量を外から切り替えたりできます。0と1を扱う回路は、この性質を利用して作られています。
ここから基本情報!ダイオード・LED・トランジスタ
電流を一方向にだけ流す性質(整流作用)をもつ、端子が2つの半導体素子がダイオードです。電流が流れ込む側の端子をアノード、流れ出る側をカソードと呼びます。家庭のコンセントの交流を、電子機器が使う直流に変える回路などで使われます。
ミナトが確かめていた光る部品は、ダイオードの一種です。電流を流すと光る半導体素子をLED(Light Emitting Diode、発光ダイオード)といいます。ダイオードなので、アノードからカソードへの向きにしか電流が流れず、逆向きにつなぐと光りません。足の長いほうがアノードです。
信号を増幅したり、電流のオン・オフを切り替えたり(スイッチング)する、端子が3つの半導体素子がトランジスタです。1つの端子に流す小さな電流や電圧で、ほかの2つの端子の間を流れる大きな電流を切り替えられます。表示板の黒い部品の端子から出せる電流は小さいので、たくさんのLEDをまとめて光らせるときは、間にトランジスタを入れて電流を切り替えさせます。論理回路のANDやNOTも、中身はトランジスタのスイッチの組み合わせです。
表示板の数字は、細長いLEDを「日」の字の形に7本並べた部品で出しています。7本の線(セグメント)の点灯と消灯の組み合わせで0から9の数字を表す表示器を7セグメントLEDといいます。「1」なら右側の縦の2本だけ、「8」なら7本すべてが光ります。
7本のLEDを1本ずつ配線すると、端子の数が増えます。そこで、7本のアノードを1つにまとめて電源のプラスにつなぎ、カソード側を1本ずつ制御する接続方式が使われます。これをアノードコモン(アノード共通)といいます。アノードコモンでは、光らせたい線のカソードの端子の電圧を下げると電流が流れて光ります。正論理で考えると「0を出すと光る」ことになり、負論理で読むほうが素直です。カソードをまとめた方式はカソードコモンと呼ばれ、こちらは端子の電圧を上げた線が光ります。
基本情報の範囲ここまで
箱の底の黒い部品は、一つの部品に見えて、中に小さな回路がまるごと入っています。シリコンの小さな板(チップ)の上に、トランジスタや抵抗などの素子と配線をまとめて作り込んだ部品をIC(Integrated Circuit、集積回路)といいます。表示板の頭脳にあたるのは、小さなコンピュータを1つのICに収めたマイコンです。スマートフォンやPCのCPU、メモリもICです。部品を1つずつはんだ付けしていたら机ほどの大きさになる回路が、指先に載るほどの大きさに収まります。
ここから基本情報!集積の規模と書き換えられるIC
ICは、1つのチップに作り込んだ素子の数(集積度)で呼び分けられてきました。集積度を高めた大規模集積回路がLSI(Large Scale Integration)、LSIよりさらに集積度を高めた超大規模集積回路がVLSI(Very Large Scale Integration)です。いまのPCやスマートフォンのCPUは、数十億個を超えるトランジスタを1つのチップに載せており、VLSIの規模にあたります。
ふつうのICは、工場で回路を作り込んだら、後から中身を変えられません。これに対し、製造した後でも、使う人が内部の論理回路の構成を書き換えられるICがFPGA(Field Programmable Gate Array)です。名前の「フィールド」は、工場ではなく現場で、という意味です。新しい回路を試作するときや、作る数が少なく専用のICを起こすと高くつく機器で使われます。
基本情報の範囲ここまで
2-3半導体メモリ
日曜の朝、表示板の電池を新しいものに替えると、数字が「00:00」に戻っていました。前の晩に「11:00」と合わせておいたのに、です。店長はガラス戸の前で腕を組みます。「電池を替えるたびに合わせ直すのは、ちょっと面倒だね」
表示板のマイコンは、合わせた時刻をICの中のメモリに覚えています。半導体の素子が電気をためたり流したりする状態を使ってデータを記憶する装置をまとめて半導体メモリといいます。コンピュータの主記憶も、USBメモリやSSDも、半導体メモリです。
半導体メモリには、電源を切ると中身が消えるもの(揮発性)と、電源を切っても中身が残るもの(不揮発性)があります。主記憶に使うメモリは揮発性で、PCの電源を切ると作業中のデータが消えるのはそのためです。USBメモリやSSDは不揮発性なので、抜いて持ち運んでも中身が残ります。日曜の朝の「00:00」は、時刻を揮発性のメモリにだけ置いていたことが原因でした。
ここから基本情報!メモリの中身と種類
半導体メモリの中で、1ビットのデータを記憶する最小の回路をメモリセルといいます。メモリセルの作り方で、メモリの性質が変わります。SRAMのメモリセルはフリップフロップでできていて、電源が入っている間はそのまま値を保ち、速く読み書きできます。ただ、1つのセルに使うトランジスタが多いので、大容量にすると高くつきます。
DRAMのメモリセルは、小さなコンデンサ(電気をためる素子)とトランジスタでできていて、コンデンサに電荷がたまっているかどうかで0と1を表します。部品が少ないので大容量を安く作れ、主記憶に使われます。ただし、ためた電荷は時間がたつと少しずつ漏れて、放っておくと値が消えてしまいます。そこで、一定の周期で中身を読み出して書き直し、電荷をため直すリフレッシュ動作(リフレッシュ)が必要になります。
SRAMもDRAMも揮発性で、電源が切れれば中身は消えます。消えては困る内容は、電源が切れたときに小さな電池から電力を送り続けて守ります。この仕組みをバッテリバックアップといいます。PCの基板に載っているボタン電池が、コンセントを抜いている間も時計を動かし続けているのがその例です。
はじめから電源を切っても消えないメモリもあります。製造の工程で内容を書き込み、出荷した後は読み出し専用で書き換えられないROMがマスクROMです。同じ内容のものを大量に作るなら安くでき、昔のゲーム機のカセットなどに使われていました。
書き換えができて、電源を切っても消えない半導体メモリがフラッシュメモリで、メモリセルのつなぎ方で2つの型があります。セルを直列につないで並べるNAND型フラッシュメモリ(NAND型)は、セルを詰めて並べられるのでビットあたりの値段が安く、大容量に向きます。読み書きはページという単位、消去はブロックというまとまりで行い、SSDやUSBメモリ、SDカードに使われます。セルを並列につなぐNOR型は、好きな番地を1つずつ速く読み出せる(ランダムアクセスに強い)代わりに、大容量にすると割高です。機器を動かすプログラムを入れておき、そこから直接読み出して実行する用途に向きます。
基本情報の範囲ここまで
ミナトは、合わせた時刻を電源を切っても消えないメモリに書き込むよう、マイコンのプログラムを直しました。これで電池を替えても「11:00」は残ります。
2-4機械の制御
「昔、修業していた店のオーブンは、タイマーでヒータを切るだけだったんだ」と店長は言います。「冬の朝は焼き色が薄くて、夏は焦げやすかった」。いまのオーブンは、冷たい生地を入れても、扉を開けても、しばらくすると180℃に戻っています。中で何かが温度を測って、ヒータを加減しているようです。
オーブンや洗濯機、エレベータのように、電気で動く機械の多くは、中のコンピュータが動きを指示しています。機械を目的どおりに動かすように操作することを制御といいます。制御のやり方には、決めたとおりに動かすだけのものと、結果を測りながら動きを直していくものがあり、店長の昔のオーブンは前者、いまのオーブンは後者です。測るためには、温度や光、位置を電気の信号に変える部品(センサ)が使われます。
ここから基本情報!制御の方式
オーブンの焼き方のプログラムは「予熱する→180℃に届いたら知らせる→生地を入れて扉が閉まったら20分焼く→焼き終わったらブザーを鳴らす」という順に進みます。あらかじめ決めた順序と条件に従って、段階を一つずつ進めていく制御方式がシーケンス制御です。洗濯機の「洗い→すすぎ→脱水」や、信号機の色の切り替えもシーケンス制御です。
店長の昔のオーブンは、温度を測らずに「ヒータを15分入れる」とだけ決めて動いていました。出力(実際の温度)を測らず、決めた指令どおりに一方的に操作する制御方式をオープンループ制御(開ループ制御)といいます。仕組みが簡単で安く作れますが、冬の朝に室温が低いと温度が上がりきらないように、思いがけない変化(外乱)があっても結果を直せません。
オープンループのまま外乱に備える方法もあります。冷たい生地を入れたら温度が下がることは、入れた時点で分かります。そこで、扉が開いた、生地が入ったといった外乱の情報を先に捉え、結果が出る前にヒータを強めておく制御方式がフィードフォワード制御です。予想が外れたときの直しは利かないので、次に見る方式と組み合わせて使うことが多くなります。
いまのオーブンは、庫内の温度を温度センサで測り、目標の180℃と比べています。低ければヒータを入れ、高ければ切る。出力を測って目標値と比べ、その差(偏差)を小さくするように操作を直し続ける制御方式がフィードバック制御です。出力を入力の側へ戻す経路があり、全体が輪(ループ)のように閉じているので、クローズドループ制御(閉ループ制御)とも呼ばれます。冬の朝でも扉を開けた後でも、測った差をもとに直すので、温度は180℃に戻ってきます。
フィードバック制御には、出力を測るセンサが欠かせません。光を出して、対象物に当たって跳ね返ってきた光の強さを受光素子で測り、物があるか、どんな色かを判断するセンサを反射型光センサといいます。床に引いた黒い線は光をあまり跳ね返さず、白い床はよく跳ね返します。線をたどって走るロボットは、この差から線とのずれを測り、ずれを小さくする向きにハンドルを切ります。これもフィードバック制御です。
基本情報の範囲ここまで
オーブンの温度の謎が解けたところで、相棒がボタンの件に戻ってきました。「表示板のボタンを、ゆっくり1回だけ押して、マイコンが受け取った信号を記録してみて」。記録を見ると、押した直後のほんの短い間に、オンとオフが何回も入れ替わっていました。ボタンの中の金属の接点が、ぶつかった勢いで細かく跳ねていたのです。マイコンはそれを、すばやく3回押されたものとして数えていました。
ここから基本情報!スイッチの読み取りと出力の調整
機械式のスイッチの接点が開いたり閉じたりする瞬間に、接点が細かく振動して、信号がごく短い間に何回もオンとオフを繰り返す現象をチャタリングといいます。対策には、信号が変わってから少し待ち、まだ同じ状態なら押されたと判断するプログラム上の方法や、コンデンサなどで信号の細かい揺れをならす回路の方法があります。
出力の大きさを変える側にも、0と1を使う方法があります。LEDは、電流をすばやくオンとオフに切り替えると、人の目には途中の明るさに見えます。1周期のうちオンにしている時間の割合(デューティ比)を変えて、平均の出力を調整する制御方式がPWM制御(Pulse Width Modulation、パルス幅変調)です。1周期のうち4分の1だけオンにすれば、デューティ比は25%で、平均の電流はずっとオンにしたときのおよそ4分の1になります。LEDの明るさのほか、モータの回る速さの調整にも使われます。
基本情報の範囲ここまで
ミナトは、ボタンの信号が変わってからしばらく待って、まだ押されたままなら1回と数えるようにプログラムを直しました。数字は1つずつ進むようになりました。
2-5組込み機器と消費電力
月曜の朝、表示板をガラス戸の外側に取り付けました。店の前には電源のコンセントがないので、充電式の電池で動かします。ところが水曜の朝、ミナトが店に着くと、表示板は真っ暗でした。電池がもったのは、2日ほどです。
表示板は、マイコンを中に収め、時刻を光らせるという1つの仕事だけをする機械です。家電や自動車、券売機などの機器に組み込まれ、決まった機能を実現するための専用のハードウェアとソフトウェアの組み合わせを組込みシステム(組込み機器)といいます。オーブンの温度の制御も、店のレジの中も、組込みシステムです。
組込みシステムは、PCのように何でもこなせる機械ではありません。機器の大きさや値段に合わせて、使えるメモリの量、CPUの速さ、電源の容量が限られます。こうした使える資源の制限をリソース制約といい、組込みシステムの設計では最初から考えに入れておきます。表示板で言えば、電池の容量がいちばん厳しい制約でした。電池で動く機器では、消費する電力がそのまま、何日動き続けられるかに直結します。
電力を節約する工夫は、PCにもあります。こむぎ堂のレジ横のPCは、夜のあいだハイバネーション(休止状態)にしています。作業中のメモリの内容をストレージ(SSDなど)に書き出してから電源を完全に切り、次に電源を入れたときに書き出した内容を読み戻して、前の作業の続きから再開する機能です。メモリに電気を流し続けるスリープと違って、休んでいる間はほとんど電力を使いません。その代わり、再開には少し時間がかかります。
ここから基本情報!電力の量を数える
電力(W、ワット)は、ある瞬間にどれだけの勢いで電気を使っているかを表します。電力に使った時間を掛けた、実際に使ったエネルギーの量を消費電力量といい、Wh(ワット時)やkWh(キロワット時)で表します。仮に、こむぎ堂のオーブンが3kWで1日6時間ヒータを入れているなら、1日の消費電力量は3kW×6h=18kWhです。表示板が3.7Vの電池から40mA(0.04A)を流しているなら、電力は3.7V×0.04A=0.148Wで、1日(24時間)では0.148W×24h≒3.55Whになります。
家庭や店のコンセントの電気は交流で、電圧と電流の向きが周期的に入れ替わっています。モータなどをつなぐと、電流の波が電圧の波より遅れてずれ、電圧×電流で求めた見かけの電力(皮相電力、単位はVA)のうち、実際に仕事に使われる電力(有効電力、単位はW)が一部になります。皮相電力に対する有効電力の割合が力率です。100Vで5Aが流れている機器の皮相電力は500VAで、有効電力が450Wなら力率は450÷500=0.9です。1に近いほど、流した電流がむだなく使われています。
大きな施設では、電力を変換するときの損失も積み重なります。こむぎ堂の通販サイトが動いているデータセンタでは、受け取った交流の電気を、停電に備える装置の中で直流と交流の間で変換し、さらにサーバの電源の中で直流に変えています。変換のたびに電力の一部が熱になって失われます。そこで、直流のまま機器へ電力を送り、変換の段数を減らして損失を抑える方式が直流給電です。
基本情報の範囲ここまで
2-6電池
電池の側面には「2,000mAh」と印刷されていました。店長がのぞき込んで言います。「電池って、いろいろ種類があるよね。もっと長持ちするのを買ってこようか」。ミナトは、買い替える前に計算してみることにしました。
電池の容量を表す単位の一つがmAh(ミリアンペア時)です。流せる電流(mA)と、その電流を流し続けられる時間(h)の積で、どれだけの電気をためておけるかを表します。2,000mAhなら、理想的には200mAで10時間、20mAなら100時間流せます。実際の電池では温度や流す電流の大きさで取り出せる量が変わるので、計算の結果は目安です。
表示板は、LEDを光らせるのに36mA、マイコンが4mA、合わせて40mAをずっと流していました。2,000mAh÷40mA=50時間で、2日と少しです。1週間(168時間)もたせるには、平均の電流を2,000÷168≒11.9mAより小さくしなければなりません。
ミナトは2つ手を打ちました。一つめは、LEDの明るさを4分の1に落とすことです。昼の店先でも数字は十分に読めました。LEDの電流は9mAになり、営業中の12時間は9+4=13mAです。二つめは、閉店後の12時間はLEDを消し、マイコンもほとんど電力を使わない待機の状態にして、0.5mAに抑えることです。1日の平均は(13mA×12h+0.5mA×12h)÷24h=6.75mAで、2,000mAh÷6.75mA≒296時間、およそ12日になります。計算どおりにいかなくても、1週間には余裕があります。
ここから基本情報!電池の種類
電池には、使い切りの一次電池と、充電して繰り返し使える二次電池(充電式電池)があります。二次電池は、電気を取り出すときの化学反応を、充電で逆向きに進められる電池です。表示板の電池も二次電池で、店の中で充電しておいたものと毎週入れ替えて使うことにしました。
| 電池 | 分類 | 特徴 | 主な用途 |
|---|---|---|---|
| アルカリマンガン乾電池 | 一次電池 | 正極に二酸化マンガン、負極に亜鉛、電解液にアルカリ性の水酸化カリウム水溶液を使う。電圧は1.5V。大きな電流を流す機器にも向く | リモコン、時計、玩具など |
| 酸化銀電池 | 一次電池 | 正極に酸化銀を使う小型の電池。電圧は1.55Vで、使い終わり近くまで電圧がほとんど下がらない | 腕時計、小型の電子機器 |
| リチウムイオン電池 | 二次電池 | リチウムイオンが正極と負極の間を移動して充電と放電をする。同じ重さでためられる電気の量(エネルギー密度)が大きい | スマートフォン、ノートPC、モバイルバッテリ、電気自動車 |
| 燃料電池 | (燃料を補給して発電) | 水素と酸素を化学反応させて、電気を直接取り出す。出るのは水で、燃料の水素を送り続ければ発電を続けられる | 燃料電池自動車、家庭用の発電装置 |
機器に合う電池は、どれだけの電流を、どれだけの期間流すかで決まります。腕時計のように小さな電流を何年も流すなら、電圧の安定した酸化銀電池が向きます。表示板のように毎日電流を流し、週に一度入れ替えるなら、繰り返し使えるリチウムイオン電池が向きます。リチウムイオン電池は、強くぶつけたり熱したりすると発熱や発火のおそれがあるので、扱い方にも気を配ります。
基本情報の範囲ここまで
翌週の月曜の朝、ミナトは1週間ガラス戸の外で光り続けた表示板の電池を、充電しておいたものと入れ替えました。数字は「00:00」に戻らず、ボタンを押すと1つずつ進みます。10時半、店長がボタンを押して「焼き上がり 11:00」を出すと、前の道を歩いていた人が足を止めて時計を見ました。
金曜の夕方に3つ進んだ数字の原因は、回路でも電池でもなく、ボタンの接点が細かく跳ねることでした。時刻が消えたのは揮発性のメモリに置いていたからで、電池が2日しかもたなかったのは、40mAを休まず流していたからです。どれも、0と1を扱う回路の約束と、制御のやり方と、電力の数え方が分かれば説明できました。オーブンが180℃を保てていたのも、同じ考え方で、測って比べて直す仕組みがあったからです。
店長は表示板を見上げて、次の注文を出しました。「これ、通販の予約があと何個残っているかも出せないかな」。表示板のマイコンだけでは、店の外のネットワークにある予約の数は分かりません。表示板を、店のコンピュータやネットワークとどうつなぐかは、別の話になります。