VHDL常量初始化

时间:2010-07-14 16:10:44

标签: vhdl

我正在研究一些VHDL代码,并且对于常量的初始化,它说:

constant address: integer := 16#8E#;

我以前从未见过这种定义。有人知道这是如何翻译的 到十进制的普通数字?

谢谢!

2 个答案:

答案 0 :(得分:5)

要进一步扩展(如果你有VHDL LRM,你可以阅读第13.4.2节中的血腥细节)你可以在第一个#之前放置任何基数(在2和16之间)和指数之后的指数第二个#。您还可以将_放入单独的数字集中。

指数始终以10为基数表示,不能为负数。 示例(VHDL突出显示留下了一些不足之处!)

entity test_numbers is
end entity test_numbers;
architecture a1 of test_numbers is
begin 
    process is
    begin  -- process
    report integer'image(16#FF#);  -- 255
    report integer'image(10#1_000#);  -- 1000
    report integer'image(10#1#e3);  -- 1000 another way
    report integer'image(2#1#e10);  -- 1024
    report integer'image(4#100#);  -- 16
    wait;
    end process;
end architecture a1;

报告:

# Loading work.test_numbers(a1)
# ** Note: 255
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
# ** Note: 1000
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
# ** Note: 1000
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
# ** Note: 1024
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers
# ** Note: 16
#    Time: 0 ns  Iteration: 0  Instance: /test_numbers

答案 1 :(得分:4)

16#8E#表示基数为16的8E(即十六进制)。对于二进制文件,您可以为同一个数字编写2#10001110#。一旦你知道这一点,获得十进制版本应该很容易。