赞
踩
1. q5b
- module top_module (
- input clk,
- input areset,
- input x,
- output z
- );
-
- parameter A = 1'b0;
- parameter B = 1'b1;
-
- reg[1:0] state;
- reg[1:0] next_state;
-
-
- always@(*)
- begin
- case(state)
- A:
- if(x) next_state = B;
- else next_state = A;
- B:
- next_state = B;
- endcase
- end
-
- always@(posedge clk or posedge areset)
- begin
- if(areset)
- state = A;
- else
- state = next_state;
- end
-
- always@(*)
- begin
- if(state == A)
- begin
- if(x) z = 1'b1;
- else z = 1'b0;
- end
-
- else
- begin
- if(x) z = 1'b0;
- else z = 1'b1;
- end
- end
-
- endmodule
2. q3a
- module top_module(
- input clk,
- input reset,
- input s,
- input w,
- output z
- );
-
- parameter A = 1'd0;
- parameter B = 1'd1;
- reg[1:0] state;
- reg[1:0] next_state;
- reg[1:0] count;
- reg[1:0] num;
-
- always @(*) begin
- case(state)
- A:
- begin
- if(s) next_state = B;
- else next_state = A;
- end
- B:
- begin
- next_state = B;
- end
-
- endcase
- end
-
- always @(posedge clk) begin
- if(reset)
- state <= A;
- else
- state <= next_state;
- end
-
- always @(posedge clk) begin
- if(reset)
- count <= 2'd0;
- else if(count == 2'd2)
- count <= 2'd0;
- else if(state == B)
- count <= count + 1'b1;
- end
-
- always @(posedge clk) begin
- if(reset)
- num <= 1'b0;
- else
- begin
- if(count == 2'd0)
- begin
- if(w) num <= 1'b1;
- else num <= 1'b0;
- end
- else if(state == B)
- begin
- if(w) num <= num + 1'b1;
- else num <= num;
- end
- end
- end
- assign z = (state == B && num == 2'd2 && count == 2'd0);
- endmodule
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。