petrov 7 12 сентября, 2017 Опубликовано 12 сентября, 2017 · Жалоба Пугалки какие то. И к чему катастрофическому одновременное использование может привести? Компьютер взорвётся? Вы можете сказать почему за почти 20 лет применения этой троицы я ни разу не видел некорректного поведения? Если в течении этого времени минусов не замечалось а плюсы налицо то вывод очевиден. Это я как хронический практик сужу. Потому что в одном месте даются различные определения одним и тем же типам и операциям, "дядя Вася так делает" не аргумент, такого непредсказуемого поведения нужно в принципе избегать, а не ждать странных проблем, тем более никаких сложностей делать всё с использованием одной numeric_std нет, при разработке numeric_std были учтены недостатки std_logic_arith. Так объявили бы сразу счетчики как UNSIGNED, тога код был бы красивее и, самое главное, гораздо понятнее. Так-же я не вижу ничего зазорного в объявлении счетчика как INTEGER, если так удобнее для реализации. Спорно насчёт понятнее, это прыгать надо выше по тексту и смотреть чего там объявлялось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 12 сентября, 2017 Опубликовано 12 сентября, 2017 (изменено) · Жалоба Спорно насчёт понятнее, это прыгать надо выше по тексту и смотреть чего там объявлялось. Я к тому что, если объявить счетчики как UNSIGNED, то нет необходимости применять длинные цепочки типа: count_shim <= std_logic_vector (unsigned(count_shim) + 1); И, как мне кажется, код становится несколько понятней. В любом варианте (ну кроме счетчика на Variable) придётся прыгать и смотреть на место объявления счетчика... Изменено 12 сентября, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 12 сентября, 2017 Опубликовано 12 сентября, 2017 (изменено) · Жалоба Есть еще вариант в имя переменной добавлять аппендикс с типом. Например, signal test_cnt_u : unsigned(3 downto 0); Тогда не придется искать определения. Изменено 12 сентября, 2017 пользователем Tausinov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 12 сентября, 2017 Опубликовано 12 сентября, 2017 · Жалоба с последними сообщениями от Tausinov и Flip-fl0p я согласен, что так удобней, но с этим Спорно насчёт понятнее, это прыгать надо выше по тексту и смотреть чего там объявлялось. тоже согласен нужно подбирать "золотую середину" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 12 сентября, 2017 Опубликовано 12 сентября, 2017 · Жалоба нужно подбирать "золотую середину" Как мне кажется надо не золотую середину подбирать, а просто выработать определенные правила оформления кода, и им придерживаться. И дальше всё будет происходить на "автомате". Например я взял за правило применять для счетчиков тип integer, просто мне так удобно. И для тех редких случаев, когда необходимо применить какой-то разряд счетчика, или вывести его на внешний порт, я применяю конвертацию типа integer в unsigned или SLV. Но ещё у меня есть правило держать счетчики в отдельных модулях. А то я вечно намудрю в коде с счетчиком, и пол дня ищу проблему. Да и в принципе удобно, поскольку если надо мне, например, изменить схему с суммирующего счетчика на вычитающий, то я не переписываю счетчик, а просто меняю его параметр. Или надо, например загружать в счетчик какие-то значения, значит буду применять счетчик с синхронной загрузкой. Но тут скорее связанно с тем, что мне проще схему изначально представить в категориях счетчик, регистр, мультиплексор и пр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться