Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. module SeqDect(rst,clk,ip,op);
  2.  
  3. output reg op;
  4. input clk, rst;
  5. input [1:0] ip;
  6. reg [1:0] state;
  7. reg [1:0] next_state;
  8.  
  9. parameter [1:0] s0=2'b00;
  10. parameter [1:0] s1=2'b01;
  11. parameter [1:0] s2=2'b10;
  12.  
  13. always @(posedge clk, posedge rst)
  14. begin
  15. if (rst)
  16. state=s0;
  17. else
  18. state=next_state;
  19. end
  20.  
  21. always @(state, next_state)
  22. begin
  23. case(state)
  24. s0:
  25. if (ip==2'b01)
  26. begin
  27. next_state=s1;
  28. op=1'b0;
  29. end
  30. else
  31. begin
  32. next_state=s0;
  33. op=1'b0;
  34. end
  35.  
  36. s1:
  37. if (ip==2'b11)
  38. begin
  39. next_state=s2;
  40. op=1'b1;
  41. end
  42. else if (ip==2'b01)
  43. begin
  44. next_state=s1;
  45. op=1'b0;
  46. end
  47. else
  48. begin
  49. next_state=s0;
  50. op=1'b0;
  51. end
  52.  
  53. s2:
  54. if (ip==2'b11)
  55. begin
  56. next_state=s2;
  57. op=1'b1;
  58. end
  59. else if (ip==2'b01)
  60. begin
  61. next_state=s1;
  62. op=1'b0;
  63. end
  64. else
  65. begin
  66. next_state=s0;
  67. op=1'b0;
  68. end
  69.  
  70. default:
  71. begin
  72. next_state=s0;
  73. op=1'b0;
  74. end
  75. endcase
  76. end
  77. endmodule
  78.  
  79. module SeqDect(rst,clk,ip,op);
  80.  
  81. /*io and internal wires*/
  82.  
  83. always @(posedge clk, posedge rst)
  84. begin
  85. if (rst)
  86. state<=s0;
  87. else
  88. state<=next_state;
  89. end
  90.  
  91. always @(state, ip)
  92. begin
  93. case(state)
  94. /*cases*/
  95. endcase
  96. end
  97. endmodule
  98.  
  99. module tb();
  100.  
  101. reg rst;
  102. reg clk;
  103. reg [1:0] ip;
  104. wire op;
  105.  
  106. SeqDect uut(rst,clk,ip,op);
  107.  
  108. always #20 clk =~clk;
  109.  
  110. initial begin
  111. clk=0;
  112. rst=1;
  113. #100
  114. rst=0;
  115. #100
  116. ip = 2'b00;
  117. #100
  118. ip = 2'b01;
  119. #100
  120. ip = 2'b11;
  121. #100
  122. $stop;
  123. end
  124. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement