Перейти к содержанию

    

Десятичное представление сигнала

Ничего ненагуглил. решил тут спросить.

бинарная запись

 sig <= "00000011";

шестнадцатиричная

 sig <= X"03";

а есть десятичная? типа

 sig <= D"3";

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ничего ненагуглил. решил тут спросить.

бинарная запись

 sig <= "00000011";

шестнадцатиричная

 sig <= X"03";

а есть десятичная? типа

 sig <= D"3";

Вроде можно так: 10#3#

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В std_logic_vector напрямую записать целое число нельзя. Нужно использовать функции преобразования типов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ничего ненагуглил. решил тут спросить.

Для какого языка?

Если для VHDL, то функция conv_std_logic_vector().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В std_logic_vector напрямую записать целое число нельзя. Нужно использовать функции преобразования типов.

 

это и удивительно. почему можно записать sig <= X"03"; но нельзя sig <= D"3";

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
это и удивительно. почему можно записать sig <= X"03"; но нельзя sig <= D"3";

Потому-что никто кроме Вас не знает какая в итоге нужна разрядность для представления вашего числа. VHDL - строг. Вы сами должны контролировать разрядность чисел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Потому-что никто кроме Вас не знает какая в итоге нужна разрядность для представления вашего числа. VHDL - строг. Вы сами должны контролировать разрядность чисел.
поэтому если Вы запишите sig <= X"003"; строгий VHDL Вас поправит. то же самое может быть с любой записью. любой С компайлер контролирует типы данных.
Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
поэтому если Вы запишите sig <= X"003"; строгий VHDL Вас поправит. то же самое может быть с любой записью. любой С компайлер контролирует типы данных.

Ну Вы сами и ответили :rolleyes:

В случае если:

signal sig : std_logic_vector(7 downto 0);

То действительно выражение sig <= X"003" выдаст ошибу, ибо вы "впихиваете невпихуемое"

Примерно то же и с sig <= 3. Ибо сколько разрядов у Вас - знаете только Вы.

Напишите вот так:

sig  <= std_logic_vector(to_unsigned(3,8));

Т.е явно укажите разрядность при конвертации типа стандартными библиотеками - то VHDL вас поймет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Последний стандарт VHDL понимает

A <= 5d"15";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Последний стандарт VHDL понимает

A <= 5d"15";

Спасибо ! Не знал....

А последний вроде VHDL-2008 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ну Вы сами и ответили :rolleyes:

В случае если:

signal sig : std_logic_vector(7 downto 0);

То действительно выражение sig <= X"003" выдаст ошибу, ибо вы "впихиваете невпихуемое"

Примерно то же и с sig <= 3. Ибо сколько разрядов у Вас - знаете только Вы.

Напишите вот так:

sig  <= std_logic_vector(to_unsigned(3,8));

Т.е явно укажите разрядность при конвертации типа стандартными библиотеками - то VHDL вас поймет.

 

понял. спасибо. не буду заморачиваться. переведу на калькуляторе в hex.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А последний вроде VHDL-2008 ?

Ну он уже поддерживает

 

 

...можно записать sig <= X"03"; ...

Только учтите, что X"03" это восьми битный вектор и если sig , например, пяти или девяти битный, то такое присвоение может не пройти или пройти не так, как вы хотели.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Последний стандарт VHDL понимает

A <= 5d"15";

 

да. понимает. а что стоит перейти на 2008?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
понял. спасибо. не буду заморачиваться. переведу на калькуляторе в hex.

Вот заниматься переводом чисел в калькуляторе это и есть заморачиваться. А преобразовывать типы - это не заморочки. Причем зачем везде писать std_logic_vector ?

Его имеет смысл использовать только на входных\выходных интерфейсах, или на интерфейсах, сопрягаемых с IP корками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ничего ненагуглил. решил тут спросить.

бинарная запись

 sig <= "00000011";

шестнадцатиричная

 sig <= X"03";

а есть десятичная? типа

 sig <= D"3";

 

sig <= std_logic_vector(to_unsigned(3, sig'LENGTH));

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти