4位7段共阴数码管动态显示的verilog代码

4位7段共阴数码管动态显示的verilog代码

sn_data为输入的显示数值
clk接100MHz时钟
s为数码管位选信号,高电平有效
seg为7段共阴极数码管输出

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2020/06/22 15:45:38
// Design Name: 
// Module Name: bcd_2_7seg
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module bcd_2_7seg(
        input wire [3:0] s1_data,
        input wire [3:0] s2_data,
        input wire [3:0] s3_data,
        input wire [3:0] s4_data,
        input wire clk,
        output reg [6:0] seg,
        output reg [3:0] s
        );
    
    reg [3:0] data;
    reg [18:0] times;
    
    initial times = 0;
    initial s = 4'b0001;
    
    always @ (posedge clk)
        begin
        times <= times + 19'b1;
        case (times)
            19'd000000: begin s <= 4'b0001; data <= s1_data; end
            19'd100000: begin s <= 4'b0010; data <= s2_data; end
            19'd200000: begin s <= 4'b0100; data <= s3_data; end
            19'd300000: begin s <= 4'b1000; data <= s4_data; end
        endcase
        if(times == 400000)
            times <= 19'b0;
        end
    
    always @ (posedge clk)
    begin
        case(data)
            4'b0000: seg = ~7'b1000000;    //0
            4'b0001: seg = ~7'b1111001;    //1
            4'b0010: seg = ~7'b0100100;    //2
            4'b0011: seg = ~7'b0110000;    //3
            4'b0100: seg = ~7'b0011001;    //4
            4'b0101: seg = ~7'b0010010;    //5
            4'b0110: seg = ~7'b0000010;    //6
            4'b0111: seg = ~7'b1111000;    //7
            4'b1000: seg = ~7'b0000000;    //8
            4'b1001: seg = ~7'b0010000;    //9
            4'b1010: seg = ~7'b0001000;    //A
            4'b1011: seg = ~7'b0000011;    //b
            4'b1100: seg = ~7'b1000110;    //C
            4'b1101: seg = ~7'b0100001;    //d
            4'b1110: seg = ~7'b0000110;    //E
            4'b1111: seg = ~7'b0001110;    //F
        endcase
    end
endmodule

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值