资源描述
姓名 学号 班级 座位号
FPGA实验指导及记录
实验三 基于FPGA的数码管动态扫描电路设计
1. 实验目的:
(1) 掌握FPGA工作的基本原理、FPGA硬件平台的使用;
(2) 熟悉7段数码管显示译码电路的设计。
(3) 掌握数码管动态扫描显示原理及动态扫描电路的设计。
2. 实验任务:利用FPGA硬件平台上的6位数码管动态显示计数器输出数据。
3. 电路设计
(1) 顶层电路
由分频模块fre_div,计数器模块counter100,译码显示模块diaplay构成。分频模块fre_div将可将实验平台晶体振荡器提供的50MHz时钟信号分频,输出500Hz,1KHz及 1Hz三种信号备用,conter100模块实现模100计数功能,display模块为数码管动态显示模块,实现计数数字在6位数码管上的动态显示。
(2) 分频器模块fre_div
该模块已经设计完成,存放在F盘502文件夹里,使用时请自行拷贝至当前工程文件夹,并按设计需要选择合适的输出。
(3) 计数器模块counter100
该计数器模块实现模100计数。此处同学们应掌握数据总线的画法。
(4) 译码显示模块display
该模块由counter6模块,dig_select模块,seg_select模块以及decoder模块构成,请同学们自行完成该模块总体设计,当display模块的输入信号scanclk频率为1KHz时,数码管扫描周期为36ms,每次扫描每位数码管显示时长6ms。各子模块设计思路如下。
a) counter6模块
该模块需使用74390设计一个模6的计数器。请在空白处做预设计,画出电路图。
b) dig_select模块
该模块用于选择6位数码管中的某一位显示相应字形。74138为3-8译码器,功能表见附录。
c) decoder模块
可将4位8421BCD码译为七段码,驱动数码管以十进制数形式显示数字。7448为共阴极数码管译码器,功能表见附录。
d) seg_select模块
该模块功能是从6组4bit信号中选择一组作输出。(注意自行添加输入输出端)
上图中seclect1bit模块可使用74151设计,其功能为从6位输入数据中选择1位输出。请大家在下面空白处完成预设计。
4. 引脚配置(列出输入输出引脚号)
引脚名
引脚号
引脚名
引脚号
输入节点
输出节点
5. 实验结果(实验结果,如:波形结果、硬件平台结果;实验过程中的重点、难点、遇到的问题及解决方法等)
6. 附录:(附录部分不用随实验报告上交)
(1) 数码管原理。
LED数码管也称为半导体数码管,是目前数字电路中最常用的显示器件之一,它以发光二极管作为笔段,分为共阴和共阳两种,其差别在于共阴数码管的八段发光二极管的阴极都连在一起,而阳极对应各段分别控制;共阳数码管则是八段发光二极管的阳极连在一起,阴极各段可分别控制,具体见下图。
(a)引脚图 (b)共阴极 (c)共阳极
段数码管引脚图
引脚图中的3脚和8脚是公共端com,连在一起,7段数码管加上一个小数点共计8段,因此对数码管进行编码正好是一个字节(8位二进制)。以共阴数码管为例,公共端接GND,其余各段高电平点亮,则数码编码见表。
显示
dp
g
f
e
d
c
b
a
0
0
0
1
1
1
1
1
1
1
0
0
0
0
0
1
1
0
2
0
1
0
1
1
0
1
1
3
0
1
0
0
1
1
1
1
4
0
1
0
1
0
1
0
1
5
0
1
0
1
1
1
0
1
6
0
1
1
1
1
1
0
1
7
0
0
0
0
0
1
1
1
8
0
1
1
1
1
1
1
1
9
0
1
0
1
1
1
1
1
A
0
1
1
1
0
1
1
1
B
0
1
1
1
1
1
0
0
C
0
0
1
1
1
0
0
1
D
0
1
0
1
1
1
1
0
E
0
1
1
1
1
0
0
1
F
0
1
1
1
0
0
0
1
数码管有两种显示方式:
Ø 静态显示
每个数码管的8个段选信号(a~g、dp)都必须接一个8位数据线来保持显示的字形。当送入一次字型码后,显示可一直保持,直到送入新的字形码为止。优点是占用CPU时间少,便于控制显示。缺点是占用I/O口资源太多,如有8个数码管,就需要8×8=64个I/O口。
Ø 动态显示
将所有数码管的8个显示笔划的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。如有8个数码管,则一共需要16个I/O口(8个段选、8个位选),见图2-5-2,其中k1~k8是位选信号。当输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开(以共阴数目管为例,低电平选中相应数码管),该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。所谓动态扫描显示即轮流向各位数码管送出字型码,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,利用发光二极管的余辉和人眼视觉暂留作用,使人感觉各位数码管同时在显示。动态显示的亮度比静态显示要差一些,但是能够节省大量的I/O端口,而且功耗更低。
8位数码动态扫描显示电路
(2) 7448译码器
7448功能表
序 号
输 入
输 出
LT
RBI
D
C
B
A
BI/RBO
Qa
Qb
Qc
Qd
Qe
Qf
Qg
字形
0
1
1
0
0
0
0
1
1
1
1
1
1
1
0
□
1
1
X
0
0
0
1
1
0
1
1
0
0
0
0
1
2
1
X
0
0
1
0
1
1
1
0
1
1
0
1
2
3
1
X
0
0
1
1
1
1
1
1
1
0
0
1
3
4
1
X
0
1
0
0
1
0
1
1
0
0
1
1
4
5
1
X
0
1
0
1
1
1
0
1
1
0
1
1
5
6
1
X
0
1
1
0
1
0
0
1
1
1
1
1
6
7
1
X
0
1
1
1
1
1
1
1
0
0
0
0
7
8
1
X
1
0
0
0
1
1
1
1
1
1
1
1
8
9
1
X
1
0
0
1
1
1
1
1
0
0
1
1
9
10
1
X
1
0
1
0
1
0
0
0
1
1
0
1
11
1
X
1
0
1
1
1
0
0
1
1
0
0
1
12
1
X
1
1
0
0
1
0
1
0
0
0
1
1
13
1
X
1
1
0
1
1
1
0
0
1
0
1
1
14
1
X
1
1
1
0
1
0
0
0
1
1
1
1
匕
15
1
X
1
1
1
1
1
0
0
0
0
0
0
0
灭
X
X
X
X
X
X
X
0
0
0
0
0
0
0
0
灭
脉冲X
1
0
0
0
0
0
1
0
0
0
0
0
0
0
灭
灯测试
0
X
X
X
X
X
1
1
1
1
1
1
1
1
日
(3) 3-8译码器
74138功能表
7
展开阅读全文