Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Introduction_to_Hardware_Design.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
423.94 Кб
Скачать

Лекция 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

Цикл работы симулятора

  1. Получить очередное присваивание (или присваивания) A из очереди.

  2. Изменить текущее время симулятора Tsim на время TA.

  3. Осуществить присваивание (присваивания).

  4. Если возникло событие, вызвать обработчик события.

В начальный момент Tsim=0 и запускаются процессы инициализации (initial) и другие процессы, для которых не указан список чувствительности.

При обновлении очереди присваиваний (драйвера сигнала) возможны конфликты — одновременные присваивания различных значений. Разрешение конфликтов управляется типами соединений (например, wor и wand), которые в нашем курсе не рассматриваются.

Если несколько присваиваний имеют одно и то же время, их порядок не определен. Порядок вызова активных процессов также не определен. Для задания порядка «одновременных» присваиваний используются дельта-задержки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]