ディジタル回路の基本設計法


【概要】

 私たちが電子工作としてディジタル回路を設計するために必要な
設計の基本について説明します。単なる基礎知識ではなく、実際に
マイコン周辺機器としてのディジタル回路を作る時の設計法を中心に
説明しますので、いわゆるブール代数とか、真理値表とかの基本の
基本は他の参考書を参照して下さい。
ここの説明で想定しているマイコンはZ80相当のマイコンです。


【データのラッチ】(クロックと負論理)

 マイコンなどの出力命令で外部にデータを出力したいとき、実際に
マイコンから出力されるデータは一瞬間だけしか出力されません。
そこでそれをずっと保持(ラッチという)することが必要になります。
このためには、DフリップフロップやラッチレジスタというICを使います。
これらのICの回路図記号は下図のようになっています。
    

 このICを使うときの基本はデータとクロック(ストローブとも呼ぶ)の
タイミングです。つまり下図の中のCLK信号による動作で、クロック信号の
立上りがポイントとなります。
クロックでデータをラッチさせるときには、図のような信号のタイミングと
します。つまり、(a)のようにデータが安定に存在する間にクロックの立上りが
来るようにします。普通はデータの立上りから、ラッチICの動作時間以上
経ったあとにクロックの立上りが来るようにします。こうすることで、確実に
正しいデータを保持させることが出来ます。
逆に、(b)のように、データとクロックのエッジが同時だとすると、データ保持が
不安定で正しかったり間違ったりします。
(c)のようにクロックが早過ぎれば当然データの保持はされません。
 

 このクロック信号で、ICによっては、端子の信号名にCLKのように上側に
バーがあるものがあります。これの意味は信号が「負論理」であることを意味
しています。これに対してバーの無いものを「正論理」と呼びます。
 この負論理の意味はどうなっているかというと、2つの意味合いがあります。
まずひとつ目は、常時はHighとなっていて、Lowになると意味がある信号が
出力されたということを表す場合です。つまり「^CLK」となっているときは、Low
の信号が入力されたとき実際の動作をすることを示しています。
負論理のもうひとつの意味は、前図74HC74の−Qのように、1と0の論理レベル
が反対になっていることを表す場合です。
この場合にはLowで1、Highで0の意味であることを表しています。
この2つのどちらの意味合いで使われているかの判定は、クロック信号か
イネーブルなどのステータス信号かで決まります。
 どうしてクロックに負論理が多く使われているかというと、ディジタルICのノイズ
マージンの違いにあります。汎用ディジタルICはHighレベルの方のノイズマージン
が大きいので、重要な信号であるクロックは、常時Highとしておいて多少のノイズ
では感じないようにしているわけです。


【デコーダICの使い方】

 デコーダICというICがありますが、代表的なICが下図に示すようなものです。
これは3ビットのバイナリデータを8個の個々の信号に変換してくれます。
これで3ビットの信号から8個のどれかを指定するという使い方ができることに
なります。
 

 図中の表の見方は、INPUTSとして書かれている信号端子にH(=High)か
L(=Low)を入力したとき、OUTPUTSの各ピンがどのような出力になるかを
表しています。ここでXはHでもLでも影響しないことを表しています。
従って表から、ENABLE端子が出力ピン全体を出すか出さないか制御できる
ことが分かります。
 このデコーダICの応用例として良く使われるのは、マイコンの周辺機器
アドレスのデコーダです。Z80等のマイコンの入出力命令を実行すると下図(a)
のような信号がそれぞれ出力されます。
ここでアドレスバス(A0〜A7)には、相手を特定するデバイスアドレスが含まれて
います。そして入出力に関する信号であることを特定するIORQ信号が一緒の
タイミングで出力されます。
あとはREADかWRITEかによってRDとWRのいずれかがタイムチャート(b)、(c)
のように出力されます。


 このアドレスバスに出てきたデバイスアドレスで、周辺機器を特定する
わけですが、このデバイスアドレスを取り出すためにデコーダICを使います。
1個のICで3ビットのアドレスのデコードが可能で、8個までの周辺機器を
特定することができることになります。
 しかし実際のデバイスアドレスは8ビットあるわけですから、3ビットの
デコードだけでは特定できたことになりません。残りの5ビットを含めてデコード
しないと完全に一意には特定できないからです。
そこで、下図のように接続して完全に8ビットを全部デコードした条件とします。
この場合には、デバイスアドレスで、0x00から0x07が指定された時デコーダの
出力のどれか1つのピンがLowとなることになります。
この回路では、さらに入出力命令であることを表すIORQ信号も一緒にデコーダ
ICのイネーブルピンに接続して、入出力命令の時だけこのデコーダ出力が出る
ようにしています。


 このデコード出力のどれか1つを前項のラッチのチップセレクト信号として
使えば、出力命令のデータをラッチするためのデバイスアドレス選択として
使えることになります。
この実際の回路を下図に示します。図では、出力命令の時に出力されるWR
信号をラッチのクロック信号として使っています。
この理由は信号のタイミングが図(b)のような関係になっていて、WR信号を
クロックとすれば、確実にデータを取り込めるようになっているからです。
この回路では、デバイスアドレスが0x01の時にデコーダ出力のY1がLowとなって
データバスのD0〜D7の信号をU3にラッチします。




【バスバッファICの使い方】(3ステート)

 マイコンのデータバスへ接続する場合には、バスバッファ用ICを使います。
これはデータバスが「3ステート」という特殊な条件を使っているからです。
 この3ステートとはどういう意味かというと、通常のディジタルICがOn/Offの
2値しかないのに対して、そのどちらでもない「ハイインピーダンス」という状態
を持っていて3値の状態をもつことから3ステートと呼ばれています。
このハイインピーダンスがどういう状態かというと、「接続されていない」という
状態となります。
 どうしてこのような機能が必要かというと、マイコンのデータバスの構成が
「パーティライン」となっているからです。
下図がパーティラインの構成で、多くの周辺機器が同じライン上に接続されており、
デバイスアドレスで特定された1つだけが、データバスと実際に接続されて、
マイコンへデータの送信が出来るようにします。
 こうしたときには、アドレスで指定されなかった周辺機器は接続されていない
ようにするのが、接続台数も多く出来るし、いたずらもしないことになって一番
良い状態ということになります。そこで考えられたのがハイインピーダンスの状態
です。こうするとアドレス指定されなければ、ほとんどデータバスには何の影響も
与えませんから無害となり理想的なパーティラインが構成できることになります。
またもともとICの入力側は大きな負荷とはならず、パーティラインに大きな影響を
与えませんので全部の周辺機器を接続したままにしておき、どの周辺機器も
アドレスバスのデータは常時受信できるようになっています。

 実際のバスバッファ用のICは下図のようにして使います。こうすると、前項の
アドレスでコーダと同様な回路で作られたDEVICE信号により、アドレスバスに
出力されたデバイスアドレスで指定された周辺機器だけがチップセレクト状態と
なります。
さらに入力か出力かによってバッファの方向も指定され、出力の時だけ、データ
バスへ周辺機器のデータを出力することが出来ます。
つまり、データバスはいろいろな目的で共用されているので、必要最小限の間だけ
周辺機器側と接続するように入力信号のRDでバッファをバス側への出力とし、
あとはすべて周辺機器側への出力の向きとするようにします。

    

【カウンタの多段接続】(クロックと同期回路)

 カウンタICを何段か従属接続してカウント桁を増やしたいときには、下図の
ようにします。
ここでCKとある端子がありますが、これらのICはクロックに同期して動作する
ようになっていて、図のようなBCDカウンタの場合には、クロック信号の立下りで
出力がカウントアップします。そこで、一段目のD出力と2段目のCKA入力を接続
すると、1段目が9から0にカウントアップするときに、2段目がカウントアップする
ので、「10」になることになって2桁の連続したBDカウンタとなります。






      目次ページへ