差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
7-seg_disp_verilog [2021/10/08 21:36] gongyu [3. Verilog代码] |
7-seg_disp_verilog [2022/03/30 11:13] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ## 数码管显示 | + | ## 2个7段数码管显示 |
- 了解数码管显示的工作原理 | - 了解数码管显示的工作原理 | ||
- 加强对组合逻辑中的译码器的理解 | - 加强对组合逻辑中的译码器的理解 | ||
行 5: | 行 5: | ||
### 1. 知识点 | ### 1. 知识点 | ||
+ | {{ :7segled.gif |}} | ||
数码管是工程设计中使用很广的一种显示输出器件。一个7段数码管(如果包括右下的小点可以认为是8段)分别由a、b、c、d、e、f、g位段和表示小数点的dp位段组成。实际是由8个LED灯组成的,控制每个LED的点亮或熄灭实现数字显示。通常数码管分为共阳极数码管和共阴极数码管,结构如下图所示: | 数码管是工程设计中使用很广的一种显示输出器件。一个7段数码管(如果包括右下的小点可以认为是8段)分别由a、b、c、d、e、f、g位段和表示小数点的dp位段组成。实际是由8个LED灯组成的,控制每个LED的点亮或熄灭实现数字显示。通常数码管分为共阳极数码管和共阴极数码管,结构如下图所示: | ||
行 22: | 行 23: | ||
这其实是一个4-16译码器 | 这其实是一个4-16译码器 | ||
- | ### 2. 原理图 | + | ### 2. CircuitJS中的电路仿真 |
+ | {{ :7seg-js.mp4 |}} <WRAP centeralign> 在CircuitJS中仿真的效果 </WRAP> | ||
+ | |||
+ | |||
+ | ### 3. 原理图 | ||
在本实验中我们使用了核心板上的4个开关SW和4个按键KEY来分别控制2个数码管的显示,通过开关和按键的组合得到不同的显示数值。 | 在本实验中我们使用了核心板上的4个开关SW和4个按键KEY来分别控制2个数码管的显示,通过开关和按键的组合得到不同的显示数值。 | ||
行 31: | 行 36: | ||
{{drawio>7_seg_x2_block.png}} | {{drawio>7_seg_x2_block.png}} | ||
- | ### 3. Verilog代码 | + | ### 4. Verilog代码 |
如果我们想数码管能显示16进制可以全译码,如果只想显示数字,可以只利用其中10个译码,下面看看如果用Verilog来实现。 | 如果我们想数码管能显示16进制可以全译码,如果只想显示数字,可以只利用其中10个译码,下面看看如果用Verilog来实现。 | ||
行 85: | 行 90: | ||
注意最后的两句连续赋值语句的不同,原因在于4个按键和4个开关的缺省状态正好相反,所以对于第一个数码管的4个输入(对应于4个按键),需要先反相,相当于加了4个1位的反相器。 | 注意最后的两句连续赋值语句的不同,原因在于4个按键和4个开关的缺省状态正好相反,所以对于第一个数码管的4个输入(对应于4个按键),需要先反相,相当于加了4个1位的反相器。 | ||
- | ### 4. 管脚分配 | + | 在Web IDE里面的效果如下: |
+ | {{ :7_seg_verilog.png |}} <WRAP centeralign> 在Web IDE中的Verilog代码窗口 </WRAP> | ||
+ | |||
+ | |||
+ | ### 5. 管脚分配 | ||
利用小脚丫上的4路按键(key)和4路开关(sw),作为输入信号分别控制2个数码管的显示输出。在Web IDE中的管脚分配见如下图: | 利用小脚丫上的4路按键(key)和4路开关(sw),作为输入信号分别控制2个数码管的显示输出。在Web IDE中的管脚分配见如下图: | ||
{{ :7_seg_pinout.png |}} <WRAP centeralign>在Web IDE中2个数码管的控制管脚分配 </WRAP> | {{ :7_seg_pinout.png |}} <WRAP centeralign>在Web IDE中2个数码管的控制管脚分配 </WRAP> | ||
行 91: | 行 100: | ||
- | ### 5. 功能验证 | + | ### 6. 功能验证 |
- | + | 将生成的JED文件发送到小脚丫FPGA的STEPFPGA盘中,即可完成对其编程,编程后的效果如下: | |
- | ### 6. 扩展使用 | + | |
- | 小脚丫FPGA核心板对外的扩展连接只有36根IO,采用了132BGA封装的芯片,有足够的管脚用于核心板上器件的使用,因此核心板上的2个7段数码管采用了FPGA的管脚直接连接的独立显示模式。但大多数应用场景需要用较少的IO管脚也能够驱动多个数码管,比如4个、6个乃至10个,如何才能实现?那就需要扫描显示的模式,即所有数码管共用8根数据信号线,各自再有1根选通信号线,采用分时的方式循环选通各位数码管,比如驱动4个数码管仅需要8+4 = 12根信号线进行显示。利用人眼的“视觉暂留效应”,可以使数码管显示看起来是同时显示。这种扫描显示模式实现起来相对比较复杂,但是节约信号线的使用。 | + | |
- | 另外我们还可以使用专用的数码管驱动器件来实现,比如74HC595串行变并行的芯片、南京钦恒公司推出的[[http://www.wch.cn/products/CH450.html|数码管显示驱动芯片CH450]]等。 | + | |
+ | ### 7. 扩展使用 | ||
+ | 小脚丫FPGA核心板对外的扩展连接只需要36根IO,但采用了132BGA封装的芯片,在核心板上有足够的管脚用于核心板上几个器件(LED、数码管、开关、按键)的使用,因此核心板上的2个7段数码管采用了FPGA的管脚直接连接的独立显示模式。 | ||
+ | 但大多数应用场景需要用较少的IO管脚也能够驱动多个数码管,比如4个、6个乃至10个,如何才能实现?那就需要扫描显示的模式,即所有数码管共用8根数据信号线,各自再有1根选通信号线,采用分时的方式循环选通各位数码管,比如驱动4个数码管仅需要8+4 = 12根信号线进行显示。利用人眼的“视觉暂留效应”,可以使数码管显示看起来是同时显示。这种扫描显示模式实现起来相对比较复杂,但是节约信号线的使用。这种显示方式会在后面掌握了时序逻辑的基本概念以后再进行实现。 | ||
+ | 在实际的产品中,我们还可以使用专用的数码管驱动器件来实现,比如74HC595串行变并行的芯片、南京沁恒公司推出的[[http://www.wch.cn/products/CH450.html|数码管显示驱动芯片CH450]]等。 |