Flip Flop Circuit

実験:記憶(フリップフロップ)回路


本実験では,記憶回路の基本であるフリップフロップ回路の基本とその応用を 実際に回路を作りながら学びます.

フリップフロップ素子

前回までに行なった組合せ回路は、入力を与えると(多少ゲート動作遅延は あるものの)すぐに出力が得られる回路でした。
フリップフロップ素子(以下ではFF素子と書く)は、 1ビットのHレベル(1レベル)とLレベル(0レベル)を記憶できる素子です。
FF素子を使うと、過去の状態によって動作が異なる(記憶)回路を作成できます。
FF素子に記憶するタイミングは、CLK端子にクロックを与えた時、そのクロック信号の立上り 、または立ち下がりの瞬間です(FF素子によって異なります)。

それでは,主なFF素子を紹介しましょう.

RS型FF素子
出力の値をHレベル(1レベル)に設定する'S端子と、 Lレベル(0レベル)に設定する'R端子からなる入力端子からなるフリップフロップです。 動作は次の表のように'S端子と'R端子(負論理)に値を与えた瞬間に値を記憶します。 (「'」は、否定を表します。)


図:RS-FF素子
記憶する値は以下の入力値に従います。
表:RS型FF素子の機能表
(Qoは直前に覚えていた値を表す)
'S'RQ'Q
LL----
LHHL
HLLH
HH'Qo'Qo
D型FF素子
クロック端子に入力された信号の立上りの瞬間に端子Dの値を記憶し、 その値を端子Qに出力します。出力端子'QはQの逆の値を出力します。 また、CLEAR端子は、次のクロックの立上りで強制的に出力の値をLレベル(0レベル) に設定(クリア)します。 PR端子は、次のクロックの立上り(正エッジ)で強制的に出力の値をHレベル(1レベル)に 設定(プリセット)します。
74シリーズのTTLでは7474が2つのD型FFを搭載しています。 また、74273はクロック端子とクリア端子を共通化した8つのD型FFを 搭載しています。

図:D-FF素子
記憶する値は以下の入力値に従います。
表:D型FF素子の機能表
(Qoは直前に覚えていた値を表す)
CLKDQ'Q
LLH
HHL
JK型FF素子
クロック信号の立ち下がり(負エッジ)の瞬間に、端子JおよびKの値によって決まる値を記憶し、 端子Qに出力します。出力端子'QはQの逆の値を出力します。 また、CLEAR端子は、次のクロックの立上りで強制的に出力の値をLレベル(0レベル) に設定します。 PR端子は、次のクロックの立上りで強制的に出力の値をHレベル(1レベル)に 設定します。
74シリーズのTTLでは74112が2つのJK型FFを搭載しています。

図:JK-FF素子
記憶する値は以下の入力値に従います。
表: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端子とC端子を持ち、T端子がHレベルの状態でC端子にエッジトリガが 入力されると出力が反転します。T端子がLレベルの時は出力は反転しません。T-FFはD-FFやJK-FFにより 間単に作成できるので、74シリーズには用意されていません。

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

シフトレジスタ

RS-FF回路の出力を次段の入力とすることにより、記憶している値を次段に次々と受け渡すことが できます。クロックの入力タイミングに従って記憶している値を次々と次のFFに移動する素子を シフトレジスタと言います。
74シリーズのTTLでは74164が8つのFFを搭載している8ビットシフトレジスタです。

非同期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セグメント表示器です。

BCD7セグメントデコーダ

入力として2進化10進数(BCD)がA(20),B(21),C(22),D(23)を入力し、7セグメント表示器の7つのセグメントLEDを制御する機能をもつ回路をBCD7セグメントデコーダと言います。
74LS248はカソードコモンタイプの7セグメント表示器をドライブすることができる組合せ回路が 構成されているICです。 特に74LS248は、LEDの点灯に必要な電流制限用抵抗を必要としないように 内部回路が構成されています。
表:本実験で使用する主な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を使ったチャタリング防止回路の例を示します。

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

実験

実験に必要な部品

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

注意

実験1

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

実験2

74LS273(8回路ポジティブエッジトリガD-FF)の8つのD-FFを2進数における各桁の 記憶素子と考え、教員が指定する0から127までの数を2進化して記憶させよ。
  1. 各D-FFのD端子への入力信号はDIPスイッチによるプルアップ回路で作成せよ。
  2. 入力するクロック信号は実験1で作成したチャタリング防止回路の出力端子を接続せよ。
  3. 各FFに記憶されている値はLEDの点灯・消灯で確認できるようにせよ。
  4. クロックを入力して所望の値が記憶されることを確認せよ。

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

図:74LS273のピン配置

実験3

8ビットシフトレジスタ74LS164の動作を確認せよ。
  1. QAからQD、QEからQHまでの8つの出力端子に直線上に配置したLEDをそれぞれ接続せよ。
  2. DIPスイッチがオフのとき、直列入力(ピン1、ピン2)およびCLR端子(ピン9)がプルアップさ れ、オンのとき、グランドに接続されるようにせよ。
  3. クロック端子(ピン8)に実験1のチャタリング防止回路の出力を接続せよ。
  4. ピン1、2をH、ピン9をLレベルにし、出力をすべてLレベルに設定せよ。
  5. クリア端子(ピン9)をHレベルにしてクリアを解除し、チャタリング防止回路からパルスを順次 入力せよ。このとき、適当にピン1(またはピン2)を途中でLレベルにした時のFFの動作をパルスを入力 するたびに記録せよ。
  6. 次に、チャタリング防止回路を外し、ファンクションジェネレータから0.1[Hz]程度のTTLパルスを 入力できるように接続せよ。
  7. 回路にまずクリアを行ない、一つ目のLEDのが点灯したらすぐにピン2とピン13を接続せよ (最上位出力を最下位入力に接続)。
  8. 点灯状態をパルスが入力されるごとに記録せよ。
  9. この実験の動作原理について報告せよ。

図:74LS164の内部構造


図:74LS164のピン配置

実験4

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

実験5

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

図:74LS248のピン配置


図:TLR320のピン配置

実験6

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

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

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

考察

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

2002.06.18.
fmiso@sccs.chukyo-u.ac.jp