VHDL 相当于 Verilog“10'h234”
VHDL equivalent to Verilog "10'h234"
我只需要知道如何将常量值从 Verilog 转换为 VHDL。我想知道我是否仍然可以指示范围以及它是否是十六进制、八进制、二进制等,就像在 Verilog 中一样:
14'h1 -> 我不想输入类似 X"00000000000001" 的内容
谢谢!
constant my_const : std_logic_vector(13 downto 0) := std_logic_vector(to_unsigned(1, 14));
或
constant my_const : std_logic_vector(13 downto 0) := "00" & x"001";
答案取决于您使用的 VHDL 标准。
在VHDL 2008之前,十六进制常量只能直接表示二进制位数是4的倍数(一个十六进制半字节的长度)
x"0001"
是一个 16 位常量。
使用VHDL 2008,可以指定常量的位长:
x"0001"
仍然是一个 16 位常量,而 14x"0001"
是您想要的:一个 14 位常量。
如果您使用的是较早的标准,则必须像这样解决此限制:
std_logic_vector(resize("1", 14))
或 (0 => '1', others => '0')
我只需要知道如何将常量值从 Verilog 转换为 VHDL。我想知道我是否仍然可以指示范围以及它是否是十六进制、八进制、二进制等,就像在 Verilog 中一样: 14'h1 -> 我不想输入类似 X"00000000000001" 的内容 谢谢!
constant my_const : std_logic_vector(13 downto 0) := std_logic_vector(to_unsigned(1, 14));
或
constant my_const : std_logic_vector(13 downto 0) := "00" & x"001";
答案取决于您使用的 VHDL 标准。
在VHDL 2008之前,十六进制常量只能直接表示二进制位数是4的倍数(一个十六进制半字节的长度)
x"0001"
是一个 16 位常量。
使用VHDL 2008,可以指定常量的位长:
x"0001"
仍然是一个 16 位常量,而 14x"0001"
是您想要的:一个 14 位常量。
如果您使用的是较早的标准,则必须像这样解决此限制:
std_logic_vector(resize("1", 14))
或 (0 => '1', others => '0')