TheLegace

Lab9

Nov 20th, 2011
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Lab9(
  2.                 input CLOCK_50,
  3.                 input [2:0] KEY,
  4.                 output reg [2:0] LEDR,
  5.                 output wire HEX0
  6. );
  7.  
  8. wire M1,S1,S2;
  9. reg [3:0] cm;
  10. reg [2:0] state;
  11.  
  12. oneshot(KEY[0], CLOCK_50, M1);
  13. oneshot(KEY[1], CLOCK_50, S1);
  14. oneshot(KEY[2], CLOCK_50, S2);
  15. hex_7seg(cm, HEX0);
  16. parameter zero=0, one=1, two=2;
  17.  
  18. initial
  19. begin
  20.     state = zero;
  21. end
  22.  
  23. always @(state)
  24. begin
  25.     case (state)
  26.         zero:
  27.         begin
  28.             LEDR[0] = 1;
  29.             LEDR[1] = 0;
  30.             LEDR[2] = 0;
  31.         end
  32.         one:
  33.         begin
  34.             LEDR[0] = 0;
  35.             LEDR[1] = 1;
  36.             LEDR[2] = 0;
  37.         end
  38.         two:
  39.         begin
  40.             LEDR[0] = 0;
  41.             LEDR[1] = 0;
  42.             LEDR[2] = 1;
  43.         end
  44.     endcase
  45. end
  46.  
  47. always @(*)
  48. begin
  49.     case(state)
  50.         zero:
  51.         begin
  52.             if(M1) begin
  53.                 cm = cm+1;
  54.                 if(cm > 3) begin
  55.                     state = one;
  56.                     cm = 0;
  57.                 end
  58.             end
  59.         end
  60.         one:
  61.         begin
  62.             if(S1) begin
  63.                 state = two;
  64.             end
  65.         end
  66.         two:
  67.         begin
  68.             if(S2) begin
  69.                 state = zero;
  70.             end
  71.         end
  72.     endcase
  73.        
  74. end
  75. endmodule
  76.  
  77.  
  78. module oneshot(
  79.                     input A,
  80.                     input clk,
  81.                     output reg A_state);
  82.  
  83. reg [1:3] r;
  84.  
  85. always @ (posedge clk)
  86. begin
  87.     A_state <= r[3] & !r[2];
  88.      r = {A , r[1:2]};
  89. end
  90. endmodule
  91.  
  92.  
  93. module hex_7seg(hex_digit,seg);
  94. input [3:0] hex_digit;
  95. output [6:0] seg;
  96. reg [6:0] seg;
  97. // seg = {g,f,e,d,c,b,a};
  98. // 0 is on and 1 is off
  99.  
  100. always @ (hex_digit)
  101. case (hex_digit)
  102.         4'h0: seg = 7'b1000000;
  103.         4'h1: seg = 7'b1111001;     // ---a----
  104.         4'h2: seg = 7'b0100100;     // |      |
  105.         4'h3: seg = 7'b0110000;     // f      b
  106.         4'h4: seg = 7'b0011001;     // |      |
  107.         4'h5: seg = 7'b0010010;     // ---g----
  108.         4'h6: seg = 7'b0000010;     // |      |
  109.         4'h7: seg = 7'b1111000;     // e      c
  110.         4'h8: seg = 7'b0000000;     // |      |
  111.         4'h9: seg = 7'b0011000;     // ---d----
  112.         4'ha: seg = 7'b0001000;
  113.         4'hb: seg = 7'b0000011;
  114.         4'hc: seg = 7'b1000110;
  115.         4'hd: seg = 7'b0100001;
  116.         4'he: seg = 7'b0000110;
  117.         4'hf: seg = 7'b0001110;
  118. endcase
  119. endmodule
  120.  
Advertisement
Add Comment
Please, Sign In to add comment