• ベストアンサー

分周回路について

25MHzを分周して、8個のLEDを点滅させようとしています。 8個それぞれ違う速さで点滅させたいのですが、 とりあえず、1個は1秒間に1回点滅させたいと思っています。 何bitあれば実現できるのでしょうか。 一応ネットで「分周回路」で検索し調べてはいるのですが、どなたか教えていただけませんでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

「何bit」?要するにカウンタの事ですかね? 論理回路あるいは、HDL系の質問と受け取って良いですか? カウンタは1個で1/2に分周出来ます。で2進法では25Mhzは割り切れないので、まず25Mhzを素因数分解してみましょう。 25Mhz=25x10の6乗=5の8乗x2の6乗です。 って事で1/5に分周する回路が8個と1/2に分周する回路が6個必要だとわかります。 1/5に分周する回路はカウンタが3個、1/2に分周する回路はカウンタが1個が必要です。 で、3x8+6=30個のカウンタが必要と思われます。

wave96
質問者

お礼

回答ありがとうございます。 zwiさんの考え方で行きますと、verilogで記述するときには、 どうなるんでしょうか? 勉強不足ですいません。

その他の回答 (2)

  • JYUZA
  • ベストアンサー率29% (54/184)
回答No.3

25ビットカウンタがあればいいのでは?計算ミスしててはまずいので、25000000を2進に返還した際のビット数のカウンタです。25000000-1になったら0に戻るカウンタを作ればいいです。1秒で1回点滅って意味が0.5秒ついて0.5秒消えるなら(25000000/2)のカウンタを作ってその上にさらに1ビット作れば簡単ですよ。

wave96
質問者

補足

回答ありがとうございます。 現在、25bitカウンタを使って所望の周波数を得ています。 もう少し、勉強し色々試したいと思います。 ありがとうございました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

verilogHDLですか。VHDL派の人なので申し訳ないけど書けないです。 HDLで書く場合は、ただ1秒が欲しいだけなら25ビットのカウンタを作って25000000と一致したらリセットする回路にしたほうがシンプルですね。途中の段から信号を取り出したいなら多段5進カウンタの方が良いですけど。 とりあえず、ちゃんとしたverilogHDLの書籍を買われた方が良いですよ。N進カウンタって基本中の基本ですから例が普通に載ってます。 とりあえずサイトを紹介しておきます。 http://monoist.atmarkit.co.jp/fembedded/index/eledrill3.html

wave96
質問者

お礼

お礼が遅くなりすみません。 とりあえず、今は25bitカウンタを使って所望の周波数を作ることにしました。 また、勉強しながら色々試したいと思います。 ありがとうございました。

関連するQ&A