FPGA設計練習~独学でLED表示のデジタル時計を作ってみる①~

論理回路

 テレワークでずっと家にいて暇なのでLEDデジタル時計をFPGA設計から作成してみることにした。FPGAはザイリンクスのKINTEX7を使用したいと思う。実機検証用のボードは追々考えることにしよう。

作りながらまとめていこうと思うので、随時更新していく予定。

まず、LEDデジタル時計を作成する際に、必要な機能を書き出すと大きく分けて下記の四つになるかな?

Switchコントローラ
・時計の時刻設定を行う際に、外部から入力される信号を制御する(ボードのどこのボタンを押したら、どんな動作をさせるか決める箇所)
・外部入力信号を使用するのでチャタリング対策も必要

カウンタ
 ・時計のコア
 ・1秒、1分、1時間を計算する
 ・使用するボードの原振により、ここの設計は異なる

デコーダ
・カウンタで計算した結果(2進数)を、7セグに表示させるために10進数へ変換する

7セグ表示回路
 ・7セグを制御する

ブロックで表すとこんな感じ

大雑把にブロックが決まったところで、それぞれの詳細について考えていこうと思う。

Switchコントローラ
 Switchコントローラには、ステートマシンが必要。
 ステートマシンとは何かということは後述するとして、
 とりあえずステートマシンがとりうる状態は下記の三つにする。
 ① ノーマルモード
 ② 分合わせモード
 ③ 時合わせモード

上記のステートマシンの説明を簡単に記載する
sw1 : sw1信号が入力されるたびにノーマル→分合わせ→時合わせ→ノーマル→…と、回路のモードが変化する。
sw2 : sw2信号が入力されるたびに、そのモードによるカウンタがインクリメントされる。(分合わせモードなら、時計の分がインクリメントされる)

これでSWコントローラの大まかな仕様は決まった。
次回は上記の仕様をもとに、実際にRTLを記載していきたいと思う。

コメント

タイトルとURLをコピーしました