Upload
dinhduong
View
238
Download
1
Embed Size (px)
Citation preview
22
いよいよ順序回路編です• ほぼ全ての実用的な回路は順序回路です• 順序回路の記述法をマスターすることが、FPGAを使いこなせるかどうかのポイント
• 頑張って理解しましょう!– とはいえ、言語ですから「たくさん書いて慣れろ」
33
順序回路とは?• 組合せ回路の出力:現在の入力• 順序回路の出力:
– 現在の入力+現在の状態(現在の状態=過去の入力)
• つまり、順序回路は現在と過去の入力に応じて出力する回路といえる
• 過去の入力を記憶 状態を記憶
• 状態を記憶する記述!?
組合せ回路組合せ回路
組合せ回路組合せ回路
記憶素子記憶素子
外部入力
外部出力
外部入力
外部出力
状態出力
状態入力
組合せ回路
順序回路
77
解説4ビット加算器
4ビット加算器
4ビットレジスタ4ビットレジスタ
レジスタ宣言レジスタを宣言します(countは出力でもありレジスタでもある)
クロック信号の立ち上がり
リセット信号の立ち上がりor
(または)に always@ 以下の処理が行われる
88
解説(続き)always@( クロック信号or リセット信号)begin
if( クロック信号 )begin(レジスタ初期化);
end else begin(順序回路の処理);
endend
always@() は定型文で記述
レジスタに代入するときは「<= 」を使う!(ノンブロッキング代入)
左辺はレジスタ値にする
99
シミュレーションで動作を確認
リセット信号初期化を記述
クロックを記述
テストベンチ
(Verilog Test Fixture)
「testbench_4bit_cnt」
を追加
保存してISimを起動
1111
FPGAボード上に実装してみる• ピン配置ファイル(UCFファイル)の追加
右クリック
Implementation ConstraintsFile を選択
プロジェクト名と同じtopmodule_4bit_cnt
あとは「Next」をクリックし次のウインドウで「Finish」
1212
ucfファイルのオープン「ファイルを開く」アイコンをクリック
プロジェクトがあるディレクトリを選択
「ファイルの種類」を「UCF」に
先ほど追加した「topmodule_4bit_cnt.ucf」をクリック
1515
配置配線・ビットストリーム作成
トップモジュールをクリック
プロセスモードに切り替わるので
「Generate Programming File」(ビットストリーム生成)をダブルクリック
ビットストリーム生成を行うと、ISEが論理合成・配置配線も自動で行ってくれます。(回路を変更するとこれらの作業が必要なので)
2121
原因の考察• 基準クロック50MHz に同期• LEDの点滅が早すぎる!
4ビット加算器
4ビット加算器
4ビットレジスタ4ビットレジスタ
クロック (50MHz)
考えてみよう:50MHz のとき点滅の間隔は____[nsec]である.
リセット信号
2222
タイミングを調整
タイミング調整用の値を保持するレジスタ宣言
レジスタ初期化
50MHz カウントしたらLEDを1つインクリメント保存したら
「Generate Programming File」を実行
2424
右から左に流れるLED• 以下の動作をする回路を記述せよ
– ただし、LEDが切替るのは1秒間隔とする
??
4ビットレジスタ4ビットレジスタ
クロック (50MHz)
どこを書き換えればよいか?リセット信号