Счетчик и внутренний тактовый генератор в FPGA/ПЛИС EPM240T100C5

Счетчик и внутренний тактовый генератор в FPGA/ПЛИС EPM240T100C5

Использование внутреннего тактового генератора и счетчика в качестве делителя частоты в FPGA/ПЛИС Altera MAX II EPM240T100C5/EPM240T100I5 в блок-схемах.

Продолжаю изучать ПЛИС/FPGA EPM240 в блок-схемах Quartus II Web Edition версии 13. Очень часто необходимо что-то посчитать, например отрезок времени для таймера. А так же иметь тактовый сигнал, например для триггеров или таймеров.

Счетчик lpm_counter в Altera MAX II EPM240.

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

Простой пример работы счетчика с визуализацией с помощью светодиодов приведен на схеме ниже.

altera max II epm240 lpm_counter example

Я тестировал на собранной ранее отладочной плате для ПЛИС Altera MAX II EPM240.

Кнопка 1 заведена на D-триггер на примитиве DFF2. Эта кнопка отвечает за направление счета вверх/вниз.

Кнопка 2 заведена на вход счетчика. При нажатии будет происходить сдвиг на 1 вверх или вниз.

Работу устройства можно посмотреть на видео в конце статьи.

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

Встроенный тактовый генератор ALTUFM_OSC в EPM240.

В EPM240T100I5/EPM240T100C5 есть встроенный тактовый генератор. Его частота заявлена от 3 до 5 МГц. У меня работает примерно на 5 МГц. В блок-схемах генератор находится в мегафункции altufm_osc. Данный примитив имеет 1 вход и 1 выход.

При подаче логической единицы на вход OSCENA с выхода OSC мы получим тактовый сигнал.

Переделаем схему на счет от тактового генератора. Если напрямую подключить выход 5 МГц на вход счетчика, глаз не заметит скорость переключения светодиодов. Поэтому частоту нужно поделить.

Включение внутреннего генератора происходит в памяти UFM, поэтому не забываем ставить соответствующую галочку во время прошивки микросхемы.

Делитель частоты Altera MAX II EPM240.

Как я писал выше, счетчик lpm_counter имеет флаг переноса. То есть при достижении максимального значения, на выходе Carry-out (cout) будет 1. Используем эту возможность для создания делителя частоты.

Так как частота EPM240T100C5/EPM240T100I5 у меня примерно 5 000 000 Гц, нужно поделить частоту так, чтобы глазу было заметно переключения светодиодов. Разделив на 500 000 получим 10 тактов в секунду. Подходит. Ближайшее число где все биты будут установлены в 1 это 19 бит. При 19 битах до флага переноса у нас будет 524 288 тактов. То есть за 1 секунду будет чуть меньше 10 переключений светодиодов.

Добавим на схему еще один lpm_counter, зададим ему имя lpm_counter1 и установим счет до 19 бит. Направление вверх (up).

epm240 counter devider

Также необходимо установить галочку Carry-out для активации выхода флага переноса cout.

altera max II counter carry out cout

После добавления нового счетчика, добавим ALTUFM_OSC в нашу блок-схему и соединим все как на картинке ниже.

FPGA EPM240T100C5 lpm_counter altufm_osc

В прошивке отмечаем оба блока CFM и UFM.

При включении платы на кнопке 2 будет лог. единица, а значит генератор будет выдавать импульсы на выходе. Если нажать кнопку 2, счетчик остановиться. Кнопка 1 будет переключать направление счета.

Видео с демонстрацией работы:

При копировании материалов ссылка на https://terraideas.ru/ обязательна

Комментарии к статье: Счетчик и внутренний тактовый генератор в FPGA/ПЛИС EPM240T100C5

Нет ни одного комментария. Будьте первым!