Intel® Quartus® Prime Pro Edition用户指南: 设计建议

ID 683082
日期 9/28/2020
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

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