SFL演習問題/第6回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[SFL演習問題]]
*LEDでサイコロの目を表示する制御回路の設計[#wc874d23]
サイコロの目のLED表示を制御する簡単な順序回路(ステートマシン)を設計する。
----
#contents
**ダウンロード [#ge626177]
&ref(ex06.tar.gz);
**目的 [#w8dad82d]
-ステートマシンの設計方法を理解する。
**仕様 [#b775d445]
-カウンタ制御信号goが1のとき、次の目を表示させる。goが0のときは表示はそのまま変化させない。
-start信号は開始時に1クロックだけアサートされることとする。
-サイコロの目は1〜6なのでステートは6個必要。
--サイコロ1
| | | |
| |○| |
| | | |
--サイコロ2
| | |○|
| | | |
|○| | |
--サイコロ3
| | |○|
| |○| |
|○| | |
--サイコロ4
|○| |○|
| | | |
|○| |○|
--サイコロ5
|○| |○|
| |○| |
|○| |○|
--サイコロ6
|○| |○|
|○| |○|
|○| |○|
-まとめるとLEDの制御信号は4つでサイコロの目を表現することができる。
--各LEDの対応表
|led1| |led2|
|led3|led0|led3|
|led2| |led1|
-ファイル名はdice.sflとする。
module dice {
input go; /* カウンタ制御信号 */
output led0; /* LEDの出力 */
output led1; /* 1 2 */
output led2; /* 3 0 3 */
output led3; /* 2 1 */
instrin start; /* 開始のための制御信号 */
/* 内容を記述 */
}
**状態遷移図 [#w050c023]
CENTER:&ref(dice.png);
rst信号は実装しなくても良い。
**手順 [#k3e9b4ed]
+start信号がアサートされたときにステージを起動する。
+ステージの中に6つのステートを定義し、初期ステートは1の目を表すステートとする。
+現ステートを判定し、カウンタ制御信号goを条件にして次のステートを決定する。
+現ステートを判定し、LED制御信号のled0〜led3の出力を決定する。
**シミュレーション [#y01727de]
-seconds用シミュレーションスクリプト dice.sim
--このスクリプトは上記の仕様を満たすモジュール用に作成されてます。
-Makefileとdice.sflとdice.simを同じディレクトリに置いたことを確認し、そのディレクトリで
% make sim
-回路が正しければ以下のような出力を得ます。
time:1 go:1
0 0
010
0 0
time:2 go:1
0 1
000
1 0
time:3 go:1
0 1
010
1 0
time:4 go:1
1 1
000
1 1
time:5 go:1
1 1
010
1 1
time:6 go:1
1 1
101
1 1
time:7 go:1
0 0
010
0 0
time:8 go:1
0 1
000
1 0
time:9 go:1
0 1
010
1 0
time:10 go:0
0 1
010
1 0
time:11 go:0
0 1
010
1 0
time:12 go:1
1 1
000
1 1
time:13 go:1
1 1
010
1 1
time:14 go:1
1 1
101
1 1
-カウント用制御信号goやforwardの時間を自由に変えて、正しい動作をしているか検証しましょう。
**設計例 [#wf99bc2a]
&ref(ex06_answer.tar.gz);
終了行:
[[SFL演習問題]]
*LEDでサイコロの目を表示する制御回路の設計[#wc874d23]
サイコロの目のLED表示を制御する簡単な順序回路(ステートマシン)を設計する。
----
#contents
**ダウンロード [#ge626177]
&ref(ex06.tar.gz);
**目的 [#w8dad82d]
-ステートマシンの設計方法を理解する。
**仕様 [#b775d445]
-カウンタ制御信号goが1のとき、次の目を表示させる。goが0のときは表示はそのまま変化させない。
-start信号は開始時に1クロックだけアサートされることとする。
-サイコロの目は1〜6なのでステートは6個必要。
--サイコロ1
| | | |
| |○| |
| | | |
--サイコロ2
| | |○|
| | | |
|○| | |
--サイコロ3
| | |○|
| |○| |
|○| | |
--サイコロ4
|○| |○|
| | | |
|○| |○|
--サイコロ5
|○| |○|
| |○| |
|○| |○|
--サイコロ6
|○| |○|
|○| |○|
|○| |○|
-まとめるとLEDの制御信号は4つでサイコロの目を表現することができる。
--各LEDの対応表
|led1| |led2|
|led3|led0|led3|
|led2| |led1|
-ファイル名はdice.sflとする。
module dice {
input go; /* カウンタ制御信号 */
output led0; /* LEDの出力 */
output led1; /* 1 2 */
output led2; /* 3 0 3 */
output led3; /* 2 1 */
instrin start; /* 開始のための制御信号 */
/* 内容を記述 */
}
**状態遷移図 [#w050c023]
CENTER:&ref(dice.png);
rst信号は実装しなくても良い。
**手順 [#k3e9b4ed]
+start信号がアサートされたときにステージを起動する。
+ステージの中に6つのステートを定義し、初期ステートは1の目を表すステートとする。
+現ステートを判定し、カウンタ制御信号goを条件にして次のステートを決定する。
+現ステートを判定し、LED制御信号のled0〜led3の出力を決定する。
**シミュレーション [#y01727de]
-seconds用シミュレーションスクリプト dice.sim
--このスクリプトは上記の仕様を満たすモジュール用に作成されてます。
-Makefileとdice.sflとdice.simを同じディレクトリに置いたことを確認し、そのディレクトリで
% make sim
-回路が正しければ以下のような出力を得ます。
time:1 go:1
0 0
010
0 0
time:2 go:1
0 1
000
1 0
time:3 go:1
0 1
010
1 0
time:4 go:1
1 1
000
1 1
time:5 go:1
1 1
010
1 1
time:6 go:1
1 1
101
1 1
time:7 go:1
0 0
010
0 0
time:8 go:1
0 1
000
1 0
time:9 go:1
0 1
010
1 0
time:10 go:0
0 1
010
1 0
time:11 go:0
0 1
010
1 0
time:12 go:1
1 1
000
1 1
time:13 go:1
1 1
010
1 1
time:14 go:1
1 1
101
1 1
-カウント用制御信号goやforwardの時間を自由に変えて、正しい動作をしているか検証しましょう。
**設計例 [#wf99bc2a]
&ref(ex06_answer.tar.gz);
ページ名: