Pull to refresh
35
0
Kopart @Kopart

User

Send message
Я здесь хотел акцентировать внимание именно на ситуации, что хотя входы и называются «асинхронными», но при снятии асинхронного ресета происходит переход у синхронному состоянию работы. И именно в этот момент образуется проблема метастабильности про которую вы пишите.
Те отделить «мух от котлет» и показать суть проблемы в этом случае, а не ограничиться шаблоном делайте всегда вот так.
>сброс асинхронный, он должен быть синхронен тактовому сигналу
На практике как раз реализуют синхронизацию снятия асинхронного сброса, тк возможность метастабильности при установке асинхронного сброса не важна (и флип-флоп сбросится еще до начала генерации клока).
Если асинхронный сброс полностью синхронен к клоку, то логичней использовать вход «синхронного сброса», чтобы не использовать флип-флопы со входом асинхронного сброса/установки, которые занимают большую площадь.
А как у него с точностью температуры тела? Написано ±0.1℃. Для детских инфракрасных термометров тоже указана такая точность, но по факту пишут, что и в 1 градус бывает отличие.
А такие большие с широким диапазоном как у вас сложно точно откалибровать около 40 градус (чтобы получить точность хотя бы ±0.5℃ для температуры тела).
Сравнивали измерения с обычным градусником?
Уже много лет 95р за один/два домена у реселера/партнера R01 (их панель со всеми преимуществами).
Все используемое оборудование для резки и анализа есть в Зеленограде?
Или пришлось что-то делать вне России?
А сейчас это полный аналог assign. (если поставить неблокирующее присвоение иначе приоритет будет неправильный)
И тут как раз кому как нравится визуально.

Удивлен, что раньше использовали assign, но аргументация такого перехода понятна.
Для себя, если придется править, то может и быстрее. Но вот если передавать код, то другому разобраться в нем сложнее.
Просто всегда встречал такой код у тех, кто из программирования пришел к написанию RTL.
Гораздо нагляднее, чем городить?: (?: (?: (?: (? :)))).

Для такого случая наглядней assign, тк есть переприсвание в начале на неупомянутые в if биты.
Это затрудняет понимание именно этого кода.
Куда понятней тот же код, где явно описано три возможных вариант в столбик и где (главное для понимания) определены все биты:
assign new_data_c = ()? {,} : ()? {,} : {,};
Я обратил внимание, именно, на сложность интерпретации переприсваивания и возможных ошибок при этом.
Переприсваивание это строчка new_data_c = data_d1; вначале.
assign более явно описывает комбинаторную логику и сразу понятна ее реализация.
Там нельзя сделать переприсваивание и ошибки, только 3 явных и главное полных состояния выхода.
IMHO
Использование always_comb, для такого кода в бонусе выдает, что это писал начинавший с программирования софта.
Железячник для простоты читаемости кода написал бы явный assign, без переприсвоения.
Странно, что вы ничего не написали о 55нм Bitfury, о котором была статья тут на Хабр.
Он, как было написано, разработан не в Китае и имеет улучшенные характеристики и этим примечателен.
А зачем в листинге на Verilog присутствует везде begin/end?
Часто можно обойтись без них — и удобней читать и код на 50% меньше.
*Обычно удобней и наглядней один always на один reg, и тогда можно избежать begin/end.
Попробовал альтернативы. Остановился на feedly.
Он более всего напоминает ридер, и в нем меньше всего лишних наворотов в интерфейсе.
Но недавно снова вернулся в ридер из за странной проблемы: feedly как-то выборочно отмечает прочитанные при прокрутке. Иногда только со второго раза.
Такая проблема в feedly только у меня?
Приняли заявление на паспорт нового образца. На следующий день получил письмо когда и куда подойти. Срок был дней через 20-25. Когда подошел была небольшая очередь из таких же как я в отдельный кабинет.
Самое приятное, что паспорт забрал через 8 дней, а не через 2 недели как у тех кто там же подавал как обычно.

Могу сказать, что в Питере это реализовано уже не плохо. Им еще бы уменьшить время до даты приема.
Мне это помогает.
Иногда просматривая запись видишь, что пользователь не смог правильно заполнить простую капчу и ушел.
Но клиент не потерян так вебвизор сохранил набранные контакты для связи.
А что за китайские альтернативы?
Я знаю только одного восточного производителя, который продается в России и у которого реализован ГПС/ГЛОНАСС.
Но это Тайвань. (*или для вас это тоже китай?)
1. Да, статья не дописана. Не понятно какое в итоге описание памяти используете. То что привели из примера классическое описание памяти, которое инферится правильно в всех САПРах для FPGA.
А если правильно написать Verilog под архитектуру блоков ПЛИС, то синтезатор сам вставит блоки память РАМ/ROM вместо массива regs на триггерах.
2. Режет глаза «input wire, output wire». Verilog приятен по сравнению с VHDL, тем что соблюдая несколько правил аналогичных код занимает в 2 раза меньшее строк. Имеет смысл только писать «output reg», чтобы сэкономить еще 1 строчку в Verilog2001.
3. У вас FSM вообще без какого-либо ресета. Если проверяли, то это будет работать только во встроенном симуляторе Квартуса. Для нормального симулятора (ModelSim и т.п.) должен использоваться синхронный/асинхронный ресет для всех типов reg. Иначе ничего нормально не промоделируете.
1. Если пишете «с использованием языка Verilog HDL», так хоть бы привели здесь кусок кода контроллера с неким описанием «что здесь происходит».
2. Блочный ввод уже давно архаичность — все можно написать на верилоге в 2 файлах (топ и ваш модуль) + пины.
3. Зачем внешняя SRAM? Если хотели проиллюстрировать работу с памятью написали бы код работы с внутренним SRAM по двум портам (На Верилоге его можно инферить (7 строк кода), а не вставлять как модуль). Тогда бы и через SignalTap показали, что в результате в памяти сохранилось по результатам просто цикла.
4. Внутренний симмулятор квартуса хорош на первых порах. Попробуйте использовать настоящие симуляторы (ModelSim и тп), особенно, с учетом того, что в последних версиях квартуса его убрали полностью.
С нашим сервисом надо радоваться тому, что его можно в терминалах распечатать, и не стоять очередь в кассы.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity