Самурай 12 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 4 минуты назад, blackfin сказал: Прочитал. Вопросы все еще возникают. Прямая цитата на andrew_b будет? Если вопросы все еще возникают, значит не прочитали. Читайте еще:) Насчет цитаты - Вы не помните кому и где Вы отвечали полчаса назад? Но впрочем извольте, вот Вам цитата. Еще вопросы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 3 minutes ago, Самурай said: Но впрочем извольте, вот Вам цитата. Еще вопросы? Последний вопрос: где в этой цитате вы увидели VHDL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба Только что, blackfin сказал: Последний вопрос: где в этой цитате вы увидели VHDL? Еще раз, последний - прочитайте ВНИМАТЕЛЬНО ВСЮ тему, со ВСЕМИ ссылками, тогда возможно Вы все поймете сами:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 19 минут назад, Flip-fl0p сказал: Ничего не запрещает для unsigned писать так: cnt <= cnt + 1 Тогда в чём правы мои оппоненты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 2 минуты назад, MrGalaxy сказал: Тогда в чём правы мои оппоненты? В том, что трассировщику и синтезатор - им пофиг как Вы объявили счетчик. Inreger\natural\unsigned\std_logic_vector А симулятору разница есть. Из-за этого могут быть всякие интересности. Например вы обявили счетчик: integer range 0 to 129. И засинтезировали эту схему. И ожидаете, что счетчик будет обнуляться после достижения максимума. Однако он будет считать до 255 и только потом обнулится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 1 минуту назад, Flip-fl0p сказал: Например вы обявили счетчик: integer range 0 to 129. И засинтезировали эту схему. Не надо например. Я дал вполне конкретный код, степень двойки минус один (как и Вы, кстати). Только в этом случае будет корректный счёт и сброс по переполнению. Коню понятно, что в иных случаях надо ставить условие сброса. 5 минут назад, Flip-fl0p сказал: В том, что трассировщику и синтезатор - им пофиг как Вы объявили счетчик. Inreger\natural\unsigned\std_logic_vector О чём и речь. А это не все понимают. 5 минут назад, Flip-fl0p сказал: А симулятору разница есть. Квартусовскому симулятору без разницы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 13 минут назад, MrGalaxy сказал: Не надо например. Я дал вполне конкретный код, степень двойки минус один (как и Вы, кстати). Только в этом случае будет корректный счёт и сброс по переполнению. Коню понятно, что в иных случаях надо ставить условие сброса. О чём и речь. А это не все понимают. Квартусовскому симулятору без разницы. Ну а нормальный симулятор даже если вы объявили что счетчик имеет 2**n - 1( например integer range 0 to 127) откуда будет знать что надо обнулиться ? Он досчитает до 128 и выдаст ошибку - уход за предел объявленного диапазона. Все честно. Вот вы взяли ведро на 10 литров. А туда пытаетесь налить 20 литров. Это ненормально. Это ошибка. Симулятор Вам об этом и говорит. А вот ежели симулятор не проверяет такие вещи - то грош цена такому симулятору. Вас же не смущает то, что нельзя в VHDL соединять шины разных разновидностей между собой. P.S. Да и вообще зачем пользоваться квартовским симулятором. Максимум на что он годится - в ВУЗах студентов мучать , чтобы пол пары студент тестовые воздействия руками вводил. Есть же нормальные типа Modelsim\questa, Active HDL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 1 минуту назад, Flip-fl0p сказал: А вот ежели симулятор не проверяет такие вещи - то грош цена такому симулятору. Он не проверять такие вещи должен, а симулировать реальное железо, что успешно и делает. 2 минуты назад, Flip-fl0p сказал: Вот вы взяли ведро на 10 литров. А туда пытаетесь налить 20 литров. Представьте, что у ведра дно-клапан, который открывается когда налит последний 10-й литр. 4 минуты назад, Flip-fl0p сказал: Вас же не смущает то, что нельзя в VHDL соединять шины разных разновидностей между собой. Шины у меня идут между блокам и могут передавать не все разряды, а только часть. Т.е. в одном блоке выходной порт может быть A[10..0], а в другом входной A[9..0]. А в пределах одного блока можно оперировать с частью вектора, не со всем сразу. Упс! Прочитал вместо разновидности разрядности... Тоже между блоками можно. Например, в одном блоке STD_LOFIC_VECTOR(10 downto 0), а в другом Integer range 0 to 2047. Зависит от того, что потом делать с этими данными, как их удобнее обрабатывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 1 час назад, blackfin сказал: Из чего это следует? Позвольте мне как объекту полемики ответить. Это следует из поста Там, как видите, тип счётчика -- целое число, проверки на максимальное значение нет. Поэтому при поведенческом моделировании выход за границу диапазона неизбежен. 8 минут назад, MrGalaxy сказал: Он не проверять такие вещи должен, а симулировать реальное железо, что успешно и делает. Безусловно, реальное железо он симулирует. Но в реальное железо синтезируется только часть языка, которое так и называется — "синтезируемое подмножество". Симулятор обязан также поддерживать и несинтезируемое. И не симулятора собачье дело решать, будет мой код реализован в железе или нет. Он обязан корректно симулировать всё, что я напишу. «Машина должна работать, а человек думать». Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба Цитата Он не проверять такие вещи должен, а симулировать реальное железо, что успешно и делает. А зачем, простите симулировать реально железо ? Мне пока всегда хватало поведенческого моделирования + отчета временного анализатора. Если что-то после этого не работало - это только потому, что я не проверил это в тесте. Цитата Представьте, что у ведра дно-клапан, который открывается когда налит последний 10-й литр. Integer range 0 to 2047 - вот ведро. if (counter = 2047) then - вот клапан. Вы должны установить клапан вручную. Цитата Шины у меня идут между блокам и могут передавать не все разряды, а только часть. Т.е. в одном блоке выходной порт может быть A[10..0], а в другом входной A[9..0]. Ну Вы же не соединяете B(9 downto 0) <= A(10 downto 0). Вы же скорее всего делаете так: B(9 downto 0) <= A(9 downto 0) Цитата Тоже между блоками можно. Например, в одном блоке STD_LOFIC_VECTOR(10 downto 0), а в другом Integer range 0 to 2047. В VHDL без преобразования одного типа к другому вы не можете назначить одно на другое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 4 минуты назад, Flip-fl0p сказал: делаете так: B(9 downto 0) <= A(9 downto 0) Конечно. 4 минуты назад, Flip-fl0p сказал: В VHDL без преобразования одного типа к другому вы не можете назначить одно на другое. Нельзя. А между блоками через порты в/в это делается автоматически. 18 минут назад, andrew_b сказал: тип счётчика -- целое число, проверки на максимальное значение нет Целое, но с уточнением "range 0 to 15", т.е. 4-разрядное. Почувствуйте разницу. 23 минуты назад, andrew_b сказал: Безусловно, реальное железо он симулирует. Но в реальное железо синтезируется только часть языка, которое так и называется — "синтезируемое подмножество". Симулятор обязан также поддерживать и несинтезируемое. И не симулятора собачье дело решать, будет мой код реализован в железе или нет. Он обязан корректно симулировать всё, что я напишу. «Машина должна работать, а человек думать». Всё правильно, кроме 24 минуты назад, andrew_b сказал: Симулятор обязан также поддерживать и несинтезируемое. Попробую объяснить. Исходники проекта на VHDL (и вообще на чём угодно) обязаны иметь только синтезируемые конструкции, иначе проект не соберётся. Симуляция запускается после сборки проекта и языка VHDL там как такового уже нет. Есть текстовый файл, задающий входные и выходные данные. И симулируется именно железо, а не исходный код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 1 час назад, MrGalaxy сказал: Целое, но с уточнением "range 0 to 15", т.е. 4-разрядное. Почувствуйте разницу. Я уже давно всё почувствовал. А вы поймите, о чём вам говорят. 1 час назад, MrGalaxy сказал: Исходники проекта на VHDL (и вообще на чём угодно) обязаны иметь только синтезируемые конструкции, иначе проект не соберётся. Ну если вы заранее привязываетесь к какому-то проекту, заранее делаете код непереносимым, то вопросов нет. Наслаждайтесь и дальше. Кстати, вы в курсе, например, что Цитата Post-synthesis and post-fit gate-level simulations run significantly slower than RTL simulation. Altera recommends that you verify your design using RTL simulation for functionality and use the TimeQuest timing analyzer for timing. Timing simulation is not supported for Arria V, Cyclone V, Stratix V, and newer families. И что вы делать будете, я вас внимательно спрашиваю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 3 минуты назад, andrew_b сказал: заранее делаете код непереносимым, Странная у Вас логика. 9 минут назад, andrew_b сказал: Я уже давно всё почувствовал. А вы поймите, о чём вам говорят. А Вы поймите, что в 4 разрядах не может быть числа 16, а может быть только 0 - 15. И если железо это понимает, а симулятор нет, то грош цена такому симулятору. 16 минут назад, andrew_b сказал: Кстати, вы в курсе, например, что Цитата Post-synthesis and post-fit gate-level simulations run significantly slower than RTL simulation. Altera recommends that you verify your design using RTL simulation for functionality and use the TimeQuest timing analyzer for timing. Timing simulation is not supported for Arria V, Cyclone V, Stratix V, and newer families. Встречный вопрос: а Вы в курсе, что не все семейства поддерживаются TimeQuest timing analyzer ? И при чём здесь вообще временной анализ? Не валите всё в кучу. Разговор был о функционировании счётчика в принципе, а не о временных задержках. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба Вы не понимаете, что не понимаете фундаментальных вещей. Ну пройдётесь по самолично разложенным граблям, поймёте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба Выкладываю для тех, для кого VHDL - только язык программирования. Как ещё наглядно объяснить - не знаю... Счётчик на 16 с искусственно введённой схемой принудительного сброса по переполнению (1111=сброс в 0): То же самое, только без лишних наворотов: Результат моделирования одинаковый. Сомневающиеся, вместо рассуждений о граблях, могут спаять схему № 2 на каких-нибудь ТМ2 любой серии и посмотреть осциллографом. Счётчику всё-равно, что кто думает, он себе считает и считает по циклу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться