Advertisement
Ta3ik

Lab4_DD

Jun 7th, 2020
840
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 20.04.2020 23:30:17
  7. // Design Name:
  8. // Module Name: Lab_4
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21. module convertNumToDigit
  22. (
  23.     input logic [4:0] num,
  24.     output logic [7:0] digit
  25.     );
  26.   always_comb
  27.     begin
  28.         case(num)
  29.         //012345
  30.         4'b0000: begin digit=8'b11111100;end
  31.         //12
  32.         4'b0001: begin digit=8'b01100000;end
  33.         //01346
  34.         4'b0010: begin digit=8'b11011010;end
  35.         //01236
  36.         4'b0011: begin digit=8'b11110010;end
  37.         //1256
  38.         4'b0100: begin digit=8'b01100110;end
  39.         //02356
  40.         4'b0101: begin digit=8'b10110110;end
  41.         //023456
  42.         4'b0110: begin digit=8'b10111110;end
  43.         //012
  44.         4'b0111: begin digit=8'b11100000;end
  45.         //0123456
  46.         4'b1000: begin digit=8'b11111110;end
  47.     endcase
  48.     end
  49. endmodule
  50.  
  51. module Lab_4(
  52.     input reset,
  53.     input clk12,
  54.     input prm,
  55.     output logic [7:0] digit1,
  56.     output logic [7:0] digit10,
  57.     output logic [7:0] digit100,
  58.     output logic [7:0] digit1000
  59.     );
  60.     logic [4:0] decSec;
  61.     logic [4:0] unSec;
  62.     logic [4:0] decMin;
  63.     logic [4:0] unMin;
  64.    
  65.     assign decSec = 0;
  66.     assign unSec = 0;
  67.     assign decMin = 0;
  68.     assign unMin = 0;
  69.    
  70.     logic [5:0] countTick;
  71.    
  72.     assign  countTick = 0;
  73.    
  74.     always_comb
  75.         begin
  76.             digit1 = convertNumToDigit(unSec);
  77.             digit10 = convertNumToDigit(decSec);
  78.             digit100 = convertNumToDigit(unMin);
  79.             digit1000 = convertNumToDigit(decMin);
  80.         end
  81.    
  82.     always @(posedge clk12, posedge prm, posedge reset)
  83.         begin
  84.             if(reset)
  85.                 begin
  86.                    decSec = 0;
  87.                    unSec = 0;
  88.                    decMin = 0;
  89.                    unMin = 0;
  90.                    digit1 = convertNumToDigit(unSec);
  91.                    digit10 = convertNumToDigit(decSec);
  92.                    digit100 = convertNumToDigit(unMin);
  93.                    digit1000 = convertNumToDigit(decMin);
  94.                 end
  95.              else
  96.                 begin
  97.                     if (prm)
  98.                         begin
  99.                             if(clk12)
  100.                                 begin
  101.                                     countTick = countTick + 6'b000001;
  102.                                     if(countTick > 6'b010011)
  103.                                         begin
  104.                                             countTick = 0;
  105.                                             unSec = unSec + 5'b00001;
  106.                                            
  107.                                             if(unSec > 5b'01001) begin decSec = decSec + 5'b00001; unSec = 0; end;
  108.                                             if(decSec > 5b'00101) begin unMin = unMin + 5'b00001; decSec = 0; end;
  109.                                             if(unMin > 5b'01001) begin decMin = decMin + 5'b00001; unMin = 0; end;
  110.                                             if(decMin > 5b'00101) begin decMin = 0; end;
  111.                                            
  112.                                             digit1 = convertNumToDigit(unSec);
  113.                                             digit10 = convertNumToDigit(decSec);
  114.                                             digit100 = convertNumToDigit(unMin);
  115.                                             digit1000 = convertNumToDigit(decMin);
  116.                                         end
  117.                                 end
  118.                         end        
  119.                 end
  120.         end
  121. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement