jenya7 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 (изменено) · Жалоба Ничего ненагуглил. решил тут спросить. бинарная запись sig <= "00000011"; шестнадцатиричная sig <= X"03"; а есть десятичная? типа sig <= D"3"; Изменено 25 сентября, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Ничего ненагуглил. решил тут спросить. бинарная запись sig <= "00000011"; шестнадцатиричная sig <= X"03"; а есть десятичная? типа sig <= D"3"; Вроде можно так: 10#3# Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба В std_logic_vector напрямую записать целое число нельзя. Нужно использовать функции преобразования типов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Ничего ненагуглил. решил тут спросить. Для какого языка? Если для VHDL, то функция conv_std_logic_vector(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба В std_logic_vector напрямую записать целое число нельзя. Нужно использовать функции преобразования типов. это и удивительно. почему можно записать sig <= X"03"; но нельзя sig <= D"3"; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба это и удивительно. почему можно записать sig <= X"03"; но нельзя sig <= D"3"; Потому-что никто кроме Вас не знает какая в итоге нужна разрядность для представления вашего числа. VHDL - строг. Вы сами должны контролировать разрядность чисел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 (изменено) · Жалоба Потому-что никто кроме Вас не знает какая в итоге нужна разрядность для представления вашего числа. VHDL - строг. Вы сами должны контролировать разрядность чисел.поэтому если Вы запишите sig <= X"003"; строгий VHDL Вас поправит. то же самое может быть с любой записью. любой С компайлер контролирует типы данных. Изменено 25 сентября, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба поэтому если Вы запишите 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 вас поймет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DuHast 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Последний стандарт VHDL понимает A <= 5d"15"; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Последний стандарт VHDL понимает A <= 5d"15"; Спасибо ! Не знал.... А последний вроде VHDL-2008 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Ну Вы сами и ответили :rolleyes: В случае если: signal sig : std_logic_vector(7 downto 0); То действительно выражение sig <= X"003" выдаст ошибу, ибо вы "впихиваете невпихуемое" Примерно то же и с sig <= 3. Ибо сколько разрядов у Вас - знаете только Вы. Напишите вот так: sig <= std_logic_vector(to_unsigned(3,8)); Т.е явно укажите разрядность при конвертации типа стандартными библиотеками - то VHDL вас поймет. понял. спасибо. не буду заморачиваться. переведу на калькуляторе в hex. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DuHast 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба А последний вроде VHDL-2008 ? Ну он уже поддерживает ...можно записать sig <= X"03"; ... Только учтите, что X"03" это восьми битный вектор и если sig , например, пяти или девяти битный, то такое присвоение может не пройти или пройти не так, как вы хотели. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Последний стандарт VHDL понимает A <= 5d"15"; да. понимает. а что стоит перейти на 2008? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба понял. спасибо. не буду заморачиваться. переведу на калькуляторе в hex. Вот заниматься переводом чисел в калькуляторе это и есть заморачиваться. А преобразовывать типы - это не заморочки. Причем зачем везде писать std_logic_vector ? Его имеет смысл использовать только на входных\выходных интерфейсах, или на интерфейсах, сопрягаемых с IP корками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Ничего ненагуглил. решил тут спросить. бинарная запись sig <= "00000011"; шестнадцатиричная sig <= X"03"; а есть десятичная? типа sig <= D"3"; sig <= std_logic_vector(to_unsigned(3, sig'LENGTH)); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться