This is a Moore state machine with two states, two inputs, and one output. Implement this state machine.
This exercise is the same as fsm2s, but using asynchronous reset.
前言
四个输入,包括一个时钟clk,一个高电平有效的异步置位信号reset,两个输入信号 j 和 k ;一个输出信号out。
代码
module top_module(
input clk,
input areset,
input j,
input k,
output out);
parameter OFF=1'b0, ON=1'b1;
reg state, next_state;
always @(*) begin
if(state==OFF) next_state=j?ON:OFF;
else next_state=k?OFF:ON;
end
always @(posedge clk, posedge areset) begin
if(areset) state<=OFF;
else state<=next_state;
end
assign out=state;
endmodule
总结
对于状态机而言,parameter参数设置是一个很好的工具,但是建议将参数的位宽加上,例如 OFF=1’b0。