ディジタル回路実験

Lab4: 基本ディジタル回路設計(記憶・順序回路)

ディジタル回路設計(記憶・順序回路)の基礎を学びます。

記憶回路の設計

「組合せ回路」が理解できたら「記憶・順序回路」へ進みましょう。
前回の「組合せ回路」は入力信号が決まるとそれに応じて出力信号の状態も一意に決まる回路でした。 それに対して「記憶・順序回路」は過去の状態を覚えておき(メモリ)、出力に反映させる回路のことです。 つまり、同じ入力信号を入れても、出力信号がいつも同じとは限らない回路のことです。

フリップフロップ

メモリは「フリップフロップ(FF)」と呼ばれる1ビットを記憶することのできる素子の集合です。 フリップフロップには多くの種類がありますが、ここでは、「RS型フリップフロップ」、「D型フリップフロップ」、「JK型フリップフロップ」、そして「T型フリップフロップ」と呼ばれる記憶素子を紹介しましょう。

RS型フリップフロップ

RS型フリップフロップ(RS−FF)は、出力の値をHレベル(1レベル)に設定する’S端子と、 Lレベル(0レベル)に設定する’R端子の2つ入力端子からなる基本的なフリップフロップです。 ’S端子を0レベルにすると出力が1になり、1に戻してもそのまま出力は1を保持し続けます。 また’R端子を0レベルにすると出力が0になり、1に戻してもそのまま出力は0を保持し続けます。 (「’」は、否定を表します。「 ̄」を使うこともあります。Sは「セット」の意味、Rは「リセット」の意味です。)

RS型フリップフロップ回路はNAND素子を2つ組合せ、お互いの出力を他方の入力とするような回路になっています。 出力端子’QはQの逆の値を出力します。

74シリーズのTTLでは74279が4つのRS型FFを搭載しています。


図4-1:RS-FF素子

また、負論理表現すると、次のようになります。


図4-2:RS-FF素子(負論理表現)

動作は次の表のように’S端子と’R端子の信号を変化させた瞬間に値を記憶します。

表4-1:RS型FF素子の機能表
(Qoは直前に覚えていた値を表す)
’S’R’Q
00----
0110
1001
11Qo'Qo

D型フリップフロップ

D型フリップフロップ(D−FF)は、クロック信号入力端子(CLK)が0から1に変化する瞬間の D端子の信号状態を記憶して出力端子Qに出力するフリップフロップ素子です。 出力端子’QはQの逆の値を出力します。
このようにクロック信号が0から1に変化した瞬間の値を記憶するFF素子を「ポジティブエッジトリガFF」といいます (逆に、クロック信号が1から0に変化した瞬間の値を記憶するFF素子を「ネガティブエッジトリガFF」といいます)。

また、CLR端子がある場合は、出力端子Qの値を強制的に0に設定(クリア)することができます。 その逆にPR端子は、出力端子Qの値を強制的に1に設定(プリセット)することができます。

74シリーズのTTLでは7474が2つ、74273が8つのD型FFを搭載しています。


図4-3:D−FF素子
動作は次の表に従います。
表4-2:D型FF素子の機能表
(Qoは直前に覚えていた値を表す。*は保証していない)
’PR’CLRCLK’Q
01××10
10××01
00××1*1*
11110
11001
110×Qo'Qo

JK型FF素子

クロック信号の立ち下がり(負エッジ)の瞬間に、端子JおよびKの値によって定まる値を記憶し、 端子Qに出力します。出力端子'QはQの逆の値を出力します。 また、CLR端子は、次のクロックの立上りで強制的に出力の値をLレベル(0レベル) に設定します。 PR端子は、次のクロックの立上りで強制的に出力の値をHレベル(1レベル)に 設定します。

74シリーズのTTLでは74112が2つのJK型FFを搭載しています。


図4-4:JK-FF素子
記憶する値は以下の入力値に従います。
表4-3:JK型FF素子の機能表
(Qoは直前に覚えていた値を表す)
PRESETCLEARCLOCKJKQ'Q
LHXXXHL
HLXXXLH
LLXXXH*H*
HHLLQo'Qo
HHHLHL
HHLHLH
HHHHTOGGLE
HHHXXQo'Qo

T型FF素子

Tはトグル(toggle)の意味で、トリガ(クロック)パルスが入力されるたびに出力Qが反転する FFです。T-FFは入力端子としてT端子とCLK端子を持ち、T端子がHレベルの状態でCLK端子にエッジトリガが 入力されると出力が反転します。T端子がLレベルの時は出力は反転しません。

T-FFはD-FFやJK-FFにより間単に作成できるので、74シリーズには用意されていません。


図4-5:T-FF素子
記憶する値は以下の入力値に従います。
表4-4:T型FF素子の機能表
(Qoは直前に覚えていた値を表す)
CTQ'Q
LQo'Qo
H'QoQo
このようなフリップフロップ素子を使うことで、過去に設定した値(状態)によって、 出力が多彩に変化する回路を実現することができます。

シフトレジスタ

フリップフロップを応用した回路の一つに、「シフトレジスタ」があります。 シフトレジスタは、RS−FF回路の出力を次段のFF回路の入力とすることにより、 記憶している値を次段のFFへ次々と受け渡すことができます。
74シリーズのTTLでは74LS164が8つのFFを搭載しており、 「8ビットシフトレジスタ」と呼ばれています。
74LS164には、通常のRS−FFと違って次段に値を受け渡すタイミングを与えるための クロック端子があり、クロック信号が入るたびに次のFFに値を移動させます。またFFのR、S端子が 正論理(1のとき有効)になっています。 つまり、前段の出力端子Qと次段の入力端子S、前段の出力端子’Qと次段の入力端子Rを接続するだけで FF間でデータを受け渡すことができます。

図4-6:74LS164の内部構造


図4-7:74LS164のピン配置

非同期2進カウンタ

FFの出力値がHレベル(1レベル)からLレベル(0レベル)になるとき、 次段のFFの値が反転するようにFFを接続すると、FFに2進数の各桁の値(ビット)を記憶させることができます。 クロックを負エッジとすることで、2進カウンタ(計数器)ができます。
ここで「非同期」とあるのは、各FFへの信号伝搬には時間がかかり、クロックの瞬間に同時に すべてのFFの値が定まらない(同期しない)ためです。
この非同期カウンタは、0から(2のビット乗−1)までの値を計数することができ、 最大値までくると次は再び0に戻ります。(実際には桁あふれが起こっています)
任意の値で0に戻るようにしたい時は、クリアしたい値になったらLレベル(0レベル) を出力する組合せ回路を作成し、この出力信号をすべてのFFのクリア端子に入力します。 このようにすると、目的の値になった瞬間にすべてのFFは クリアされ、出力値はすべてLレベル(0レベル)になります。 この結果、あたかも目的の値の1つ前の値の次にリセットがかかったように動作します。 桁が複数あるときには、この出力信号を桁上げ信号としても利用できます。

7セグメント数字表示器

FFに記憶された2進数はLED等で出力を確認できますが、人間にとっては非常にわかりずらいものです。 そこで、人間にもわかるように、数字で表示させることを考えます。
数字は8の字に配置した7つの線分(セグメント)状のLEDを点灯させることで可能です。 このようなLEDを7セグメント数字表示器と言います。7セグメント表示器はLEDの カソード側が1本にまとめられたカソードコモンタイプと、アノード側がまとめられたアノードコモンタイプがあります。
ここで使うTLR320はカソードコモンタイプの7セグメント表示器です。


図4-8:7セグメント数字表示器TLR320のピン配置

BCD7セグメントデコーダ

入力として2進化10進数(BCD)がA(20),B(21),C(22),D(23)を入力し、7セグメント表示器の7つのセグメントLEDを制御する機能をもつ回路をBCD7セグメントデコーダと言います。
74LS248はカソードコモンタイプの7セグメント表示器をドライブすることができる組合せ回路が 構成されているICです。 特に74LS248は、LEDの点灯に必要な電流制限用抵抗を必要としないように 内部回路が構成されています。
表4-5:本実験で使用する主な74シリーズIC
素子名74シリーズ型番規格表(データシート)
RS型FF(4個入)74LS27974LS279データシート
D型FF(2個入)74LS7474LS74データシート
JK型FF(2個入)74LS11274LS112データシート
D型FF(8個入)74LS27374LS273データシート
8ビットシフトレジスタ74LS16474LS164データシート
2進+5進(10進)、2進+8進(16進)カウンタ74LS90/9374LS90/93データシート
2進+8進(16進)カウンタ74LS29374LS293データシート
BCD7セグメントデコーダ74LS24874LS248データシート

チャタリング

有接点スイッチをオンからオフに切替えると、スイッチレバーのわずかな振動等のため、 接点の断接がわずかな間に何度も切り替わる現象が発生します。この現象をチャタリングと言い、 スイッチのオン・オフによって1つのパルスをディジタル回路に入力したつもりでも実際には 不特定多数のパルスが入力され誤動作の原因になります。 このようなチャタリング現象を防止して確実に1つのパルスを発生させるためにはFFを用いると良いことが知られています。 つまり、一度でもHレベルになったらどのような入力が入っても出力を変化しないように 過去の状態を記憶すれば良いからです。JK-FFを使ったチャタリング防止回路の例を示します。

図4-9:チャタリング防止回路

簡単なゲームマシン回路の製作準備

ここまでくれば、簡単なゲームを電子回路で作ることができます。そう、「電子ルーレット」です。

「電子ルーレット」を作成するための準備と回路設計の練習を実験を通して行ないましょう。


実験

実験に必要な部品

品名規格・型番個数
74シリーズIC適切な品番適切な数
抵抗LED電流制限用330Ω(1/8W)適切な数
抵抗プルアップ用4.7kΩ(1/8W)適切な数
LED適切な数
7セグメント表示器適切な数
スイッチトグル型、DIP型適切な数
電線---少々

注意

実験1

トグルスイッチとJK-FF(74LS112の中の1つ)を使ってチャタリング防止回路 を作成し、その動作をLEDの点灯・消灯によって確認せよ。このとき、スイッチをどちらに 倒したらチャタリング防止回路の出力がHレベル、またはLレベルになる時の点灯、消灯を 記録せよ。

表4-6:動作結果
スイッチの位置スイッチの位置に
対する入力論理値
LEDの点灯/消灯LEDに対応する
出力論理値
    

「予想した動作と合っているか、違っているか、違っている場合はその理由」

実験2

74LS273(8回路ポジティブエッジトリガD-FF)の8つのD-FFを2進数における各桁の 記憶素子と考え、教員が指定する0から127までの10進数を2進化して記憶させよ。

教員から各自指定された値
10進数2進数
  

  1. 各D-FFのD端子への2進数入力信号はDIPスイッチ(1列に端子が並んだ小さなスイッチ群)を使ったプルアップ回路で作成せよ。
  2. 入力するクロック信号に実験1で作成したチャタリング防止回路の出力端子を接続せよ。
  3. 各FFに記憶されている値をLEDの点灯・消灯で確認できるようにせよ。
  4. クロックを入力して所望の値が記憶されることを確認せよ。 (動作結果の記録は、実験1に準じてスイッチ数を増やした表を作成して行なえ)

注意:各FFがクリアされないように'CLR端子をプルアップ抵抗を使ってHレベルに保持しておく こと。

図4-10:74LS273のピン配置

実験3

ネガティブエッジトリガJK-FF74LS112 を使ってT-FFを作成し、その動作を確認せよ。 クロックには実験1で作成したチャタリング防止回路の出力を用いよ。
(J端子およびK端子をどのように接続すればクロックパルスが入ったとき記憶している値を反転できるか考えよ。)

実験4

非同期式カウンタ74LS293を使用して16進カウンタを作成し、その動作を確認せよ。(74LS293は74LS93のピン配置を変えたものである。データシートで ピン配置を確認せよ)

図4-11:74LS248のピン配置


図4-12:TLR320のピン配置

実験5

実験4で作成した16進カウンタに回路を追加して、10進カウンタを作成せよ。 (10までクロックパルスを数えたらすぐに全ての記憶を0にクリアする回路を追加する)

実験6(余力がある時のみ行なえ)

実験5で作成した10進カウンタを2つ作成し、非同期BCD60進カウンタを作成せよ。
また、同様にして非同期24進カウンタを作成せよ。
これらを組み合わせることにより非同期24時間時計を作成せよ。

考察

  1. チャタリング防止回路の動作を説明せよ。
  2. 12時間時計を設計せよ。(24時間時計を単に変更しただけでは動作しないので、 きちんと動作するかどうかを確実に検証せよ。)
  3. これまで行なったディジタル回路の実験を応用したオリジナル回路を自由に設計せよ。 設計にあたっては、教員と相談しながら次週以降最終回までの間にシミュレーションと 実際の回路が十分完成できる程度の規模にせよ。 最終回に設計した回路の原理と動作結果についてのプレゼンテーションを行なう。

レポートの作成

上記の実験1〜実験6、および考察をレポートにまとめ提出せよ。

レポートの書き方は、各机に置いてある「実験指導書」を見るか、 「実験指導書(ホームページ版)」を参考にして下さい。


(電子回路やLSI、センサー、自動設計に興味のある人へ)

今回作成する電子回路はICを使いましたが、この世の中はもっと複雑な回路がたくさん動いています。 LSIやVLSI、そしてULSIと呼ばれる大規模集積回路がそれです。 今後も多機能化が進み、その規模はまだまだ大きくなるでしょう。

今回は非常に簡単な回路を作成しましたが、世の中で実際に動いているのは ソフトウェアなのではなく、ハードウェア(電子回路)なのです。 ただし、ハードウェアの設計には膨大な設計データを扱わなければならないので ソフトウェアを使いこなす力も必要です。

この世のほとんどの機器が電気で動いているのにも関わらず、電子回路設計分野は 人手が足りず、この分野への就職はひっぱりだこです。しかし パソコンをはじめ世界を動かしている電子回路の設計には基礎技術の習得が必要で、 かつ実際の回路設計にはノウハウ的な知識も必要です。

情報システム工学科で開講されている科目のうち、次の科目が電子回路設計分野で 役にたつ科目です。もし電子回路設計に興味がある人はこれらの科目を履修して 頑張りましょう。


2004.06.07.
2005.06.01.
2008.05.11.
2009.05.10.
2011.04.07.
fmiso at sist.chukyo-u.ac.jp