アプリ版:「スタンプのみでお礼する」機能のリリースについて

74LS74のD-flipflopを二つカスケード接続して、
入力パルスの整形(クロック間隔と同じ幅のパルスにする)
を行う回路を作ったのですがうまく動きません。
スタンダードな回路だと思うのですが、問題点を教えていただけ
ませんでしょうか。

回路は、7474を直列接続して、
+------------+
| |
trigger->|D Q |-+>|D Q | +--+
| Q-bar| | Q-bar|-----+AND--->

のようにして、入力トリガを整形します。
もちろん、クロック(~1KHz)は入れていますし、
クリヤとプリセットはdisenableです。

問題は、データがつつぬけになっているようであることと、
(LS74は、リーディングエッジトリガのはずなのに、、、)
もう一つ、
LS74は、立ち上がりトリガのみ動作するとデータシートに
書いてあるのに、立下りでも動いてしまうということです。

説明不足かもしれませんが、よろしくお願いいたします。

A 回答 (3件)

blue_monkeyです。

No1,No2のアドバイスで、おそらく解決済みかもしれませんが、お猿さんのお話を追加させていただきます。意味不明な点がありましたら猿の戯言と言うことで、読み捨ててください。

第一部
【立ち上がり検出回路の動作条件】
trigger信号のパルス幅T(ms)が、D-FFに使用しているクロック(システムクロック)の周期Tcに対して、Tc<Tなら(クロックの立ち上がりで、必ずtrigger信号レベルの変化をたたけると言う意味です)、No1のアドバイスで説明されている回路で、所要の動作が実現できると思います。また下記の【別回路】でも実現可能と思います。

【別回路】
また、No1で記述されている回路と同じ動作をさせるものとして、次のような回路も考えられます。
ck_sys=DFF1.ck=DFF2.ck
DFF1.D=trigger
DFF2.D=DFF1.Q
DFF1.Vc=DFF2.Vc=+5V
DFF1.GND=DFF2.GND=0V
DFF1.clr_=DFF2.clr_=DFF1.prs_=DFF2.prs_=+5V
trigger信号の立ち上がり検出信号OUTは
OUT=DFF1.Q&DFF2.Q2_

上記式の定義は、
1段目のDFFのクロック入力と、2段目のDFFのクロック入力にシステムクロック(例えば、1kHz)を入力する。
1段目のデータ入力にtrigger信号を入力する。
2段目のデータ入力に1段目のQ出力を入力する。
「&」の記号は、A&Bで信号Aと信号BのANDを取ると言う意味です。
また、A_は信号Aの反転信号ですぅ~。

No1で説明されている回路を上記の式で記述すると
ck_sys=DFF1.ck=DFF2.ck
DFF1.D=trigger
DFF2.D=DFF1.Q_
DFF1.Vc=DFF2.Vc=+5V
DFF1.GND=DFF2.GND=0V
DFF1.clr_=DFF2.clr_=DFF1.prs_=DFF2.prs_=+5V
trigger信号の立ち上がり検出信号OUTは
OUT=DFF1.Q&DFF2.Q2

のようになります。

第2部
【条件】
trigger信号のパルス幅T(ms)が、D-FFに使用しているクロックの周期Tcに対して、
Tc>Tで、クロックの立ち上がりで、必ずtrigger信号レベルの変化をたたけると言う保証がない場合。
但し、trigger信号がシステムクロック(例えば1kHz)を元に作られており、システムクロックの立ち上がりで、trigger信号のレベル変化を必ずたたけるという、システムクロックとtrigger信号のタイミングに同期的な関係のあるケースは除きます。この場合は第1部で記述されている別回路、No1のアドバイス回路でOKですぅ~。
【回路】
ここに提示する以外にも、同じ動作をする回路があると思います。
SR1.S_=trigger_
SR1.R_=DFF2.Q_

ck_sys=DFF1.ck=DFF2.ck
DFF1.D=SR1.OUT
DFF2.D=DFF1.Q_
DFF1.Vc=DFF2.Vc=+5V
DFF1.GND=DFF2.GND=0V
DFF1.clr_=DFF2.clr_=DFF1.prs_=DFF2.prs_=+5V
trigger信号の立ち上がり検出信号OUTは
OUT=DFF1.Q&DFF2.Q2

上記の記述で、SRとはセットリセットラッチ回路を意味します。
SRラッチを用いることで、クロック周期よりパルス幅の小さなトリガー信号の変化を検出するのに使います。

【注意】
・但し、使用できる、trigger信号のパルス幅は、セットリセットラッチ回路の特性より下限が決まります。いくらでも細くはできません。
・この回路は、trigger信号の立ち上がりを検出してから約4~3システムクロック分の間は、次のtrigger信号がやってきても検出できません。
trigger信号の不感期間を最小(1~2クロック)に押さえるためには、非同期的なデジタル回路で構成する必要があるかと思われます。
ヒント:RSラッチのリセット信号をDFF2.Q出力を用いて、ゲート遅延を使って細いパルスのリセット信号を作るのかなぁ~?
blue_monkeyは、非同期回路は、キライですぅ~。

誤記・ウソがありましたらゴメンナサイ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
なんとかうまく行きました。
原因は、実は、教えていただいたRS-FFの回路が先頭に入っていて、
これの論理ミスが原因でした。それに気が付かず、7474の方が
おかしいと思い込み、トレースしようとして、手動のスイッチ回路
でトリガーを作って、チャタリングを出してしまった、、、、、。

blue_monkeyさんの回路を参考にして、もう一度、細いパルス対応に
改造してみるつもりです。
今後ともよろしくお願いいたします。

お礼日時:2001/10/24 16:44

スイッチは、接点が衝突したときにバウンドしてチャタリングが出ます。


回路的に例えば積分するとかして対策するのが一般です。
    • good
    • 0

回路図がよくわからないのですが、次のようになっていますか?



入力→1D
1~Q→2D
2Q→A
1Q→B
(A AND B)→出力
クロック→1CK, 2CK
(~は負論理を表わす)

想像ですが、1Q→2Dになっていませんか?また、クロックの立下りで動作するようだったら、クロックがチャタリングしていないか確認してみてください。オシロで水平の掃引時間を短くすればわかります。
    • good
    • 0
この回答へのお礼

お世話になります。ありがとうございます。
>>回路図がよくわからないのですが
見直してびっくり、スペースが消えている、、、。
なぜでしょうか、、、。
ご指摘の回路になっています(少なくとも、いるつもりです)。
もう一度、確かめてみます。

>>クロックがチャタリングしていないか
1KHzのクロック(SPGで発生)を入れてもうまくいかなかった
ので、手動クロックでフローしてみようと、スィッチを付けた
のですが、スイッチ直付けではやはりチャタリングがでますか、、、。

少なくとも、74×2カスケードで、うまくいくはず、という
ことがわかって安心しました。もう少し、粘ってみて、
ご報告申し上げます。

お礼日時:2001/10/20 23:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!