Я VHDL noob, пытаясь создать несколько констант и присвоить им шестнадцатеричные числа, однако я продолжаю получать ошибки.VHDL: использование шестнадцатеричных значений в константах
Я хочу, чтобы постоянная FOO_CONST
равным 0x38
Как это ...
constant FOO_CONST : integer := x"38";
Ошибка:
Type integer does not match with a string literal
Я попробовал несколько варианты без успеха.
Буду признателен за любую помощь. Благодаря!
-Mike
Целые не биты. Шестнадцатеричное значение представляет собой строковый литерал со строковым значением, эквивалентным одноразовым массивам. Целочисленное значение требует абстрактного литерала, основанного на буквах формы '16 # 38 #'. Где 16 является базой, «#» является разделителем. См. IEEE Std 1076-2008 15. Лексические элементы, 15.5.3. Литералы на основе. Вы также можете использовать ieee.std_logic_1164.all; use ieee.numeric_std.all; 'и' constant FOO_CONST: integer: = to_integer (unsigned '(x "38")); 'преобразование литерала строки бита в целое число, указывающее расширение знака с требуемым квалифицированным выражением. – user1155120
Возможно, что-то похоже: константа FOO_CONST: unsigned (7 downto 0): = x "38"; Как правило, в синтезе VHDL используется метод unsigned или std_logic_vector чаще, чем целочисленный. –
Вы также можете использовать '#' [числовой литерал] (http://www.ics.uci.edu/~jmoorkan/vhdlref/literals.html). Если вы используете его с 16 в качестве префикса, тогда он примет базовый номер 16 – Bettorun