Advertisement
Guest User

Untitled

a guest
Mar 21st, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module automat_mura
  2. (
  3. input logic clk, in, reset,
  4. output logic [2:0] out
  5. );
  6.  
  7. // Регистр состояния
  8. enum logic [2:0] {S0,S1,S2,S3, S4, S5, S6, S7} state, next_state;
  9.  
  10. // Формирование регистра состояния
  11. always_ff @ (posedge clk or negedge reset) begin
  12. if (!reset) state <= S0;
  13. else state <= next_state;
  14. end
  15.  
  16. // Функция переходов
  17. // (определяет следующее состояние)
  18. always_comb begin
  19. case (state)
  20. S0: next_state = in? S7:S0;
  21. S1: next_state = in? S0:S1;
  22. S2: next_state = in? S1:S2;
  23. S3: next_state = in? S2:S3;
  24. S4: next_state = in? S3:S4;
  25. S5: next_state = in? S4:S5;
  26. S6: next_state = in? S5:S6;
  27. S7: next_state = in? S6:S7;
  28. default: next_state = S0;
  29. endcase
  30. end
  31.  
  32. // Функция выходов
  33. // (выходы КА Мура зависят только от состояния)
  34. always @ (state) begin
  35. case (state)
  36. S0: out = 3'b000;
  37. S1: out = 3'b001;
  38. S2: out = 3'b010;
  39. S3: out = 3'b011;
  40. S4: out = 3'b100;
  41. S5: out = 3'b101;
  42. S6: out = 3'b110;
  43. S7: out = 3'b111;
  44. default: out = 3'b000;
  45. endcase
  46. end
  47.  
  48. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement