I2Cで回路書換可能なGreenPAKを使ったロジック回路入門 その4 DFFとLATCH

概要

前回はコンパレータでした。今回はDFFとLATCHを調べてみたいと思います。

DFF

前回の最後でやった、コンビネーション・ファンクション・マクロセルです。LUTと同じマイクロセルを選択し、Typeを変更することでDFFを選択可能です。

マクロセルによって、選べるファンクションは複数あるようです。足の数がそもそも違いますからね。

全部DFFに変更してみました。17個ありまして、足の数が違うのが3種類ありますね。

一番シンプルなのは2入力でDとCLKで、Qを出力しています。

下にnRESETが増えました。

DFF9だけnSETがさらに増えています。

DFFとは?

D-Flip Flopの略で、D-FFなどと表記されることがあります。フリップフロップはデータを保持する回路で、クロックを使ってデータを保持する回路をD-FFと呼ぶようです。

実際の回路図は探せば出てくるので、各自確認してください。実際に動かしてみて動作を確認してみます。

DFFにOSC0からクロックを入力して、適当な信号を外部から入力して結果を確認してみます。

一番上がクロックです。真ん中が適当な入力のDになります。一番下がQの出力です。ちょっとわかりにくいのですが、Qが変化するのはクロックがLOWからHIGHに変わる立ち上がりのタイミングとなります。どの値に変化するかを見ると、クロックの立ち上がりの瞬間のDの値です。

デフォルトの動きですと、クロックの立ち上がりの瞬間のDの値を保持する動きになっています。

設定項目を見てみます。

Initial polarity:初期極性

デフォルトはLowになっていました。これは起動直後の値を設定します。ただしPORがLOWの場合には、起動していないので常にLOWになります。

デフォルトのLOWではクロックが動いたところがPORがHIGHになって、起動したタイミングで、LOWで起動しています。

Highに変更してみました。クロックが動いたところがPORがHIGHになった起動したタイミングでHIGHになっています。

Q output polarity:Q出力極性

通常はQですが、反転したQが選択できます。

ちょっとわかりにくいですが、たしかに反転しています。ただし初期極性がLowなので、反転してHIGHで起動しています。Qを反転した場合には、Highに設定すると起動時にLowになりました。

nRESET:反転リセット

リセット付きのDFFをつかって、リセット信号の確認をしてみます。nがついているので、LOWになるとリセットですね。

nRESETがLOWになると、QもLowに落ちていますね。

nSET:反転セット

先程の回路のまま、nSET/nRESETをnSETに設定してみました。nRESET端子かと思ったらnSETにもなるんですね。

結果です。データ名がnRESETのままですが、nSETがLOWになるとQがHIGHにセットされました。

LATCH

ラッチはDFF/LATCHタイプに変更してから、モードでLATCHを選択することで利用できます。結構面倒ですね。

足の数とか個数はD-FFと同じですね。

D-FFと同じ回路を組んで動作を確認します。かなりわかりにくいですが、クロックがLOWの場合、DとQは同じ値です。

クロックとDの周波数を変えてみました。クロックがLOWのときにDとQが同じように変化していますね。クロックがHIGHのときには、そのときのQの値を保持しています。ラッチはクロック信号がHIGHのときに信号を記憶するという動きになります。実際にはクロック信号ではなく、特定のタイミングの信号を保持するときに使う感じでしょうか。

応用回路(分周器)

D-FFの出力を反転させ、Dに戻すことで分周器が作成できます。

クロックが半分の周波数になりました。これを複数段使うことで、高速すぎるLチカをゆっくり動かすことが可能です。

まとめ

今回はD-FFとLATCHを紹介しました。LATCHも正式にはD-LATCHになると思います。このDはDelayを表していて、前回の結果が遅延して出力する意味みたいです。

マイクロセルの説明より、どんな回路で説明するかが難しいです。特に応用回路とかで、単純な例が見つかりにくいです。D-FFはシリアルtoパラレルとかでも使えますが、一気に回路が複雑になります。

単純なラッチ回路の実用例が見つからない、、、

次回はカウンタの予定です。なかなか紹介する順番が難しいです。

続編

コメント