- ベストアンサー
7474でパルス整形
74LS74のD-flipflopを二つカスケード接続して、 入力パルスの整形(クロック間隔と同じ幅のパルスにする) を行う回路を作ったのですがうまく動きません。 スタンダードな回路だと思うのですが、問題点を教えていただけ ませんでしょうか。 回路は、7474を直列接続して、 +------------+ | | trigger->|D Q |-+>|D Q | +--+ | Q-bar| | Q-bar|-----+AND---> のようにして、入力トリガを整形します。 もちろん、クロック(~1KHz)は入れていますし、 クリヤとプリセットはdisenableです。 問題は、データがつつぬけになっているようであることと、 (LS74は、リーディングエッジトリガのはずなのに、、、) もう一つ、 LS74は、立ち上がりトリガのみ動作するとデータシートに 書いてあるのに、立下りでも動いてしまうということです。 説明不足かもしれませんが、よろしくお願いいたします。
- みんなの回答 (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は、非同期回路は、キライですぅ~。 誤記・ウソがありましたらゴメンナサイ。
その他の回答 (2)
- ikkyu3
- ベストアンサー率43% (535/1229)
スイッチは、接点が衝突したときにバウンドしてチャタリングが出ます。 回路的に例えば積分するとかして対策するのが一般です。
- anisol
- ベストアンサー率48% (146/301)
回路図がよくわからないのですが、次のようになっていますか? 入力→1D 1~Q→2D 2Q→A 1Q→B (A AND B)→出力 クロック→1CK, 2CK (~は負論理を表わす) 想像ですが、1Q→2Dになっていませんか?また、クロックの立下りで動作するようだったら、クロックがチャタリングしていないか確認してみてください。オシロで水平の掃引時間を短くすればわかります。
お礼
お世話になります。ありがとうございます。 >>回路図がよくわからないのですが 見直してびっくり、スペースが消えている、、、。 なぜでしょうか、、、。 ご指摘の回路になっています(少なくとも、いるつもりです)。 もう一度、確かめてみます。 >>クロックがチャタリングしていないか 1KHzのクロック(SPGで発生)を入れてもうまくいかなかった ので、手動クロックでフローしてみようと、スィッチを付けた のですが、スイッチ直付けではやはりチャタリングがでますか、、、。 少なくとも、74×2カスケードで、うまくいくはず、という ことがわかって安心しました。もう少し、粘ってみて、 ご報告申し上げます。
お礼
ありがとうございます。 なんとかうまく行きました。 原因は、実は、教えていただいたRS-FFの回路が先頭に入っていて、 これの論理ミスが原因でした。それに気が付かず、7474の方が おかしいと思い込み、トレースしようとして、手動のスイッチ回路 でトリガーを作って、チャタリングを出してしまった、、、、、。 blue_monkeyさんの回路を参考にして、もう一度、細いパルス対応に 改造してみるつもりです。 今後ともよろしくお願いいたします。