des00 0 Posted September 24, 2020 · Report post 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, только души нет Quote Ответить с цитированием Share this post Link to post Share on other sites
Strob 0 Posted September 24, 2020 · Report post 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 можно без параметра. Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted September 24, 2020 · Report post 9 minutes ago, Strob said: А в vhdl можно без параметра. так что ли ? assign popa = pipa ^ {$size(pipa){$high(pipa)}} + pipa[$high(pipa)]; Quote Ответить с цитированием Share this post Link to post Share on other sites
Strob 0 Posted September 24, 2020 (edited) · Report post 28 minutes ago, des00 said: так что ли ? Ну, синтаксис не такой конечно, но идея такая, да. И лоджик вектора на вход безразмерные Edited September 24, 2020 by Strob Quote Ответить с цитированием Share this post Link to post Share on other sites
Мур 0 Posted September 24, 2020 · Report post 1 hour ago, Strob said: Зачем столько преобразований? Достаточно только std_logic_vector(). А в vhdl можно без параметра. Скорее всего можно. Я не экспериментировал особо... Подхватил привычное в интеренете отсюда https://coderoad.ru/15914859/VHDL-как-добавить-1-в-STD_LOGIC_VECTOR Quote Ответить с цитированием Share this post Link to post Share on other sites
Strob 0 Posted September 24, 2020 (edited) · Report post 1 hour ago, Strob said: Ну, синтаксис не такой конечно, но идея такая, да. И лоджик вектора на вход безразмерные popa <= (pipa xor pipa(pipa'high)) + pipa(pipa'high); при этом порты можно указать как unsigned без размера. 39 minutes ago, Мур said: Скорее всего можно. Беззнаковое в либе numeric_std может напрямую складываться с целым. Преобразования не нужны Edited September 24, 2020 by Strob Quote Ответить с цитированием Share this post Link to post Share on other sites
Мур 0 Posted September 25, 2020 · Report post 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; Так они упрощают себе жизнь. Quote Ответить с цитированием Share this post Link to post Share on other sites
wolfman 0 Posted September 25, 2020 · Report post Справедливости ради многие референсные дизайны из стандартных библиотек используют только std_logic_1164 Quote Ответить с цитированием Share this post Link to post Share on other sites
Flip-fl0p 0 Posted September 25, 2020 · Report post 23.09.2020 в 09:22, Мур сказал: Конфликт IEEE.STD_LOGIC_ARITH.all; с IEEE.numeric_std.all; ставил преграды! И тут вспомнились ВСЕ подобные ситуации... Отсюда вывод,- крошите ваше написание VHDL на более мелкие сущности! Будет больше экономии времени.. Вывод только один - использовать стандартные библиотеки, которой и является IEEE.numeric_std.all; Разбивать на сущности надо только для удобства, и упрощения понимания архитектуры проекта. Ну или разбивать на некие логические куски, которые удобно применять в дальнейшем. Quote Ответить с цитированием Share this post Link to post Share on other sites
Мур 0 Posted September 25, 2020 · Report post 45 minutes ago, Flip-fl0p said: Вывод только один - использовать стандартные библиотеки, которой и является IEEE.numeric_std.all; Разбивать на сущности надо только для удобства, и упрощения понимания архитектуры проекта. Ну или разбивать на некие логические куски, которые удобно применять в дальнейшем. Полностью согласен! Особенно многократное применение... Ну а понимание, это святое! Только полноценный бенч лучше даже комментов... Quote Ответить с цитированием Share this post Link to post Share on other sites
Flip-fl0p 0 Posted September 25, 2020 · Report post 2 часа назад, Мур сказал: Полностью согласен! Особенно многократное применение... Ну а понимание, это святое! Только полноценный бенч лучше даже комментов... Как по мне, ценность правильных коментариев важнее всего. Ибо помнить своей код можно неделю, месяц. Но потом все забывается. У меня сейчас очень много кода, и я не могу вспомнить что писал неделю назад. Спасают только комментарии. Quote Ответить с цитированием Share this post Link to post Share on other sites
Мур 0 Posted September 26, 2020 · Report post On 9/26/2020 at 12:53 AM, Flip-fl0p said: Как по мне, ценность правильных коментариев важнее всего. Ибо помнить своей код можно неделю, месяц. Но потом все забывается. У меня сейчас очень много кода, и я не могу вспомнить что писал неделю назад. Спасают только комментарии. Мне приходилось последние 10 лет сопровождать чужие проекты без бенчей и имеющих фрагментарные(5%) комменты. Эта задача была успешной только благодаря моим глубоким бенчам. Чужой код постигал благодаря ревизии поведения. Так что восстановить понимание для меня просто прогоном сопроводительного тест-бенча. Хорошо, если есть куцый ТЗ, а если нет, то только Бенч раскрывал мне внутренности чужого дизайна! Более того,- находил чудные ошибки, которые предыдущий разработчик отлаживал только "на железе" под SignalTab и не мог видеть все подробности... Мне уже не нужны комментарии. Для себя я конечно делаю комментарии, но в них описываю прежде всего "для чего я это делаю и на какие особенности обязательно надо обратить внимание" Quote Ответить с цитированием Share this post Link to post Share on other sites
Nemos760 0 Posted October 3, 2020 · Report post On 9/25/2020 at 8:08 PM, Flip-fl0p said: Вывод только один - использовать стандартные библиотеки, которой и является IEEE.numeric_std.all; Разбивать на сущности надо только для удобства, и упрощения понимания архитектуры проекта. Ну или разбивать на некие логические куски, которые удобно применять в дальнейшем. По поводу стандартных библиотек - тут прям аминь. По поводу дробления с коллегой постоянно дисскутируем. Он за более мелкое деление даже без повторного использования, а я не вижу смысла на совсем мелкие сущности разделять. Когда нужно разобраться в чужом проекте и особенно исправить какие-то баги, то мне проще целиком модуль смотреть, а ему наоборот. Если конечно это универсальный модуль типа SPI для работы с каким-нибудь ЦАП, то другой разговор. Комментарии тоже привык сразу на функциональные блоки внутри модуля писать. Quote Ответить с цитированием Share this post Link to post Share on other sites
Strob 0 Posted October 4, 2020 · Report post 14 hours ago, Nemos760 said: Он за более мелкое деление даже без повторного использования, а я не вижу смысла на совсем мелкие сущности разделять. Во всем нужен баланс. )) Quote Ответить с цитированием Share this post Link to post Share on other sites
Мур 0 Posted October 5, 2020 · Report post 19 hours ago, Strob said: Во всем нужен баланс. )) "Жизнь диктует свои суровые законы!" О. Бендер Когда существует конфликт библиотек и есть желание пользоваться их благами, то вам неизбежно придется крошить архитектуру на более мелкие сущности как минимум по числу необходимых библиотечных сервисов. Quote Ответить с цитированием Share this post Link to post Share on other sites