仅对英特尔可见 — GUID: mwh1409959613013
Ixiasoft
1.6.4.2.2. SystemVerilog状态机编码示例
使用以下编码样式描述SystemVerilog中的状态机。
使用枚举类型的SystemVerilog状态机
模块enum_fsm是一个使用枚举类型的SystemVerilog状态机实现的示例。
在 Intel® Quartus® Prime Pro Edition 综合中,为状态机定义状态的枚举类型必须是无符号整数类型。如果未将枚举类型指定为int unsigned,那么默认情况下综合使用带符号的int类型。在这种情况下, Intel® 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