1,RAM |
2,ROM |
3,CPU |
それでは、個々のデバイスについて詳細にみてみましょう。
RAMは、一時的にデータを蓄えるデバイスです。
ICのピンには、次のものがあります。
ピン | 入出力 | 説明 | |
アドレス | A0〜Axx | I | 容量によりxxは異なる |
データ | D0〜D7 | I/O | |
制御 | I | 読み書きの選択 | |
I | 制御許可 | ||
I | チップ選択 |
真理値表は次の通りです。
D0〜7 | ||||
H | X | X | High-Z | 非動作 (スタンバイ) |
L | H | X | High-Z | 非動作 (アクティブ) |
L | H | 出力 | 読み込み | |
L | 入力 | 書き込み |
RAMのデータを読みをするときは、アドレスを確定した状態で
を1にして、読みとり状態にしておきます。
そして、とを両方とも0にすると、データピンに内容が出力されます。
逆に、書き込みを行うときはアドレスとデータを確定した状態で
を0にすると、準備完了です。
あとは、とを両方とも0にすると、RAMに書き込まれます。
下に、そのタイミングを示します。
は、0にすることで、RAMがアクティブになります。
1の時はスタンバイ状態なので、あまり電力を消費しません。
は、信号入出力の許可をします。1の時は、データピンを
High-Z(電気的にどこにも接続していない状態)にします。
0にすることで、初めてデータピンを通して信号の入出力ができます。
RAMは大きく分けると、DRAMとSRAMに分かれます。
DRAMは、コンデンサーで記憶するので、一定時間ごとに
リフレッシュという動作が必要になります。
SRAMはフリップフロップで記憶するので、リフレッシュの
必要なありません。通常は動作の簡単なSRAMを使用するといいでしょう。
ROMはプログラムや辞書的なデータなど、固定値を記憶するデバイスです。
基本的に、RAMから書き込み機能をなくしたものがROMです。
ピン | 入出力 | 説明 | |
アドレス | A0〜Axx | I | 容量によりxxは異なる |
データ | D0〜D7 | I/O | |
制御 | I | 制御許可 | |
I | チップ選択 |
真理値表は次の通りです。
D0〜7 | |||
H | X | High-Z | 非動作 (スタンバイ) |
L | H | High-Z | 非動作 (アクティブ) |
L | 出力 | 読み込み |
ただし読み込み専用といっても、ユーザーがなんだかの方法で
書き込みを行う必要があります。書き込み方法はROMの種類によって
異なりますが、たいていは、12Vの高電圧をかけることで行います。
CPUはみなさんがご存じのように、コンピュータの頭脳とも呼べるデバイスです。
このCPUが、メモリーやIOポートなどを制御します。
写真のようにCPUのピン数は非常に多く、機能も様々なものがあります。
以下の表は、Z80という8ビットCPUの代表的な機能のものだけ取り出して
いますが、複雑であることがわかると思います。
ピン | 入出力 | 説明 | |
アドレス | A0〜Axx | I | 容量によりxxは異なる |
データ | D0〜D7 | I/O | |
制御 | RD | O | 読みとり |
WE | O | 書き込み | |
RFSH | O | DRAMを使用したときのリフレッシュ | |
MREQ | O | メモリアクセス | |
IORQ | O | IOアクセス | |
CLK | I | クロック | |
RESET | I | リセット | |
INT | I | 割り込み |
CPUはリセットをされるとアドレスに0を出力し、メモリ0番地の命令から
順次実行していきます。メモリーにはCPUが実行すべき命令が
書き込まれています。それをプログラムといいます。
メモリーには0,1の機械語で命令が入っているのですが、人が作業するときには
作業しにくいので、機械語をわかりやすい言葉に置き換えたアセンブラや
高級言語であるC言語などでプログラミングを行います。
CPUが実行できる命令は、大まかに「演算」「分岐」「データ移動」「ビット操作」
等があります。
演算 | ADD | 加算 |
SUB | 減算 | |
AND | 論理和 | |
データ移動 | LD | レジスタ間、メモリ間の移動 |
IN | IOポートのデータを取得 | |
OUT | IOポートへデータを出力 | |
分岐 | JP | 指定された番地へジャンプ |
CALL | 指定された番地へのサブルーチンへジャンプ | |
RET | サブルーチンを終了し、元へ戻る | |
DJNZ | レジスタが0なら次の命令、0以外はジャンプ | |
ビット操作 | RL | データを左へ論理シフト |
SET | 指定されたビットを1へ |
※Z80の場合
Z80Z80は、ザイログ社が作成した8ビットのCMOS型CPUです。 アマチュアが扱うCPUとしては最も有名なうえ、Z80専用の周辺LSIも |
コンピュータというのは、今まで紹介したCPUとメモリを組み合わせることで
動作させることができます。しかし動作したとしても、その動作の結果が
外部に取り出せないと、コンピュータとして何の役にも立ちません。
逆に、外部からの信号によってコンピュータが動作して欲しいときもあるでしょう。
そこで、コンピュータと外部とのやりとりをするのがIOポートです。
上の写真のIOポートは、Z80というCPUと組み合わせて用います。
このデバイスでは、ポートA,B,Cの3つがあり、それぞれ8本の
入出力のできるピンを持っています。
IOポートの操作方法はメモリーに似ていて、メモリーの1アドレスに相当するのが
1つのポートになります。このポートに8ビットのデータを書き込んだ場合
そのデータがポートに出力されます。
逆に読みとりを行うと、ポートの0,1信号を知ることができます。