• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:verilogのcase文)

Verilogのcase文とif文の使い分け

このQ&Aのポイント
  • Verilogのcase文を使って0と1の場合で分岐させる方法について
  • 上記のVerilogのプログラムでは、case文を使って0と1の場合で分岐させる予定ですが、うまくいっていません。
  • case文ではなくif文のほうが適切なのかについて考えています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

同じラベルを重ねて書かない。 ステートメントが複数あるならbegin-endで囲む。 ---------------------------------------- always @(posedge CLK) begin   case (DIP_SW)     0:     begin       Q[0] <= SW1_OUT;       Q[1] <= Q[0];       Q[2] <= Q[1];       Q[3] <= Q[2];       Q[4] <= Q[3];       Q[5] <= Q[4];       Q[6] <= Q[5];       Q[7] <= Q[6];     end     1:     begin       Q[7] <= SW1_OUT;       Q[6] <= Q[7];       Q[5] <= Q[6];       Q[4] <= Q[5];       Q[3] <= Q[4];       Q[2] <= Q[3];       Q[1] <= Q[2];       Q[0] <= Q[1];     end   endcase end ---------------------------------------- ただ、Qが(レジスタ配列などではなく)ただの多ビット信号なら、 そもそも代入文を8つも並べる必要性がなさそう。 ---------------------------------------- always @(posedge CLK) begin   case (DIP_SW)     0: Q <= {Q[6:0], SW1_OUT};     1: Q <= {SW1_OUT, Q[7:1]};   endcase end ---------------------------------------- > case文ではなくif文のほうがよいでしょうか? これくらいならif文で十分なようには思える。