3

我只是在研究一些 VHDL 代码,对于一个常量的初始化,它说如下:

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

我以前从未见过这种定义。有人知道这如何转换为十进制的普通数字吗?

谢谢!

4

2 回答 2

5

要进一步扩展(如果您有 VHDL LRM,您可以阅读第 13.4.2 节中的详细信息),您可以在第一个之前放置任何基数(包括 2 到 16 之间),#在第二个之后放置一个指数#。您还可以将_s 放入单独的数字组中。

指数始终以 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
于 2010-07-14T17:04:56.580 回答
4

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

于 2010-07-14T16:31:02.500 回答