Loading

verilog 6x01

  1. module zad1 (CLOCK_50, HEX0, HEX1, HEX2, HEX3);
  2.  
  3. input CLOCK_50;
  4. output [6:0] HEX0;
  5. output [6:0] HEX1;
  6. output [6:0] HEX2;
  7. output [6:0] HEX3;
  8.  
  9. reg [4:0] steps = 5'd0;
  10. reg [3:0] lol0 = 4'ha;
  11. reg [3:0] lol1 = 4'ha;
  12. reg [3:0] lol2 = 4'ha;
  13. reg [3:0] lol3 = 4'ha;
  14. wire clock;
  15.  
  16. clock_1s(CLOCK_50, clock);
  17. hex_print(HEX0, lol3);
  18. hex_print(HEX1, lol2);
  19. hex_print(HEX2, lol1);
  20. hex_print(HEX3, lol0);
  21.  
  22. always @(posedge clock)
  23. begin
  24.   steps <= steps + 1;
  25.   case (steps)
  26.     5'h0: begin
  27.        lol0 <= 4'ha;
  28.         lol1 <= 4'ha;
  29.         lol2 <= 4'ha;
  30.         lol3 <= 4'h3;
  31.      end
  32.     5'h1: begin
  33.        lol0 <= 4'ha;
  34.         lol1 <= 4'ha;
  35.         lol2 <= 4'h3;
  36.         lol3 <= 4'h0;
  37.      end
  38.     5'h2: begin
  39.        lol0 <= 4'ha;
  40.         lol1 <= 4'h3;
  41.         lol2 <= 4'h0;
  42.         lol3 <= 4'h1;
  43.      end
  44.     5'h3: begin
  45.        lol0 <= 4'h3;
  46.         lol1 <= 4'h0;
  47.         lol2 <= 4'h1;
  48.         lol3 <= 4'h4;
  49.      end
  50.     5'h4: begin
  51.        lol0 <= 4'h0;
  52.         lol1 <= 4'h1;
  53.         lol2 <= 4'h4;
  54.         lol3 <= 4'h1;
  55.      end
  56.     5'h5: begin
  57.        lol0 <= 4'h1;
  58.         lol1 <= 4'h4;
  59.         lol2 <= 4'h1;
  60.         lol3 <= 4'h7;
  61.      end
  62.     5'h6: begin
  63.        lol0 <= 4'h4;
  64.         lol1 <= 4'h1;
  65.         lol2 <= 4'h7;
  66.         lol3 <= 4'ha;
  67.      end
  68.     5'h7: begin
  69.        lol0 <= 4'h1;
  70.         lol1 <= 4'h7;
  71.         lol2 <= 4'ha;
  72.         lol3 <= 4'ha;
  73.      end
  74.     5'h8: begin
  75.        lol0 <= 4'h7;
  76.         lol1 <= 4'ha;
  77.         lol2 <= 4'ha;
  78.         lol3 <= 4'ha;
  79.      end
  80.     5'h9: begin
  81.        lol0 <= 4'ha;
  82.         lol1 <= 4'ha;
  83.         lol2 <= 4'ha;
  84.         lol3 <= 4'ha;
  85.      end
  86.      default: begin
  87.        lol0 <= 4'ha;
  88.         lol1 <= 4'ha;
  89.         lol2 <= 4'ha;
  90.         lol3 <= 4'ha;
  91.      end
  92.   endcase
  93.   if (steps == 9)
  94.     steps <= 0;
  95. end
  96.  
  97. endmodule
  98.  
  99. // 0..9     = 0..9
  100. // a..e     =
  101. // f            = L
  102. module hex_print(output reg[6:0] o, input[3:0] i);
  103.   always
  104.   case (i)
  105.     4'h0 : o <= 7'b1000000;
  106.      4'h1 : o <= 7'b1111001;
  107.      4'h2 : o <= 7'b0100100;
  108.      4'h3 : o <= 7'b0110000;
  109.      4'h4 : o <= 7'b0011001;
  110.      4'h5 : o <= 7'b0010010;
  111.      4'h6 : o <= 7'b0000010;
  112.      4'h7 : o <= 7'b1111000;
  113.      4'h8 : o <= 7'b0000000;
  114.      4'h9 : o <= 7'b0010000;
  115.      4'hf : o <= 7'b1000111;
  116.      default: o <= 7'b1111111;
  117.   endcase
  118. endmodule
  119.  
  120. module clock_1s(input clk_in, output reg[0:0] clk_out);
  121.   reg [26:0] counter = 26'd0;
  122.   always @(posedge clk_in)
  123.   begin
  124.     counter <= counter + 1;
  125.      if (counter == 26'd50000000)
  126.      begin
  127.        clk_out <= ~clk_out;
  128.         counter <= 0;
  129.     end
  130.   end
  131.  endmodule

Comments