Anton1990 0 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба Всем добрый день. Вопрос, наверняка, уже избитый. Есть сигналы a, b : std_logic_vector(5 downto 0); необходимо осуществление следующих операций: a+b a-b a*b a>b a<b и т.д. Эти операции осуществляются с числами знаковыми или беззнаковыми? Как этим управлять (знаковость/беззнаковость)? Заранее всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 3 апреля, 2017 Опубликовано 3 апреля, 2017 · Жалоба Наверное разработчик на начальном этапе должен знать какими у него будут данные. Далее опираясь на знания преобразуют std_logic_vector либо в unsigned, либо в signed. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 4 апреля, 2017 Опубликовано 4 апреля, 2017 · Жалоба На мой взгляд выяснить все нюансы не сложно, сделав пример с тестбенчем... вот это и будет момент истины Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anton1990 0 4 апреля, 2017 Опубликовано 4 апреля, 2017 · Жалоба Наверное разработчик на начальном этапе должен знать какими у него будут данные. Далее опираясь на знания преобразуют std_logic_vector либо в unsigned, либо в signed. Предположим я знаю какие у меня данные, например, знаковые. Но я то указал? что работаю с std_logic_vector и не хочу преобразовывать в signed, ведь указанные операции можно производить и с std_logic_vector. А вот как их будет реализовывать компилятор? На мой взгляд выяснить все нюансы не сложно, сделав пример с тестбенчем... вот это и будет момент истины Это конечно да, просто хотелось бы подтверждения. Ладно поствлю вопрос по-другому: a, b : std_logic_vector(5 downto 0); Указанные операции гарантированно будут проводиться в знаковом виде? Независимо какой модуль подключен ....unsugned или ...signed c <= signed(a) + signed(B); c <= signed(a) * signed(B); if signed(a) > signed(B) then .... А если так то гарантированно что все операции беззнаковые? c <= unsigned(a) + unsigned(B); c <= unsigned(a) * unsigned(B); if unsigned(a) > unsigned(B) then .... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 4 апреля, 2017 Опубликовано 4 апреля, 2017 (изменено) · Жалоба Вставлю свои 5 копеек. ИМХО, все зависит от подключаемых библиотек. Если пользоваться рекомендуемой numeric_std, то ни одна из этих операций выполнена не будет. Например, все возможные перегрузки сложения: function "+" (L,R: UNSIGNED ) return UNSIGNED; function "+" ( L,R: SIGNED) return SIGNED; function "+" ( L: UNSIGNED; R: NATURAL) return UNSIGNED; function "+" ( L: NATURAL; R: UNSIGNED) return UNSIGNED; function "+" ( L: INTEGER; R: SIGNED) return SIGNED; function "+" ( L: SIGNED; R: INTEGER) return SIGNED; Т.о. для вашего случая просто не найдется нужной функции и вам придется в явном виде привести типы. Это позволит избежать в дальнейшем вопросов, как с вашей стороны при повторном просмотре кода спустя какой-то срок, так и со стороны коллег или других причастных. Другой вариант - сразу использовать нужные сигналы - unsigned или signed, а для того, чтобы понять, из названия их тип, можно добавлять _u или _s, в отличие от _slv, например, для обычного вектора. Как-то так. P.S. на счет последнего вопроса - да. Изменено 4 апреля, 2017 пользователем Tausinov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 4 апреля, 2017 Опубликовано 4 апреля, 2017 · Жалоба Вставлю свои 5 копеек. ИМХО, все зависит от подключаемых библиотек. Если пользоваться рекомендуемой numeric_std, то ни одна из этих операций выполнена не будет. А вот и неправда. Необходимо производить преобразование типов, правда конструкции получатся монструозные, но работать будут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 5 апреля, 2017 Опубликовано 5 апреля, 2017 · Жалоба А вот и неправда. Что именно неправда, так и не понял? Если использовать ieee.std_logic_unsigned, например, то приведения типов не нужны. Необходимо производить преобразование типов Т.о. для вашего случая просто не найдется нужной функции и вам придется в явном виде привести типы. Я, вроде, об этом и написал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 5 апреля, 2017 Опубликовано 5 апреля, 2017 · Жалоба Что именно неправда, так и не понял? Если использовать ieee.std_logic_unsigned, например, то приведения типов не нужны. Я, вроде, об этом и написал. ieee.std_logic_unsigned / std_logic_signed устаревшие библиотеки, рекомендуется юзать ieee.numeric_std с приведением типов. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 5 апреля, 2017 Опубликовано 5 апреля, 2017 (изменено) · Жалоба Что именно неправда, так и не понял? Если использовать ieee.std_logic_unsigned, например, то приведения типов не нужны. А стоит ли вообще применять стороннюю библиотеку ? Строгое соблюдение стандарта - это ещё один шаг для минимизации ошибок в проекте. Изменено 5 апреля, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Amurak 0 5 апреля, 2017 Опубликовано 5 апреля, 2017 · Жалоба А стоит ли вообще применять стороннюю библиотеку ? Строгое соблюдение стандарта - это ещё один шаг для минимизации ошибок в проекте. А библиотеки "ieee." разве не считаются стандартными? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 5 апреля, 2017 Опубликовано 5 апреля, 2017 · Жалоба А библиотеки "ieee." разве не считаются стандартными? Не всё, что лежит в ieee, является стандартным. Так исторически сложилось: https://tams.informatik.uni-hamburg.de/vhdl.../FAQ1.html#4.11 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 5 апреля, 2017 Опубликовано 5 апреля, 2017 · Жалоба А библиотеки "ieee." разве не считаются стандартными? Вот тут вот неплохо объяснено. http://vhdlguru.blogspot.ru/2010/03/why-li...-preferred.html Вот перевод http://blablacode.ru/vhdl/496 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться