• ベストアンサー

非同期型2のn乗カウンタ回路

観覧ありがとうございます。 質問は、 非同期型の2のn乗加カウンタにおいて、FFのクロック入力から出力が変化するまでの時間をtFとすると、正しい出力がまったく得られなくなる周波数はどのように表わされるか。 自分で調べてみましたが、わかりませんでした。 回答お願いします。

noname#129931
noname#129931

質問者が選んだベストアンサー

  • ベストアンサー
  • inara1
  • ベストアンサー率78% (652/834)
回答No.1

FFの伝播遅延によって誤動作するのが原因であれば、最大周波数は    fmax = 1/{ ( n - 1 )*tF } になります。n は FF の段数です。 正しい出力が得られなくなるというのは2通りあります。  (1) FF自身が誤動作して出力がおかしくなる  (2) n ビットの出力がすべて確定する前に次のカウント動作が起こる (1)はカウンタICのデータシートに出ている「最大クロック周波数」になります。例えば、4bitの非同期バイナリカウンタ(74HC393)の場合、データシート [1] 5ページ目のAC特性に出ているように、負荷容量 CL = 15 pF、電源電圧 VCC = 5 V の条件では、最低値が 35MHz、典型値が 72MHz になります。 非同期カウンタで(2)のようなことが起こるのは、最悪の場合(もっとも低いクロック周波数で誤動作が起こる)は、最後のFFが変化するときです(4bitなら0111→1000に変化するときと1111→0000に変化するとき)。クロック周波数が速くなると、最後のFF出力が確定しないうちに、次のクロックによって最初のFFの出力が変化してしまうため、クロックを止めてパルス数だけ数える場合を除いて、出力がいつまでたっても確定しません(値がおかしくなる)。          A     B  クロック  ̄ ̄__ ̄ ̄__          |←  →|             1/f  Q1    ___ ̄ ̄ ̄ ̄__          ||   ||           tF     tF  Qn    ________ ̄ ̄          |← n*tF -→| nビットのカウンタ(FFがn段構成)で、1個のFFについてのクロック入力から出力が変化するまでの時間を tF [s] とした場合、上図のように、最初のFFの出力Q1の遅延時間は tF 、最後のFFの出力Qnの遅延時間は n*tF となります。クロックの最初の変化点AからQnが変化するまでの間(この時間は n*tF )に、次のクロックの変化BによるQ1の変化が起こると誤動作になるります(図ではそうなるように描いています)。クロックの最初の変化点Aから、2番目のクロック(B)によるQ1の変化までの時間は、クロックの周期(1/f)にQ1の遅延時間 tF を加えたもの 1/f + tF になります。これが n*tF より大きければ(遅ければ)正常動作するので    1/f + tF > n*tF つまり    f < 1/{ ( n - 1 )*tF } が正常動作する条件です。したがって最大クロック周波数は    fmax = 1/{ ( n - 1 )*tF } になります。 n*tF でなく ( n - 1 )*tF となっているので、n = 1(FFが1段だけ)のときは(2)が原因で動作がおかしくなることはありません。 データシートには1個のFFの tF は出ていませんが、各出力端子(QA~QD)の伝播遅延時間が出ていますので、その値から tF を推測できます。データシート5ページのAC特性を見ると、QAが最大 20ns、QBが31ns、QCが38ns、QDが46nsとなっているので、FF1段の伝播遅延時間 tF の最大値は 9ns、バッファの伝播遅延時間 tb の最大値は 11ns と推測されます(QA~QDの伝播遅延時間は、tf*n + tb のnを1~4とした値)。データシート2ページ目のシステム図からわかるように、FFの出力 Q_ は次段のクロック CK に接続されていますが、Q_ はバッファを通ってIC外部の出力になっているため、IC外部の出力(QA~QD)の伝播遅延時間は FFの遅延時間+バッファの遅延時間になります。しかしバッファの伝播遅延時間は fmax とは無関係です(QAの変化もQDの変化も同じだけ遅れるので)。したがってこの場合の fmax は    fmax = 1/( 3*9ns ) = 37.04MHz となります。これは tF の最悪値を使った結果ですが、典型値を使えば、tF = 4ns なので fmax は 83.3MHz になります。(1)の最大カウント周波数と(2)の fmax を比較すると、(1)のほうが低い周波数になっています。つまり、74HC393の1ブロック分(4bitカウンタ)だけ使った場合(n = 4 の場合)、(2)が原因で動作がおかしくなる前にFF自身が誤動作すると思われます。74HC393を多段接続した場合は n > 4 なので、(2)の fmax のほうが(1)の最大カウント周波数よりも小さくなって、(2)が原因で誤動作することになります。 [1] TC74HC393APデータシート http://www.semicon.toshiba.co.jp/docs/datasheet/ja/LogicIC/TC74HC393AF_TC74HC393AP_ja_datasheet_071001.pdf

noname#129931
質問者

お礼

解答ありがとうございますっ! 図まで付けていただいて とっても分かりやすかったです。 本当に感謝です。 ありがとうございました。

関連するQ&A

  • 3bitのカウンタ回路

    いつもお世話になっています。 今回問題でD-FFを使って同期クリア入力のある3bitカウンタを設計せよと 書いてあったのですがその遷移表がうまくかけません;; クリアが1のときにクロックの立ち上がりでカウンタ出力が0になると 書いていました。 この場合、同期式カウンタでつくればいいのでしょうか? 詳しくは書かれてなかったのですがアップダウンカウンタを想定していいのでしょうか? よろしくお願いします<(_ _)>

  • 同期カウンタについて

    クロック周波数を高くしたときの問題点と、 FFの段数を多くしたときの問題点について教えてください。お願いします。

  • フリップフロップのカウンタについて

    JKフリップフロップを用いると2進カウンタなどができますよね、 そのなか(非同期式カウンタ)で前段のFF(フリップフロップ)の出力から次のFFのCK(クロック)等の入力として用いられているのがありますが、それはどんな理由でそうしているのでしょうか? おねがいします。 質問がわかり難い場合は補足つけます。

  • 同期回路と非同期回路の境界線は?

    同期回路と非同期回路の境界はどこまででしょうか? 前段のフリップフロップの出力を後段のフリップフロップのクロックに使ったり、 途中で論理ゲートを使った場合などは、回路自体の遅延がありますよね? カウンタ回路などの場合、段数が多くなると遅延が累積して、非同期カウンタと変わらなくなってしまうように思えるんですが? また、そのような場合、最初のクロックのタイミングではカウンタの値を読み出せないと思いますが、、、、。基本のクロックを遅らせて使っては同期とは言えない気もします。 回路自体はシミュレーションで動けばOKなのですが、同期と非同期の境目が気になったものですから、、。もしかしたら何か大きな勘違いをしているかもしれないので、ご指摘をお願い致します。

  • 同期カウンタの使い方

    同期カウンタ(CMOS 40102B)を使ってプリセッタブルの分周器を作ろうと しているのですが、全くカウントせず、うまく行きません。どうも、 同期カウンタの使い方を間違っているようです。 プリセッタブルにするために、キャリヤ出力(CO)を、プリセット入力 (Load)に繋ぐだけでは、ダメなのでしょうか? そもそも同期カウンタIC一つで、最低限の分周器が出来ますか?それとも、 なにがしかの付随ICが必ず、必要なのでしょうか。 なお、正論理・負論理の確認や、clear入力等の設定などは行ってい るつもりです。また、データ入力端子も適当な数が入るようにして おり、ゼロで放置とかにはなっていません。 すみませんが、よろしくお願いいたします。

  • 2のn乗+1

    nビットのハッシュ関数の出力は0から2のn乗の、合計すると2のn乗+1のパターンがあるってことで合ってますか? それとも0から2のn乗-1で、合計2のn乗パターンですか? もしくは0はなくて1から2のn乗までですか? 実際の出力をみると0000……FA16みたいなケースもあるので、そうすると全部0という出力も有り得るのですか? また最大値はn+1ビットも有り得るのですか?最大桁が1で残りが全て0とすると、2のn乗は2進数だと最大桁に1が来て、残りが全部0ですがその0の数は、n個になると思いますが、そうすると何々ビットのハッシュ関数といいつつ、最大値でみるとビット数は2のn乗+1となりますが、認識正しいでしょうか?

  • 論理回路 カウンタで一個飛ばしたい

    論理回路を勉強中です。 JK-FFを使って非同期の2桁カウンタを作りました。入力は押しボタンで、ボタンを一回押して離すたびに1カウントします。 このとき、00→01→10→11→00・・・とカウントしますが、場合によっては00→10とか、01→00といったように、間の数を飛ばしたいのです。 例えば、別の場所からの入力Bがあり、B=1のときは2加算する、といったことをしたいのですが、どうしたらいいのでしょうか? 最終的なカウンタの出力は、ユーザーの任意のタイミングでできるようにするので、ボタンを押した後B=1を検知したときは、さらにカウンタにパルスを自動に1個与えればいいんじゃないかなと思っているのですが、1個だけのパルスの生成方法が分かりません(ボタン入力などの手動ではなく)。 また、せっかくJK-FFを使っているのだから、上記のカウンタはK=J=1で固定していますが、セット・リセットをうまく使って出来る方法があれば、ご教授いただければ幸いです。

  • カウンタ回路

    JK-FFを用いてカウンタの実験を行なったのですが、いくつか質問があります。自分なりに思うことも書いてみます。分かる方アドバイスよろしくお願いします。 (1)非同期式N進カウンタでハザードの発生理由と対策  非同期式カウンタではCKを統一していないためハザードが出来るんですか?ハザードをなくすためにはCKを共通にして同期式にすればいいんでしょうか・・・? (2)同期式16進カウンタをBCDカウンタとして使うには回路をどう変更したらよいか?  実験で使った回路はJK-FFを4段にしたものです・・・。 (3)4ビットシフトレジスタの動作原理とLSIの中に使われている例をあげよ 参考URLなどいいのでよろしくお願いします!!

  • 同期式3進カウンタについて

    同期式3進カウンタについて JK-FFを2つ使用して同期式3進カウンタを作りました。 この回路に3クロック分カウントしたらカウント動作が停止(000)となる回路を作りたいのですが、どのような回路を追加すればよいのでしょうか。(リセットすることにより再カウント開始する回路) よろしくお願いいたします。

  • 同期カウンタの論理回路について

    D-FFを用いた同期カウンタの論理回路の設計についてなのですが http://laputa.cs.shinshu-u.ac.jp/~yizawa/logic2/chap5/index.htmlの3.1のような問題を解いています。 そしてここに書かれているのと同じようにD0,D1,D2,D4までは求められたのですが、回路図を描く時にこのホームページの回路図ではDFF0では 入力のDに出力からとったQをnotゲートでわざわざノットQにしていますが、DFF0の回路自体にQの下にノットQを書いておき、そこから直接Dに入れるというのではだめなのでしょうか? 他の順序回路ではノットQを普通に書いていたはずなのですが、同期カウンタではノットQを出力として使っているものがなかったので疑問になりました。 宜しくお願いいたします。