реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Десятичное представление сигнала
Jenya7
сообщение Sep 25 2018, 07:10
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Ничего ненагуглил. решил тут спросить.
бинарная запись
Код
sig <= "00000011";
шестнадцатиричная
Код
sig <= X"03";
а есть десятичная? типа
Код
sig <= D"3";


Сообщение отредактировал Jenya7 - Sep 25 2018, 07:14
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 25 2018, 07:31
Сообщение #2


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Jenya7 @ Sep 25 2018, 10:10) *
Ничего ненагуглил. решил тут спросить.
бинарная запись
Код
sig <= "00000011";
шестнадцатиричная
Код
sig <= X"03";
а есть десятичная? типа
Код
sig <= D"3";

Вроде можно так: 10#3#
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 25 2018, 07:34
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



В std_logic_vector напрямую записать целое число нельзя. Нужно использовать функции преобразования типов.
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Sep 25 2018, 07:43
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(Jenya7 @ Sep 25 2018, 10:10) *
Ничего ненагуглил. решил тут спросить.

Для какого языка?
Если для VHDL, то функция conv_std_logic_vector().
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 25 2018, 07:50
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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


это и удивительно. почему можно записать sig <= X"03"; но нельзя sig <= D"3";
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 25 2018, 07:54
Сообщение #6


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

Потому-что никто кроме Вас не знает какая в итоге нужна разрядность для представления вашего числа. VHDL - строг. Вы сами должны контролировать разрядность чисел.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 25 2018, 08:02
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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

Сообщение отредактировал Jenya7 - Sep 25 2018, 08:02
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 25 2018, 08:10
Сообщение #8


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(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 вас поймет.
Go to the top of the page
 
+Quote Post
DuHast
сообщение Sep 25 2018, 08:13
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Последний стандарт VHDL понимает
A <= 5d"15";
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 25 2018, 08:14
Сообщение #10


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(DuHast @ Sep 25 2018, 11:13) *
Последний стандарт VHDL понимает
A <= 5d"15";

Спасибо ! Не знал....
А последний вроде VHDL-2008 ?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 25 2018, 08:18
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(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.
Go to the top of the page
 
+Quote Post
DuHast
сообщение Sep 25 2018, 08:21
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(Flip-fl0p @ Sep 25 2018, 11:14) *
А последний вроде VHDL-2008 ?

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


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

Только учтите, что X"03" это восьми битный вектор и если sig , например, пяти или девяти битный, то такое присвоение может не пройти или пройти не так, как вы хотели.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 25 2018, 08:23
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(DuHast @ Sep 25 2018, 13:13) *
Последний стандарт VHDL понимает
A <= 5d"15";


да. понимает. а что стоит перейти на 2008?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 25 2018, 08:24
Сообщение #14


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

Вот заниматься переводом чисел в калькуляторе это и есть заморачиваться. А преобразовывать типы - это не заморочки. Причем зачем везде писать std_logic_vector ?
Его имеет смысл использовать только на входных\выходных интерфейсах, или на интерфейсах, сопрягаемых с IP корками.
Go to the top of the page
 
+Quote Post
quato_a
сообщение Sep 25 2018, 12:16
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439



Цитата(Jenya7 @ Sep 25 2018, 10:10) *
Ничего ненагуглил. решил тут спросить.
бинарная запись
Код
sig <= "00000011";
шестнадцатиричная
Код
sig <= X"03";
а есть десятичная? типа
Код
sig <= D"3";


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


--------------------
Суббота начинается в понедельник
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 19:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.0151 секунд с 7
ELECTRONIX ©2004-2016