CS実験第

1
CS実験第⼆
FPGAボードを⽤いた組込み回路の実装
- もう少し進んだ回路 -
佐藤証 ⻄9-613
[email protected]
ダイナミック点灯
 4つの7セグLED
の⼊⼒信号は共
通なので同じ表
⽰しかできない
 4つのLEDへの
3.3V電源の供給
を時間差で切り
替えることで異
なる数字を表⽰
2
切り替えのタイムチャート
 切り替えが早いと消えているは
ずのセグメントが光って⾒える
 遅いとちらついて⾒える
 500Hz(2ms)で切り替える
3
プッシュスイッチ
 教科書はNexys2のスイッチ設定
4
60分計のブロック図
5
60進カウンタ
6
チャタリング除去回路
 スイッチを切り替えたときに接点の状態によってON/OFFの
繰り返し数ms続き,回路に誤動作を起こす危険性がある
 スイッチをONしたときに⼀度だけパルスを⽣成する回路
 分周回路は50MHZを1,250,000分周して40Hz(25ms)を作る
btn_in.v ボタンが3つなので3ビット
wire [2:0] temp= ff1 & ~ff2 & {3{en40hz}}
1
1
0
1
1
1
0
1
7
状態遷移を回路で実現
 表⽰桁を増やして年/⽉/⽇/時/
分/秒を合わせようとするとス
イッチの数が増⼤
 セレクト&セット⽅式を実現
- 7セグメントLED4桁
時分表⽰
- 単体LED7個
10秒桁, 1秒桁を2進数表⽰
- プッシュスイッチ3個
状態切り替え, 修正桁選択, 選択
- 修正桁の明⽰
2MHz点滅
8
状態遷移を回路で実現
 ボードのリセットで“NORM“状態に
 “NORM”状態でMODEボタンが押されると“SEC”状態(秒設定)に
 SELECTボタンを押す度に状態が次のように遷る
SEC(秒)→HOUR(時)→MIN(分)→SEC(秒)
 SEC, HOUR, MIN状態でMODEボタンを押すとNORM状態に
状態遷移図
状態遷移表
9
ステートマシーンの回路構成
 状態遷移図を具体化したものを有限状態機械(FSM:
Finite State Machine)と呼ぶ
 論理回路だけでなくプログラムでも実現可能
 状態を保持するレジスタをステートレジスタと呼ぶ
 ステート⽣成回路は現在の様態と遷移条件信号から次の
状態を⽣成
 デコーダは現在の状態から制御信号を⽣成
4状態なので
2ビット
10
時刻合わせ機能付き時計
0-9
0-5
リセット
0-9
0-5
+1
0-9
0-2
+1
11
時カウンタ
 分カウンタは6進カウンタ×10進カウンタで構成し,各
カウンタ出⼒を直接LED制御信号QHとQLとした
 時カウンタは24進カウンタの5ビット出⼒からQHとQL
をデコードして⽣成
コード変換回路の真理値表
12
修正桁点滅の実現
 修正しようとしている桁を
明⽰するため,2Hz (1/2
秒周期)で点滅を繰り返す
reg [25:0] cnt で0-49,999,999数えると1秒
¼秒ごとに反転
13
制御部のステートマシン
 ステート⽣成回路はステートレジスタの現在の状態cur[1:0]と
MODEとSELECTボタンの状態で次の状態nxt[1:0]を⽣成
 現在の状態curによって時刻修正信号と修正桁点滅信号を⽣成
- SECCLR(秒クリア), MININC(分+), HOURINC(分+)
- SECON(秒点滅), MINON(分点滅), HOURON(時点滅)
¼秒ごとに反転
14
制御信号
 state.vでは各ステー
トを次のように割り
当てている
-
NORM: 00
SEC:01
MIN:10
HOUR:11
時刻修正信号
修正点滅信号
15
実験2
 1時間計をボード上で動作させる
- Digilent AdeptでFPGA(内のSRAM)に書き込む
- SPI ROMに書き込む
- BPI ROMに書き込む
 時刻合わせ機能付き時計をボード上で同様で動作させる
 P.125-127の次の拡張を⾏う
- ゼロ差プレス機能
- 12時間/24時間表⽰切り替え
- 時報機能
16