我只需要知道如何将常量值从Verilog转换为VHDL。我想知道是否仍然可以指示范围,以及它是否为十六进制,八进制,二进制等,就像在Verilog中一样: 14'h1->我不想输入类似X“ 00000000000001”的名称 谢谢!
答案 0 :(得分:7)
答案取决于您使用的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')
答案 1 :(得分:0)
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";