Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module automat_mura
- (
- input logic clk, in, reset,
- output logic [2:0] out
- );
- // Регистр состояния
- enum logic [2:0] {S0,S1,S2,S3, S4, S5, S6, S7} state, next_state;
- // Формирование регистра состояния
- always_ff @ (posedge clk or negedge reset) begin
- if (!reset) state <= S0;
- else state <= next_state;
- end
- // Функция переходов
- // (определяет следующее состояние)
- always_comb begin
- case (state)
- S0: next_state = in? S7:S0;
- S1: next_state = in? S0:S1;
- S2: next_state = in? S1:S2;
- S3: next_state = in? S2:S3;
- S4: next_state = in? S3:S4;
- S5: next_state = in? S4:S5;
- S6: next_state = in? S5:S6;
- S7: next_state = in? S6:S7;
- default: next_state = S0;
- endcase
- end
- // Функция выходов
- // (выходы КА Мура зависят только от состояния)
- always @ (state) begin
- case (state)
- S0: out = 3'b000;
- S1: out = 3'b001;
- S2: out = 3'b010;
- S3: out = 3'b011;
- S4: out = 3'b100;
- S5: out = 3'b101;
- S6: out = 3'b110;
- S7: out = 3'b111;
- default: out = 3'b000;
- endcase
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement