CPLDで遊ぼう!(9)
更新日:2004年5月2日

「時」「分」を設定出来るようにしてみよう
前回はなんとか24時間の表示が出来るところまで行きましたので、今回は「時」と「分」を個別に設定が出来るように考えてみましょう。これで実用的な時計として使えるベースが出来たでしょうか。
今回の製作の仕様概要を記します。
1)「時」「分」「設定」用のキースイッチを付ける。
2)「時」、「分」を個別に初期設定出来るようにする。
3)設定時は高速カウントアップ表示とする。

3)今回は個別設定の確認が目的なのでカウントアップ間隔は無視する。
ということで、CPLD側の回路図を眺めて下さい。
今回はスイッチ部の追加分のみしか記しません。全体の回路については前回のページを参照下さい。
(設定用スイッチの追加)
(設定用スイッチはコネクタで接続します)
将来の拡張に備えてCPLD基板からはコネクタで接続しましょう。
コネクタの先では使う分のみスイッチなどを取り付けます。
(スイッチの下にLEDが付いていますが、今回は使用しません。)
「時」「分」をどうやって設定するのか
さて実際問題としてどうやって「時」「分」を設定したらいいのでしょうか。
まずは全体の内部回路図を見て下さい。
(CPLD内部回路)
まず設定時の高速カウントアップ用にクロックをふたつに分割します。
(クロック分割部分)
LPM_COUNTERをふたつ用いて通常用(といってもテスト用なので速い)と高速用のクロックを作ります。最初のカウンタを19bit分周、後のカウンタを3bit分周することでふたつのクロックとします。
それらふたつのクロックを切り換えるためにMULTIPLEXERを使用します。
「SETTEI」端子にて「H」の時は「A」の入力が、「L」の時は「B」の入力がそれぞれ出力されるように制御します。従って「SETTEI」端子が「H」の時は通常時計表示、「L」の時は設定中となります。MULTIPLEXERは標準モジュールとして装備されていますが、一応内部回路を示しておきます。
(MULTIPLEXERの内部回路)
従って通常表示時には22bit分周のクロックが、設定時には19分周のクロックが回路に供給されることになります。
次にそれぞれの「時」「分」の設定について考えます。
まず設定中はそれぞれの自動のカウントアップを停止する必要があります。
先ほどの「SETTEI」端子を用いて設定中は自動のカウントアップをしないようにします。
同時に個別の設定スイッチが押されたときのみ高速のクロックを用いてカウントアップをするように構成します。
(時分設定部分)
「SETTEI」端子が「L」の時は、「FUN_UP」の端子を「L」にしている期間だけピンク色のMULTIPLEXERよりカウントアップ有効の信号がカウンタの一桁目に入力されます。このときすでにクロック端子には高速クロックが供給されているので「分」表示は高速にカウントアップします。
そのとき黄緑色のMULTIPLEXERは「SETTEI」端子により「B」入力が選択されているため「59」から「00」表示になったとしても繰り上がりは出来ないようにしています。
同様に「JIKAN_UP」端子が「L」の時は黄緑色のMULTIPLEXERよりカウントアップ有効の信号がカウンタの3桁目に入力されます。同様に「時」表示が高速にカウントアップします。
なんとかこれで「時」「分」が個別設定出来るようになりました。
(今回は超簡単な方法で実現しようとしています。これ以外の方法もありますので、皆さんで考えてみて下さい。)
7セグメント表示IC回路を最適化しよう
最初の内部回路図でお気づきの方もおられるかもしれませんが、7セグメントの表示回路周りがすっきりしています。表示部分の接続部分にトランジスタアレイを用いたため標準の7セグメント表示IC「7447」の出力に反転ゲートを置いていました。今回は「7447」を改造して内部に納めることにしました。
合わせて未使用端子関連の内部ゲートを最適化しました。
非常に簡単に出来ますので皆さんもチャレンジしてみて下さい。
(最適化前の回路)
(最適化後の回路)
ネーミングは「7447_NEW」としました。とりあえずあまり意味はありません。
一度作ってしまうと後の設計に重宝すると思います。
内部回路がどれだけ違うかも載せておきます。勉強してみて下さい。
(7447の内部回路)
ちょうど赤で表示した部分に関連するゲートが不要になります。
あれこれ考えながら最適化しました。
(7447_NEWの内部回路)
未使用端子の最適化と合わせて出力ゲートも反転するようにしておきます。
かなりすっきりしたでしょう。
これでCPLD全体としての内部ゲートの使用数が減ることになります。

最適化後はモジュールとしての登録が必要になります。
この説明は別途にします。
(このページが長くなったので次のページで。決して難しいことではありません。)
「時」「分」を設定出来るようにしてみよう大完成
ここまででなんとか時計の形になったのではないでしょうか。
では全体を組んだもので大完成した姿を眺めて下さい。
(うまく動くと感動ものです)
(ふむふむ、「時」の設定も「分」の設定もちゃんと動くぞ)
まずは実用的な時計を目指した第一歩はなんとかクリアしたと考えます。
CPLD内部回路をいじっていると興味は尽きませんので今回はここまでとしましょう。
「CPLDで遊ぼう!」はこれからどんどん楽しくなります。これからもよろしくお願いします。

「CPLDで遊ぼう!」表紙へ戻る