Знакомство с Altera Max II: генератор, счётчик, светодиод.

Продолжаю рассказывать о программировании ПЛИС Altera Max II. В этот раз речь о том, как сделать аналог заводской прошивки — простой мигалки светодиодом на отладочной плате с чипом EPM240T100C5N. В конце статьи прикреплён архив с описанным проектом.

Итак, на моей плате один светодиод, который висит на 77-й ноге. План таков: запускаем внутренний генератор на 5,56 МГц, импульсы делим счётчиком и подаём на светодиод. Для новичка это легко сказать, но где искать и как настраивать компоненты по Квартусу — не всегда очевидно.

Генератор

В правой панели, где IP Catalog, в Library открываем Basic Functions, а в них — I/O. Там будет MAX II/MAX V oscillator. Двойной щелчок запустит процесс, где сначала нужно будет указать, под каким именем сохранить будущий результат (oscillator вполне подойдёт), а затем появится мастер, в котором по умолчанию частота уже будет 5,56, останется только протыкать мастера до конца, а затем ответить, что полученный результат нужно включить в проект (можно выбрать галочку, чтоб всё, что делается из IP Catalog’а, автоматически добавлялось, хотя с этим лучше не торопиться). Теперь наш гена появится в перечне Symbol Tool, когда будем рисовать диаграмму.

Счётчик

Также достаётся из каталога: Basic Functions — Arithmetic — LPM_COUNTER. Также по двойному щелчку в мастере нужно будет указать:

  • разрядность счётчика;
  • модуль делителя;
  • дополнительный вывод.

Частота генератора — 5560000, значит разрядность нужно брать такую, чтобы число, на которое мы хотим разделить, поместилось в разряды. Например, разрядности 23 будет достаточно, если на выходе захочется получить 1 или 2 Гц (делить нужно на 5560000 или 2780000). Получим 223=8388608, что даже с запасом (222=4194304, а этого для получения 1 Гц мало).

Модуль — это делитель. Сделаем, чтобы на выходе было 2 Гц (тогда светодиод будет полсекунды гореть и полсекунды молчать, получится один импульс в секунду длительностью полсекунды): разделим на 2780000.

Ещё нужен дополнительный выход. Дело в том, что сам результат деления нас мало интересует, важно, чтобы где-то на выходе счётчика появилась логическая единица, когда количество входных импульсов достигнет нужной нам величины. Такой выход — признак переполнения счётчика — Carry-out. Включим его.

Схема

Теперь осталось набросать схему, назначить входу-выходу конкретные контакты и откомпилировать проект.

Да, в этом месте меня ждала неудача. Светодиод молчал. Причина тому проста: на выходе счётчика единица появляется при достижении заданного значения, но при следующем же импульсе переходит в ноль. Получаем один импульс в полсекунды и шириной меньше микросекунды, т. е. скважностью, равной частоте. А нужно, чтобы светодиод успел погореть! Здесь на помощь пришёл счётный триггер: на вход T подана единица, а на счётный — выход из счётчика. Импульс по переполнению опрокидывает триггер до следующего импульса.

Находится триггер среди прочих символов в разделе primitives — storage и называется tff (T-flip-flop).

Проект целиком прилагаю в архиве. Можно открыть и заглянуть в Assignment Editor: там заданы не только ассоциации ножек, но также указано, что вход подтянут через слабый резистор к питанию (поэтому генератор по умолчанию включен; подав ноль на 99-ю ногу, его можно остановить), а выходной настроен на нагрузку 16 мА.

Интересно, что прошивка занимает всего 35 логических логических элементов ПЛИСины, и в запасе остаются ещё 205.


Protected by Copyscape Online Plagiarism Test
Вы не можете высказаться или оставить ссылку здесь...

Обсуждение закрыто.

Powered by WordPress | Thanks to NewWpThemes | Александр Божок