一、项目背景与目标
74HC47 是一种 IC 器件,它对一个 BCD 输入进行译码,并驱动 7 段显示器。当然,除了译码和段驱动的功能,74HC47 还有很多其他的功能。我们基于 74HC47 的译码和段驱动的功能,系统以 4-bit 输入 bcd[3:0] 为数据源,输出 段选信号 seg[7:0](ag + dp)与 位选信号 F 的稳定显示,并进一步扩展到 四位数码管的位选控制/动态扫描显示。dig[3:0],实现数码管对 0
二、硬件说明
本项目基于 Tang Nano 9K FPGA 开发板(GW1NR-9 系列器件)进行验证,主要使用外接四位七段数码管(带 dp)SR420561K作为显示端,并通过拨码开关提供 4-bit 输入bcd[3:0]。由于板载可用的按键/拨码资源有限,位选控制不再通过外部输入动态设置,而是在顶层模块中对显示数据与位选策略进行静态配置:直接预置待显示的数值,并由顶层逻辑生成对应的位选(dig)与段选(seg)信号用于驱动数码管显示。
1. Tang Nano 9K FPGA 开发板(GW1NR-9 系列器件)
2. 数码管 SR420561K
引脚如图所示(正面朝自己,小数点在下方)。a、b、c、d、e、f、g、dp 为段引脚,1、2、3、4 分别表示四个数码管的位。
数码管采用'段选 + 位选'结构:
seg[7:0]:8 条段选线,通常对应 a,b,c,d,e,f,g,dp(dp 为小数点)
dig[3:0]:4 条位选线,用于选通第 0~3 位数码管
数码管为共阳极,低电平有效。
段选 seg:0 点亮,1 熄灭(active-low)
位选 dig:0 选通该位,1 关闭该位(active-low)
3. IO 电气约束(.cst 的意义)
IO_LOC "dig[3]"30; IO_PORT "dig[3]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "dig[2]"33; IO_PORT "dig[2]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "dig[1]"34; IO_PORT "dig[1]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "dig[0]"40; IO_PORT "dig[0]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "seg[7]"38; IO_PORT "seg[7]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "seg[6]"37; IO_PORT "seg[6]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "seg[5]"36; IO_PORT "seg[5]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "seg[4]"39; IO_PORT "seg[4]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "seg[3]"25; IO_PORT "seg[3]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "seg[2]"26; IO_PORT "seg[2]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "seg[1]"27; IO_PORT "seg[1]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "seg[0]"28; IO_PORT "seg[0]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8 BANK_VCCIO=3.3; IO_LOC "sw[3]"74; IO_PORT "sw[3]" IO_TYPE=LVCMOS33 PULL_MODE=DOWN BANK_VCCIO=3.3; IO_LOC "sw[2]"73; IO_PORT "sw[2]" IO_TYPE=LVCMOS33 PULL_MODE=DOWN BANK_VCCIO=3.3; IO_LOC "sw[1]"72; IO_PORT "sw[1]" IO_TYPE=LVCMOS33 PULL_MODE=DOWN BANK_VCCIO=3.3; IO_LOC "sw[0]"71; IO_PORT "sw[0]" IO_TYPE=LVCMOS33 PULL_MODE=DOWN BANK_VCCIO=3.3;


