Мур 1 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба В своей деятельности частенько сталкивался со странными ситуациями, когда привычные приёмы не срабатывали. Особенно когда сущности разрастались до размеров больше страницы. Погоня за результатом и инженерный азарт давал энергию на отработку локальных частностей. Перебор вариантов описания одного и того-же в конце срабатывал и не было особо времени разобраться досконально. Вот и теперь, казалось простая задача, но... все стало на свои места, когда выделил отдельной сущностью, которую прицепил к основному тексту и все стало так как хотел! Этот фрагмент имеет отношение к теме --взятие абсолютного значения знакового числа library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.numeric_std.all; entity ABSV is generic(bit_num: integer:=16); port( CLK : in STD_LOGIC; XXPUT :in STD_LOGIC_VECTOR(bit_num-1 downto 0); clken : in STD_LOGIC; XUPUTR :out STD_LOGIC_VECTOR(bit_num-1 downto 0)); end entity ABSV; architecture beh of ABSV is begin process (CLK) begin if CLK='1' and CLK'event then if clken = '1' then if XXPUT(bit_num-1) = '1' then XUPUTR<= std_logic_vector(to_unsigned(to_integer(unsigned(not XXPUT )) + 1, bit_num)); else XUPUTR<= XXPUT; end if; end if; end if; end process; end architecture beh; Конфликт IEEE.STD_LOGIC_ARITH.all; с IEEE.numeric_std.all; ставил преграды! И тут вспомнились ВСЕ подобные ситуации... Отсюда вывод,- крошите ваше написание VHDL на более мелкие сущности! Будет больше экономии времени.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба как же красиво все на VHDL, аж ностальгическую слезу прошибло, не то что на бездушном верилоге module abs #(parameter W = 8) (input [W-1 : 0] pipa, output [W-1 : 0] popa) ; assign popa = pipa ^ {W{pipa[W-1]}} + pipa[W-1]; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 37 minutes ago, des00 said: как же красиво все на VHDL, аж ностальгическую слезу прошибло, не то что на бездушном верилоге Отлично! Убеждаюсь в верности выбора темы... Надеюсь на полное раскрытие преимуществ Верилога! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба То что написано у автора можно записать и красивее. Но по-крайней мере раскрывает суть алгоритма. А эти битовые манипуляции ничего по факту не экономят (кроме трех строк текста), но для читателя непрозрачны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба Приветствую! 2 minutes ago, alexadmin said: То что написано у автора можно записать и красивее. Но по-крайней мере раскрывает суть алгоритма. А эти битовые манипуляции ничего по факту не экономят (кроме трех строк текста), но для читателя непрозрачны Безграмотному можно все хоть по слогам расписать на любом языке - ему все одно ничего не понятно будет Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба В основе проблемы конфликт библиотек, которые если встречаются, не дружат друг с другом и подобная текстовая конструкция, если её перенести в основное тело, компилятором будет отвергаться и он будет ругаться . В Верилоге все честнее. Там расписываем себе все сами. Без сервиса универсальных библиотек VHDL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 2 часа назад, Мур сказал: Конфликт IEEE.STD_LOGIC_ARITH.all; с IEEE.numeric_std.all; ставил преграды! И тут вспомнились ВСЕ подобные ситуации... Отсюда вывод,- крошите ваше написание VHDL на более мелкие сущности! Вывод неправильный. Правильный вывод первый: никогда не используйте STD_LOGIC_ARITH, STD_LOGIC_UNSIGNED, STD_LOGIC_SIGNED. Используйте только numeric_std. Правильный вывод второй: вместо простого модуля (например, какая-то логика и одинокий регистр на выходе) лучше написать функцию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 4 часа назад, Мур сказал: --взятие абсолютного значения знакового числа Могу сказать по секрету, что есть функция ieee.numeric_std.abs, которая делает то, что вам нужно. Могу ещё раз повторить, что изучение языка -- это не только изучение синтаксиса и семантики, но и стандартных библиотек, дабы не заниматься велосипедоизобретательством. 1 час назад, Мур сказал: В Верилоге все честнее. Там расписываем себе все сами. Без сервиса универсальных библиотек VHDL. Тут VHDL передаёт Verilog'у пламенный привет и желает удачи в велосипедостроении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 31 minutes ago, andrew_b said: Могу сказать по секрету, что есть функция ieee.numeric_std.abs, которая делает то, что вам нужно. Мне это известно. Щупал.. Но тема родилась о конфликтах и цель, чтобы запомнилось начинающим. 31 minutes ago, andrew_b said: Тут VHDL передаёт Verilog'у пламенный привет и желает удачи в велосипедостроении. Я это и подчеркивал!... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 2 hours ago, andrew_b said: Вывод неправильный. Правильный вывод первый: никогда не используйте STD_LOGIC_ARITH, STD_LOGIC_UNSIGNED, STD_LOGIC_SIGNED. Используйте только numeric_std. Правильный вывод второй: вместо простого модуля (например, какая-то логика и одинокий регистр на выходе) лучше написать функцию. Спасибо. Первый ваш вывод будет соблюдаться автоматически, если крошить сущности на более мелкие. Второй совет требует дополнительного осознания... Лучше практики написания функций ничего лучше быть не может. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 44 минуты назад, Мур сказал: Первый ваш вывод будет соблюдаться автоматически, если крошить сущности на более мелкие Даже если не крошить. Просто навсегда забудьте про это проприетарное легаси. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 1 hour ago, andrew_b said: навсегда забудьте про это проприетарное легаси. Спасибо. Беру на вооружение! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба Я бы добавил 3 часа назад, andrew_b сказал: Даже если не крошить. Просто навсегда забудьте про это проприетарное легаси. Я бы добавил и учитесь пользоваться поиском по сайту, тема стандартных и не очень библиотек VHDL уже обсуждалась. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 14 hours ago, wolfman said: Я бы добавил и учитесь пользоваться поиском по сайту, тема стандартных и не очень библиотек VHDL уже обсуждалась. Хм.. Как раз я так и действовал! И опять-таки, если не учитывать конфликтность библиотек и тупо брать примеры из интернета, то в 80% случаев будет ждать неудача. НО! Достаточно было заставить себя создать отдельную сущность, то в удача была бы гарантирована.. Ох уж эта спешка!... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость vitzap 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Кстати, есть ли подобные библиотеки для Verilog (я на этот язык не так давно переехал)? Чтоб не изобретать велосипеды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться