1.4.1.1. 同期メモリーブロックの使用
1.4.1.2. サポートされないリセットおよびコントロール条件の回避
1.4.1.3. Read-During-Write動作の確認
1.4.1.4. RAMの推論と実装の制御
1.4.1.5. シングルクロック同期RAM (古いデータでのRead-During-Write動作)
1.4.1.6. シングルクロック同期RAM (新しいデータでのRead-During-Write動作)
1.4.1.7. シンプル・デュアルポート、デュアルクロック同期RAM
1.4.1.8. トゥルー・デュアルポート同期RAM
1.4.1.9. 混合幅デュアルポートRAM
1.4.1.10. バイト・イネーブル信号を備えるRAM
1.4.1.11. 電源投入時の初期のメモリーコンテンツの指定
1.6.4.2.2. SystemVerilogのステートマシン・コーディング例
次のコーディング・スタイルを使用して、SystemVerilogでステートマシンを記述します。
列挙型を使用するSystemVerilogステートマシン
モジュール enum_fsm は、列挙型を使用するSystemVerilogステートマシンの実装例です。
インテル® Quartus® Prime プロ・エディション の合成では、ステートマシンのステートを定義する列挙型を符号なし整数型にする必要があります。列挙型を int unsigned として指定しないと、合成ではデフォルトで符号付き int 型が使用されます。この場合、 インテル® Quartus® Prime開発ソフトウェアはデザインを合成しますが、ロジックをステートマシンとして推論または最適化しません。
module enum_fsm (input clk, reset, input int data[3:0], output int o);
enum int unsigned { S0 = 0, S1 = 2, S2 = 4, S3 = 8 } state, next_state;
always_comb begin : next_state_logic
next_state = S0;
case(state)
S0: next_state = S1;
S1: next_state = S2;
S2: next_state = S3;
S3: next_state = S3;
endcase
end
always_comb begin
case(state)
S0: o = data[3];
S1: o = data[2];
S2: o = data[1];
S3: o = data[0];
endcase
end
always_ff@(posedge clk or negedge reset) begin
if(~reset)
state <= S0;
else
state <= next_state;
end
endmodule