差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
7段数码管 [2016/06/06 11:07] anran [相关文档] |
7段数码管 [2020/09/10 22:21] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====7段数码管显示===== | + | [[7-seg_disp_verilog]] |
+ | |||
+ | ## 7段数码管显示 | ||
+ | |||
+ | ### 硬件平台 | ||
- | ====硬件平台==== | ||
------ | ------ | ||
- [[STEP-MXO2第一代]] | - [[STEP-MXO2第一代]] | ||
- [[STEP-Baseboard]] | - [[STEP-Baseboard]] | ||
- | ====设计要求==== | + | ### 设计要求 |
------ | ------ | ||
- 了解数码管显示的工作原理 | - 了解数码管显示的工作原理 | ||
行 13: | 行 17: | ||
- 掌握数码管动态显示,按秒实现0到9循环左移显示 | - 掌握数码管动态显示,按秒实现0到9循环左移显示 | ||
- | ====工作原理==== | + | ### 工作原理 |
------ | ------ | ||
- | ===八段数码管显示原理=== | + | ### 八段数码管显示原理 |
------ | ------ | ||
数码管是工程设计中使用很广的一种显示输出器件。一个8段数码管分别由a、b、c、d、e、f、g位段和表示小数点的dp位段组成。实际是由8个LED灯组成的,控制每个LED的点亮或熄灭实现数字显示。通常数码管分为共阳极数码管和共阴极数码管,结构如下图所示: | 数码管是工程设计中使用很广的一种显示输出器件。一个8段数码管分别由a、b、c、d、e、f、g位段和表示小数点的dp位段组成。实际是由8个LED灯组成的,控制每个LED的点亮或熄灭实现数字显示。通常数码管分为共阳极数码管和共阴极数码管,结构如下图所示: | ||
行 23: | 行 29: | ||
<WRAP centeralign> **图1 共阳极、共阴极数码管** </WRAP> | <WRAP centeralign> **图1 共阳极、共阴极数码管** </WRAP> | ||
- | 共阳8段数码管的信号端低电平有效,而共阳端接高电平有效。当共阳端接高电平时只要在各个位段上加上相应的低电平信号就可以使相应的位段发光。比如:要使a段发光,则在a段信号端加上低电平即可。共阴极的数码管则相反。 | + | 共阴8段数码管的信号端低电平有效,而共阳端接高电平有效。当共阳端接高电平时只要在各个位段上加上相应的低电平信号就可以使相应的位段发光。比如:要使a段发光,则在a段信号端加上低电平即可。共阴极的数码管则相反。 |
数码管有两种显示方式: | 数码管有两种显示方式: | ||
行 41: | 行 47: | ||
- | ===74HC595驱动原理=== | + | ### 74HC595驱动原理 |
------ | ------ | ||
从前面我们知道驱动一个4位数码管至少需要12根线,对于小脚丫FPGA的引脚资源来说还是很紧张的。因此在[[STEP-Baseboard]]实验平台上采用了74HC595来驱动数码管显示,这样可以有效的节约我们的管脚资源。 | 从前面我们知道驱动一个4位数码管至少需要12根线,对于小脚丫FPGA的引脚资源来说还是很紧张的。因此在[[STEP-Baseboard]]实验平台上采用了74HC595来驱动数码管显示,这样可以有效的节约我们的管脚资源。 | ||
行 57: | 行 64: | ||
一个4位数码管至少需要12根信号线控制显示,因此[[STEP-Baseboard]]上采用了两片74HC595级联来实现控制。单个74HC595芯片8根并行输出信号更新一次需要8个SH_CP信号周期的时间长度,所以需要16个SH_CP信号周期才能完成一位数码管的显示; | 一个4位数码管至少需要12根信号线控制显示,因此[[STEP-Baseboard]]上采用了两片74HC595级联来实现控制。单个74HC595芯片8根并行输出信号更新一次需要8个SH_CP信号周期的时间长度,所以需要16个SH_CP信号周期才能完成一位数码管的显示; | ||
- | 假如我们把每位数码管延时时间设为2.5ms(正好满足人眼暂留效应,看起来像是4位同时显示),对应16个SH_CP信号周期,则SH_CP信号周期应该为2.5ms/16 ≈ 156us,SH_CP信号的频率应该为1000000us/156us ≈ 6.4KHz,这样在程序设计的时候我们可以将SH_CP的控制信号(sclk_out)设置为6.4KHz所有。 | + | 假如我们把每位数码管延时时间设为2.5ms(正好满足人眼暂留效应,看起来像是4位同时显示),对应16个SH_CP信号周期,则SH_CP信号周期应该为2.5ms/16 ≈ 156us,SH_CP信号的频率应该为1000000us/156us ≈ 6.4KHz,这样在程序设计的时候我们可以将SH_CP的控制信号(sclk_out)设置为6.4KHz左右。 |
+ | |||
+ | ### 硬件连接 | ||
- | ====硬件连接==== | ||
------ | ------ | ||
根据上面[[STEP-Baseboard]]采用的4为数码馆结构图可以看到,加上数码管中间的冒号显示,我们需要14根信号线控制。通过两片74HC595级联驱动实现了3根串行总线控制16根并行总线输出,有效减少了引脚需求。具体硬件连接如下所述: | 根据上面[[STEP-Baseboard]]采用的4为数码馆结构图可以看到,加上数码管中间的冒号显示,我们需要14根信号线控制。通过两片74HC595级联驱动实现了3根串行总线控制16根并行总线输出,有效减少了引脚需求。具体硬件连接如下所述: | ||
行 81: | 行 89: | ||
- | ====代码设计==== | + | ### 代码设计 |
---- | ---- | ||
行 128: | 行 137: | ||
^ 管脚名称 | clk_in | rst_n_in | rclk_out | sclk_out | sdio_out | | ^ 管脚名称 | clk_in | rst_n_in | rclk_out | sclk_out | sdio_out | | ||
^ FPGA管脚 | C1 | B1 | M1 | N2 | K1 | | ^ FPGA管脚 | C1 | B1 | M1 | N2 | K1 | | ||
- | ====系统运行==== | + | |
+ | ### 系统运行 | ||
{{:系统运行1.jpg?300 |系统运行1}} | {{:系统运行1.jpg?300 |系统运行1}} | ||
行 135: | 行 145: | ||
{{:系统运行3.jpg?300|系统运行3}} | {{:系统运行3.jpg?300|系统运行3}} | ||
- | ====资源报告==== | + | |
+ | ### 资源报告 | ||
^ 资源 | 数量 | 比例 | 说明 | | ^ 资源 | 数量 | 比例 | 说明 | | ||
行 144: | 行 155: | ||
^ 时钟频率 | 25MHz | | | | ^ 时钟频率 | 25MHz | | | | ||
- | ====知识点==== | + | ### 知识点 |
* 时钟分频 | * 时钟分频 | ||
行 150: | 行 161: | ||
* 数码管动态显示 | * 数码管动态显示 | ||
- | ====参考文档==== | + | |
+ | ### 参考文档 | ||
* {{:machxo2familydatasheet.pdf|Lattice MachXO2数据手册}} | * {{:machxo2familydatasheet.pdf|Lattice MachXO2数据手册}} | ||
* {{:sn74hc595.pdf|74HC595数据手册}} | * {{:sn74hc595.pdf|74HC595数据手册}} | ||
- | ====相关文档==== | + | ### 相关文档 |
^ **文件名称** | **功能** | | ^ **文件名称** | **功能** | | ||
^ **[[DLED_DISP]].v** | **数码管显示** | | ^ **[[DLED_DISP]].v** | **数码管显示** | | ||
- | |||
- | |||
- | |||
- |