TheLegace

TheLegace

Oct 3rd, 2011
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Lab3(
  2.                 input CLOCK_50,
  3.                 input [3:0] KEY,
  4.                 output reg [7:0] HEX0,      //7-seg display 0
  5.                 output reg [7:0] HEX1,      //7-seg display 0
  6.                 output reg [7:0] HEX2,      //7-seg display 0
  7.                 output reg [7:0] HEX3,      //7-seg display 0
  8.                 output reg [17:0] LEDR
  9. );
  10.  
  11.     reg [15:0] count;               //8-bit counter
  12.     reg [15:0] push2,push1;             //count when pushbutton 3/KEY[2] is pushed
  13.     reg flag;                       //set once pushbutton3/KEY[2] is pushed
  14.     reg [15:0] elapsed;             //elapsed time between pushbutton3/KEY[2] and pushbutton2/KEY[1]
  15.     wire [7:0] h0,h1,h2,h3;
  16.    
  17.     hex_7seg s0(push2[3:0], h0);
  18.     hex_7seg s1(push2[7:4], h1);
  19.     hex_7seg s2(push2[11:8], h2);
  20.     hex_7seg s3(push2[15:12], h3);
  21.    
  22.     initial begin
  23.         flag = 0;
  24.         push1 = 0;
  25.         push2 = 0;
  26.         HEX0 = 7'b1000000;
  27.         HEX1 = 7'b1000000;
  28.         HEX2 = 7'b1000000;
  29.         HEX3 = 7'b1000000; 
  30.     end
  31.    
  32.     always @ (posedge CLOCK_50)
  33.         begin
  34.             count <= count + 1;
  35.             LEDR[0] = 0;
  36.             LEDR[1] = 0;
  37.             LEDR[2] = 0;
  38.             HEX0 <= h0;
  39.             HEX1 <= h1;
  40.             HEX2 <= h2;
  41.             HEX3 <= h3;
  42.             //flag = 0;
  43.             if(count >= 'b1100001101010000) begin
  44.                 elapsed <= elapsed + 1;
  45.                 count <= 0;
  46.             end
  47.            
  48.             if(!KEY[0]) begin
  49.                 LEDR[0] = 1;
  50.                 flag = 1;
  51.                 push1 <= elapsed;
  52.             end
  53.             if(flag && !KEY[1]) begin
  54.                 LEDR[1] = 1;
  55.                 push2 <= elapsed - push1;
  56.             end
  57.             if(!flag && !KEY[1]) begin
  58.                 HEX0 <= 7'b0101111;
  59.                 HEX1 <= 7'b0100011;
  60.                 HEX2 <= 7'b0101111;
  61.                 HEX3 <= 7'b0000110;
  62.                 LEDR[2] = 1;
  63.             end
  64.         end
  65.  
  66. endmodule
  67.        
  68.  
  69. module hex_7seg(hex_digit,seg);
  70. input [3:0] hex_digit;
  71. output [6:0] seg;
  72. reg [6:0] seg;
  73. // seg = {g,f,e,d,c,b,a};
  74. // 0 is on and 1 is off
  75.  
  76. always @ (hex_digit)
  77. case (hex_digit)
  78.         4'h0: seg = 7'b1000000;
  79.         4'h1: seg = 7'b1111001;     // ---a----
  80.         4'h2: seg = 7'b0100100;     // |      |
  81.         4'h3: seg = 7'b0110000;     // f      b
  82.         4'h4: seg = 7'b0011001;     // |      |
  83.         4'h5: seg = 7'b0010010;     // ---g----
  84.         4'h6: seg = 7'b0000010;     // |      |
  85.         4'h7: seg = 7'b1111000;     // e      c
  86.         4'h8: seg = 7'b0000000;     // |      |
  87.         4'h9: seg = 7'b0011000;     // ---d----
  88.         4'ha: seg = 7'b0001000;
  89.         4'hb: seg = 7'b0000011;
  90.         4'hc: seg = 7'b1000110;
  91.         4'hd: seg = 7'b0100001;
  92.         4'he: seg = 7'b0000110;
  93.         4'hf: seg = 7'b0001110;
  94. endcase
  95. endmodule
  96.  
  97.  
  98. module dec_seg7(
  99.                         input [3:0] dec,
  100.                         input carryin,
  101.                         output reg carryout,
  102.                         seg
  103. );
  104.     integer d;
  105.     always @ (dec)
  106.     begin
  107.         d = dec;
  108.         if(carryin) begin
  109.             d = d+1;
  110.         end
  111.         if(dec > 9) begin
  112.             d = d-10;
  113.             carryout = 1;
  114.         end
  115.         case (dec)
  116.         4'h0: seg = 7'b1000000;
  117.         4'h1: seg = 7'b1111001;     // ---a----
  118.         4'h2: seg = 7'b0100100;     // |      |
  119.         4'h3: seg = 7'b0110000;     // f      b
  120.         4'h4: seg = 7'b0011001;     // |      |
  121.         4'h5: seg = 7'b0010010;     // ---g----
  122.         4'h6: seg = 7'b0000010;     // |      |
  123.         4'h7: seg = 7'b1111000;     // e      c
  124.         4'h8: seg = 7'b0000000;     // |      |
  125.         4'h9: seg = 7'b0011000;     // ---d----
  126.     endcase
  127.        
  128.     end
  129. endmodule
  130.  
Advertisement
Add Comment
Please, Sign In to add comment