数码管的显示原理及其实现方式

描述

在数字FPGA电路中,作为入门级别的外设除LED灯外,数码管算是使用频率最多、应用范围最广的一个核心集成外设了,因此学习数码管的使用非常有必要,下面一起来看看数码管的显示原理及其实现方式吧!

1. 数码管显示原理

数码管是电子设计中常用的外设设备之一,用来显示一些数据数值。常见的数码管有单个的以及多个共用一起的,那么首先由最简单的单个数码管的原理介绍,方便大家的理解。如下图a所示:

Verilog

图a单个数码管内部结构

这就是一个常见的单个数码管内部的结构造型,可以理解成7个长方形的LED小灯组成,由这些小灯的亮灭状况来组成数码管显示的不同数值,下面我以手绘图展示几个数字的情况,大家应该能更清楚直观的明白其工作原理,如下图b所示:

Verilog

图b显示数字024

这里是三个单独的数码管,分别显示数字0、2、4,所以数码管的原理可以简单的理解为点亮小灯的组合排列即可(具体内部电路的可以参考后面的附录,因为其不属于数字电路的内容,故放在附录中),明白了数码管的原理那么再来实现这部分的操作就很简单啦,下面就一起具体看看是如何实现的吧。

2. 数码管显示部分的程序实现

在日常生活中灯的亮灭是通过开关来进行控制,开可以理解为一个高电平的指令,关则相反,而在数字电路中,逻辑电平高低分别用1和0来进行表示,因此要实现点亮数码管的功能,也就可以通过0和1来进行控制a~g这七个小灯,比如让数码管显示1那么只需要b、c这两个小灯点亮就可以了,那么下面就来实现数码管显示部分的程序,使用的Verilog语言:

module    one_digit(
    input    [3:0]    data,
    output    [7:0]    seg
);

reg        [7:0]    seg;

always @(data) begin
    case(data)
        4'h0:seg = 8'b11000000;
        4'h1:seg = 8'b11111001;
        4'h2:seg = 8'b10100100;
        4'h3:seg = 8'b10110000;
        4'h5:seg = 8'b10010010;
        4'h4:seg = 8'b10011001;
        4'h6:seg = 8'b10000010;
        4'h7:seg = 8'b11111000;
        4'h8:seg = 8'b10000000;
        4'h9:seg = 8'b10010000;
        4'ha:seg = 8'b10001000;
        4'hb:seg = 8'b10000011;
        4'hc:seg = 8'b11000110;
        4'hd:seg = 8'b10100001;
        4'he:seg = 8'b10000110;
        4'hf:seg = 8'b10111111;
    endcase
end

endmodule

以上就是基于的是LUT查找表的原理所写的单个数码管显示的程序。

3. 数码管程序的验证

当写完一部分语法验证没有错误、编译能够成功的程序后,下面要做的就是核心的功能验证,那么对于上面的数码管程序如何进行验证呢?

对于FPGA设计的验证来说,常见的验证方式有两种:a.仿真验证b.下板验证,当身边没有合适硬件板卡的时候,仿真验证往往是不错的选择,这个时候借助一些EDA工具,可以方便的验证好设计的程序逻辑功能是否正确,Modelsim就是这样一款便于仿真验证的工具,当然进行仿真验证的时候也需要进行激励的输入(编写一部分代码),下面对这个数码管的程序使用仿真验证的方式看看效果吧,如下图c所示:

Verilog

图c数码管仿真结果

可以从仿真波形的高低判断出对应的数码管内部LED小灯的亮灭情况,由此排列组合推断出实际的数码管显示情况,以此作为仿真验证判断的依据,下面给出仿真验证的程序:

`timescale      1ns/1ns

 

module TB_one_dight;

 

reg         [3:0]data;

wire[7:0]seg         ;

 

one_digituut(

       data,

       seg

);    

 

initial begin

       data=     0;

       #100;

       repeat(16)begin

              data=     data+     1;

              #100;

       end

       $stop;

end

 

endmodule

至于实物验证的部分的话,建议结合相关的硬件板块配套例程来进行学习验证,这里就不做板卡推荐了,FPGA板卡以实物配套为文档教程为准。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分