Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 20.04.2020 23:30:17
- // Design Name:
- // Module Name: Lab_4
- // Project Name:
- // Target Devices:
- // Tool Versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module convertNumToDigit
- (
- input logic [4:0] num,
- output logic [7:0] digit
- );
- always_comb
- begin
- case(num)
- //012345
- 4'b0000: begin digit=8'b11111100;end
- //12
- 4'b0001: begin digit=8'b01100000;end
- //01346
- 4'b0010: begin digit=8'b11011010;end
- //01236
- 4'b0011: begin digit=8'b11110010;end
- //1256
- 4'b0100: begin digit=8'b01100110;end
- //02356
- 4'b0101: begin digit=8'b10110110;end
- //023456
- 4'b0110: begin digit=8'b10111110;end
- //012
- 4'b0111: begin digit=8'b11100000;end
- //0123456
- 4'b1000: begin digit=8'b11111110;end
- endcase
- end
- endmodule
- module Lab_4(
- input reset,
- input clk12,
- input prm,
- output logic [7:0] digit1,
- output logic [7:0] digit10,
- output logic [7:0] digit100,
- output logic [7:0] digit1000
- );
- logic [4:0] decSec;
- logic [4:0] unSec;
- logic [4:0] decMin;
- logic [4:0] unMin;
- assign decSec = 0;
- assign unSec = 0;
- assign decMin = 0;
- assign unMin = 0;
- logic [5:0] countTick;
- assign countTick = 0;
- always_comb
- begin
- digit1 = convertNumToDigit(unSec);
- digit10 = convertNumToDigit(decSec);
- digit100 = convertNumToDigit(unMin);
- digit1000 = convertNumToDigit(decMin);
- end
- always @(posedge clk12, posedge prm, posedge reset)
- begin
- if(reset)
- begin
- decSec = 0;
- unSec = 0;
- decMin = 0;
- unMin = 0;
- digit1 = convertNumToDigit(unSec);
- digit10 = convertNumToDigit(decSec);
- digit100 = convertNumToDigit(unMin);
- digit1000 = convertNumToDigit(decMin);
- end
- else
- begin
- if (prm)
- begin
- if(clk12)
- begin
- countTick = countTick + 6'b000001;
- if(countTick > 6'b010011)
- begin
- countTick = 0;
- unSec = unSec + 5'b00001;
- if(unSec > 5b'01001) begin decSec = decSec + 5'b00001; unSec = 0; end;
- if(decSec > 5b'00101) begin unMin = unMin + 5'b00001; decSec = 0; end;
- if(unMin > 5b'01001) begin decMin = decMin + 5'b00001; unMin = 0; end;
- if(decMin > 5b'00101) begin decMin = 0; end;
- digit1 = convertNumToDigit(unSec);
- digit10 = convertNumToDigit(decSec);
- digit100 = convertNumToDigit(unMin);
- digit1000 = convertNumToDigit(decMin);
- end
- end
- end
- end
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement