MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 1 минуту назад, sorok-odin сказал: Думается мне, если заданный диапазон не кратен степени двойки, счетчик скорее всего обнулится позже, при превышении диапазона созданного вектора. К примеру, если диапазон был 0..12, то обнуление 4-битного вектора будет после значения 15. Т.е. не "всё хорошо". Вы правильно думаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 8 минут назад, blackfin сказал: А если ещё напрячься и почитать стандарт IEEE Std 1364, то на стр. 32 можно увидеть замечательную фразу: Так что формально, делать счетчик на integer нельзя. Где Вы увидели запрет. Если Вы понимаете что пишите и как это синтезируется, то хоть в перечисляемых типах пишите. Цитата Думается мне, если заданный диапазон не кратен степени двойки, счетчик скорее всего обнулится позже, при превышении диапазона созданного вектора. К примеру, если диапазон был 0..12, то обнуление 4-битного вектора будет после значения 15. Т.е. не "всё хорошо". Нормальный симулятор сразу-же пошлет. И правильно сделает. В VHDL не просто так строгая типизация была придумана. Жаль что большинство разработчиков применяют везде только std_logic\std_logic_vector. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 5 минут назад, Flip-fl0p сказал: Но хочу обратить ваше внимание на строчку cnt <= cnt + "1"; Наша единичка в кавычках заключена не просто так. А потому-что ранее счетчик объявлен как signal cnt : unsigned(max_width - 1 downto 0) := (others => '0'); Ибо я ярый поклонник библиотеки IEEE.numeric_std.all; И никаких сторонних библиотек у меня найти невозможно. Ну разве что в исключительных случаях пользую IEEE.math_real.all Это другое дело. Тем не менее, никаких граблей в моём коде нет, он рабочий. Библиотека самая что ни на есть дефолтная ieee.std_logic_1164.all. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 27 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 7 minutes ago, Flip-fl0p said: Где Вы увидели запрет. Если Вы понимаете что пишите и как это синтезируется, то хоть в перечисляемых типах пишите. Так это как раз то, за что постоянно критикуют Verilog - недостаточно строгая типизация. В итоге, один понимает под типом integer одно, а другой - другое. А потом Боинги падают в море. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 9 минут назад, blackfin сказал: А если ещё напрячься и почитать стандарт IEEE Std 1364, то на стр. 32 можно увидеть замечательную фразу А если напрячься два раза, то можно заметить, что речь давно уже идет за VHDL, к которому стандарт IEEE Std 1364 совсем не при делах:))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sorok-odin 5 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 6 минут назад, Flip-fl0p сказал: Нормальный симулятор сразу-же пошлет. И правильно сделает. В VHDL не просто так строгая типизация была придумана. Жаль что большинство разработчиков применяют везде только std_logic\std_logic_vector. На поведенческом моделировании - пошлет конечно, а на временном после P&R уже не факт, не уверен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 5 минут назад, Flip-fl0p сказал: Нормальный симулятор сразу-же пошлет. Даже если не пошлёт, счётчик без условия сброса, всё же, ИМХО стоит использовать в редких случаях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 27 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 8 minutes ago, Самурай said: А если напрячься два раза, то можно заметить, что речь давно уже идет за VHDL, к которому стандарт IEEE Std 1364 совсем не при делах:))) Тогда напрягитесь три раза и сходите по ссылке: вопрос MrGalaxy Quote Коллеги, позвольте нубский вопрос. У ТС простой счётчик i на 4 разряда, я в таких случаях обхожусь без if: ... На Верилоге такое возможно? Посмотрел учебник, там переменная может быть только integer 32-разрядная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 11 минут назад, Flip-fl0p сказал: Но хочу обратить ваше внимание на строчку cnt <= cnt + "1"; Наша единичка в кавычках заключена не просто так. А потому-что ранее счетчик объявлен как signal cnt : unsigned(max_width - 1 downto 0) := (others => '0'); Ибо я ярый поклонник библиотеки IEEE.numeric_std.all; Взгляд зацепился за выделенное и возник вопрос: а разве библиотека numeric_std мешает писать единичку без кавычек в данном случае (да и в других тоже) ?:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 7 апреля, 2020 Опубликовано 7 апреля, 2020 (изменено) · Жалоба 4 минуты назад, blackfin сказал: Тогда напрягитесь три раза и сходите по ссылке: вопрос MrGalaxy Там в ответах упор на Верилог не делался. Мне писали, что такой код в принципе не работоспособен. Изменено 7 апреля, 2020 пользователем MrGalaxy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 1 минуту назад, blackfin сказал: Тогда напрягитесь три раза Четыре, Вы должны в таком случае напрячься четыре раза, ибо Вы отвечали andrew_b, который речь толкал именно про VHDL:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 27 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 2 minutes ago, Самурай said: Четыре, Вы должны в таком случае напрячься четыре раза, ибо Вы отвечали andrew_b, который речь толкал именно про VHDL:) Из чего это следует? Давайте конкретную цитату из поста andrew_b.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 7 апреля, 2020 Опубликовано 7 апреля, 2020 (изменено) · Жалоба 4 минуты назад, blackfin сказал: Из чего это следует? Читайте внимательно эту тему и тему, на которую дал ссылку MrGalaxy. И таких вопрос тогда не возникнет:) Изменено 7 апреля, 2020 пользователем Самурай Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 12 минут назад, Самурай сказал: Взгляд зацепился за выделенное и возник вопрос: а разве библиотека numeric_std мешает писать единичку без кавычек в данном случае (да и в других тоже) ?:) А я уже и забыл про то, что так можно. Я просто давно для себя решил что для сетчиков в типе unsigned буду писать инкремент в кавычках. Как напоминание, что это unsigned тип. Т.е для integer\natural у меня только cnt <= cnt + 1 Для типа unsigned у меня только cnt <= cnt + "1" Хотя Вы правы абсолютно. Ничего не запрещает для unsigned писать так: cnt <= cnt + 1 Цитата Так это как раз то, за что постоянно критикуют Verilog - недостаточно строгая типизация. В итоге, один понимает под типом integer одно, а другой - другое. А потом Боинги падают в море. По работе приходится сталкиваться с Verilog. Мало того, что постоянные begin end уродуют код. Так ещё он позволяет соединять между собой шины разных разрядностей. А вот этого я ему простить не могу. Ибо искать такие ошибки крайне трудно и долго. А они нет, нет, да и проскочат.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 27 7 апреля, 2020 Опубликовано 7 апреля, 2020 · Жалоба 2 minutes ago, Самурай said: Читайте внимательно эту тему и тему, на которую дал ссылку MrGalaxy. И таких вопрос тогда не возникнет:) Прочитал. Вопросы все еще возникают. Прямая цитата на andrew_b будет? Или продолжаем трёп? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться