用VHDL语言在EDA板上使用数码管显示数字
使用板如下,是8管脚的数码管:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210426201610915.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTk5OTM3MQ==,size_16,color_FFFFFF,t_70)
如图所示,有八个输入: 因此在定义实体的时候需要有八个输出:
ENTITY seg7 IS
PORT( bcd: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
a,b,c,d,e,f,g,h: OUT STD_LOGIC);
END seg7;
取不同名字是为了方便对应输入 然后是最重要的一点了,哪个数码管对应哪个位置,经过总结,我得出了结论,如下: 什么意思呢,比如说想让管脚1亮,则可以令输出等于10000000,管脚2亮则输出为01000000,管脚号代表的是管脚在输出序列中的顺序: 因此可得: 0:11111100 1:01100000 2:11011010 3:11110010 4:01100110 5:10110110 6:10111110 7:11100000 8:11111110 9:11110110 只要按顺序从A输入到H输入输入如上序列,则可以显示1~9。 根据这一点,可以写出代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY seg7 IS
PORT( bcd: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
a,b,c,d,e,f,g,h: OUT STD_LOGIC);
END seg7;
ARCHITECTURE one OF seg7 IS
SIGNAL dout: STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
WITH bcd SELECT
dout |