Advertisement
Guest User

Untitled

a guest
Jun 1st, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module TimeK
  2. (
  3.     input logic clk,                    // 50 Mhz
  4.     input logic enable_pit,
  5.     input logic enable_fr,
  6.     input logic enable_tl,
  7.     //input logic enable_ob,
  8.     input logic btn_reset,
  9.     input logic [1:0] btn_rm,
  10.     //output logic led,
  11.     output logic [7:0] segm,
  12.     output logic [3:0] dig
  13. );
  14.  
  15.     logic [15:0] number = 16'h0; // число на вывод         
  16.    
  17.     binary_to_7segm sev_seg        
  18.     (
  19.         .clk(clk),
  20.         .binary_num(number),
  21.         .segm(segm),
  22.         .dig(dig)
  23.     );
  24.    
  25.     logic[25:0] clockToSec = 0; // счет тактов
  26.    
  27.     always @(posedge clk)           // по фронту
  28.     begin
  29.         if (btn_reset == 0)
  30.             begin
  31.                 number <= 16'h0;
  32.                 clockToSec <= 26'h0;
  33.         end    
  34.         else begin
  35.             case (btn_rm)
  36.                 2'b00 : begin   // Отсчет времени отпадания
  37.                         if (enable_pit == 1 & enable_tl == 0) begin
  38.                             clockToSec <= clockToSec + 1;       // счетчик + 1
  39.                             if(clockToSec == 26'hC350) begin    // если 50 000
  40.                                 number[3:0] <= number[3:0] + 1;         // число на вывод + 1
  41.                                 //led = ~led;                           // диод инверсия
  42.                                 clockToSec <= 0;                    // обнуление счетчика
  43.                             end    
  44.                         end
  45.                 end
  46.                 2'b01 : begin   // Отсчет времени притяжения
  47.                         if (enable_pit == 0 & enable_fr == 0) begin
  48.                             clockToSec <= clockToSec + 1;       // счетчик + 1
  49.                             if(clockToSec == 26'hC350) begin    // если 50 000
  50.                                 number[3:0] <= number[3:0] + 1;         // число на вывод + 1
  51.                                 //led = ~led;                           // диод инверсия
  52.                                 clockToSec <= 0;                    // обнуление счетчика
  53.                             end    
  54.                         end
  55.                 end
  56.                 2'b11 : begin   // Отсчет времени перелёта
  57.                         //if (enable_ob == 1) begin
  58.                         if (enable_tl == 0 & enable_fr == 0) begin
  59.                             clockToSec <= clockToSec + 1;       // счетчик + 1
  60.                             if(clockToSec == 26'hC350) begin    // если 50 000
  61.                                 number[3:0] <= number[3:0] + 1;         // число на вывод + 1
  62.                                 //led = ~led;                           // диод инверсия
  63.                                 clockToSec <= 0;                    // обнуление счетчика
  64.                             end    
  65.                         end
  66.                 end
  67.             endcase
  68.         end  
  69.         if (number[3:0] == 4'b1010) begin
  70.                 number[7:4] <= number[7:4] + 4'b0001;
  71.                 number[3:0] <= 4'b0000;
  72.         end else if (number[7:4] == 4'b1010) begin
  73.                 number[11:8] <= number[11:8] + 4'b0001;
  74.                 number[7:4] <= 4'b0000;
  75.         end else if (number[11:8] == 4'b1010) begin
  76.                 number[15:12] <= number[15:12] + 4'b0001;
  77.                 number[11:8] <= 4'b0000;
  78.         end else if (number[15:12] == 4'b1010) begin
  79.                 number[15:12] <= 4'b0000;
  80.         end
  81.     end
  82.  
  83. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement