我只是在研究一些 VHDL 代码,对于一个常量的初始化,它说如下:
constant address: integer := 16#8E#;
我以前从未见过这种定义。有人知道这如何转换为十进制的普通数字吗?
谢谢!
我只是在研究一些 VHDL 代码,对于一个常量的初始化,它说如下:
constant address: integer := 16#8E#;
我以前从未见过这种定义。有人知道这如何转换为十进制的普通数字吗?
谢谢!
要进一步扩展(如果您有 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
16#8E#
表示8E
以 16 为基数(即十六进制)。对于二进制,您可以写入2#10001110#
相同的数字。一旦你知道了这一点,获得十进制版本应该很容易。