2007/07/26(木)verilog HDLのalwaysで悩み
verilog HDLを勉強がてら遊んでいるのですが、つまずいています。
よくあるサンプルですが、
input [1:0] SW; reg [3:0] counter; always @(posedge SW[0] or posedge SW[1]) begin if (SW[1] == 1) // reset counter <= 0; else counter <= counter + 1; end end
と書くと正しく動作します。ですが、
always @(posedge SW[0] or posedge SW[1]) begin if (SW[0] == 1) counter <= counter + 1; else counter <= 0; end end
と書くとまともに動作しません。SW[0]を押したとき、値が不定値になります。またSW[0]を押している間、counterの値が随時変化し全く定まりません。どなたかお助け。
追記
シミュレーションだとどちらも正常に動きます。なんかバグ(不具合?)っぽい予感がヒシヒシと(汗)