78F9222のコーナー(8)

更新日:2006年8月21日


クロックジェネレータ周波数設定装置を作ろう

今回は「CPLDで遊ぼう」で製作したクロックジェネレータ用の周波数設定装置を作ります。設定したい周波数のデータをCPLD側で使う値に変換してしてシリアルで転送する装置になります。コラボ企画なのでこの装置だけでは役に立ちませんので、皆さんは合わせて製作されると良いでしょう。ではスタートしましょう。
クロックジェネレータ周波数設定装置を作ろうの回路図
いきなりですが全体の回路図を示します。
(周波数設定装置を作ろうの回路図)
周波数を設定するための入力には以前の掛け算九九マシーンで使ったテンキーユニットを使います。A/Dコンバータで効率良くキーを読み取ります。入力方法については掛け算九九マシーンの製作を参照下さい。
(テンキー入力回路)
(テンキー入力ユニットです)
NECマイコン側の回路電源はDC5VですのでCPLD側回路(DC3.3V)とは電圧が異なります。従ってその接続部にはレベル変換の必要があります。いつものようにVHCシリーズのICを使って変換を行いました。それぞれの出力をCPLD側につないで下さい。
(レベル変換回路)
クロックジェネレータ周波数設定装置を作ろうの基本仕様
1)テンキーにて入力した数字を順次左シフトして表示する。
2)「C」ボタンで入力表示クリア。CPLD側にもクリア信号を送る。
3)「R」ボタンで入力した数字をCPLD側で使用するデータに変換してシリアル出力する。
4)「R」ボタン後の数字の入力は最小桁からとする。
5)5MHz以上の数値の入力は5MHzとする。
6)1MHz以上の設定の場合はCPLD側に表示桁切換えの信号レベルを出力する。
クロックジェネレータ周波数設定装置を作ろうのポート割付と設定
(ポートの割付と設定)
タイマーなどを利用していませんので「main.c」だけのソフトをいじります。
クロックジェネレータ周波数設定装置を作ろうの設定数値データ変換
最大7桁で入力される周波数設定数値はデータ変換してCPLD側に出力します。
クロックジェネレータより出力される周波数の関係式は次の通りです。
fout=(fx/2^24)*n
fx=10MHzとすると次のように変形出来ます。
n=fout*(10000000/2^24)
n=fout*2^17/78125
n=fout*131072/78125
入力される数値をfoutとすると上の式を計算してCPLD側に出力すれば良いことになります。今回プログラムでは記式をそのまま計算するとレジスタの値がオーバーフローして正しい値が導けないので、計算の仕方を工夫して正しい答えが出るようにしています。詳細はソースリストにてご確認下さい。今回のソフト開発で最も苦労した部分です。(もっと簡単な方法があるかもしれませんが・・・)
一応区切りの良い周波数での対応表を付けておきます。
(周波数とセットデータ対応表)
クロックジェネレータ周波数設定装置を作ろうの製作過程と大完成
(ケース加工中です)
(中身自体はシンプルです)
(右側がテンキー入力のジャックです)
(CPLDと接続するためにレベル変換しています)
(周波数を設定して確認中です)
クロックジェネレータ周波数設定装置を作ろうの周波数確認中
(面白いように周波数が設定出来ます)
1MHz以上の場合はCPLD側は10Hz表示となっています。周波数によっては1Hz程度ずれる場合があります。しかしながら大変良く出来ました。
クロックジェネレータ周波数設定装置を作ろうのソースファイル
ソースファイル一式はこちらからダウンロードして下さい。フォルダごと圧縮しています。全てのファイルが入っています。ライタで書き込みする実行ファイルも含まれています。
iさあいかがでしたでしょうか、今回のコラボ企画は。CPLDの得意分野、マイコンの得意分野をそれぞれ充分に生かした製作でしたでしょう。今後もこのようなコラボ企画をどんどんやって行きたいと考えております。さあ次はどんな製作をしようかな。
これからも「NEC78K0/K0Sマイコン開発室」はどんどん楽しくなります。

NEC78K0/K0Sマイコン開発室へ戻る