
- •Введение в логическое проектирование аппаратуры Аннотация к курсу
- •Лекция 1 «Схемы без памяти» Введение
- •Схемы из функциональных элементов
- •Представление схем на языке Verilog Общая информация о языке
- •Модули, пример “Hello World”
- •Синтезируемое подмножество языка
- •Логические значения и операции над ними
- •Многоразрядные константы
- •Непрерывное присваивание
- •Операции над битовыми массивами
- •Инстанцирование модулей
- •Лекция 2 «Схемы с памятью» Введение
- •Абстрактный автомат
- •Структурный автомат
- •Триггеры
- •Описание схем с памятью на языке Verilog
- •Моделирование памяти
- •Процедурное присваивание
- •Always-блоки
- •Управляющие конструкции
- •Лекция 3 «Примеры проектирования на языке Verilog»
- •Лекция 4 «Дискретно-событийное моделирование» Введение
- •Дискретно-событийное моделирование аппаратуры Основные понятия
- •Цикл работы симулятора
- •Дельта-задержка
- •Занятие 5: Контрольная работа
Лекция 4 «Дискретно-событийное моделирование» Введение
Как мы уже знаем, модели аппаратуры на HDL-языках можно выполнять в специальном программном окружении — симуляторе. Большинство симуляторов аппаратуры основано на парадигме дискретно-событийного имитационного моделирования (event-driven simulation), называемой также принципом особых состояний. Суть этого подхода заключается в абстрагировании от непрерывной природы явлений (например, распространение электрического тока) и рассмотрении только основных событий в моделируемой системе (изменение уровня сигнала, окончание времени ожидания). Дискретно-событийное моделирование имеет огромную сферу приложений, включая рассматриваемое нами моделирование аппаратуры, а также моделирование бизнес-процессов, боевых действий, транспортных потоков. Основателем подхода считается Джеффри Гордон (1960-ые гг.).
Альтернативой событийному моделированию является моделирование по интервалам времени (cycle-driven simulation).
Дискретно-событийное моделирование аппаратуры Основные понятия
Модельное время (время симулятора) — дискретная величина, не убывающая в процессе моделирования, значения которой кратны заданной точности моделирования.
Событие — это изменение значение сигнала, осуществляемое в определенное время. События вызываются присваиваниями и происходят мгновенно. Если присваивание не меняет значения сигнала, события не возникает.
Очередь присваиваний (транзакций) — упорядоченный по времени список запланированных присваиваний (с каждым присваиванием A ассоциировано время tA, когда оно осуществляется). Список является глобальным для всех сигналов модели.
Драйвер сигнала — проекция очереди присваиваний для данного сигнала, то есть драйвер сигнала — это список запланированных изменений этого сигнала.
Пример
A <= #2 1;
B <= #4 0;
C <= #8 1;
Очередь присваиваний: (A, 1, 2), (B, 4, 0), (C, 8, 1)
Обработчик события — множество процессов, которые запускаются при возникновении события. Обработчик события, может порождать новые присваивания (transaction generation), которые добавляются в очередь присваиваний. Важно отметить, что сами присваивания при этом не осуществляются.
Примеры
always @(posedge clk) ... // обработчик положительного фронта clk
assign z = #10 x & y // обработчик изменения x или y
Цикл работы симулятора
Получить очередное присваивание (или присваивания) A из очереди.
Изменить текущее время симулятора Tsim на время TA.
Осуществить присваивание (присваивания).
Если возникло событие, вызвать обработчик события.
В начальный момент Tsim=0 и запускаются процессы инициализации (initial) и другие процессы, для которых не указан список чувствительности.
При обновлении очереди присваиваний (драйвера сигнала) возможны конфликты — одновременные присваивания различных значений. Разрешение конфликтов управляется типами соединений (например, wor и wand), которые в нашем курсе не рассматриваются.
Если несколько присваиваний имеют одно и то же время, их порядок не определен. Порядок вызова активных процессов также не определен. Для задания порядка «одновременных» присваиваний используются дельта-задержки.