des00 25 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 22 hours ago, alexadmin said: То что написано у автора можно записать и красивее. Но по-крайней мере раскрывает суть алгоритма. А эти битовые манипуляции ничего по факту не экономят (кроме трех строк текста), но для читателя непрозрачны. ну насчет экономии, вы ошибаетесь. на разных платформах assign popa = pipa ^ {W{pipa[W-1]}} + pipa[W-1]; assign popa = pipa[W-1] ? (~pipa + 1'b1) : pipa; assign popa = pipa[W-1] ? -pipa : pipa; // ($signed(pipa) < 0) ? -pipa : pipa; может дать разный результат, по ресурсу и времянке) ЗЫ. Второй вариант один в один как на VHDL, только души нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Strob 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба On 9/23/2020 at 9:22 AM, Мур said: XUPUTR<= std_logic_vector(to_unsigned(to_integer(unsigned(not XXPUT )) + 1, bit_num)); Зачем столько преобразований? Достаточно только std_logic_vector(). On 9/23/2020 at 9:33 AM, des00 said: как же красиво все на VHDL, аж ностальгическую слезу прошибло, не то что на бездушном верилоге А в vhdl можно без параметра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 9 minutes ago, Strob said: А в vhdl можно без параметра. так что ли ? assign popa = pipa ^ {$size(pipa){$high(pipa)}} + pipa[$high(pipa)]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Strob 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 (изменено) · Жалоба 28 minutes ago, des00 said: так что ли ? Ну, синтаксис не такой конечно, но идея такая, да. И лоджик вектора на вход безразмерные Изменено 24 сентября, 2020 пользователем Strob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 1 hour ago, Strob said: Зачем столько преобразований? Достаточно только std_logic_vector(). А в vhdl можно без параметра. Скорее всего можно. Я не экспериментировал особо... Подхватил привычное в интеренете отсюда https://coderoad.ru/15914859/VHDL-как-добавить-1-в-STD_LOGIC_VECTOR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Strob 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 (изменено) · Жалоба 1 hour ago, Strob said: Ну, синтаксис не такой конечно, но идея такая, да. И лоджик вектора на вход безразмерные popa <= (pipa xor pipa(pipa'high)) + pipa(pipa'high); при этом порты можно указать как unsigned без размера. 39 minutes ago, Мур said: Скорее всего можно. Беззнаковое в либе numeric_std может напрямую складываться с целым. Преобразования не нужны Изменено 24 сентября, 2020 пользователем Strob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба On 9/23/2020 at 11:49 AM, andrew_b said: Правильный вывод первый: никогда не используйте STD_LOGIC_ARITH, STD_LOGIC_UNSIGNED, STD_LOGIC_SIGNED. Используйте только numeric_std. Знаменитый MachWorks придерживается этого же правила! В генерации HDL на несколько листов (в зависимости от количественного состава модели) В шапке ставится numeric... -- Generated by MATLAB 9.7 and HDL Coder 3.15 -- ------------------------------------------------------------- LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.numeric_std.ALL; --<<<< USE work.XXXX_pkg.ALL; Так они упрощают себе жизнь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба Справедливости ради многие референсные дизайны из стандартных библиотек используют только std_logic_1164 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба 23.09.2020 в 09:22, Мур сказал: Конфликт IEEE.STD_LOGIC_ARITH.all; с IEEE.numeric_std.all; ставил преграды! И тут вспомнились ВСЕ подобные ситуации... Отсюда вывод,- крошите ваше написание VHDL на более мелкие сущности! Будет больше экономии времени.. Вывод только один - использовать стандартные библиотеки, которой и является IEEE.numeric_std.all; Разбивать на сущности надо только для удобства, и упрощения понимания архитектуры проекта. Ну или разбивать на некие логические куски, которые удобно применять в дальнейшем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба 45 minutes ago, Flip-fl0p said: Вывод только один - использовать стандартные библиотеки, которой и является IEEE.numeric_std.all; Разбивать на сущности надо только для удобства, и упрощения понимания архитектуры проекта. Ну или разбивать на некие логические куски, которые удобно применять в дальнейшем. Полностью согласен! Особенно многократное применение... Ну а понимание, это святое! Только полноценный бенч лучше даже комментов... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба 2 часа назад, Мур сказал: Полностью согласен! Особенно многократное применение... Ну а понимание, это святое! Только полноценный бенч лучше даже комментов... Как по мне, ценность правильных коментариев важнее всего. Ибо помнить своей код можно неделю, месяц. Но потом все забывается. У меня сейчас очень много кода, и я не могу вспомнить что писал неделю назад. Спасают только комментарии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 26 сентября, 2020 Опубликовано 26 сентября, 2020 · Жалоба On 9/26/2020 at 12:53 AM, Flip-fl0p said: Как по мне, ценность правильных коментариев важнее всего. Ибо помнить своей код можно неделю, месяц. Но потом все забывается. У меня сейчас очень много кода, и я не могу вспомнить что писал неделю назад. Спасают только комментарии. Мне приходилось последние 10 лет сопровождать чужие проекты без бенчей и имеющих фрагментарные(5%) комменты. Эта задача была успешной только благодаря моим глубоким бенчам. Чужой код постигал благодаря ревизии поведения. Так что восстановить понимание для меня просто прогоном сопроводительного тест-бенча. Хорошо, если есть куцый ТЗ, а если нет, то только Бенч раскрывал мне внутренности чужого дизайна! Более того,- находил чудные ошибки, которые предыдущий разработчик отлаживал только "на железе" под SignalTab и не мог видеть все подробности... Мне уже не нужны комментарии. Для себя я конечно делаю комментарии, но в них описываю прежде всего "для чего я это делаю и на какие особенности обязательно надо обратить внимание" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nemos760 0 3 октября, 2020 Опубликовано 3 октября, 2020 · Жалоба On 9/25/2020 at 8:08 PM, Flip-fl0p said: Вывод только один - использовать стандартные библиотеки, которой и является IEEE.numeric_std.all; Разбивать на сущности надо только для удобства, и упрощения понимания архитектуры проекта. Ну или разбивать на некие логические куски, которые удобно применять в дальнейшем. По поводу стандартных библиотек - тут прям аминь. По поводу дробления с коллегой постоянно дисскутируем. Он за более мелкое деление даже без повторного использования, а я не вижу смысла на совсем мелкие сущности разделять. Когда нужно разобраться в чужом проекте и особенно исправить какие-то баги, то мне проще целиком модуль смотреть, а ему наоборот. Если конечно это универсальный модуль типа SPI для работы с каким-нибудь ЦАП, то другой разговор. Комментарии тоже привык сразу на функциональные блоки внутри модуля писать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Strob 0 4 октября, 2020 Опубликовано 4 октября, 2020 · Жалоба 14 hours ago, Nemos760 said: Он за более мелкое деление даже без повторного использования, а я не вижу смысла на совсем мелкие сущности разделять. Во всем нужен баланс. )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 5 октября, 2020 Опубликовано 5 октября, 2020 · Жалоба 19 hours ago, Strob said: Во всем нужен баланс. )) "Жизнь диктует свои суровые законы!" О. Бендер Когда существует конфликт библиотек и есть желание пользоваться их благами, то вам неизбежно придется крошить архитектуру на более мелкие сущности как минимум по числу необходимых библиотечных сервисов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться