差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
altera_4seg [2017/05/31 13:36]
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路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号
 \\ \\
 ^信号 ​           ^引脚 ​           ^信号 ​             ^引脚 ​   ^    ^信号 ​           ^引脚 ​           ^信号 ​             ^引脚 ​   ^   
-|seg_data_1(0) ​  |M7              ​|seg_data_2(0) ​   |L14     ^ +|seg_data_1(0) ​  |J12              ​|seg_data_2(0) ​   |J9     ^ 
-|seg_data_1(1) ​  |M8              ​|seg_data_2(1) ​   |M13     ^ +|seg_data_1(1) ​  |H11              ​|seg_data_2(1) ​   |K14     ^ 
-|seg_data_1(2) ​  |M9              ​|seg_data_2(2) ​   |M14     ^ +|seg_data_1(2) ​  |H12              ​|seg_data_2(2) ​   |J11     ^ 
-|seg_data_1(3) ​  |M10             |seg_data_2(3) ​   |N14     ^ +|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|时钟分频]]。