TA的每日心情 | 郁闷 2019-12-26 16:14 |
---|
新手入门
- 积分
- 14
|
一个101的序列检测器,源代码如下
- module block1(
- din,
- clk,
- rst_n,
- Qout
- );
- input din,clk,rst_n;
- output reg Qout;
- parameter S0 = 2'b00;
- parameter S1 = 2'b01;
- parameter S2 = 2'b11;
-
- reg [1:0]current_state;
- reg [1:0]next_state;
-
- always@(posedge clk or negedge rst_n)
- begin
- if(!rst_n)
- begin
- current_state <= S0;
- end
- else
- begin
- current_state <= next_state;
- end
- end
-
- always@(current_state or din)
- begin
- case(current_state)
- S0:
- begin
- if(din == 1)
- begin
- next_state = S1;
- Qout = 1'b0;
- end
- else
- begin
- next_state = S0;
- Qout = 1'b0;
- end
- end
- S1:
- begin
- if(din == 1)
- begin
- next_state = S1;
- Qout = 1'b0;
- end
- else
- begin
- next_state = S2;
- Qout = 1'b0;
- end
- end
- S2:
- begin
- if(din == 0)
- begin
- next_state = S1;
- Qout = 1'b1;
- end
- else
- begin
- next_state = S0;
- Qout = 1'b0;
- end
- end
- default:
- begin
- next_state = S0;
- Qout = 1'b0;
- end
- endcase
- end
- endmodule
复制代码
此时的状态机为图一
把S2的if改成if(din==1)之后,状态机为图二,其condition少了一半,是什么原因,怎么调整? |
-
图一
-
图二
|