ПЛИС — это звучит… страшно. Но не чересчур

Сегодня речь пойдёт о простейшем проекте для программируемой логической интегральной схемы (ПЛИС), а именно — связки USB Byte Blaster и отладочной платы с чипом Altera Max II на борту. Поменьше слов — побольше картинок. А если этот проект чем-то не подойдёт — я подготовил ещё один посложнее и поинтереснее, с мигающим светодиодом.

Маленькая прелюдия

Желание начать что-то новое, пожалуй, одно из ценнейших. Любой, кто вдоволь наигрался с Ардуино, и даже освоивший STM 32 рано или поздно сталкивается с мыслью: а не попробовать ли что-нибудь ещё круче? Такое, чтоб цифровую обработку сигналов в реальном времени (DSP)… И это что-нибудь — конечно ПЛИС (термины CPLD и FPGA гуглятся в первый же день изучения).

И пусть на рынке есть не одно имя, но чипы Intel со средствами разработки Altera пока что доступнее других по цене (а вообще CPLD, а тем более FPGA — штука, прямо скажем, не из дешёвых). Конечно, Cyclone V — головокружительная железяка, но для первых простеньких проектов можно обойтись и Max II.

Демо-плата с чипом EPM240T100C5N и программатор USB Byte Blaster на Aliexpress обошлись чуть меньше, чем в 10 долларов с учётом доставки.

Бесплатная версия среды разработки Quartus II Lite версии 17.0 для Linux скачана с официального сайта. Пройден этап запуска Квартуса через sudo, нагуглены способы победить доступ к программатору, который ни в какую не хотел толком опознаваться, не говоря о прошивать (например здесь и здесь).

Осталось залить что-то простое, но что? Есть хороший проект «Марсоход», но у меня другая плата, светодиод всего один… Если читатель остановился на этом же вопросе — то мой дальнейший рассказ попадёт прямо в точку.

Простейший проект для Max II

Что может быть проще одного элемента «и-не»? Ну ладно, элемент «не», но это уже слишком просто. Открываем Квартус.

Создаём новый проект: File — New Project Wizard… Даём осознанное название, указываем каталог, где будут храниться файлы.

На следующих двух шагах создаём пустой проект, и никаких файлов пока не добавляем.

Далее выбираем семейство Max II и тип корпуса Any QFP — список вариантов внизу сократится, и останется выбрать строку со своим чипом — EPM240T100C5.

Следующие два шага проходим как есть, без изменений.

Проект создан. Настало время что-то в него добавить. Кнопка New… или File — New…, выбираем Block Diagram/Schematic File (не потому, что так надо, просто рассказ о языке VHDL занял бы слишком много времени).

Используя инструменты из панели, рисуем на появившемся поле. Выбираем Symbol Tool и в дереве находим элемент and2; снимаем галочку Repeat-insert mode.

ОК, ставим этот элемент. Далее, используя выпадающий список входов-выходов, рисуем два входа и один выход. Затем берём простую линию и соединяем их с ногами элемента. Если вам это впервой — подскажу: выбрав рисование линий, нужно нажать на одном конце и тянуть к другому, затем отпустить. Необычно, но можно привыкнуть. Затем двойным щелчком по названиям входов-выходов открываем текстовое поле и меняем названия. Должно выйти так:

Самое время сохраниться. Теперь берёмся за Assignment Editor (на панели инструментов кнопка из синего ромбика и карандаша, см. всплывающие подсказки). Нужно заполнить таблицу соответствия входов-выходов на схеме реальным ножкам микросхемы. Щёлкаем на поле To, пишем название как на схеме; переходим к Assignment name, раскрываем двойным щелчком, выбираем Location (подсказка: список очень большой, чтобы не листать долго, можно нажать L — и указатель попадёт в нужное место).

Тут нужно маленькое отступление. На моей плате светодиод через перемычку и резистор подключен к выводу 77 микросхемы. Входы мне показалось удобным взять №99 и 100. Исходя из этого Value указываем так:

Пора скомпилироваться! Start Compilation на панели инструментов. Квартус сначала предложит сохранить проект.

Сохраняем и ждём. Компиляция идёт достаточно долго, минута — это нормально, нужно много чего проверить, собрать… По окончании видим отчёт.

Предупреждения сейчас не страшны, главное, что Total logic elements у нас 1 из 240 (ещё бы, мы же один-то и использовали), Total pins заняты 3 из 80 (что тоже правильно). Теперь можно открыть Pin Planner (см. кнопки на панели инструментов), чисто чтобы ознакомиться с возможностями Квартуса.

Что здесь? Направления ног In и Out опознались правильно, видно, что они по умолчанию настроены на нагрузку до 16 мА, понятно, где они на чипе. Можно открыть и Chip Planner (у меня он при открытии поругивается, предлагает купить версию пожирнее, но я вежливо отказываюсь), ткнуть в тёмно-синий блок, в котором планируется разместить нашу логику и нажимая кнопки с ножками-стрелочками в панели слева засветить связи с ножками чипа. Заодно справа видно часть схемы, к которой этот блочок относится (особенно полезно, когда схема большая). Потом можно будет смотреть даже время, которое требуется сигналу на прохождение определённого участка цепи. Приятно.

Пора уже залить это дело в сам камень. Открываем Programmer.

Сначала нужно выполнить Hardware Setup.

В выпадающем списке просто выбрать установленный в системе программатор и закрыть это окошко. В программаторе должны стоять все галочки — и можно жать Start. Если всё настроено правильно — по окончании прошивки Progress будет зелёным и с надписью 100% (Successful).

Можно тихонько сказать «ура» и посмотреть на отладочную плату. Светодиод может не гореть. А может гореть — в зависимости от того, насколько сильны наводки (о подтягивающих резисторах я не рассказал для краткости). Ну что, раз это «и-не», значит только единицы на обоих входах зажгут светодиод на выходе. Проверяем: берём на плате GND и +3.3 и подаём их на выводы 99 и 100.

Молчит? Молчит. Поменяли местами плюс и минус. Молчит? Молчит. Теперь плюс ему на обе ноги.

Горит? Горит. Поздравляю! Вы только что запрограммировали CPLD Altera MAX II.


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

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

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