ディジタル回路実験
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 | ’Q |
0 | 0 | -- | -- |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 1 | Qo | '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 | ’CLR | CLK | D | Q | ’Q |
0 | 1 | × | × | 1 | 0 |
1 | 0 | × | × | 0 | 1 |
0 | 0 | × | × | 1* | 1* |
1 | 1 | ↑ | 1 | 1 | 0 |
1 | 1 | ↑ | 0 | 0 | 1 |
1 | 1 | 0 | × | 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は直前に覚えていた値を表す)
PRESET | CLEAR | CLOCK | J | K | Q | 'Q |
L | H | X | X | X | H | L |
H | L | X | X | X | L | H |
L | L | X | X | X | H* | H* |
H | H | ↓ | L | L | Qo | 'Qo |
H | H | ↓ | H | L | H | L |
H | H | ↓ | L | H | L | H |
H | H | ↓ | H | H | TOGGLE |
H | H | H | X | X | Qo | '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は直前に覚えていた値を表す)
このようなフリップフロップ素子を使うことで、過去に設定した値(状態)によって、
出力が多彩に変化する回路を実現することができます。
シフトレジスタ
フリップフロップを応用した回路の一つに、「シフトレジスタ」があります。
シフトレジスタは、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の点灯に必要な電流制限用抵抗を必要としないように
内部回路が構成されています。
チャタリング
有接点スイッチをオンからオフに切替えると、スイッチレバーのわずかな振動等のため、
接点の断接がわずかな間に何度も切り替わる現象が発生します。この現象をチャタリングと言い、
スイッチのオン・オフによって1つのパルスをディジタル回路に入力したつもりでも実際には
不特定多数のパルスが入力され誤動作の原因になります。
このようなチャタリング現象を防止して確実に1つのパルスを発生させるためにはFFを用いると良いことが知られています。
つまり、一度でもHレベルになったらどのような入力が入っても出力を変化しないように
過去の状態を記憶すれば良いからです。JK-FFを使ったチャタリング防止回路の例を示します。
図4-9:チャタリング防止回路
簡単なゲームマシン回路の製作準備
ここまでくれば、簡単なゲームを電子回路で作ることができます。そう、「電子ルーレット」です。
「電子ルーレット」を作成するための準備と回路設計の練習を実験を通して行ないましょう。
実験に必要な部品
品名 | 規格・型番 | 個数 |
74シリーズIC | 適切な品番 | 適切な数 |
抵抗 | LED電流制限用330Ω(1/8W) | 適切な数 |
抵抗 | プルアップ用4.7kΩ(1/8W) | 適切な数 |
LED | 赤 | 適切な数 |
7セグメント表示器 | 赤 | 適切な数 |
スイッチ | トグル型、DIP型 | 適切な数 |
電線 | --- | 少々 |
注意
- 本実験では,理論値(真理値表または動作表の値)と実際に測定した値(LED
の点灯または消灯)を記録して比較すること.
- 回路をいきなり作らず,しっかりとした回路図を書き,(必要なら配線図を書いて)
部品の配置を決めてから配線を始めること.(プロでもいきなり回路を作るのは難しい。初心者の皆さんは回路図を書かずに回路製作をするのは絶対にやってはいけない。失敗するか、うまく作れず悩むだけ。)
実験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進化して記憶させよ。
- 各D-FFのD端子への2進数入力信号はDIPスイッチ(1列に端子が並んだ小さなスイッチ群)を使ったプルアップ回路で作成せよ。
- 入力するクロック信号に実験1で作成したチャタリング防止回路の出力端子を接続せよ。
- 各FFに記憶されている値をLEDの点灯・消灯で確認できるようにせよ。
- クロックを入力して所望の値が記憶されることを確認せよ。
(動作結果の記録は、実験1に準じてスイッチ数を増やした表を作成して行なえ)
注意:各FFがクリアされないように'CLR端子をプルアップ抵抗を使ってHレベルに保持しておく
こと。
図4-10:74LS273のピン配置
実験3
ネガティブエッジトリガJK-FF74LS112 を使ってT-FFを作成し、その動作を確認せよ。
クロックには実験1で作成したチャタリング防止回路の出力を用いよ。
(J端子およびK端子をどのように接続すればクロックパルスが入ったとき記憶している値を反転できるか考えよ。)
実験4
非同期式カウンタ74LS293を使用して16進カウンタを作成し、その動作を確認せよ。(74LS293は74LS93のピン配置を変えたものである。データシートで
ピン配置を確認せよ)
- カウンタの4ビットBCD出力に7セグメントデコーダ74LS248を接続し、
7セグメント表示器TLR320の右側1桁に数字1文字を表示する回路を作成せよ。
- カウンタのクロックに実験1で作成したチャタリング防止回路の出力を接続し、
16進カウンタの動作を確認せよ。
(特に、16進数AからFまではどのような表示になるか記録せよ)
- チャタリング防止回路の代わりに直接トグルスイッチを使ったオンオフパルスを与えると
回路にチャタリング現象が発生する。トグルスイッチの出力を直接クロック信号に接続し、
チャタリングがどのように起こったか記録せよ。
(チャタリング防止回路のPR端子またはCLR端子は直接トグルスイッチから出力されるオンオフパルスなので、チャタリングが含まれた入力信号として流用できる)
図4-11:74LS248のピン配置
図4-12:TLR320のピン配置
実験5
実験4で作成した16進カウンタに回路を追加して、10進カウンタを作成せよ。
(10までクロックパルスを数えたらすぐに全ての記憶を0にクリアする回路を追加する)
実験6(余力がある時のみ行なえ)
実験5で作成した10進カウンタを2つ作成し、非同期BCD60進カウンタを作成せよ。
また、同様にして非同期24進カウンタを作成せよ。
これらを組み合わせることにより非同期24時間時計を作成せよ。
- チャタリング防止回路の動作を説明せよ。
- 12時間時計を設計せよ。(24時間時計を単に変更しただけでは動作しないので、
きちんと動作するかどうかを確実に検証せよ。)
- これまで行なったディジタル回路の実験を応用したオリジナル回路を自由に設計せよ。
設計にあたっては、教員と相談しながら次週以降最終回までの間にシミュレーションと
実際の回路が十分完成できる程度の規模にせよ。
最終回に設計した回路の原理と動作結果についてのプレゼンテーションを行なう。
レポートの作成
上記の実験1〜実験6、および考察をレポートにまとめ提出せよ。
レポートの書き方は、各机に置いてある「実験指導書」を見るか、
「実験指導書(ホームページ版)」を参考にして下さい。
(電子回路やLSI、センサー、自動設計に興味のある人へ)
今回作成する電子回路はICを使いましたが、この世の中はもっと複雑な回路がたくさん動いています。
LSIやVLSI、そしてULSIと呼ばれる大規模集積回路がそれです。
今後も多機能化が進み、その規模はまだまだ大きくなるでしょう。
今回は非常に簡単な回路を作成しましたが、世の中で実際に動いているのは
ソフトウェアなのではなく、ハードウェア(電子回路)なのです。
ただし、ハードウェアの設計には膨大な設計データを扱わなければならないので
ソフトウェアを使いこなす力も必要です。
この世のほとんどの機器が電気で動いているのにも関わらず、電子回路設計分野は
人手が足りず、この分野への就職はひっぱりだこです。しかし
パソコンをはじめ世界を動かしている電子回路の設計には基礎技術の習得が必要で、
かつ実際の回路設計にはノウハウ的な知識も必要です。
情報システム工学科で開講されている科目のうち、次の科目が電子回路設計分野で
役にたつ科目です。もし電子回路設計に興味がある人はこれらの科目を履修して
頑張りましょう。
- プログラミングI、II、III
- アルゴリズムとデータ構造A、B
- ディジタル回路I, II
- ディジタル回路実験
- メディアシステム工学I、II
- ディジタルシステム設計
- ロボットのハードウェア
- 計算機アーキテクチャ
2004.06.07.
2005.06.01.
2008.05.11.
2009.05.10.
2011.04.07.
fmiso at sist.chukyo-u.ac.jp