差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
altera_4seg [2017/05/31 13:37] group002 |
altera_4seg [2022/11/06 23:06] (当前版本) zhijun [2. Verilog代码] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ======数码管显示====== | + | ## 数码管显示 |
本实验将会让你熟悉小脚丫上最后一种有意思的外设七段数码管。 | 本实验将会让你熟悉小脚丫上最后一种有意思的外设七段数码管。 | ||
\\ | \\ | ||
- | ====硬件说明==== | + | |
- | ------- | + | ### 1. 硬件说明 |
数码管是工程设计中使用很广的一种显示输出器件。一个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译码器,如果我们想数码管能显示16进制可以全译码,如果只想显示数字,可以只利用其中10个译码,下面看看如果用Verilog来实现。 | 这其实是一个4-16译码器,如果我们想数码管能显示16进制可以全译码,如果只想显示数字,可以只利用其中10个译码,下面看看如果用Verilog来实现。 | ||
- | ====Verilog代码==== | + | ### 2. Verilog代码 |
- | ------ | + | |
<code verilog> | <code verilog> | ||
行 44: | 行 44: | ||
// Module Function:数码管的译码模块初始化 | // Module Function:数码管的译码模块初始化 | ||
- | module LED (seg_data_1,seg_data_2,seg_led_1,seg_led_2); | + | module segment (seg_data_1,seg_data_2,seg_led_1,seg_led_2); |
input [3:0] seg_data_1; //数码管需要显示0~9十个数字,所以最少需要4位输入做译码 | input [3:0] seg_data_1; //数码管需要显示0~9十个数字,所以最少需要4位输入做译码 | ||
行 75: | 行 75: | ||
</code> | </code> | ||
- | \\ | + | ### 3. 引脚分配 |
- | \\ | + | |
- | ====引脚分配==== | + | |
- | ------- | + | |
小脚丫上正好有4路按键和4路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号 | 小脚丫上正好有4路按键和4路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号 | ||
\\ | \\ | ||
行 86: | 行 84: | ||
|seg_data_1(2) |H12 |seg_data_2(2) |J11 ^ | |seg_data_1(2) |H12 |seg_data_2(2) |J11 ^ | ||
|seg_data_1(3) |H13 |seg_data_2(3) |J14 ^ | |seg_data_1(3) |H13 |seg_data_2(3) |J14 ^ | ||
- | \\ | ||
\\ | \\ | ||
^信号 ^引脚 ^信号 ^引脚 ^ | ^信号 ^引脚 ^信号 ^引脚 ^ | ||
- | |seg_led_1(0) |A10 |seg_led_2(0) |C12 ^ | + | |seg_led_1(0) |E1 |seg_led_2(0) |A3 ^ |
- | |seg_led_1(1) |C11 |seg_led_2(1) |B14 ^ | + | |seg_led_1(1) |D2 |seg_led_2(1) |A2 ^ |
- | |seg_led_1(2) |F2 |seg_led_2(2) |J1 ^ | + | |seg_led_1(2) |K2 |seg_led_2(2) |P2 ^ |
- | |seg_led_1(3) |E1 |seg_led_2(3) |H1 ^ | + | |seg_led_1(3) |J2 |seg_led_2(3) |P1 ^ |
- | |seg_led_1(4) |E2 |seg_led_2(4) |H2 ^ | + | |seg_led_1(4) |G2 |seg_led_2(4) |N1 ^ |
- | |seg_led_1(5) |A9 |seg_led_2(5) |B12 ^ | + | |seg_led_1(5) |F5 |seg_led_2(5) |C1 ^ |
- | |seg_led_1(6) |B9 |seg_led_2(6) |A11 ^ | + | |seg_led_1(6) |G5 |seg_led_2(6) |C2 ^ |
- | |seg_led_1(7) |F1 |seg_led_2(7) |K1 ^ | + | |seg_led_1(7) |L1 |seg_led_2(7) |R2 ^ |
- | |seg_led_1(8) |C9 |seg_led_2(8) |A12 ^ | + | |seg_led_1(8) |E2 |seg_led_2(8) |B1 ^ |
\\ | \\ | ||
配置好以后编译下载程序。这样可以通过按键或者开关来控制相应的数码管显示数字。如果你想显示16进制的AbCDeF在数码管,可以试试修改程序。这时候一定要定义一个16*9的存储器来初始化。 | 配置好以后编译下载程序。这样可以通过按键或者开关来控制相应的数码管显示数字。如果你想显示16进制的AbCDeF在数码管,可以试试修改程序。这时候一定要定义一个16*9的存储器来初始化。 | ||
\\ | \\ | ||
- | ====小结==== | + | ### 4. 小结 |
- | ------ | + | |
- | 了解了小脚丫数码管的工作原理,在下个实验我们将进行到有趣的时序逻辑。首先是如何控制[[5. 时钟分频|时钟分频]]。 | + | 了解了小脚丫数码管的工作原理,在下个实验我们将进行到有趣的时序逻辑。首先是如何控制[[Altera_5clk|时钟分频]]。 |