![]() ![]() |
更新日:2007年1月15日 |
![]() |
久しぶりのCPLD単独での登場です。07年もまだまだCPLDの製作は続きますよ。 さて今回は比較的簡単な製作です。随分前に買っていた、かなりデカイ7セグメント表示装置を使ってデジタルクロックを作ります。今までの製作の経験からクロックの部分は簡単に出来るのですが今回苦労した部分は時計合わせの部分です。時計合わせのやり方は皆さんで好みもあるでしょうがなんとか出来ましたので公開いたします。ではスタートしましょう。 |
![]() |
1)時:分を4桁で表示します。もちろん7セグメント表示はデカイです。 2)表示方式は24時間のみです。 3)時刻合わせは高速早送り、低速早送りの2通りで設定します。 4)秒リセットが付いていますので、時刻あわせ後は0秒スタート出来ます。 |
![]() |
まずは全体の構成を示します。 |
![]() |
(デカデジクロックの構成図) |
今回はCPLDと外部周辺回路のみでの製作です。デカイ7セグメント表示は5Vでは点灯出来ないので12Vの電源とします。CPLDには5Vを印加して基板内部で3.3Vにしているので周辺回路には12Vを5Vに変換する電源回路が必要です。 |
![]() |
かなりデカイ7セグメント表示です。かなり前にどこかのジャンク品で買ったものです。 |
![]() ![]() |
(7セグメント表示装置) |
1円玉と比較してその大きさを実感して下さい。点灯状態を確認するとどうやら4個のLEDが直列になってひとつのセグメントを表示しているみたいですので、12Vの点灯がベストと思います。内部接続はアノードコモンでした。 |
![]() |
今回の7セグメント表示はデカイので12Vで駆動必要です。従ってCPLDからは直接駆動出来ません。トランジスタを使用しますが手持ちのトランジスタアレイを使用して回路を出来るだけ簡潔化しました。 |
![]() |
(7セグメント表示回路) |
![]() |
時刻設定は簡略化しています。供給するクロックを早めて早送りする方法で時刻を設定します。 |
![]() |
(クロックの分周部分) |
通常は1秒ごとにクロックを供給していますが、早送りの方法を2通り持っています。高速早送りは5kHzのクロックを、低速早送りは250Hzのクロックを供給します。高速早送りで時の部分の近くまでもっていき、低速早送りで分まで合わせるという具合です。秒の部分のみリセット出来るようにしていますので0秒スタートが可能です。 これらを3つのボタンで操作するようにしています。 |
![]() |
ここからはCPLDについて説明します。まずは内部回路を見て下さい。 |
![]() |
(CPLD内部構成図) |
難しい部分は無いと思います。時計用として6進のカウンタと24進のカウンタが目新しいところです。他の部分は今までのものの改造ですので理解出来やすいと思います。 |
![]() |
今回も新しいモジュールのみ記します。新しくても内容が良く似たモジュールは省きました省きました。ソースを公開しますのであとでじっくり眺めて下さい。 |
![]() ![]() ![]() ![]() ![]() |
(分周モジュールの入出力) |
2分の1、5分の1、20分の1、250分の1、1000分の1のモジュールを作りました。 250分の1のみのVHDLソースを記します。 |
![]() |
(250分の1の分周モジュールのVHDLソース) |
![]() |
![]() |
(6進カウンタモジュールの入出力) |
![]() |
(6進カウンタモジュールのVHDLソース) |
![]() |
![]() |
(24進カウンタモジュールの入出力) |
24進のカウンタモジュールですが、出力がバイナリにしています。2桁表示するためには後での変換が必要になります。 |
![]() |
(24進カウンタモジュールのVHDLソース) |
![]() |
![]() |
(24進変換モジュールの入出力) |
5bitのバイナリデータを2桁のBCDコードに変換するモジュールです。0から23に限定していますので時計回路にしか使えないです。 |
![]() |
(24進変換モジュールのVHDLソース) |
![]() |
![]() ![]() ![]() |
(他の新しいモジュールの入出力) |
キー入力のチャタリング除去モジュールは前回のモジュールに対して出力を反転しないものを作りました。4bitのラッチについてはビットが全て「0」の時のみ出力を全て「1」にする部分を追加しました。10時部分が「0」の時には表示しないようにしています。供給するクロックを2つの入力に応じて切り換えるモジュールも新設しました。詳細はソースを見て下さい。 |
![]() |
ピン接続についてまとめます。 |
![]() |
(デカデジタルクロックを作ろうのピン接続) |
![]() |
大完成までの姿を見て下さい。 |
![]() ![]() |
(デカデジタル表示が4桁入るケースを購入してくりぬきます) |
![]() ![]() |
(スモークの塩ビ板を貼り付けて、7セグメントを配線します) |
![]() |
(内部の全体構造です、デカイのでシンプルですね) |
![]() ![]() |
(CPLDと周辺回路部分です) |
![]() |
(左より高速早送り、低速早送り、秒リセットボタンです) |
![]() |
(こんな感じで仕上がりました) |
![]() ![]() |
(DC12Vの電源ジャックとCPLD書き込みコネクタです) |
![]() |
![]() ![]() |
(暗闇でもばっちり表示しています) |
時と分の間には付け足しでLED表示をつけました。CPLDのOUT_SECからNPNトランジスタを介して接続します。ずっと点灯しているように見えますが本当は1秒ごとに一瞬消えている時間もあります。このあたりは皆さんで改良してみて下さい。 ちなみに私の場合ベットルームに設置して夜中でも時間が判るようにしています。 |
![]() |
私と同じ製作をされる方、または勉強される方のために全ソースコードなどプログラム一式を公開いたします。フォルダごと圧縮しましたのでそのままもってって下さい。 |
全ソースコードはこちらです。 |
さて皆さんいかがでしたでしょうか。良く考えてみるとかなり久しぶりのCPLD単独製作でした。最近いろんはマイコン基板が雑誌の付録に添付されますがCPLD基板もまだまだ使い道はあります。今後も色んなアプリケーションを考えて公開していきたいと思います。07年もよろしくお願いいたします。 |
これからもますます楽しくなる「CPLDで遊ぼう!」をよろしくお願いいたします。 |
![]() |