index
最終更新日:2025-1-6(Mon)

ディジタル電子回路・論理回路

目次

1. 目的

ディジタル回路には大別して次の2つのものがあります。組み合わせ回路と順序回路です。組み合わせ回路は、現在の入力だけで出力が決定されるので、入力が同じならば出力はいつも同じになります。順序回路は、入力とそのときの回路の状態によって出力が決定されます。このディジタル論理回路では、記憶を伴う論理回路である順序論理回路について学び、実際のハードを組んで、その動作を理解します。

2. 説明

ここでは、代表的な記憶回路であるラッチとFF(フリップフロップ)について簡単に説明します。

2.1 RSラッチ

情報を記憶(保持)するためにはフィードバックが不可欠です。したがって、ラッチなどの記憶回路には必ずフィードバックがかかっています。RSラッチも例外ではなく、図のように出力信号が入力へと戻るような回路構成になっています。

RSラッチはリセット信号Rとセット信号Sを持つ1ビットの記憶回路で、LかHかの2つの状態のうち1つを保持することができます。下に真理値表を示します。入力がHLかLHのときは、回路の状態は一意に決定でき、それぞれHL,LHとなります。そして、これらの状態から入力をHHに変化させると、その時の出力状態が保持されます。すなわち情報を記憶するのです。したがって、通常は入力をHHにしておいて、Q=Hにしたいときにセット信号Sを一瞬LにしてすぐにHに戻すと、Q=Hが記憶されることになります。Q=Lにしたい場合も同様で、リセット信号Rを一瞬LにしてすぐにHに戻すと、Q=Lが記憶されます(図)。

LL入力が禁止となっているのは、入力がLLのときは壊れてしまうというわけではなく、LLからHHへ変化させたときの記憶状態が不定になるということを意味します。つまり、LLからHHへ、完全に2つの入力が同時に変化するということはなく、通常はどちらかが他方よりも速く変化し、どちらが速いかで、LL→HL→HHかLL→LH→HHの2通りの変化が起こり得ます。したがって、このような入力を禁止することで、状態の不定さを取り除いているのです。

2.2 D-FF(エッジトリガ型Dフリップフロップ)

D-FFは図のような記号で表され、CP入力に加えられた信号の立ち上がりエッジでデータを記憶するはたらきがあります。CP入力の部分に > の記号がついているのがエッジトリガタイプの入力を表す記号です。PとCはそれぞれプリセット、クリア信号で、この信号をLにすると、出力Qを強制的にHまたはLにすることができます。 D-FFは、データ信号DをクロックパルスCPの立ち上がりエッジで記憶するために使用します。D入力の信号は、クロックパルスCPが立ちあがる瞬間に記憶されます(図)。

また、CPが立ち下がる瞬間にデータを取り込むタイプのD-FFをネガティブエッジトリガ型D-FFといいます。この場合、CP入力端子に○印をつけて表されます。

2.3 JK-FF(マスタースレーブ型JKフリップフロップ)

JK-FFは図の記号で表され、D-FFとよく似ていますが、入力がJ,Kの2つになっている点が異なります。 マスタースレーブ型のFFは、内部に2つのラッチを持ちます。このFFは、クロックパルスの立ちあがりで、J,K入力によって指定されたデータを第1のラッチに保持し、クロックの立ち下がりでそのデータを第2のラッチに移します。第1のラッチのことをマスターラッチ、第2のラッチのことをスレーブラッチと呼ぶことから、マスタースレーブ型FFと呼ばれます。 JK-FFにクロックパルスが加わると、J,K入力の組み合わせによって図の真理値表のような動作を行います。J,KがLLのときは、前に保持していたデータをそのまま保持しつづけます。J,KがHHのときは、前に保持していたデータを反転して保持します。J,KがLHとHLのときは、前の状態に関わりなくLHとHLを保持します。

2.4 レジスタ

ラッチやFFを使うと、1ビットの情報を記憶することができます。したがって、例えば図のようにD-FFを4個並べた回路は4ビットの記憶装置として使用することができます。この回路は、I3I2I1I0の4ビットで与えられたデータをクロックパルスの立ち上がりで記憶し、O3O2O1O0に出力します。 このような記憶回路は、コンピュータのCPUの内部で計算結果を一時的に記憶する目的で多く使われているもので、記憶回路ではありますが一般のメモリとは区別して レジスタと呼ばれます。 8ビットCPUには8ビットのレジスタが、16ビットCPUには16ビットレジスタが、そして32ビットCPUには32ビットのレジスタが何本も準備されているのが普通です。

2.5 シフトレジスタ

上のレジスタは並列(パラレル)に与えられたデータを記憶し、並列に出力します。しかし、1本の通信線からデータを受け取るような場合は、直列(シリアル)にデータが与えられます。コンピュータ内部のレジスタはデータを並列に処理しますから、ここで直列→並列変換を行う回路が必要になります。このような場合に使われるのがシフトレジスタです。 シフトレジスタは下の回路に示すように、D-FFを必要個数だけ並べて構成されますが、入力データが最初のFFだけに与えられることが、一般のレジスタとは異なります。この図のシフトレジスタは、クロックパルスの立ち上がりで前の段のFFの出力を記憶します。したがって、1発のパルスでデータが1段だけ右にシフトすることになります。

3. 実験

順序回路を用いた論理回路の実験を行います。TTL-ICを使ってELVISのブレッドボード上に実際の回路を作成し、動作を確認します。

3.1 電子ルーレットの作成

ブレッドボード上に、シフトレジスタを利用した電子ルーレットを作り、その動作を確認します。ここで作る電子ルーレットは8個のLEDを円上に並べて順番に点灯させるもので、シフトレジスタにより点灯するLEDが順番に移動するようにします。 シフトレジスタとして74LS164を使用します。このTTLは上の図に示す通り8個のFFが入っており、クロックパルスの立ち上がりで順次シフトしていくようになっています(途中を一部、省略してあります)。

CLEAR信号がLになると、すべてのFFはクリアされLになります。CLEARがHのときは、SERIAL INPUTSに与えられた信号のANDがクロックパルスの立ち上がりエッジで順次シフトしていきます。各FFの状態はQAからQHの出力ピンに出力されます。 74LS164のピン配置を左に示します。このTTLは14ピンのDIPで、8つの出力ピンは両側に4本ずつ分かれて配置されています。

シフトレジスタを用いて電子ルーレットを作る場合、1つ問題があります。電子ルーレットでは、8個のLEDのうち、ある時刻には1つだけが点灯して他のLEDは消えていなければなりません。そのためには、8つのFFの中で、同時には1つのFFだけがHになるようにする必要があります。このようなシフトレジスタをリングカウンタと呼びます。

8ビットのシフトレジスタである74LS164をリングカウンタとして使う場合は、強制的に中のFFのうち1つだけをHにする回路を外に付け加える必要があります。これは次の図のようにして実現できます。

 この図では、シフトレジスタの8つの出力のうち上位7ビットの出力のNORをとり、それを入力信号として戻します。NOR論理は入力に1つでもHがあれば出力がLになりますので、上位7ビットのうち1つでもHになっているときは入力からH信号は入ってきません。クロックパルスが加えられる毎にシフトレジスタの内容は下位ビットの方へシフトしていきますから、入力にLしか入ってこなければそのうち上位7ビットのFFがLになってしまいます。その時、入力にLが入りますから、次のクロックの立ち上がりで入力に初めてHが入ります。これでQAがHとなり、しばらくの間、再び入力はLのままになります。そしてHが順番に下位のFFへ伝播していき、最後のQHがHになったとき、入力としてHが入りますから、再びQAがHになります。したがってこの回路により、8つのFFのうち同時には1つだけがHになることが保証されます。

下に74LS164をリングカウンタとして用いた電子ルーレットの回路図を示します。 この回路は大きく4つの部分に分けることができます。

 本実験のメインであるリングカウンタの部分についてはすでに説明してあります。74LS164をリングカウンタとして使用するためのフィードバック回路は、7入力のNORがTTLにないため、8入力NANDを利用します。ド・モルガンの法則により、

が成り立ちますから、LS164の出力信号を反転した信号のNANDをとり、それを反転してANDにして使っています。8入力NANDゲートは、TTLの74LS30です。

 このICは図のようにA〜Hまでの8つの入力を受けて、YにそのNANDを出力します。図中、NCと描いてあるのは無接続(Non Connect)を意味します。

 クロックパルスを生成するためのクロック回路には、4MHzのクロックジェネレータを使ってあります。クロックジェネレータとは内部に水晶発信子とコンデンサ等の付加回路を組み込んだもので、電源をつなぐだけで正確なクロック信号を生成する便利な部品です。水晶発信子は数MHzという高い周波数のものが作りやすく安価であるため、通常は必要な周波数に分周して使用します。このためここでは、4040というCMOSのICを使って周波数を下げています。4040は内部に12ビットのバイナリカウンタを格納したICで、図のようなピン配置になっています。Clkピンにクロック信号を印加すると、Q1からQ12までの各ピンにそれぞれ入力クロックの1/2,1/4,1/8, … ,1/4096までの信号が出力されます。元のクロックが4MHzですから、4096分の1に分周しても1kHz程度の周波数です。そこで、さらにもう1つ4040を使用して、このクロックを64分周して15Hzくらいの周波数を得ています。この程度の周波数ならば、LEDが点滅する様子を目で追うことができます。

 このクロック回路で生成されたクロック信号は、ANDゲートでゲーティングされています。このゲートを開いたり閉じたりするための回路がスタート回路です。

 スタート回路にはプッシュスイッチがあり、このスイッチが開いている(押されていない)状態では、ハイレベル(5V)にプルアップされていますので、インバータへの入力はHです。したがってANDゲートへはLが入力され、ゲートは閉じています。スイッチが押されるとインバータの入力はGNDとつながりますからLとなり、ゲートへはHが入力されますからゲートが開きます。この結果、クロック信号はゲートを通ってリングカウンタに到達し、電子ルーレットは回り始めます。
 スイッチを開く(離す)と、インバータの入力は5Vへプルアップされようとしますが、コンデンサの容量を充電するのにいくらかの時間を要するため、しばらくしてからHになります。この時間は抵抗RとコンデンサCの値による時定数によって定まります。この効果により、スイッチを開いてからしばらくしてANDゲートが閉じ、電子ルーレットは止まります。
 この回路でインバータとして使われているゲートは、単純なNOTゲートではなく、変な記号が描かれています。この記号は「シュミットトリガー」型のゲートを意味するものです。シュミットトリガー型とは、論理のL→HとH→Lのしきい値に差をつけたゲートのことで、コンデンサが充電するときの電圧の不安定さによって、出力がHとLとの間でばたつかないようにする働きがあります。TTLでは、74LS14がシュミットトリガー型のインバータです。

 LED点灯回路は、バッファタイプのインバータ74LS06を使って、LEDを駆動しています。74LS06には図に示すように6つのインバータしか入っていないので、ここでは2つのICを使う必要があります。

 74LS08は、4つのANDゲートが入っているTTLになります。

3.2 実体配線図

 ブレッドボード上に組む際の実体配線図を以下に示します。

3.3 配線

 実際に組んだ回路の写真を以下に示します。


3.4 配線の際の注意事項

部品の確認
回路図を組む際には、以下の写真のように一度回路図に必要な部品を並べておくとスムーズに進められます。


発光ダイオードの極性

電源とGND
ブレッドボード上の電源とGNDは基盤と接続する必要があります。
ブレッドボードの内部配線

タクトスイッチ

4. 実験課題

  1. 配線図と写真を参考にブレッドボード上に電子ルーレットを実装し、その動作を確認しなさい。(正常に回路を組めた場合、この動画のように動作する。)
  2. この回路は、4040を4096分の1に分周して約1kHzの周波数にし、さらに2つ目の4040を使用して、このクロックを64分周して約15Hzにして使用している。2つ目の4040を32分周にして倍の30HZに変更するには 4040のどこに配線をつなぎ直せばよいかを考え、それを実装し確認しなさい。
  3. 100μFのコンデンサを外した場合の動作はどうなるのか。予測した上で確認しなさい。

5. 考察課題

     
  1. D型フリップフロップのタイムチャートを完成させよ。(QとQの続きの部分)ただし、このD型フリップフロップは、立ち上がりエッジ動作であるものとし、初期値は不定とする。
     
  2. 2.5のシフトレジスタのところで示した回路において、Q0,Q1,Q2,Q3の波形はどうなるか、図に書き込みなさい。ただし、Q0,Q1,Q2,Q3の初期値は、Lowとする。
     
  3. 74LS08の回路を完成させよ。また、真理値表を完成させよ。


TOP

実験テーマ一覧