您所在的位置:e-works首页 > 产品创新数字化(PLM) >

基于Verilog HDL的LED数码管的控制与仿真

发表时间:2011/8/31 刘涛 来源:e-works
首先介绍了LED数码管的基本特性与工作原理,给出了控制7断数码管的真值表及Verilog HDL程序,最后列出了系统的仿真结果并验证了程序的正确性。

1 引言

    LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

 LED数码管引脚

图1  LED数码管引脚

    LED数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为公共阴极。

    LED的输出光谱决定其发光颜色以及光辐射纯度,也反映出半导体材料的特性。常见管芯材料有磷化镓(GaP)、砷化镓(GaAs)、磷砷化镓(GaAsP)、氮化镓(GaN)等,其中氮化镓可发蓝光。发光颜色不仅与管芯材料有关,还与所掺杂质有关,因此用同一种管芯材料可以制成发出红、橙、黄、绿等不同颜色的数码管。其它颜色LED数码管的光谱曲线形状与之相似,仅入,值不同。LED数码管的产品中,以发红光、绿光的居多、这两种颜色也比较醒目。
     
    LED数码管等效于多只具有发光性能的PN结。当PN结导通时,依靠少数载流子的注人及随后的复合而辐射发光,其伏安特性与普通二极管相似。在正向导通之前,正向电流近似于零,笔段不发光。当电压超过开启电压时,电流就急剧上升,笔段发光。

2 Verilog HDL设计

    本系统使用的数码管如图1所示,使用共阴极接法,控制芯片输出7路信号控制数码管的亮灭。其中,输入信号为EN、A、B、C、D,其中EN为使能信号,A、B、C、D为数码管地址选择信号。系统的真值表如表1所示。

表1 LED数码管输入、输出真值表
LED数码管输入、输出真值表

 

    
    根据真值表设计的Verilog HDL代码如下:

module Decoder_7_seg(EN,D,C,B,A,a_,b_,c_,d_,e_,f_,g_);
input   EN;
input   D,C,B,A;
output  a_,b_,c_,d_,e_,f_,g_;
reg  a_,b_,c_,d_,e_,f_,g_;
always  @(EN or D or C or B or A)
begin
    if(EN == 1'b0)
    {a_,b_,c_,d_,e_,f_,g_} = 7'b0;
  else
    begin
      case({D,C,B,A})
        4'b0000 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b1111110;
        4'b0001 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0110000;
        4'b0010 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b1101101;
        4'b0011 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b1111001;
        4'b0100 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0110011;
        4'b0101 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b1011011;
        4'b0110 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0011111;
        4'b0111 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b1110000;
        4'b1000 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b1111111;
        4'b1001 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b1110011;
        4'b1010 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0001101;
        4'b1011 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0011001;
        4'b1100 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0100011;
        4'b1101 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b1001011;
        4'b1110 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0001111;
        4'b1111 :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0000000;
        default :  {a_,b_,c_,d_,e_,f_,g_} = 7'b0;
      endcase
    end
end
endmodule

3 系统仿真

    系统仿真的效果图如图2 所示: 

仿真波形图
图2 仿真波形图

    图 3为当输入为(D,C,B,A)=(1,1,1,0)的波形图,与真值表对照,发现仿真结果正确。

    图 4为当输入为(D,C,B,A)= (1,0,1,1)的波形图,与真值表对照,发现仿真结果正确。

    图 5为当输入为(D,C,B,A)= (1,0,0,1)的波形图,与真值表对照,发现仿真结果正确。


图3 输入为(D,C,B,A)=(1,1,1,0)的波形图

 


图4 输入为(D,C,B,A) 的波形图


图5 当输入为(D,C,B,A)= (1,0,0,1) 的波形图

4 结论

    从本文的例子可以看出,Verilog HDL进行设计最大的优点是其工艺无关性。这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。

本文为e-works原创投稿文章,未经e-works书面许可,任何人不得复制、转载、摘编等任何方式进行使用。如已是e-works授权合作伙伴,应在授权范围内使用。e-works内容合作伙伴申请热线:editor@e-works.net.cn tel:027-87592219/20/21。

责任编辑:黄菊锋