差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
7段数码管 [2016/07/02 14:06] anran [工作原理] |
7段数码管 [2023/07/31 09:17] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====7段数码管显示===== | + | ## 7段数码管显示 |
+ | |||
+ | ### 硬件平台 | ||
- | ====硬件平台==== | ||
- | ------ | ||
- [[STEP-MXO2第一代]] | - [[STEP-MXO2第一代]] | ||
- [[STEP-Baseboard]] | - [[STEP-Baseboard]] | ||
- | ====设计要求==== | + | ### 设计要求 |
- | ------ | + | |
- 了解数码管显示的工作原理 | - 了解数码管显示的工作原理 | ||
- 掌握Verilog语言设计数码管显示驱动 | - 掌握Verilog语言设计数码管显示驱动 | ||
行 13: | 行 13: | ||
- 掌握数码管动态显示,按秒实现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的点亮或熄灭实现数字显示。通常数码管分为共阳极数码管和共阴极数码管,结构如下图所示: | ||
行 41: | 行 40: | ||
- | ===74HC595驱动原理=== | + | ### 74HC595驱动原理 |
- | ------ | + | |
从前面我们知道驱动一个4位数码管至少需要12根线,对于小脚丫FPGA的引脚资源来说还是很紧张的。因此在[[STEP-Baseboard]]实验平台上采用了74HC595来驱动数码管显示,这样可以有效的节约我们的管脚资源。 | 从前面我们知道驱动一个4位数码管至少需要12根线,对于小脚丫FPGA的引脚资源来说还是很紧张的。因此在[[STEP-Baseboard]]实验平台上采用了74HC595来驱动数码管显示,这样可以有效的节约我们的管脚资源。 | ||
74HC595是较为常用的串行转并行的芯片,包括一个8位移位寄存器和一个存储器,三态缓冲输出。在最简单的情况下我们只需要控制3根引脚输入得到8根引脚并行输出信号。 | 74HC595是较为常用的串行转并行的芯片,包括一个8位移位寄存器和一个存储器,三态缓冲输出。在最简单的情况下我们只需要控制3根引脚输入得到8根引脚并行输出信号。 | ||
行 59: | 行 58: | ||
假如我们把每位数码管延时时间设为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: | 行 80: | ||
- | ====代码设计==== | + | ### 代码设计 |
- | ---- | + | |
{{ :数码管显示程序设计.jpg |数码管显示程序设计}} | {{ :数码管显示程序设计.jpg |数码管显示程序设计}} | ||
行 128: | 行 126: | ||
^ 管脚名称 | 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: | 行 134: | ||
{{:系统运行3.jpg?300|系统运行3}} | {{:系统运行3.jpg?300|系统运行3}} | ||
- | ====资源报告==== | + | |
+ | ### 资源报告 | ||
^ 资源 | 数量 | 比例 | 说明 | | ^ 资源 | 数量 | 比例 | 说明 | | ||
行 144: | 行 144: | ||
^ 时钟频率 | 25MHz | | | | ^ 时钟频率 | 25MHz | | | | ||
- | ====知识点==== | + | ### 知识点 |
* 时钟分频 | * 时钟分频 | ||
行 150: | 行 150: | ||
* 数码管动态显示 | * 数码管动态显示 | ||
- | ====参考文档==== | + | ### 参考文档 |
* {{:machxo2familydatasheet.pdf|Lattice MachXO2数据手册}} | * {{:machxo2familydatasheet.pdf|Lattice MachXO2数据手册}} | ||
* {{:sn74hc595.pdf|74HC595数据手册}} | * {{:sn74hc595.pdf|74HC595数据手册}} | ||
- | ====相关文档==== | + | ### 相关文档 |
^ **文件名称** | **功能** | | ^ **文件名称** | **功能** | | ||
^ **[[DLED_DISP]].v** | **数码管显示** | | ^ **[[DLED_DISP]].v** | **数码管显示** | | ||
- | |||
- | |||
- | |||