VHDL эквивалент Verilog "10'h234" - PullRequest
1 голос
/ 27 мая 2019

Мне просто нужно знать, как переводить постоянные значения из Verilog в VHDL. Интересно, смогу ли я по-прежнему указывать диапазон и является ли он шестнадцатеричным, октавным, двоичным и т. Д., Как в Verilog: 14'h1 -> Я не хочу вводить что-то вроде X "00000000000001" Спасибо!

Ответы [ 2 ]

7 голосов
/ 27 мая 2019

Ответ зависит от того, какой стандарт 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')

0 голосов
/ 27 мая 2019
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";
...