首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VHDL将8位数转换为十六进制

VHDL将8位数转换为十六进制
EN

Stack Overflow用户
提问于 2017-10-27 16:28:17
回答 1查看 3.1K关注 0票数 1

我对VHDL很陌生,我很难从8个开关中获得输入,以创建一个8位数,我可以将其转换为十六进制,在两个7段显示上显示。

这是我目前的代码,我不知道从哪里开始,他们的代码就不多了。

代码语言:javascript
运行
复制
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和计算机架构。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-29 12:36:09

不能将十六进制数字直接分配给七个段显示。你需要用解码器来完成这个任务。从VHDL代码十六进制到7段显示转换器.复制代码

代码语言:javascript
运行
复制
    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段输入端口。

代码语言:javascript
运行
复制
seg1 : to_7seg port map(A(3 downto 0),HEX0);
seg2 : to_7seg port map(A(7 downto 4),HEX1);

而且HEX不是6位,它应该是7位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46979643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档