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

5.2 Описание настроек моделирования

В языке Verilog HDL имеется ряд конструкций, позволяющих задать некоторые параметры для среды моделирования. Такие конструкции реализованы в виде директив компилятора. Наиболее часто используемой является директива timescale. Данная директива позволяет установить точность моделирования, а также шаг моделирования, т.е. минимальную единицу времени при моделировании. На рисунке 5.2.1 представлен синтаксис директивы timescale.

Рисунок 5.2.1 — Синтаксис директивы timescale

  • [time_unit] – Минимальная единица времени моделирования. Пример значений: 1ns;

  • [time_precision] – Точность моделирования. Пример значений: 100ps.

После включения данной директивы в код тестового окружения, можно пользоваться такой конструкцией, как #N, где N – некоторое число. Это позволяет ждать прохождения некоторого заданного временного интервала.

На рисунке 5.2.2 представлен пример использования конструкции #N, для задания сигнала В через 10ns после задания сигнала А.

Рисунок 5.2.2 — Пример использования конструкции языка Verilog HDL, #N

5.3 Тестовые последовательности и блок initial

Ключевым элементом в тестовом окружении является часть, создающая тестовые последовательности. Для описания этой части может использоваться блок initial, который представляет собой специальную конструкцию языка Verilog HDL, аналогичную блоку always. Вся разница заключается в том, что в отличие от блока always, срабатывающего по определенному событию, блок initial срабатывает лишь единожды — при старте моделирования. На рисунке 5.3.1 представлен шаблон для описания блока initial.

Рисунок 5.3.1 — Шаблон описания блока initial

  • [label] – Данная конструкция служит для облегчения чтения кода и является опциональной;

  • [data_type] – Тип сигнала, переменной и т.д. Аналогично блоку always;

  • [data_name] – Название сигнала, переменной и т.д.;

  • [proc_statement] – Процедурное присваивание.

Стоит отметить, что кажущаяся на первый взгляд простота и бесполезность данной конструкции, обманчива. Например, пользуясь конструкцией языка Verilog HDL, #N, моделирующей время, можно описать удивительное множество полезного кода, тестирующего аппаратуру. Например, блок, тестирующий поведение однобитного компаратора, описанного выше, может иметь вид, представленный на рисунке 5.3.2.

Рисунок 5.3.2 — Пример блока initial, тестирующего однобитный компаратор

5.4 Описание генератора тактового сигнала

Неотъемлемой частью тестирования последовательных схем является

моделирование тактового сигнала. Для этих целей описывается отдельный блок initial. На рисунке 5.4.1 приведен пример описания генератора тактового сигнала. В этом описании используется новая конструкция, forever, представляющая собой бесконечный цикл. При реализации тестового окружения не рекомендуется использовать множество таких циклов, т. к. это может привести к падению скорости моделирования.

Рисунок 5.4.1 — Пример описания генератора тактового сигнала

При реализации генераторов тактовых сигналов, для большей гибкости можно использовать константы и параметры, а также выносить описание в отдельные модули.

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