デコーダ

プロセッサのデコーダ部を実装。難しい部分はないのだがメンドくさい。うーむ、命令一つ一つに対してif文で書いたのが悪かったのか。下みたいな感じに。

if (inst == op_add) begin
    addをデコード
end
else if (inst == op_sub) begin
    subをデコード
end

これを、alwaysの中でやるので、全パターンをちゃんと書かないとラッチが入っちゃう。前にデコーダ部を書いたときはfunctionを使ったけど、それだと読みづらかった。というか、Verilog HDLのfunctionの使いかたがイマイチつかめない。functionなら組合せ回路、alwaysなら順序回路って感じに簡単に使い分ければ良いのかもしれないが、functionってalwaysほど記述に力がない(気がする)し、簡単な論理回路ならassignで事足りる。もう少しやればfunctionの意義がわかるかなあ。