2016-08-04 4 views
2

Я VHDL noob, пытаясь создать несколько констант и присвоить им шестнадцатеричные числа, однако я продолжаю получать ошибки.VHDL: использование шестнадцатеричных значений в константах

Я хочу, чтобы постоянная FOO_CONST равным 0x38

Как это ...

constant FOO_CONST : integer := x"38";

Ошибка:

Type integer does not match with a string literal

Я попробовал несколько варианты без успеха.

Буду признателен за любую помощь. Благодаря!

-Mike

+1

Целые не биты. Шестнадцатеричное значение представляет собой строковый литерал со строковым значением, эквивалентным одноразовым массивам. Целочисленное значение требует абстрактного литерала, основанного на буквах формы '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

+0

Возможно, что-то похоже: константа FOO_CONST: unsigned (7 downto 0): = x "38"; Как правило, в синтезе VHDL используется метод unsigned или std_logic_vector чаще, чем целочисленный. –

+0

Вы также можете использовать '#' [числовой литерал] (http://www.ics.uci.edu/~jmoorkan/vhdlref/literals.html). Если вы используете его с 16 в качестве префикса, тогда он примет базовый номер 16 – Bettorun

ответ

4

Вы можете указать базу для целых чисел, используя формат base#value#:

constant FOO_CONST : integer := 16#38#; 

 Смежные вопросы

  • Нет связанных вопросов^_^