Vivado 实现4个7位数码管显示数字

这篇具有很好参考价值的文章主要介绍了Vivado 实现4个7位数码管显示数字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目前只是实现了4位分别显示0~9的功能的7位数码管,后期有添加内容还会有删改。

就不用提数码管的原理了(像什么共阳极,共阴极之类的),我会把每一步都解析标注出来。

首先是实现4个数码管显示相同数字。


module LED
    (

        input [3:0]i_num,    //输入4位2进制的数
        output reg [6:0] o_led_num    //7位分别对应7位数码管的每个灯泡
    );
 
    always @ *
        begin
            case(i_num)    //输入情况不同对应不同的方案
            4'h0:o_led_num = 7'b000_0001;    
    //o_led_num 的7位分别代表了每个灯泡的亮灭,由于用的共阳极的数码管,所以0为亮
            4'h1:o_led_num = 7'b100_1111;
            4'h2:o_led_num = 7'b001_0010;
            4'h3:o_led_num = 7'b000_0110;
            4'h4:o_led_num = 7'b100_1100;
            4'h5:o_led_num = 7'b010_0100;
            4'h6:o_led_num = 7'b010_0100;
            4'h7:o_led_num = 7'b000_1111;
            4'h8:o_led_num = 7'b000_0000;
            4'h9:o_led_num = 7'b000_1100;
            default:   
                 o_led_num = 7'b111_1111;    //若值不在0~9之间则全部熄灭
            endcase
         end  
endmodule

由于没有具体选择4个数码管的哪一个所以4个都会显示同样的值。

接下来是想实现 4 个数码管显示不同的内容,就要利用人眼的视觉暂留,对 4 个 7 段数码管进行分时复用。当数码管的刷新频率高于人眼的视觉暂留时,人眼就无法察觉数码管的信息改变。文章来源地址https://www.toymoban.com/news/detail-542080.html

`timescale 1ns / 1ps    //仿真时间的定义即在仿真中用#100表示延迟100ns。1ps表示时间精度
module LED
    (
        input clk,    //使用时钟信号,频率为50MHz
        input [3:0]i_num_1,    //这里分别定义了想要输入的4个数
        input [3:0]i_num_2,
        input [3:0]i_num_3,
        input [3:0]i_num_4,
        output reg[3:0] an,    //这里是使能信号,即选择是哪个数码管显示
        output reg [6:0] o_led_num    //7位对应一个数码管的七个灯泡
    );
    
    reg[17:0] regN;    //结合regN用途一起看
    reg[3:0] i_num;    //用来储存4个输入数中需要显示的那一个
    always @(posedge clk)
        regN = regN+1;    //clk每到上升沿regN就会+1 //再结合后面看
    
    always @(regN[17:16])    
    //clk为18位,这里取第17,18位,即1-16位是用于计时,所以时钟需要跳2的16次方
    (是一个很短且对于视觉残留和板子频率有益的时间)显示的数码管才更改,
    进位到17~18位就用于确定哪个数码管
    begin
        case (regN[17:16])
        2'b00:begin
                an=4'b1110;
                i_num=i_num_1;
                end
        2'b01:begin
                an=4'b1101;
                i_num=i_num_2;
                end      
        2'b10:begin
                an=4'b1011;
                i_num=i_num_3;
                end  
        2'b11:begin 
                an=4'b0111;
                i_num=i_num_4;
                end
       endcase
    end
                
    
    
    always @ *    //控制7个数码管里灯泡的亮灭
        begin
            case(i_num)
            4'h0:o_led_num = 7'b000_0001;
            4'h1:o_led_num = 7'b100_1111;
            4'h2:o_led_num = 7'b001_0010;
            4'h3:o_led_num = 7'b000_0110;
            4'h4:o_led_num = 7'b100_1100;
            4'h5:o_led_num = 7'b010_0100;
            4'h6:o_led_num = 7'b010_0100;
            4'h7:o_led_num = 7'b000_1111;
            4'h8:o_led_num = 7'b000_0000;
            4'h9:o_led_num = 7'b000_1100;
            default:   
                 o_led_num = 7'b111_1111;
            endcase
         end  
endmodule

到了这里,关于Vivado 实现4个7位数码管显示数字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FPGA】Verilog:实现十六进制七段数码管显示 | 7-Segment Display

    写在前面: 本章主要内容为理解七点数码管显示的概念,并使用 Verilog 实现。生成输入信号后通过仿真确认各门的动作,通过 FPGA 检查在 Verilog 中实现的电路的操作。 七段数码管是利用多重输出功能的非常有用的元件。该元件用于字符化,如十进制、十六进制数等。适当配

    2024年02月02日
    浏览(36)
  • FPGA学习—数码管显示

    数码管动态显示采用了人眼暂存的原理,即时分复用,在数码管实现动态显示。 整个实验设计流程框架如下图所示: 开发板采用共阳极数码管,即低电平点亮。 本实验准备设计一个定时器,6为数码管显示24小时制的时间,所以编写一个计数模块。 改变变量COUNT的数值,可实

    2024年02月09日
    浏览(32)
  • FPGA_数码管显示

    一位数码管: 数码管等效电路(共阴极 和 共阳极) 数码管显示的值: 假设我们需要b,c亮,我们只需要给b,c接高电平,其他接低电平就可。 seg[7:0]  = 8\\\'b0000_0110 对于数码管显示的值,seg值如下图: 多位数码管-----如下图(以3位为例) 假设现在需要LED1亮,那么就让sel0为1,

    2024年01月23日
    浏览(36)
  • 数码管循环显示数字

    数码管进行显示成功后,可根据自己的想法进行改进。本设计采用八位数码管进行循环显示0~f,其中涉及到段码及位码的调用,可更深一步的理解数码管的使用。 本设计中数码管的段选使用74hc245进行驱动。可以为数码管提供足够且稳定的电压,数码管与74hc245芯片之间需加电

    2024年02月04日
    浏览(25)
  • Intel FPGA:数码管显示

    个人说明: 限于时间紧迫以及作者水平有限,本文错误、疏漏之处恐不在少数,恳请读者批评指正。意见请留言或者发送邮件至:“Email:noahpanzzz@gmail.com” 。 本博客的工程文件均存放在:GitHub:https://github.com/panziping。 本博客的地址:CSDN:https://blog.csdn.net/ZipingPan 。 参考: 芯

    2024年04月15日
    浏览(27)
  • FPGA(5)数码管静态显示与动态显示

    目录 一、数码管静态显示 二、数码管动态显示 1、变量定义 2、定时(60us) 3、动态显示 代码 FPGA的数码管有4位,8段 。( 位和段都是共阳,即低电平有效 )     位选的4位(二进制):分别为第1、2、3、4位数码管。 段选的8位(二进制):分别为第h、g、f、e、d、c、b、a段

    2023年04月12日
    浏览(33)
  • 矩阵键盘控制数码管显示数字

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 编程实现功能要求:开机黑屏;按下任意按键后,数码管上显示该键的键号(0~F);若没有新键按下,维持前次按键结果。 代码如下(示例): 使用 proteus8.13 本次实验不是特别难,我所做的也只是一种方法而

    2024年02月13日
    浏览(25)
  • [FPGA 学习记录] 数码管静态显示

    数码管静态显示 在我们的许多项目设计当中,我们通常需要一些显示设备来显示我们需要的信息。我们可以选择的显示设备有很多,而我们的数码管就是使用最多、最简单的显示设备之一。数码管它是一种半导体发光器件,它具有响应时间短、体积小、重量轻、寿命长的优点

    2024年02月03日
    浏览(40)
  • [FPGA 学习记录] 数码管动态显示

    数码管动态显示 在上一小节当中,我们对数码管的静态显示做了一个详细的讲解;但是如果单单只掌握数码管的静态显示这种显示方式是远远不够的,因为数码管的静态显示当中,被选中的数码位它们显示的内容都是相同的,这种显示方式在我们的实际应用当中显然是不合适

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包