我对VHDL很陌生,我很难从8个开关中获得输入,以创建一个8位数,我可以将其转换为十六进制,在两个7段显示上显示。
这是我目前的代码,我不知道从哪里开始,他们的代码就不多了。
ENTITY swToHex IS
PORT (
SW : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
HEX : OUT STD_LOGIC_VECTOR(5 DOWNTO 0)
);
END swToHex;
ARCHITECTURE Structural OF swToHex IS
SIGNAL A : STD_LOGIC_VECTOR(7 downto 0);
BEGIN
A(7 downto 0) <= SW(7 downto 0);
END Structural;
任何帮助或资源都将被赞赏为Iv只是刚刚开始学习VHDL和计算机架构。
发布于 2017-10-29 12:36:09
不能将十六进制数字直接分配给七个段显示。你需要用解码器来完成这个任务。从VHDL代码十六进制到7段显示转换器.复制代码
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity to_7seg is
Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
seg7 : out STD_LOGIC_VECTOR (6 downto 0)
);
end to_7seg;
architecture Behavioral of to_7seg is
begin
--'a' corresponds to MSB of seg7 and 'g' corresponds to LSB of seg7.
process (A)
BEGIN
case A is
when "0000"=> seg7 <="0000001"; -- '0'
when "0001"=> seg7 <="1001111"; -- '1'
when "0010"=> seg7 <="0010010"; -- '2'
when "0011"=> seg7 <="0000110"; -- '3'
when "0100"=> seg7 <="1001100"; -- '4'
when "0101"=> seg7 <="0100100"; -- '5'
when "0110"=> seg7 <="0100000"; -- '6'
when "0111"=> seg7 <="0001111"; -- '7'
when "1000"=> seg7 <="0000000"; -- '8'
when "1001"=> seg7 <="0000100"; -- '9'
when "1010"=> seg7 <="0001000"; -- 'A'
when "1011"=> seg7 <="1100000"; -- 'b'
when "1100"=> seg7 <="0110001"; -- 'C'
when "1101"=> seg7 <="1000010"; -- 'd'
when "1110"=> seg7 <="0110000"; -- 'E'
when "1111"=> seg7 <="0111000"; -- 'F'
when others => NULL;
end case;
end process;
end Behavioral;
你有两个十六进制数字。因此,您需要实例化to_7seg实体两次。然后将这些模块的输出连接到FPGA板的7段输入端口。
seg1 : to_7seg port map(A(3 downto 0),HEX0);
seg2 : to_7seg port map(A(7 downto 4),HEX1);
而且HEX不是6位,它应该是7位。
https://stackoverflow.com/questions/46979643
复制相似问题