• 締切済み

プリセットダウンカウンタ(ロジックIC)

74HC193(4bit Presettable U/D counter)を2個用いて,8bitのダウンカウンタを製作したいと考えております. 前提条件としては,1MHzのクロックと任意周波数の入力パルスがあります.(既に製作済み) 実現したい動作としましては,任意周波数の入力パルス(パルス幅は1us程度)があるたびに,一定時間(DIP等でダウンカウンタにプリセット)出力したのち,次のパルスが入るまではLow状態を保つ,といったものです. 現在までに製作したものでは,JK-FFと74HC193の組み合わせによって,入力パルスとダウンカウンタのBorrow信号によってFFをトグルさせるような構造にしてみました. ところが,2つのダウンカウンタのBorrow信号の接続が間違っているためか,Borrow信号の波形が不規則な動きをしてしまいます. ご教授いただきたい内容としまして, 1. 74HC193等のICを複数個用いてダウンカウンタを構成する場合,クロック入力,クリア入力,Borrow出力等の相互接続はどのようにすればよろしいのでしょうか? 2. プリセット値をロードしてダウンカウント(1回目)を行ったあとはロード信号が入れば再びプリセット値からダウンカウントを始めるのでしょうか? 3. 上記に関連しまして,現在のところクリア入力はGNDに落としているのですが,動的に信号を入れてやる必要があるのでしょうか? 複雑,多岐に渡るご質問で大変恐縮ではありますが,何卒ご指導いただければ幸いです.

みんなの回答

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.6

193は非同期ロードなので、ご希望の動作をさせるには外部回路で工夫しないといけません。結果、あまりすっきりしない回路になると思います。同期ロードのカウンタに今から変更できないのでしょうか? 一番簡単なのは、、 ・4bit+4bitでカスケード接続して(非同期の)ダウンカウンタを作る ・1MHz入力とBorrowのANDをクロックに与える。これで、ダウンカウントして0に達した次点でカウントダウンが止る、という回路になる。 ・「1μ秒幅程度のパルス」をロード端子に加える。 「1μ秒幅程度のパルス」がOFFになってからダウンカウントが始まるので、出力パルス幅は「トリガーパルス幅+ プリセットした数値×1μ秒」になります。 このパルスが、1μ秒より幅が狭いのならあまり問題ありません。大幅に広いのなら、FFで微分というか立ち上がり検知回路を組めばいいでしょう。 幅が一定しないのなら、一番やっかいですね。。。。1MHzのクロックでサンプリングすると取りこぼす可能性が出てきます。。。

  • monova
  • ベストアンサー率68% (68/100)
回答No.5

基本的に、No3様の構成で良いと思います。 少しはっきりしないので確認の意味を込めて伺います。 > FFは,入力パルスとダウンタウンタ後段のBorrowのORを取って,入力しています. FFのどの端子に入力しているのでしょうか? また、FFの初期値は"L"ですか? > 2. FFがLowになると同時に,その入力パルスでダウンカウンタのLoadをLowにして,ダウンカウント開始. FFの出力が"L"のままになっていませんか? 193のLoadは、"L"を入力したままだとカウント行いません。 > 3. 指定した数をカウントして,後段からのBorrow信号をFFに入力してFFがHighになる. 後段BorrowはFFのどの端子に入力していますか? 質問者様が想定している最終出力は JK-FF のQなのでしょうか? 193のborrowはLSIの内部回路の構成上、ひげが出ても不思議ではありません。 borrow信号をそのまま、クロック端子に入力するのは誤動作の原因になります。 DFFなどで、打ち抜いてからクロック端子に入力する方が良いと思います。 (現状で支障がないと判断できているのならば不要ですが…) また、Borrow はQとクロックとのゲート出力になっていますので、 クロックとの関係にも注意が必要です。 ところで、質問者様の希望する動作を行うためには、「任意周波数の入力パルス」 と、呼称している信号のエッジ検出を行ったほうが上手くいきませんか?

回答No.4

No.3の者です。 74193はLOAD端子をLにしたときにプリセットされます。間違えないように規格表を読みましょう。 「OR出力をJK-FFで受ける」とありますが、JK-FFは「K端子」をHにすることによって出力がLになります。よって、BORROW出力と入力が両方ともLの時に、「K端子」がHになるようにする必要があります。OR出力にNOTをつけて「K端子」に入力するのを忘れてはいないでしょうか。 あと、デジタルICの入力は浮かせてはいけません。必ずHかLに接続しましょう。 (入力パルスが正であることを前提に話します。) 入力とBORROW OUTをORにして、「J端子」にOR出力そのままを、「K端子」に反転したものをつなぐことにより、「入力がない」かつ「BORROWが出力されてL(注意!)になっている」状態でCLOCKが一度以上入ったときのみプリセット状態になるということになります。 duty比をプリセット値で決めるのならば、カスケード接続が非同期であることは特に気にしなくてよいでしょう。 下のURLはデータシート(英語)ですので、よくお読みください。

参考URL:
http://www.semiconductors.philips.com/acrobat_download/datasheets/74F193_2.pdf
回答No.3

8bitのダウンカウンタを構成したいと仰っているので、74193を2つカスケード接続したということですよね。「任意周波数のパルスが出る度に一定の時間、Hを出力するようにしたい。」というように、単安定的動作をさせたいようですが、その動作を74193でやろうと考えているのですか?それとも、「『ダウンカウンタ』に一定時間出ているHを入力する」と書いてあるので、74193に単安定的パルスを入力するということですか? また、JK-FFはどの部分に使っているのでしょうか?2段目をパルスと同期させるために2つの74193の間に入れているのですか。 その場合、74193は全ての出力がLとなった時、BORROW OUTはLになりますのでご注意ください。 この辺についてもう一度詳しく教えてください。 1について。 BORROW OUTを直接次の段のCOUNT端子に接続した場合、1段目と2段目が非同期となりますので、特に高周波の場合、後続の回路に影響を及ぼす場合があるかも知れません。カスケード接続ができる同期カウンタとして4510があります。こちらは、BORROW OUTを受けるBORROW INに相当する端子があり、完全に同期に対応しておりますので、後続の回路によってはこちらを使ったほうが安心かもしれません。 2について。 このICは非同期プリセットですので、クロックに関係なく、LOADをL(注意!)にすればすぐプリセットされます。

参考URL:
http://www.semiconductors.philips.com/acrobat_download/datasheets/74F193_2.pdf
zuc
質問者

補足

ご解答ありがとうございます,少し補足させていただきます. そもそもダウンカウンタを用いる理由として,任意の周波数(別途生成済み)のパルス入力で,Low時間を任意に調節したいというのが目的です. したがって,「Lowの時間を任意に調節」する部分をプリセッタブルダウンカウンタによってカウントしたいと考えております. FFは,入力パルスとダウンタウンタ後段のBorrowのORを取って,入力しています. これで, 1. 任意周波数のパルス入力でFFのQがLowになる 2. FFがLowになると同時に,その入力パルスでダウンカウンタのLoadをLowにして,ダウンカウント開始. 3. 指定した数をカウントして,後段からのBorrow信号をFFに入力してFFがHighになる. といったロジックです. 任意周波数の入力パルスのDuty比を変更したい,と言った方が的確かもしれません. 扱っている入力周波数は最大で10kHz,クロックは1MHzを使用しておりますが,この条件で非同期のカスケード接続をするには条件的に厳しいのでしょうか? ご教授お願いします.

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.2

Ano.1で説明されているように、8ビットのプリセット可能カウンタをつくり ます。で、これで所定幅のパルスを作るには、二つ方法が考えられます。例えば5クロック幅を作るとして、カウンタ値がどう変わるかです。 案1:5 5 5 5 5 5 (ここでトリガ) 4 3 2 1 0 5 5 5 5 案2:0 0 0 0 0 0 (ここでトリガ) 5 4 3 2 1 0 0 0 0 案1だと、R-S FFのQをロード端子に接続しておいて、トリガ信号でFFをリセット、TCd信号でFFをセットすればいいですね。 FFのQ~ が出力信号となります。 リセット信号は現在のところ不使用とのことですが、電源投入時に、パルスが出てしまう可能性がある以外は害はないと思います。

zuc
質問者

補足

ご解答ありがとうございます. ご説明いただいたロジックは,単発で所定幅のパルスを生成するものでしょうか? 私が実現したいものを簡単に表現しますと,任意周波数の入力パルスのDuty比を変更して出力したい,というのが的確かもしれません. そのため,パルスのLow時間をダウンカウントし,FFを制御すればよいのではないかと考えました. したがって,最後にありますように,電源投入時にパルスが出てしまうということは問題なく,むしろ常に(連続的に)出力したいのです.

回答No.1

一定のパルス幅を出したいのですか? ロジックとしてはいいのではないでしょうか。 ただ、F/Fの出力を使って、クロックを デゼーブルする必要があるのでは ないでしょうか? 1.クリアはパラレル。Borrowは上位桁のCountDownへ。 2.LoadがLのとき非同期にプリセットされます。 3.クリアでクロックをデゼーブルしたらどうでしょうか?

関連するQ&A