バス、メモリ、書き込みレジスタと読み出しレジスタ


バスとは

 バス (Bus) とは、複数の信号線をまとめたものである。 バスには複数の素子が接続されている。 しかも、複数の出力端子が一本の線に接続されている。 データの流れる方向も一方向ではなく、 時刻によって方向が逆になることが多い。 ここでは、どのようにしてバスを構成して、 どのように動作させているのかを説明する。


3状態バッファ

 バスを構成するのに欠かせない素子として、 3状態バッファ (Tri-State Buffer) がある。 3状態バッファの出力端子は、 高レベル (H) と低レベル (L) の他に、 「ハイインピーダンス」という第三の状態を持つ。 これは、バッファ (X=Y, 入力と出力が同じ) の後ろにスイッチを接続し、 制御入力CによってスイッチをOn/Offすると考えることができる。 スイッチを切り離してしまえば、何もつながっていないことと同じになり、 この状態をハイインピーダンスと呼ぶ。

Tri-State Buffer
3状態バッファ

3状態バッファの真理値表
 C   X   Y 
H ハイインピーダンス
L L L
L H H

 一般には複数の出力端子を接続してはならないが、 3状態バッファの出力同士ならば複数個を同じ線に接続しても良い。 どれか一個だけが値を出力しており、 それ以外は全てハイインピーダンスになっていれば、 信号の衝突は起こらない。 当然であるが、複数の制御入力を同時にアクティブにしてはならない。

 3状態バッファが表に見える形で使われることは実際には少なく、 出力端子に内蔵されている場合が多い。 例えば、実験1-4で使用した データセレクタ (74LS153) やレジスタ (74LS173) はこれに該当する。 多くのメモリ素子もこれに該当する。 なお、制御入力端子Cの名前としては、 Output Enable, Output Control, Read Strobe, Strobe等いろいろある。

 なお、上記の制御入力Cのように、 低レベル (L) の時にアクティブ (真, 1) になる信号は多い。 このような論理定義を負論理 (Negative Logic) と呼ぶ。


バスとメモリの構成

 下図に単純なバスの例を示す。 CPUに1bitのメモリ (D-FF) が接続されている。 1bitのメモリしかないのでアドレスバスはなく、 データバスData、 読み出し制御線Read Strobe、 書き込み制御線Write Strobeのみとなっている。 データバスは入出力の両方向にデータが流れる。 制御線はCPUからの出力のみである。

Simple Bus
単純なバス


読み出し

 下図にCPUがメモリからデータを読み出す際の動作と、 その際の波形を示す。 Read Strobeをアクティブ (低レベル) にすると、 メモリは格納しているデータをデータバスに出力する。 CPUはそのデータを読み取る。

Read Operation
読み出し操作

Waveform for Read Operation
読み出し時の波形


書き込み

 下図に書き込み時の動作と波形を示す。 Output Enable (CPU内部のみ) アクティブ (低レベル) にして、 CPUから書き込むデータをバスに載せる。 Write Enableを低レベルから高レベルにした時点で、 メモリ (D-FF) にデータが書き込まれる。

Write Operation
書き込み操作

Waveform for Write Operation
書き込み時の波形


書き込みレジスタ

 下図に、LEDや7セグメントLEDを点灯させるための回路を示す。 メモリにおけるD-FFの出力にLEDを接続したような構成になっている。 メモリとの大きな違いに、D-FFの出力を読み取る回路が無いことがあげられる。 したがって、LEDの値を読み出そうとする操作を行っても、 LEDの値が得られる保証はない。

Write Register
書き込みレジスタ


読み出しレジスタ

 下図に、押しボタンスイッチSWの状態を読み取る回路を示す。

Read Register
読み出しレジスタ


(作成: 2002年10月29日, 最終更新: 2010年10月20日)