fr1 fr2 fr3 输出完全由输入决定,和状态机其实没关系。
dfr 需要判断一下。
module top_module (
input clk,
input reset,
input [3:1] s,
output fr3,
output fr2,
output fr1,
output dfr
);
reg [2:0] state;
reg [2:0] next;
reg ndfr;
always@(*)begin
if(reset)begin
next = 3'b111;
ndfr = 1;
end else begin
case(s)
3'b111: next = 3'b000;
3'b011: next = 3'b001;
3'b001: next = 3'b011;
3'b000: next = 3'b111;
endcase
case(s)
3'b000: ndfr = 1;
default:
ndfr = (state == next) ? dfr : ((state > next) ? 0 : 1);
endcase
end
end
always@(posedge clk)begin
state <= next;
dfr <= ndfr;
end
assign {fr3, fr2, fr1} = state;
endmodule
这篇博客详细解释了模块top_module中的状态机如何通过输入信号s控制fr1、fr2和fr3的输出,以及dfr的决策逻辑。重点在于强调输出行为完全取决于输入,并展示了状态转移和dfr计算的case结构。
262

被折叠的 条评论
为什么被折叠?



