23 / 37 · Теория
Моменты выборки и причинность на временных диаграммах
Читайте диаграммы, разделяя установление комбинационной логики, захват тактом и порядок событий.
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
Даже внутри одной временной отметки есть порядок
Одинаковая отметка изменения сигналов на диаграмме не означает беспричинной одновременности. В событийном RTL-симуляторе значения устанавливаются после активных событий, неблокирующих обновленийНеблокирующее присваивание обозначается <= в последовательностном RTL. Оно вычисляет правую часть, затем планирует обновление, позволяя регистрам на одном фронте рассчитываться по предыдущему состоянию. Подробнее и других этапов. Реальные компоненты меняются после clock-to-Q и комбинационной задержки распространенияЗадержка распространения — время от изменения входа до установления правильного выхода. Логическая эквивалентность выражений и их временные характеристики — разные вопросы. Подробнее. Эти модели нужно различать.
В практикуме строим прогноз по этапам: подача входа → комбинационное вычисление → захват положительным фронтомПоложительный фронт — момент перехода такта из 0 в 1. Его следует отличать от уровня, означающего весь интервал CLK=1. Подробнее → обновление состояния. Уточняйте моменты подачи входов и записи результатов в используемом инструменте.
Нужно проверить реальное расписание событий симулятора и момент регистрации выхода. Последовательность ниже — четыре различаемых этапа прогноза, а не четыре тактовых периода.
- Подача входов: Измените a, b, sel
- Комбинационное вычисление: y = sel ? b : a
- Положительный фронт: Захватите y непосредственно перед фронтом
- Наблюдение после обновления: Сравните sampled_y
Сначала независимо вычислите ожидания
Для каждого набора вычислите y, затем в отдельном столбце укажите фронт, на котором значение попадёт в q. Первая строка расхождения с результатом сужает поиск до подачи входа, функции выбора или хранения.
Различайте переход и установившееся состояние
Если при смене селектора данные одинаковы, конечный выход должен остаться тем же, но разница задержек внутренних путей может вызвать короткий выброс. При этом нормальный переход к другому значению не следует называть выбросом. Сравнение логических диаграмм и физический временной анализ отвечают на разные вопросы.
В обычном тестбенче изменение воздействий на том же положительном фронте, что и DUT, с немедленным чтением может создать гонку. Разделяйте моменты управления и наблюдения либо используйте явную синхронизацию, например clocking block. Предлагаемый практикум DDS использует входной JSON и правила одного такта инструмента; произвольный тестбенч с #delay не добавляется.
Попробуйте сами
Если конечные y и sampled_y на диаграмме оба равны 1, можно ли заключить, что промежуточные циклы тоже правильны?
Прочитать объяснение
Нет. Перепутанный селектор или запись с задержкой на цикл тоже могут дать тот же итог при последних a=b=1. Сравнивайте ожидания на каждом фронте и обязательно включайте переключения sel при разных a и b.