FPGA设计开发(基础课题):七段数码管设计

一、设计目的

FPGA驱动七段数码管实现十六进制计数显示。

二、设计原理

七段数码管分共阳极与共阴极两种。共阳极数码管其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极数码管则与之相反,它是将发光二极管的阴极短接后作为公共阴极,当驱动信号为高电平、公共阴极接低电平时,才能发光。

上图为共阳极数码管和共阴极数码管的内部结构图

用七段数码管除了可以显示0~9的阿拉伯数字外,还可以显示一些英语字母。下表是常见的字母与7段显示关系(共阴极数码管)。

  段

字母

a

b

c

d

e

f

g

A

0

0

0

1

0

0

0

B

1

1

0

0

0

0

0

C

0

1

1

0

0

0

1

D

1

0

0

0

0

1

0

E

0

1

1

0

0

0

0

F

0

1

1

1

0

0

0

H

1

0

0

1

0

0

0

三、设计内容

编写一个0~F轮换显示的电路(注意:选用实验箱中的共阳数码管DP1A,FPGA上P25引脚连接50MHz时钟。实验时为了便于观察,要将50MHz时钟经过分频得到1Hz时钟)。LED、时钟与FPGA的引脚连接如下表所示。

芯片引脚

开发平台模块

AE13

HEX 1A

AF13

HEX 1B

AD12

HEX 1C

AE12

HEX 1D

AA12

HEX 1E

Y12

HEX 1F

V11

HEX 1G

P25

Clk(50MHz)

四、设计结果

1、七段数码管源程序:

module div(clk,smg);

input clk;

output [6:0]smg;

reg [25:0] counter;

reg [6:0]smg;

reg [4:0]count;

always @(posedge clk)

begin

if(counter==50000000) counter <= 0;

else counter <= counter+1;

end

always @(posedge clk)

begin

if(count==17)

count<=0;

else if(counter==50000000) count<=count+1;

end

always @(posedge clk)

begin

if(count==1) smg<=7'b0000001;

else if(count==2) smg<=7'b1001111;

else if(count==3) smg<=7'b0010010;

else if(count==4) smg<=7'b0000110;

else if(count==5) smg<=7'b1001100;

else if(count==6) smg<=7'b0100100;

else if(count==7) smg<=7'b0100000;

else if(count==8)smg<=7'b0001111;

else if(count==9)smg<=7'b0000000;

else if(count==10)smg<=7'b0000100;

else if(count==11)smg<=7'b0001000;

else if(count==12)smg<=7'b1100000;

else if(count==13)smg<=7'b0110001;

else if(count==14)smg<=7'b1000010;

else if(count==15)smg<=7'b0110000;

else if(count==16)smg<=7'b0111000;

else smg<=7'b1111111;

end

endmodule

2、仿真波形图:

上图为6分频仿真数码管七段各位的结果。

上图为50M分频结果,由于仿真时钟波形不够显示50000000次时钟波形,所以数码管输出结果未显示出。

3、管脚约束:

 4、下载到试验箱上的结果:

上图为数码管从0~F轮换显示的结果,每隔一秒变换显示一次,同时也说明了时钟50MHz被成功分频为1Hz。

五、注意

约束管脚时将数码管高低位(a-g)约束反会导致编码错乱。

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clear Aurora

很高兴能够帮到你!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值