Элемент Задержки В Vhdl

При проектировании различных цифровых устройств, в частности контроллеров, необходимо организовать задержку подачи одного и того же сигнала на разные выводы ПЛИС или на другие элементы внутри ПЛИС.

Сначала рассмотрим аналогичную ситуацию с дискретной логикой.

Обычно, если у разработчика есть микросхема с шестью вентилями НЕ (например, 155ЛН1), он использует последовательное соединение двух элементов в качестве элемента задержки (10.20 наносекунд).

Иногда он вставляет между ними RC-цепочку, с помощью которой можно сделать время задержки от 10 до 150 нс.

В микросхеме FPGA задержка НЕ МОЖЕТ быть организована таким образом.

Все дело в особенностях синтеза конструкции.

Программа синтеза воспринимает двойной минус как лишнее звено (как ошибку) и устраняет его.

На RC-цепях также невозможно организовать задержку, поскольку ПЛИС плохо переносит емкостные нагрузки.

Поэтому для организации задержки я рекомендую следующий способ.

Схематично это выглядит так:

Элемент задержки в VHDL

Сигнал Ct — это тот же сигнал C, только с задержкой 100 нс.

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

Период этого сигнала представляет собой минимально возможное время, на которое мы можем задержать сигнал Ct относительно C. В нашем случае период опорного временного сигнала составляет 50 нс (частота 20 МГц).

Теперь представляю вашему вниманию «железную» конструкцию элемента задержки:

Элемент задержки в VHDL

В этой структуре есть только один непонятный синий элемент «Э».

На самом деле это всего лишь продукт комбинаторной логики.

Я не буду расшифровывать структуру этого элемента; Приведу лишь таблицу истинности:

Элемент задержки в VHDL

Элемент ЭT представляет собой обычный D-триггер с синхронизацией по фронту сигнала C. Элемент ТТ представляет собой счетчик импульсов опорной частоты (времени) REFTIME. В дополнение к тактовому входу CLK он имеет вход разрешения CE. Чтобы сгенерировать время задержки 100 нс, счетчик должен закончить счет до двух (50 x 2 = 100).

Этот параметр впоследствии необходимо указать в коде VHDL счетчика.

?Элемент розового цвета – 3-ИЛИ.

Буфер BUF необходим для отделения выходного сигнала Ct от внутреннего сигнала CLR. Опытному разработчику нет необходимости объяснять, как работает эта схема, но поскольку эту статью читают и начинающие разработчики, я приведу краткое описание того, как работает схема.

Внешний сигнал REFTIME частотой 20 МГц подается на счетчик ТТ непрерывно.

Вход «D» Т-триггера постоянно привязан к логической единице.

При подаче фронта сигнала С на вход CLK триггера первый из них появляется на входе элемента 3-ИЛИ.

Этот элемент сразу позволяет счетчику считать.

Как только счетчик досчитал до 2х, D-триггер тут же сбрасывается в состояние логического нуля и вместе со следующим импульсом REFTIME на его выходах появляются логические нули.

При этом аккаунт блокируется.

Особенность этой схемы в том, что сигнал С не только задерживается на 100 нс, но и сокращается его длительность до 50 нс (т.е.

до периода опорного сигнала).

В большинстве случаев эта особенность не является критичной и ее можно просто игнорировать.

Но эту особенность можно также использовать целенаправленно для формирования длительности импульса.

Представляю вашему вниманию текст VHDL программы элемента задержки:

Элемент задержки в VHDL

Процесс, обозначенный p1, описывает поведение D-триггера, а процесс, обозначенный p2, описывает поведение счетчика.

Теги: #vhdl #vhdl #vhdl #vhdl #delay #pls #pls #pls #signal #программирование микроконтроллера

Вместе с данным постом часто просматривают: