我正在研究一些VHDL代码,并且对于常量的初始化,它说:
constant address: integer := 16#8E#;
我以前从未见过这种定义。有人知道这是如何翻译的 到十进制的普通数字?
谢谢!
答案 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#
。一旦你知道这一点,获得十进制版本应该很容易。