题解 | #根据状态转移表实现时序电路#
根据状态转移表实现时序电路
https://www.nowcoder.com/practice/455c911bee0741bf8544a75d958425f7
`timescale 1ns/1ns
module seq_circuit(
input A ,
input clk ,
input rst_n,
output wire Y
);
reg [1:0] Cur_state ;
reg [1:0] Nxt_state ;
reg y;
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
Cur_state <= 0;
end
else
Cur_state <= Nxt_state ;
end
always@(*) begin
case(Cur_state)
2'b00:if(A==0)
Nxt_state = 2'b01 ;
else
Nxt_state = 2'b11 ;
2'b01:if(A==0)
Nxt_state = 2'b10 ;
else
Nxt_state = 2'b00 ;
2'b10:if(A==0)
Nxt_state = 2'b11 ;
else
Nxt_state = 2'b01 ;
2'b11:if(A==0)
Nxt_state = 2'b00 ;
else
Nxt_state = 2'b10 ;
endcase
end
always@(*) begin
if(!rst_n)
y = 0;
else if(Cur_state == 2'b11)
y = 1;
else
y = 0 ;
end
assign Y = y ;
endmodule
携程成长空间 146人发布