シーケンサーというのはステートマシンのステートの遷移を担当する回路のことだ.always文で書くのだが,clkで仕事させれば良かろうと思い,
always @(posedge clk)
で作ってみると,動いたり動かなかったり.
always @(CURRENT)
のようにステートをトリガにすると正しく動く.どっちも正しく動くように思えるんだけど,なぜclkではダメなのかなあ?
ステートを進める部品では,clkの度に
CURRENT<=NEXT
が実行される.
シーケンサーのメインは
case (CURRENT)
によるステート別処理だ.もしシーケンサーをclkで回すと,clkの度にCURRENTステータスをチェックする.このときのCURRENTはNEXTが代入される前のステートだよね....あー考えがまとまらない.この件は保留しよう.
ところで,なぜprocess文ではなくて,always文かって?
実は昨年末から20年以上使っていたVHDLからVerilog HDLに乗り換えたのだ.乗り換えた感想は,Verilog HDLの方がいいかげんで良く,またタイピングも少なくて済むので私には向いているということだ.もっと早く変えれば良かった.