今まで、Verilogのステートマシンは論理合成不可の部分にストリングで書いていたが、(”
Verilogでのシミュレーションの疑問(解決編)”参照) Veritakでenum選択でステートが表示できると聞いたような気がしたので、やってみることにした。
cs_mainステートマシンを選んで、右クリック。右クリックメニューから”表示の選択”を選び、その下の”enum選択”を選ぶ。

parameter selectionダイアログが出てくる。ここで、使うパラメータをすべて選択してもステートは表示されない。

ステートマシンのパラメータの宣言は下のようになっている。
parameter wait_cmd_fifo_not_empty =4'b0001;
parameter vram_addr_counter_load =4'b0010;
parameter next_char_code_load =4'b0100;
parameter char_generation_state =4'b1000;
Veritakマニュアルの
2.4.2 Enum Displayを見るとparameterの書き方が悪いのがわかった。それによると、下のように書く必要があるらしい。
parameter [3:0] wait_cmd_fifo_not_empty = 4'b0001,
vram_addr_counter_load = 4'b0010,
next_char_code_load = 4'b0100,
char_generation_state = 4'b1000;
上のように書き換え、コンパイル、シミュレーションして、cs_mainステートマシンを選んで、右クリック。右クリックメニューから”表示の選択”を選び、その下の”enum選択”を選んで、parameter selectionダイアログを出す。

param0~param3 まで値が入って、この行を選択してOKボタンをクリックすると、ステート値が表示された。

うまく行ってよかった。上記のように全部のステートマシンを書き換えようと思う。
見てわかるとおりに、グラフィック・コントローラ・テスト回路の動作はまだまだおかしい。まだ、DDR2 SDRAMコントローラのアドレスFIFOがOVERFLOWになり、FIFOのアサーションでシミュレーションがストップされている。Verilogのアサーションだけども、やはりアサーションは便利だ。
これからステートマシンのステート値を定義するparameterを書き換えてデバックする予定だ。
- 2010年02月07日 19:15 |
- シミュレーション
-
| トラックバック:0
-
| コメント:0