Программа для работы с плис. Осваиваем программируемые логические матрицы фирмы – altera

Ты ждал знак? Вот он!

Много лет я не решался начать программировать ПЛИС, потому что это сложно, дорого и больно (как мне казалось). Но хорошо, когда есть друзья, которые помогают сделать первый шаг. И теперь я не понимаю одного - ПОЧЕМУ Я ЖДАЛ ТАК ДОЛГО?

Сейчас я помогу сделать первый шаг и тебе!

А зачем оно мне?

Ты устал постоянно читать доки по своему МК или держать кучу информации в голове. Ты все переписал на asm, но скорости все равно не хватает. Ты подключил два внешних устройства к своему МК, подключаешь третье, но у тебя кончились прерывания, перестают работать те модули, что уже работали. Ты берешь другой МК, более мощный из той же линейки, но опять мануалы, регистры флагов, биты… ад. Меняешь платформу: переходишь на другой МК и выкидываешь на помойку свои знания по прежней платформе. Что бы ты не делал - оно дается тяжело. Ты находишь популярную платформу, в которой можно легко из компонентов собирать проект, но выше аппаратных ограничений данного МК все равно не удается прыгнуть… Где-то на краешке сознания иногда проскакивает мысль, что вот на ПЛИС это бы точно заработало быстро и параллельно, что это «именно та задача, которую бы надо решать на плис», но я стар/глуп/занят/etc чтобы суметь/начать такое делать.

Хочешь наконец вздохнуть свободно? Идем дальше!

Радость от разработки на ПЛИС

У меня был тяжелый рабочий день. С одной работы я приехал на вторую работу, потом на дачу, вечером домашние дела, уроки, потом семейный просмотр кино и только в 23 часа я оказался совершенно свободен! Сказать, что я был уставший - ничего не сказать. Но в таком состоянии я сел за ноут с твердой целью: сделать генератор меандра на 440 Гц. Прошло 20 минут и я уже слышал его в наушниках. Я не верил своим ушам! Еще 15 минут мне потребовалось, чтобы сделать ШИМ и менять громкость. К тому времени плата с ПЛИС у меня была всего с неделю и до этого я пролистал всего пару книг по Verilog.

В тот вечер я понял: ВОТ ОНО! Вот та платформа, в которой я быстро и легко могу превращать свои мысли в реально работающее железо!

Почему так?

Опишу плюсы, которые есть в изучении и применении ПЛИС, хотя их и так все знают:
  • Универсальность знаний - при смене модели МК нужно читать доки. При смене производителя МК нужно читать доки. Нужно постоянно читать доки, постоянно держать в голове кучу информации. При разработке на ПЛИС, если знаешь Verilog или VHDL, то можно не только программировать любой ПЛИС из линейки одного производителя, но и при желании перейти на другого (Altera, Xilinx). Хоть и будут моменты с освоением другой среды разработки, тонких аппаратных моментов, но сама суть подхода проектирования устройств на HDL от этого не изменится.
  • От идеи к железу - при разработке проекта, если тебе не хватает одного мк, то приходится выбирать другой. В принципе можно строить предположения справится или не справится этот МК с проектом. Либо есть какой-то конкретный МК и ты пытаешься туда вместить проект. Чаще всего именно так. Мне это чем-то напоминает подход моего деда, который делает лестницу из того, что есть в сарайке. Хотя можно спроектировать лестницу, купить досок, которые подойдут… От идеи к железу, а не наоборот.
  • Простота применения чужих разработок - можно взять чужой модуль и применить его в своем проекте. По коду сможете понять, как он работает. Даже, если он для xilinx, а вы делаете под altera. Иногда это получается не сарзу, но это проще, чем, например, добавлять двоичные библиотеки к проекту на c++/Qt
  • Независимость блоков. Блоки в HDL, как чистые фунции в ЯП. Зависят только от входных сигналов. Разработанный и отлаженный модуль в будет и дальше работать правильно, как бы не рос проект. Ничто снаружи не повлияет на правильность его работы изнутри. Да и вообще можно забыть, как он работает - это черный ящик. К тому же, блоки работают параллельно .

Проблема выбора

Сильно останавливают вопросы, что выбрать: Altera/Xilinx, Verilog/VHDL, какую отладочную плату взять. Но обо всем по порядку.

Производитель

Я выбрал Altera . Почему? Ну мы вот так с другом решили, хотя название Xilinx мне красивее. НО. Если ты сейчас не можешь выбрать, то я сделаю это за тебя. Тебе нужен Altera! Почему? Я не знаю. Сейчас важнее сделать шаг: сделать выбор. Я выбрал Altera и пока не пожалел.



Язык

Берем Verilog - потомучто … ну ты понял.

Отладочная плата

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

В семействе Altera, за разумные деньги мы можем купить платы с CPLD MAX II на 240, 570 и 1270 элементов, либо более старшие микросхемы FPGA, которые Cyclone 1, 2, 3, 4 с количеством до 10000 и более ячеек. Как же выбрать?

Даже на базе 240 ячеек, проект Марсоход делает просто огромное количество проектов . Настоятельно рекомендую ознакомиться, чтобы иметь примерное представление о сложности проектов, которые можно уместить в 240 ячеек. С другой стороны, существуют проекты , которые полностью программируются под аппаратную копию определенного ПК, включая процессор и всю логику вокруг него (NES , Speccy , Orion , ЮТ-88 , etc). Для этого уже требуется пять, десять и более тысяч ячеек. Плюс эти платы содержат дополнительные внешние устройства.

Поэтому я бы посоветовать взять что-то среднее между 240 и 10000 ячейками, с предпочтением в сторону увеличения в зависимости от доступных средств. На отладочной плате лишние ячейки это не страшно, а если их не хватит - уже ничего не поделаешь. Потом, когда устройство отлажено, станет ясно, сколько надо ячеек, купить под нужное количество, без лишнего «обвеса», дешевле и оставить в готовом устройстве.

То, чем действительно отличаются MAX от Cyclone"ов, кроме количества ячеек, это:
1) У серии MAX внутри нет PLL. На каждой отладочной плате есть генератор, как правило на 50 МГц. Основной массе проектов этого будет достаточно. Все синхронизации будут происходить путем деления 50 МГц на какое-нибудь значение. Либо, можно взять внешний генератор и подать на отдельный вход ПЛИС. А что, если потребуется частота выше 50 МГц? Мне не удалось с ходу найти генераторы выше 50 МГц. Но тут как раз на помощь и приходит PLL, который встроен в Циклоны. На нем можно умножить частоту, например, до 100 МГц.
2) В серии Cyclone встроены аппаратные блоки умножения. Их количество зависит от конкретной модели - тут как раз можно «всетаки заглянуть в инструкции», чтобы узнать сколько. Если предполагаете делать какой-то ЦОС, то они пригодятся: сэкономят ячейки, увеличат скорость. С другой стороны, если нет умножителей, их можно синтезировать, но у маленькой ПЛИС на это может не хватить ресурсов.

Во всем остальном у меня критерий «влезло/не влезло». Отладка на заведомо бОльшей, чем нужно плате, с последующей заливкой в минимально необходимую для этого.

Сколько нужно денег?


Программатор
Я считаю, что у меня нет времени, чтобы паять программаторы на рассыпухе.

300 рублей. Я свой брал на ебее , выглядит так:

Отладочная плата
Выбор широкий, в зависимости от количества денег.

Начальный уровень 350 - 550 рублей. Это платы на MAX II ( или ячеек). Могут подойти для начального ознакомления и дальнейшего пристройства в конечные устройства. На плате есть генератор, пара кнопок, пара светодиодов, остальные 80 выводов на свое усмотрение.

Блок питания
Обязательно должен быть, но не всегда идет в комплекте. Потребуется БП на 5 вольт и ток 2А.

Средний уровень от 900 до 1500 рублей. Это платы Cyclone 1, 2, 3, 4 отличающиеся в основном количеством ячеек.
Маркируются примерно так:
EP2 C5 T144 - Cyclone 2 примерно 5к ячеек
EP4 CE6 E22C8N - Cyclone 4 примерно 6к ячеек
EP2 C8 Q208C8N - Cyclone 2 примерно 8к ячеек

Можно заметить, что Cyclone 3 может иметь больше ячеек, чем Cyclone 4.

Вот несколько вариантов:

835 рублей.
ALTERA FPGA CycloneII EP2C5T144 Minimum System Board for Learn good

880 рублей
Altera CycloneII EP2C5T144 FPGA Mini Development Learn Core Board E081

1265 рублей
EP2C8 EP2C8Q208C8N ALTERA Cyclone II FPGA Evaluation Development Core Board

Платы с расширенными возможностями . Это платы, на которых установлены дополнительные модули (UTP, USB, AUDIO), разъемы (SD, VGA), кнопки, переключатели, светодиоды, семисегментные индикаторы и т.д. Либо может идти базовая плата, а к ней могут прилагаться платы расширения отдельно.

У меня трудится такой комплект - плата + плата расширения:
Altrea EP4CE10E22 FPGA CORE Board+ Device Board USB/Sound/Ethernet/SD Card/VGA
2760 рублей

Вот основная плата. На ней есть 2 светодиода, 2 кнопки, 4 переключателя, семисегментный интикатор и микросхема оперативной памяти.

Плата расширения. На ней распаяны SD, VGA, а так же контроллеры USB(High Speed USB2.0 Chip: CY7C68013A), AUDIO(Sound Card up to 96kHz/32bit ADC/DAC: WM8731S), UTP(100M Ethernet interface: DM9000A):

Эти платы просто вставляются одна в другую, но у меня она пока лежит в ящике. Для своих поделок у меня макетка, с которой я соединяюсь шлейфом, который идет в комплекте. Еще в комплекте идет блок питания на 5 вольт.

Это первая часть цикла посвященная программируемой логике и среде разработки Quartus компании Altera. В ней разбирается процесс получения дистрибутива бесплатной редакции IDE Quartus. А также процесс создания нового проекта в данной среде.

Следующая часть цикла: ПЛИС Altera. Часть 2: проектирование цифровой схемы.

Во второй части разбирается процесс добавления к проекту новых файлов. Визуальное проектирование цифровой схемы.

Данный цикл статей ориентирован на работу с платой CTRL-CPLD-EPM570 на чипе Altera Max II. Эта плата не является строго необходимой для успешного освоения материала, так как описываемый в нем проект не использует каких-то специальных возможностей Max II.

Для загрузки проекта в микросхему используется недорогой программатор совместимый c Altera USB Blaster.

Шаг 1. Получение дистрибутива Altera Quartus

Внимание! В 2015 году Altera была приобретена компанией Intel. Бренд Altera прекратил существование в июле 2018 года, адрес сайта altera.com теперь никуда не ведет. Новое имя Altera – Intel Programmable Solutions Group (PSG). Вся документация и ПО необходимые для работы с ПЛИС Altera теперь доступны на сайте intel.com


Для создания проектов под ПЛИС Altera используется фирменная IDE - Quartus. Версий Quartus существует бесчисленное множество, и требуется выбрать правильную под имеющуюся микросхему. Altera регулярно выкидывает поддержку старых чипов из новых версий своего ПО. В свою очередь, в новых версиях Quartus меняются требования к программному и аппаратному обеспечению компьютера. Например, Quartus 13.1 является последней версией работающий как 64‑х так и 32‑х разрядных системах.

Данная серия статей ориентирована на Quartus версии 13.1. Так как с одной стороны, он не имеет специальных требований к разрядности операционной системы. С другой - он поддерживает микросхемы серии MAX II.

Для получения дистрибутива Quartus необходимо иметь аккаунт на сайте intel.com или intel.ru К сожалению, в настоящее время (в декабре 2018 года) процедура регистрации на сайте Intel несколько затруднена. Форму регистрации отыскать непросто. На нее можно выйти только на заключительном этапе загрузки дистрибутива. Также, в процессе регистрации Вам понадобится предоставить действующий адрес электронной почты, номер сотового телефона и обязательно придумать сложный пароль.

Пока идет активный процесс слияния Intel и Altera лучше воспользоваться сторонними ресурсами для загрузки Quartus. Дистрибутив выложен в общий доступ на Yandex‑диск, ссылка для загрузки: https://yadi.sk/d/bcrz7IAAKY6dQg

Для работы с микросхемой MAX II потребуется сам Quartus, и пакет для поддержки MAX II и MAX V. Это файлы «QuartusSetupWeb-13.1.0.162.exe » и «max_web-13.1.0.162.qdz » соответственно.

В конце статьи доступна и старая версия инструкции по загрузке дистрибутива: . По ней можно получить примерное представление о том, как загрузить дистрибутив с сайта intel, так как на сайте Intel используется Software Selector от Altera. И также как у Altera, Software Selector перенаправляет пользователя на страницу входа при попытке скачать любой файл, в случае если пользователь предварительно не зашел на сайт со своей учетной записью.

Данная страница входа - единственное место, которое содержит ссылку на форму регистрации на сайте Intel. Ссылки для регистрации располагаются в правой части страницы. Для рядовых пользователей можно использовать ссылку «Register now for an individual account ». Ссылка обозначена на рисунке ниже.

Шаг 2. Установка Quartus II Web Edition 13.1

Установка САПР Quartus II не таит каких‑либо сюрпризов и проходит по отработанному алгоритму «Next → Next → Finish».

Параметры установки изменять не требуется. В дальнейшем предполагается что Quartus II был установлен с параметрами по умолчанию.

По окончании установки среда Quartus запустится автоматически. Этот автозапуск активирован по умолчанию.

При первом запуске САПР Quartus будет предложено настроить отправку телеметрии в Altera (здесь это называется TalkBack) и выбрать тип лицензии.

Отключение или включение «TalkBack» задается галочкой «Enable sending TalkBack data to Altera», которая доступна и после установки Quartus через меню Tools → Options → Internet Connectivity → кнопка «TalkBack Options…».

При запросе типа лицензии необходимо просто выбрать второй пункт: «Run the Quartus II software». Таким образом Вы выберете бесплатную лицензию.

На этом установка и первичная настройка ПО завершена и можно переходить к созданию своего первого проекта.

Шаг 3. Quartus II — создание первого проекта

Первым делом создайте папку для нового проекта. Назовите ее «firstproject».

Внимание! Путь до директории проекта не должен включать кириллических символов! С поддержкой кириллицы у Quartus II 15 и 13 версии имеются проблемы. Другие версии не тестировались.


Теперь запустите Quartus II. При запуске свежеустановленного Quartus II Вас встретит окно, вид которого представлен ниже.


Для создания нового проекта воспользуйтесь мастером доступным по кнопке «New Project Wizard» или через меню File → New Project Wizard.

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

Нажмите «Next» и будет выполнен переход к окну представленном на скриншоте ниже. В этом окне необходимо указать рабочую директорию («What is the working directory for this project?») и название всего проекта в целом («What is the name of this project?»). А также имя его главного модуля («What is the name of the top-level design entity for this project? …»).

В качестве имени главного модуля мастер автоматически подставляет название проекта и это общая рекомендация для проектов в Quartus II, от которой не стоит отклоняться без реальной необходимости.


Пара слов о самом «главном модуле». Проект Quartus II может включать в себя множество файлов (модулей) описывающих различные функциональные блоки проектируемой интегральной схемы. И среди этого множества обязательно выделяется один файл, в котором описываются взаимосвязи между всеми блоками схемы - top‑level design entity. Для небольших проектов, содержащих всего один файл, этот единственный файл будет являться и главным модулем проекта.

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

Третий шаг один из самых важных. Здесь необходимо указать конкретную модель используемой Вами микросхемы ПЛИС. Окно мастера на данном шаге представлено на скриншоте ниже. В этом окне доступно множество параметров для поэтапного отбора необходимой микросхемы из обширного списка доступных. Начать лучше всего с блока «Device Family». Здесь нужно выбрать семейство к которому относится Ваш чип. На плате CTRL-CPLD-EPM570 установлен чип EPM570T100C5N, который относится к семейству Max II.


В блоке справа – «Show in ‘Available devices’ list», можно настроить фильтр для сокращения перечня микросхем, который располагается в нижней части окна. Можно указать тип корпусировки микросхемы. Количество выводов ее корпуса. А также скорость работы ядра в условных единицах. Предпоследним идет фильтрация по названию микросхемы. Удобнее всего будет использовать именно её, так как название микросхемы уже точно известно. Но по маркировке EPM570T100C5N никаких микросхем к выбору не предлагается. Сократите название до EPM570T100C5, и выберите в появившемся списке микросхему с этим названием как ближайшую совместимую.

Если обратится к даташиту, то выяснится что последняя буква N в маркировке микросхемы обозначает лишь отсутствие свинца в упаковке чипа. Данный факт не имеет значения для Вашего проекта в Quartus II так как ядро у EPM570T100C5N и EPM570T100C5 абсолютно идентично.

Перейдите к следующему, четвертому шагу – «EDA Tool Settings». Здесь можно настроить интеграцию с различными средствами автоматизированного проектирования от сторонних разработчиков, которые используются профессиональными проектировщиками микросхем. Так как целью этой статьи является помощь в освоении САПР Quartus II, а не целого пакета приложений стоимостью многие тысячи долларов, то просто перейдите к заключительному шагу.


На последнем шаге выводится обобщенный список параметров Вашего нового проекта. Проверьте чтобы были верно заданы такие параметры как: имя и рабочая директория проекта, top-level design entity, маркировка используемой микросхемы. После чего нажмите кнопку «Finish». На этом все! Проект создан.

Возможно, Вы обратили внимание что кнопка «Finish» доступна для нажатия уже с первого шага мастера. И ее действительно можно нажать уже на первом шаге, задав только рабочую директорию, имя проекта и главного модуля. Только эта информация является абсолютно необходимой для создания нового проекта. Все остальные параметры доступны для настройки в любое время, из главного меню программы. Так, чтобы добавить еще файлов в свой проект (второй шаг мастера) используйте меню Project → Add/Remove Files in project. Для выбора или изменения модели микросхемы под которую создается проект (третий шаг мастера) используйте меню Assignments → Device. Интеграция с дополнительными инструментами разработки (предпоследний шаг мастера) – это Assignments → Settings → EDA Tool Settings.

Вообще, все настройки проекта собраны в окне, вид которого представлен на скриншоте ниже. Окно вызывается через меню Assignments → Settings.


Пункт Files – именно это окно вызывается и из главного меню программы (Project → Add/Remove Files in project). EDA Tool Settings – аналогично. Выбор микросхемы доступен по кнопке «Device…» в правом верхнем углу окна настроек проекта.

На этом первая часть статьи по обучению работе с ПЛИС компании Intel (Altera) завершается.

(Архив) Получение дистрибутива Altera Quartus

Для получения дистрибутива Quartus зайдите в свой аккаунт myAltera на сайте altera.com: кнопка «LOG IN» в правом верхнем углу сайта, рядом со строкой поиска.

Если у Вас еще нет аккаунта myAltera, то Вы можете создать его просто перейдя по ссылке в самом низу формы регистрации, строка «Don’t have an account? Create one».

После входа в myAltera перейдите в центр загрузки сайта . Ссылка на момент написания: https://www.altera.com/downloads/download-center.html

Если ссылка окажется нерабочей, то перейдите в центр загрузки через домашнюю страницу своего аккаунта . Для этого выберите раздел «SUPPORT » и в нем перейдите по ссылке «Downloads », которая и приведет Вас в центр загрузки.

В центре загрузки есть прямые ссылки на загрузку последней версии Quartus в различных редакциях. Ниже располагается блок «Software Selector », прокрутите страницу до него.

В Software Selector реализовано несколько способов выбора необходимо го дистрибутива Q uartus, вкладки: « Select by Version» (прямой выбор по требуемой версии ПО ), « Select by Device» (выбор версии ПО по наличию поддержки конкретной микросхемы ), « Select by Software» (выбор программного продукта по его названию ).

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

Например, если используется микросхема Altera Max II , то необходимо выбрать вкладку « Select by Device», и в блоке « Devices» раскрыть пункт « MAX series». В появившемся списке выбрать Max II .

Справа от блока Devices будет выведен список редакций и версий Quartus включающих поддержку Max II . Бесплатной редакцией является только Web Edition.

При выборе версии обратите внимание на тот факт, что Quartus II начиная с версии 14.0 работает только в 64‑битных системах. По этой причине рекомендую остановится на Quartus II 13.1. Далее будет описана работа и процесс установки именно для тринадцатой версии.

После выбора версии Вы перейдете на страницу параметров загрузки дистрибутива Quartus II Web Edition.

«Operating System» - Windows.

« Download Method » выбирайте по своему усмотрению. Отличие «Akamai DLM3 Download Manager» от « Di rect Download» в том, что в первом случае перед загрузкой файлов самого Quartus нужно будет сначала загрузить и запустить дополнительное приложение под ОС Windows. Это приложение позволяет выбрать к загрузке одновременно несколько файлов, а также поддерживает их докачку. При выборе режима загрузки « Di rect Download» файлы можно будет загружать отдельно, каждый по своей ссылке, силами Web-браузера.

На скриншоте выше выбран вариант загрузки « Di rect Download» .

Загрузите файлы «Quartus II Software » и «MAX II, MAX V device support ». Это необходимый минимум для работы с микросхемой MAX II .

Программируемые логические интегральные схемы фирмы ALTERA и система автоматизированного проектирования MAX+PLUS II

Программируемые логические интегральные схемы (ПЛИС), а в зарубежной литературе именуемые PLD (programmable logic devices), - это полу заказные цифровые БИС, которые благодаря архитектурным и технологическим особенностям можно разрабатывать и изготовлять без специализированного технического оборудования. ПЛИС появились на мировом рынке в середине 80-х гг. И сразу получили широкое распространение, переместив процесс создания специализированной БИС с завода на рабочее место проектировщика. Цикл разработки БИС сократился до нескольких часов, и значительно уменьшились соответствующие затраты.

С начала 90-х гг. наибольшим спросом пользуются ПЛИС, обладающие:

высокой логической интеграцией на основе технологий КМОП;

быстродействием до 80 -100 МГц и выше;

возможностью программирования (загрузки внутренней конфигурации) без программатора.

Всем этим требованиям соответствуют ПЛИС фирмы ALTERA (США) - мирового лидера в области ПЛИС. В настоящее время ALTERA выпускает семь семейств ПЛИС различной архитектуры [ 14 ].

В России наиболее известны ПЛИС классического (Classic) семейства, некоторое время выпускаемые компанией INTEL. Основными преимуществами этих микросхем являются простота, низкая стоимость, удобные для монтажа DIP- корпуса, микропотребление энергии в статическом режиме и возможность поддержки отечественными средствами (САПР “ФОРС+” , программаторы “Блиц”, ”Стерх”, ”Форсис”). ПЛИС ЕР220 заменяет любую микросхему серии 1556 (ХП4, ХП6, ХП8, ХЛ8) .

Все ПЛИС изготавливаются по технологии КМОП с ультрафиолетовым стиранием (EPROM), обеспечивающей следующие параметры энергопотребления:

в статическом режиме - 10-30 мкА;

на частоте 1 МГц - 2-8 мА;

при увеличении тактовой частоты - 1 мА/МГц.

Для снижения цены на 30-40% при серийном производстве изделий все ПЛИС также выпускаются в пластмассовых корпусах (DIP и PLCC) с однократным программированием.

Недостатками ПЛИС классического семейства являются относительно невысокая степень интеграции и некоторые особенности архитектуры: отсутствие у триггеров входа установки в “1” (SET), блокирование контактов при реализации внутренних элементов памяти.

Этих недостатков полностью лишены ПЛИС семейств MAX7000 и FLASHlogic, которые имеют матричную архитектуру, т.е. содержат программируемые матрицы логических вентилей “И”, ”ИЛИ” и триггеры.

Семейство MAX7000 состоит из семи микросхем со степенью интеграции от 1200 до 10000 эквивалентных логических вентилей, содержащих от 32 (EPM7032) до 256 (EPM 7256) триггеров.

Дополнительно выпускается ПЛИС EPM7032V - функциональный аналог микросхемы EPM7032 с напряжением питания 3,3 В.

ПЛИС семейства MAX7000 изготавливаются по технологии КМОП с электрическим стиранием (EEPROM). Они обеспечивают:

минимальную задержку распространения сигнала от входа до выхода 5 нс.;

максимальную тактовую частоту 190 МГц;

до 100 циклов программирования/стирания.

ПЛИС семейства MAX7000 имеют гибкую архитектуру. Их макроячейки содержат по две независимые линии обратной связи; с триггера и с контакта. Это позволяет использовать триггер в качестве внутреннего регистра, а контакт одновременно - как входной порт. Дополнительными ресурсами ПЛИС являются термы расширения (expander terms) - конъюнкторы, инверсные выходы которых образуют обратные связи с матрицей элементов “И”. Термы позволяют формировать управляющие сигналы (например, CLK, SET, RESET) без затрат макроячеек. В результате перераспределения термов между макроячейками число входов элементов “ИЛИ” может быть увеличено до 32.

Каждая макроячейка имеет индивидуальный турбо бит, программирование которого позволяет уменьшить потребляемую мощность при некотором снижении быстродействия. Начиная с 1996 г. все ПЛИС семейства MAX7000 будут выпускаться в варианте ISP (in system programmable - программируемые в системе). Это позволит программировать и стирать схему непосредственно на рабочей плате через 4-й сигнальный интерфейс, подключенный к порту компьютера. Наличие программатора становится необязательным, что значительно упрощает и удешевляет применение ПЛИС.

ПЛИС семейства MAX7000 имеют низкую стоимость. Например, цена микросхемы ЕРМ7032 составляет менее 7 , а микросхемы ЕРМ7128 - менее 25.

С появлением семейства MAX7000 значительно уменьшилась практическая ценность выпускавшихся ранее ПЛИС семейства MAX5000, т.к. появились аналоги всех микросхем (например, ЕРМ5128 - ЕРМ7128) с лучшими характеристиками быстродействия и энергопотребления по более низким ценам.

MAX+PLUS II - это система автоматического проектирования программируемых логических интегральных схем (ПЛИС), разработанная Altera Corporation, мировым лидером по производству ПЛИС.

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

MAX+PLUS II предлагает следующие возможности для пользователя:

ввод внутренней структуры ПЛИС путем графического ввода функциональной схемы;

ввод внутренней структуры ПЛИС c помощью языка программирования высокого уровня Altera Hardware Description Language (AHDL), который полностью встроен в оболочку MAX+PLUS II ;

моделирование работы ПЛИС в виде временных диаграмм;

при наличии программатора произвести запись спроектированной структуры в ПЛИС и др.

При описании внутренней структуры ПЛИС с помощью AHDL возможны несколько вариантов.

В первом варианте проводить описание структуры в примитивах, т.е. используя простейшие функции типа RS-триггер,D-триггер, T-триггер, JK-триггер и др.

При втором варианте проводить описание при помощи примитивов и мега-функций.

Мега-функции представляют собой сложные логические функции типа счетчик, мультиплексор, дешифратор, регистр и др.

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

Недостатками данного варианта является большой объем текста программ и необходимость подробного описания всей системы.

Во втором варианте, при использовании мега-функций, отпадает надобность подробного описания элементов в том смысле, что программист задает только параметры сложной логической функции. Для примера, используя мега-функцию lpm_counter счетчик можно описать, задав только тактируемый вход и ширину самого счетчика. Это значительно уменьшает объем, занимаемый текстом программы, а также позволяет несколько сократить время написания программы.

Недостатком является то, что на трансляцию программы в машинные коды затрачивается больше времени по сравнению с первым вариантом.

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

При отладке написанного программного продукта SIMULATOR MAX+PLUS II позволяет подробно рассмотреть результат работы ПЛИС в виде временных диаграмм. Проектировщик может выбирать различные выходы и промежуточные состояния, описанные в программе, а также задавать различные входные воздействия.

ВВЕДЕНИЕ

Обычно, когда кто-то видит функционирующую плату, всегда задают одни и те же вопросы: - Это Ардуино? - А как это работает без Ардуино?

Это не микроконтроллер, это даже не процессор, это ПЛИС. ПЛИС - это программируемая логическая интегральная схема , такая микросхема состоит из множества одинаковых блоков или макроячеек, каждый производитель по своему их называет, так у Xilinx это Slices (ломтики) у Altera - LogicElements (логические элементы). Эти блоки относительно простые, они могут выполнять роль нескольких логических элементов, быть маленькой таблицей поиска (LUT), содержать готовый сумматор, умножитель, блок цифровой обработки сигналов (DSP), в общем все что задумает производитель. Пользователь может по своему желанию расположить и настроить эти блоки как ему захочется, реализовав таким образом достаточно сложные цифровые схемы. На ПЛИС можно реализовать хоть микроконтроллер, реализовав например ту же Ардуино или процессор вашей собственной архитектуры, например не регистровый а стековый процессор, даже свою собственную ПЛИС можно реализовать на ПЛИС!

Из доступных бюджетных ПЛИС можно выделить двух основных производителей Altera и Xilinx, с их продукции можно начать свой путь освоения данных технологий. На мой взгляд лучше выбрать чипы компании Altera, так как их среда проектирования стабильно обновляется, а выбрав один популярный чип Xilinx XC3S500E вам придется довольствоваться устаревшей средой ISE 14.7 (хотя и там есть свои плюсы).

В иностранной литературе можно встретить сокращения для ПЛИС: FPGA и CPLD. CPLD (Complex Programmable Logic Device) - чипы с небольшим числом макроячеек, специализированных блоков и малым энергопотреблением. Большой проект не получится синтезировать для такого типа чипов, но и для них находят применение на практике, так у редкого микроконтроллера найдется, скажем 300 ножек. Такие чипы часто применяют в качестве интерфейсных систем, предобработчиков, расширителей ввода-вывода. FPGA (Field-Programmable Gate Array) - программируемая пользователем вентильная матрица (ППВМ), значительно более мощные чипы по сравнению с CPLD, но потребляющие больше энергии и стоящие значительно дороже. Для уменьшения затрат площади кристалла FPGA чипы могут содержать уже готовые функции, такие как блоки цифровой обработки сигналов (DSP блоки), встроенные процессоры, встроенная память. FPGA широко применяются для проверки и верификации проектов, в так называемой докремниевой проверке пригодности, тем самым уменьшая затраты и время перед выходом продукта. FPGA чипы могут быть переконфигурированы практически в любой момент времени, сейчас ведутся разработки, например в Intel, по совмещению архитектур обычного процессора и чипа FPGA. У Xilinx уже есть такие решения - Zynq, но о них мы пока не будет вести речь.

Разговор пойдет о более простых вещах, тем более ко мне в руки попал набор разработчика: Cyclone IV 4 FPGA Core Board и Altera USB Blaster Downloader PLD Development kit за 35$, приобретенный на AliExpress .

1 Демоплата Cyclone IV 4 FPGA Core Board, краткая характеристика

Рис. 1 - Демоплата Cyclone IV 4 FPGA Core Board

На плате (Рис. 1) установлен чип EP4CE6E22C8N, его характеристики:

Вид ресурса Краткое описание Количество
Logic elements (Les) Число логических блоков - ячеек, основная характеристика, по которым мы можем сравнивать «мощность» чипов, любая синтезированная логика будет затрачивать данные блоки 6,272
Embedded memory (Kbits) Встроенной памяти, пока для нас не важная характеристика 270
Embedded 18x18 multipliers Встроенных аппаратных умножителей, очень важный параметр в цифровой обработке сигналов, вся мощь ПЛИС раскрывается, когда несколько умножителей работают параллельно 15
General-purpose PLLs Узлов фазовой автоподстройки частоты, пока не важная характеристика, упрощает синхронизацию устройств, работающих на разных частотах 2
Global Clock Networks Количество частотных доменов, пока не важная характеристика 10
User I/O Banks Число раздельных пользовательских банков ввода-вывода, пока не важная характеристика 8
Maximum user I/O Число пользовательских пинов ввода-вывода, мы можем подключить любые устройства, как например к Ардуино 91

На плате установлено:

  1. Флэш память – при подаче питания ПЛИС будет сконфигурирована в реализацию во флеш памяти. Вы можете синтезировать свой проект и записать в эту флэш
  2. Кварц 25 Мгц – генератор опорной тактовой частоты, именно на этой частоте будут работать все наши проекты, наша ПЛИС может поддерживать до 10 таких каналов.
  3. Светодиоды – 10, кнопки – 2.
  4. Пины ввода-вывода 61 + 2 земля, 1 не соединен. Можно подключить разнообразные устройства. ЦАП-АЦП, акселерометры и гироскопы, символьный и графические дисплеи, как и у Ардуино.
  5. Питание через USB, или внешнее 5В.

В комплекте также идет программатор JTAG, Altera USB Blaster.

2. Среда Quartus II и наш первый проект

Для работы с данной ПЛИС нам нужно скачать официальную среду разработки - Quartus II Web Edition , она бесплатная. Заходим на официальный сайт http://dl.altera.com/15.0/?edition=web , на момент написания версия 15.0 самая новая, если вышла новее, скачиваем ее.

Выбираем:


Рис. 2 - выбираем необходимые продукты Altera

И жмем кнопку скачать (Download Selected Files). После чего нам предложат зарегистрироваться, регистрируемся, скачиваем и устанавливаем.

Создадим свой первый проект.

Запускаем Quartus, выбираем главное меню File -> New Project Wizard, появляется окно введения, жмем next. Далее нужно указать каталог для проекта и его имя, третье поля – имя верхнего модуля, попозже увидите, что это. Выбираем папку, куда хотим сохранить проект и придумываем имя, у меня test1.


Рис. 3 - окно мастра нового проекта

Жмем next, у нас спрашивают, пустой проект (empty project) или шаблон (Project template). Оставляем пустой, next. Дальше нас просят добавить существующие файлы, у нас ничего нет, поскольку мы только начинаем свой путь, жмем next.

Далее нам необходимо выбрать наш чип, это можно сделать в любое время. Выбираем как на рисунке, Family – Cyclone IV E, specific device selected in “Available devices” и выбираем наш чип EP4CE6E22C8N, он в самом начале. Если у вас другой, найдите свой, это важно . Жмем next.


Рис. 4 -

Появится окно - выбора средств проектирования, отладки, пока это пропускаем, нажимаем next и затем finish.


Рис. 5 - Окно « Assinments-Deice »

В окне выбираем пункт «Unused pins». Эта настройка определяет, что будет с неподключенными пинами. Это может быть важно, в своем проекте вы вряд ли используете все пины, а не подключенные могут быть на деле соединены с землей или питанием (ну мало ли, кто разводил плату). Если вы подадите единичку на заземленный пин, то он сгорит, поэтому нужно внимательно следить за этим.

По умолчанию неиспользуемые пины «As input tri-stated with weak pull-up» (пины для ввода, находятся в третьем состоянии с высоким импедансом, со слабой подтяжкой по питанию), можно оставить или выбрать «As input tri-stated». Про подтягивающий резистор можете прочитать на википедии https://ru.wikipedia.org/wiki/Подтягивающий_резистор . В цифровой технике может быть три состояния, логическая единица – это напряжение питания или высокий уровень, логический ноль – это когда вывод подключен к земле или низкий уровень и высокоимпедансное состояние. Высокоимпедансное состояние - это когда пин имеет очень высокое сопротивление и практически не влияет на провод, к которому подключен, такое состояние нужно, например, при организации шин, когда множество устройств подключены к одному проводу и не активные устройства не мешают работе.


Рис. 6 - Окно « Device and Pin Options » , Unused Pins

Подключаем это все в «Assignment Editor»


Рис. 7 - Вызов « Assignment Editor » из меню или панели

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


Рис. 8 - Assinement Editor

В колонке «To» вписываем имя входа или выхода. В колонке «Assignment Name» выбираем «Location». В колонке «Value» номер контакта микросхемы, согласно схемы платы (у меня номера пинов написаны прямо на плате).

Также нужно указать, что делать с кнопками, которые одной ногой подключены к земле, а другой ко входу чипа. При нажатии на ноге будет низкий уровень, а вот без нажатия, непонятно, нога чипа будет просто висеть в воздухе, что очень плохо. Нужно подтянуть к питанию вход чипа либо резистором на плате, либо боле элегантным способом в «Assignments Editor». В колонке «Assignment Name» выбираем «Weak Pull Up resistor» для группы key* (группа обозначается через звездочку).


Рис. 9 - Assignment Editor

Далее нужно создать описание модуля верхнего уровня, который будет работать непосредственно с ножками чипа, все остальные модули будут работать только с ним. В главном меню жмем New, и выбираем "Design Files-> Block Diagram/Schematic File".


Рис. 10 - Диалог новых файлов

В открывшемся окне выбираем инструмент «Pin Tool» и располагаем вход и выход (пины ввода и вывода) на диаграмме. Переименовываем вход как key, выход как led и соединяем их проводником. Сохраняем и нажимаем "Start Compilation".


Рис. 11 - Окно графического описания, выделены Pin Tool и Start Compilation

После компиляции у нас возникли предупреждения, пока игнорируем их, они касаются неподключенных пинов, отсутствия тактового сигнала и описания для «Timing Analyzer».

Подключаем демоплату и программатор, выбираем инструмент «Programmer». В окне должно значиться «USB-Blaster », если нет то нажимаем «Hardware Setup» и пытаемся разобраться почему нет, скорее всего не установлены драйвера, смотрим в устройства Windows, ищем неопределенные устройства, может с кабелем проблема. Если все хорошо нажимаем «Auto Detect» и выбираем наш чип.


Рис. 12 - Окно Programmer

Нажимаем двойным щелчком мыши в поле «File» и выбираем файл для записи на ПЛИС (находиться в папке output_files нашего проекта), ставим галочку в поле «Program / Configure», и нажимаем кнопку «Start».


Рис. 13 - Окно Programmer, наш чип уже сконфигурирован

Поздравляю с первой конфигурацией ПЛИС! Диод D1 должен светиться, при нажатии key1 должен гаснуть (так как кнопка замыкает ножку с землей), далее мы с этим что-нибудь сделаем)