« 昨日見たモバイラ | Main | キッチンでモバイル »

2004.02.25

クロックの倍率

仕事で74.25MHzの周波数を使うことになった。
これにあうOSCを探さないといけないのだが、PLLで最終的に74.25MHzを作る必要がある。PLLは、整数/整数でクロックが作成できる。で、もとのクロックを何にして良いのか一瞬悩む。一瞬悩んで、Excel起動。とりあえず、整数分の1と整数倍を出してみる。

img/clkexxel
Excelを眺めながら、74.25MHzを4倍したら297MHzになることを発見。そして、再びExcelで297を順番に割っていく。
結果:74.25 = 27 * 11 / 4、もしくは 74.25 = 33 * 9 / 4 でOK。

これをプログラムで計算させるためにはどうしたらよいかを考える。
問題は、「B,C,Dが整数の時、あるAに対してA = B * C / Dとなる組を求めなさい」かな。あとはPLLの性能によって、B,C,Dの範囲が決まる。(FPGAだと、C,Dは1~255とか)

アルゴリズムが思い浮かばないときは、「人間のやったほうほうをそのまままねてみる」が基本だ。ざっと考えて、
A = B * C / Dの両辺にDをかけると、 D * A = B * C。B * Cが整数なので、D * Aも整数でないといけない。
それで、Aの小数部分を抜き出して(上の例だと0.25)、何倍したら整数になるかを求める。Dの範囲は決まっているから、範囲内の数をかけて整数にならないと解無し。
うまく整数になるDの値が見つかられば、D*Aを因数分解して、条件に入るBとCを順に数えればよい。

(゚∀゚)ソレダ!

TI電卓とかでプログラム組みたくなってきた。C言語だと、整数かどうかの判断が難しそう。
実際には中途半端な周波数のOSCもあるだろうし、微妙なクロック作るのも年に数回だし、頭の体操ということで。

|

« 昨日見たモバイラ | Main | キッチンでモバイル »

Comments

たぶん線形計画とか整数計画法とかと近い問題だと思う
詳しく知らないけど・・・(汗

Posted by: あん | 2004.02.26 11:09 AM

TI電卓ですけど、7425/100と入れれば
297/4とでますよ。
分数がちゃんと使えるのでそれで用は足りるかと。
数値計算脳に毒されすぎですw

Posted by: 名無しさん | 2004.08.10 11:14 AM

TI電卓で今見つけたんですが、
exact(74.25)で297/4とでました。
/100も考えなくて良いのでこれで完璧ですね。

Posted by: 名無しさん | 2004.08.10 12:33 PM

factor(exact(74.25))だともっと良い感じです。
3^3*44/2^2
となるのでここに書いてある問題は一発です。

Posted by: 名無しさん | 2004.08.10 01:42 PM

3^3*11/2^2
でした。

Posted by: 名無しさん | 2004.08.10 01:44 PM

情報ありがとうございます。
ここから、源振のOSCまで、リストを作ってくれるとうれしいですね。

Posted by: なつたん | 2004.08.11 06:20 PM

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference クロックの倍率:

« 昨日見たモバイラ | Main | キッチンでモバイル »