Advertisement
Guest User

Untitled

a guest
Jun 1st, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module binary_to_7segm
  2. (
  3.     input logic clk,
  4.     input logic [15:0] binary_num,  // число на выход
  5.     output logic [7:0]  segm,
  6.     output logic [3:0]  dig
  7.    
  8. );
  9.     logic[25:0] clockToSec = 0; // счет тактов
  10.     logic [3:0] numb;
  11.     logic [1:0] lcd_dig = 2'h0;
  12.  
  13.     always@(*)
  14.     begin
  15.         case (numb)
  16.             //                   0gfedcba
  17.             4'b0000 : segm <= 8'b00111111;
  18.             4'b0001 : segm <= 8'b00000110;
  19.             4'b0010 : segm <= 8'b01011011;
  20.             4'b0011 : segm <= 8'b01001111;
  21.             4'b0100 : segm <= 8'b01100110;
  22.             4'b0101 : segm <= 8'b01101101;
  23.             4'b0110 : segm <= 8'b01111101;
  24.             4'b0111 : segm <= 8'b00000111;
  25.             4'b1000 : segm <= 8'b01111111;
  26.             4'b1001 : segm <= 8'b01101111;
  27.             default : segm <= 8'b00111111;
  28.         endcase
  29.     end
  30.    
  31.  
  32.     always @(posedge clk)           // по фронту
  33.     begin
  34.         //50 000
  35.             clockToSec <= clockToSec + 1;       // счетчик + 1
  36.             if(clockToSec == 26'hC350)      // если 50 000
  37.             begin
  38.                 lcd_dig <= lcd_dig + 1;         // число на вывод + 1
  39.                 clockToSec <= 0;                    // обнуление счетчика
  40.             end
  41.         end
  42.    
  43.     always@(*)
  44.     begin
  45.         case (lcd_dig)
  46.             2'b00 : begin
  47.                     dig <= 4'b1110;
  48.                     numb <= binary_num[3:0];
  49.                 end
  50.             2'b01 : begin
  51.                     dig <= 4'b1101;
  52.                     numb <= binary_num[7:4];
  53.                 end
  54.             2'b10 : begin
  55.                     dig <= 4'b1011;
  56.                     numb <= binary_num[11:8];
  57.                 end
  58.             2'b11 : begin
  59.                     dig <= 4'b0111;
  60.                     numb <= binary_num[15:12];
  61.                 end
  62.         endcase
  63.     end
  64.        
  65. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement