数码管驱动设计
AI summary
数码管驱动设计涉及设计背景、数码管分类、工作原理、设计要求、架构及实现等方面。设计要求包括驱动ZX-1板卡上的6个数码管显示特定值,并使用ISSP工具生成数据。工作原理说明了如何通过位选和输入数据驱动多个数码管显示,强调了切换频率的重要性。测试结果展示了逻辑实现和状态机实现的效果。
Last edited time
Sep 24, 2024 01:40 PM
Last edited by
Tags
Digital Tube Driver
Design Principles
Testing and Implementation
一:设计背景
常用显示设备:LED、数码管显示、VGA/DVI/HDMI接口、LCD1602/12864液晶显示屏、TFT显示屏、LED屏…
显示设备目的就是用于显示数据/图像,由于显示设备不一样,导致显示内容有所差异。
二:数码管分类(共阳/共阴极数码管)
数码管中a,b,c,d,e,f,g,h这8段属于发光二极管。
共阳极数码管:低点平点亮相对应的段,高电平熄灭。
共阴极数码管:高点平点亮相对应的段,低电平熄灭。
三:ZX-1板卡原理图
ZX-1板卡有6个数码管,且都为共阳极数码管,占用11个管脚(节约I/O资源)。
11个管脚包含8个段选(SEG0~SEG7),3个位选(SEL0~SEL2)。
四:数码管工作原理
- 驱动1个数码管显示
首先选择该数码管(打开当前该数码管的开关),然后给其显示数据的译码即可。
通用的译码数值范围16个:0/1/2/3/4/5/6/7/8/9和A/b/C/d/E/F。
- 驱动多个数码管显示(2个及以上)
- 假设数码管切换频率过快(50MHZ),会导致数码管显示不稳定(对应的段都会显示,且某一段特别亮,某一段特别暗)。
- 假设数码管切换频率过慢(1HZ),会导致数码管显示不稳定(现象类似于流水灯)。
- 一般数码管切换频率往往采用1KHZ(经验频率),其数码管显示比较稳定。
目的:使其两个数码管显示12字符。
人眼视觉暂留效果:>=20ms
- 驱动数码管所需输入数据
- 驱动1个数码管需要4位二进制数(0/1/2/3/4/5/6/7/8/9和A/b/C/d/E/F)。
- 驱动2个数码管需要8位二进制数(0/1/2/3/4/5/6/7/8/9和A/b/C/d/E/F)。
- 驱动6个数码管需要24位二进制数(0/1/2/3/4/5/6/7/8/9和A/b/C/d/E/F)。
…
- 24位输入数据对应6个数码管
注意:data_in[23:0] = 24’h123456;
数码管位选:SEL[2:0] | 输入24位数据:data_in[23:0] | 说明 |
sel=0:最左边数码管 | data_in[23:20]=4’h1 | sel=0:高位 |
sel=1 | data_in[19:16]=4’h2 | |
sel=2 | data_in[15:12]=4’h3 | |
sel=3 | data_in[11:8]=4’h4 | |
sel=4 | data_in[7:4]=4’h5 | |
sel=5:最右边数码管 | data_in[3:0]=4’h6 | sel=5:低位 |
- 数码管译码(共阳极)
总结:显示多个数码管时,首先位选需要采用1KHZ进行切换,当切换到某个数码管,将输入数据的某4位给到当前数码管,直到6个同时显示。对于数码管显示某些数据,由输入决定,显示的字符为通用的(0/1/2/3/4/5/6/7/8/9和A/b/C/d/E/F),所以只需译码即可。
五:设计要求
- 驱动ZX-1板卡上的6个数码管使其同时显示定值(24’h123456)。
- 用ISSP(板级调试工具)产生24位数据给到数码管显示。
- 当ISSP产生数据后将显示结果立刻更新在SignalTap II来观看。
六:设计架构
七:设计实现
数码管控制器实现
- 逻辑实现
具体完成代码实现。
- 状态机实现(3段式FSM)
八:测试结果
- 逻辑实现
- FSM实现
九:下板测试
采用两个板级调试工具(ISSP:源和探针 SignalTap II:在线逻辑分析仪)
在ISSP Editor上更改待显示的数据,更改完成后,会立刻将显示数据更新在SignalTap II上。
十:练习
- 完成上课内容
- 完成下述数码显示功能
Loading...