差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
altera_4seg [2017/05/31 13:33] group002 创建 |
altera_4seg [2017/07/14 15:48] (当前版本) zhijun [Verilog代码] |
||
---|---|---|---|
行 11: | 行 11: | ||
共阴8段数码管的信号端低电平有效,而共阳端接高电平有效。当共阳端接高电平时只要在各个位段上加上相应的低电平信号就可以使相应的位段发光。比如:要使a段发光,则在a段信号端加上低电平即可。共阴极的数码管则相反。 | 共阴8段数码管的信号端低电平有效,而共阳端接高电平有效。当共阳端接高电平时只要在各个位段上加上相应的低电平信号就可以使相应的位段发光。比如:要使a段发光,则在a段信号端加上低电平即可。共阴极的数码管则相反。 | ||
- | 可以看到数码管的控制和LED的控制有相似之处,在[[STEP-MXO2第二代|小脚丫STEP-MXO2 V2]]开发板上有两位共阴极数码管, | + | 可以看到数码管的控制和LED的控制有相似之处,在[[STEP-Max10|小脚丫STEP-Max10]]开发板上有两位共阴极数码管, |
\\ | \\ | ||
{{ :undefined:7segment.png |}} | {{ :undefined:7segment.png |}} | ||
\\ | \\ | ||
- | 数码管所有的信号都连接到FPGA的管脚,作为输出信号控制。FPGA只要输出这些信号就能够控制数码管的那一段LED亮或者灭。这样我们可以通过开关来控制FPGA的输出,和[[3. 3-8译码器]]实验一样,通过组合逻辑的输出来控制数码管显示数字,下面是数码管显示的表格 | + | 数码管所有的信号都连接到FPGA的管脚,作为输出信号控制。FPGA只要输出这些信号就能够控制数码管的那一段LED亮或者灭。这样我们可以通过开关来控制FPGA的输出,和[[Altera_3ymq|3-8译码器]]实验一样,通过组合逻辑的输出来控制数码管显示数字,下面是数码管显示的表格: |
\\ | \\ | ||
{{ ::timg.jpg |}} | {{ ::timg.jpg |}} | ||
行 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位输入做译码 | ||
行 82: | 行 82: | ||
\\ | \\ | ||
^信号 ^引脚 ^信号 ^引脚 ^ | ^信号 ^引脚 ^信号 ^引脚 ^ | ||
- | |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的存储器来初始化。 | ||
行 104: | 行 103: | ||
====小结==== | ====小结==== | ||
------ | ------ | ||
- | 了解了小脚丫数码管的工作原理,在下个实验我们将进行到有趣的时序逻辑。首先是如何控制[[5. 时钟分频|时钟分频]]。 | + | 了解了小脚丫数码管的工作原理,在下个实验我们将进行到有趣的时序逻辑。首先是如何控制[[Altera_5clk|时钟分频]]。 |