Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Десятичное представление сигнала
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
Jenya7
Ничего ненагуглил. решил тут спросить.
бинарная запись
Код
sig <= "00000011";
шестнадцатиричная
Код
sig <= X"03";
а есть десятичная? типа
Код
sig <= D"3";
Flip-fl0p
Цитата(Jenya7 @ Sep 25 2018, 10:10) *
Ничего ненагуглил. решил тут спросить.
бинарная запись
Код
sig <= "00000011";
шестнадцатиричная
Код
sig <= X"03";
а есть десятичная? типа
Код
sig <= D"3";

Вроде можно так: 10#3#
andrew_b
В std_logic_vector напрямую записать целое число нельзя. Нужно использовать функции преобразования типов.
Tpeck
Цитата(Jenya7 @ Sep 25 2018, 10:10) *
Ничего ненагуглил. решил тут спросить.

Для какого языка?
Если для VHDL, то функция conv_std_logic_vector().
Jenya7
Цитата(andrew_b @ Sep 25 2018, 12:34) *
В std_logic_vector напрямую записать целое число нельзя. Нужно использовать функции преобразования типов.


это и удивительно. почему можно записать sig <= X"03"; но нельзя sig <= D"3";
Flip-fl0p
Цитата(Jenya7 @ Sep 25 2018, 10:50) *
это и удивительно. почему можно записать sig <= X"03"; но нельзя sig <= D"3";

Потому-что никто кроме Вас не знает какая в итоге нужна разрядность для представления вашего числа. VHDL - строг. Вы сами должны контролировать разрядность чисел.
Jenya7
Цитата(Flip-fl0p @ Sep 25 2018, 12:54) *
Потому-что никто кроме Вас не знает какая в итоге нужна разрядность для представления вашего числа. VHDL - строг. Вы сами должны контролировать разрядность чисел.
поэтому если Вы запишите sig <= X"003"; строгий VHDL Вас поправит. то же самое может быть с любой записью. любой С компайлер контролирует типы данных.
Flip-fl0p
Цитата(Jenya7 @ Sep 25 2018, 11:02) *
поэтому если Вы запишите sig <= X"003"; строгий VHDL Вас поправит. то же самое может быть с любой записью. любой С компайлер контролирует типы данных.

Ну Вы сами и ответили rolleyes.gif
В случае если:
Код
signal sig : std_logic_vector(7 downto 0);

То действительно выражение sig <= X"003" выдаст ошибу, ибо вы "впихиваете невпихуемое"
Примерно то же и с sig <= 3. Ибо сколько разрядов у Вас - знаете только Вы.
Напишите вот так:
Код
sig  <= std_logic_vector(to_unsigned(3,8));

Т.е явно укажите разрядность при конвертации типа стандартными библиотеками - то VHDL вас поймет.
DuHast
Последний стандарт VHDL понимает
A <= 5d"15";
Flip-fl0p
Цитата(DuHast @ Sep 25 2018, 11:13) *
Последний стандарт VHDL понимает
A <= 5d"15";

Спасибо ! Не знал....
А последний вроде VHDL-2008 ?
Jenya7
Цитата(Flip-fl0p @ Sep 25 2018, 13:10) *
Ну Вы сами и ответили rolleyes.gif
В случае если:
Код
signal sig : std_logic_vector(7 downto 0);

То действительно выражение sig <= X"003" выдаст ошибу, ибо вы "впихиваете невпихуемое"
Примерно то же и с sig <= 3. Ибо сколько разрядов у Вас - знаете только Вы.
Напишите вот так:
Код
sig  <= std_logic_vector(to_unsigned(3,8));

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


понял. спасибо. не буду заморачиваться. переведу на калькуляторе в hex.
DuHast
Цитата(Flip-fl0p @ Sep 25 2018, 11:14) *
А последний вроде VHDL-2008 ?

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


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

Только учтите, что X"03" это восьми битный вектор и если sig , например, пяти или девяти битный, то такое присвоение может не пройти или пройти не так, как вы хотели.
Jenya7
Цитата(DuHast @ Sep 25 2018, 13:13) *
Последний стандарт VHDL понимает
A <= 5d"15";


да. понимает. а что стоит перейти на 2008?
Flip-fl0p
Цитата(Jenya7 @ Sep 25 2018, 11:18) *
понял. спасибо. не буду заморачиваться. переведу на калькуляторе в hex.

Вот заниматься переводом чисел в калькуляторе это и есть заморачиваться. А преобразовывать типы - это не заморочки. Причем зачем везде писать std_logic_vector ?
Его имеет смысл использовать только на входных\выходных интерфейсах, или на интерфейсах, сопрягаемых с IP корками.
quato_a
Цитата(Jenya7 @ Sep 25 2018, 10:10) *
Ничего ненагуглил. решил тут спросить.
бинарная запись
Код
sig <= "00000011";
шестнадцатиричная
Код
sig <= X"03";
а есть десятичная? типа
Код
sig <= D"3";


Код
sig <= std_logic_vector(to_unsigned(3, sig'LENGTH));
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.