Fpga с чего начать
FPGA. Первые шаги
Шаг 0. Знакомство
Мое первое потрясениезнакомство с FPGA началось с установки ПО, которое шло в комплекте с отладочной платой. Куча ярлыков на рабочем столе, непонятные программы, причем с отличным друг от друга интерфесом — «работа предстоит интересная», — подумал я. Тонны невнятных мануалов на английском, непонятные для меня термины, отсутствие простейших туториалов или юзергайдов… Тем не менее, не прошло и полгода, после проб и ошибок на своем тернистом пути я могу с лихой долей компетентности поделиться своим опытом. Сразу оговорюсь, речь пойдет о продукции Xilinx: отладочной плате с чипом Spartan 3A DSP 1800A и среде разработки Xilinx ISE/EDK.
Шаг 1. Ногодрыгалка
Ну конечно же, для программиста-железячника hello world — это поморгать светодиодами. Ведь для того, что бы отправить заветные два слова в терминал — еще надо дорасти. За основу в данном случае следует взять языки аппаратного описания: сладкую парочку Verilog и VHDL. К ним же можно добавить и возможность построения схем на примитивных логических элементах. Сразу же вспоминается институтский курс по вычислительной технике: триггеры, регистры, логические элементы, счетчики, мультиплексоры. Но не будем забегать далеко вперед, тем более что это описывалось на хабре и до меня. Оговорюсь, языки Verilog/VHDL далеко не тривиальны, даже по сравнению с ассемблером, поэтому для их понимания нужен совсем другой подход.
Шаг 2. А если посложнее?
Несмотря на своеобразие, которым языки аппаратного описания могут отпугнуть неискушенного пользователя, у них есть огромный плюс: на FPGA можно реализовать действительно очень быстродействующее устройство, а модули DSP открывают просто колоссальные возможности для цифровой обработки сигналов. Если к этому добавить еще и готовые библиотеки с уже реализованными модулями (IP Cores), то возможности становятся все более и более значительными. Однако, здесь не обошлось и без ложки дегтя — трудоемкость, или как говорится, без бутылки не разберешься.
Для воплощения в жизнь первых двух шагов подойдет связка ISE (он же Project Navigator) + ISim (симуляция) + Impact ( прошивка FPGA).
Шаг 3. Старый добрый микроконтроллер
Иногда ну просто очень хочется чего-нибудь приятного… Пожалуйста, вспомним о SoC (System-on-Chip) — системе на кристалле. В нашем случае, это процессор, шина, память и куча всякой периферии. Можно попытаться сделать самому подобную систем (см. шаг 2), можно прикрутить найденные IP Cores на просторах интернета. Но зачем же изобретать велосипед? Умными ребятами из конторы Xilinx уже придуманы софт-процессоры PicoBlaze и MicroBlaze. Первый — это восьмиразрядный процессор, который морально устарел, уже давно не внедряется в SoC и имеет открытый исходный код. Второй же, MicroBlaze, имеет неплохие перспективы: 32 разряда, RISC-архитектура и т.д, и т.п.
В качестве памяти может быть использована как внешняя память, подключаемая к FPGA, так и внутренняя, реализованная непосредственно внутри FPGA. Как правило, вторая часто применяется для кеширования инструкций и данных, находящихся в первой. Помимо того, довольно широко используются системы, содержащие более одного процессора и использующие для межпроцессорного взаимодействия специальные модули коммуникации.
Существует гигантская куча всевозможной периферии, которую можно задействовать в огромных количествах — все ограничено лишь ресурсами FPGA. Кроме того, на шину обмена с периферией PLB можно добавить и «самопальные» модули, но только при условии их корректной работы.
На данном этапе важнейшим инструментом является Xilinx Project Stuido (XPS) из состава Emedded Development Kit (EDK), по большому счету именно она на выходе позволяет получить готовый файл аппаратной конфигурации FPGA с размещенной на ней SoC.
Шаг 4. А теперь покодим
Теперь, что же касается написания программы для того же MicroBlaze. В комплекте ПО Xilinx существует Software Development Kit (SDK), позволяющий писать программы на С/С++. Да-да, вы не ослышались, С++ действительно редкость для железок, но не в нашем случае. К слову сказать, SDK у нас Eclipse-based, поэтому тут есть и content assist, и человеческий рефакторинг, и еще вагон вкусных плюшек. Не стоит забывать и про ассемблер: порой иногда вставки на асме бывают очень кстати.
В качестве компилятора используется GCC, заточенный под нужды нашего софт-процессора, возможно использование RTOS под выразительным названием XilKernel, которая, кстати, является POSIX-совместимой. Это значит, что если человек не по наслышке знаком с мьютексами, тредами и семафорами в UNIX-based системах, то разобраться в XilKernel для него не составит и труда.
Начинаем работать с FPGA или ПЛИС это просто. Часть 1
ВВЕДЕНИЕ
Из доступных бюджетных ПЛИС можно выделить двух основных производителей Altera и Xilinx, с их продукции можно начать свой путь освоения данных технологий. На мой взгляд лучше выбрать чипы компании Altera, так как их среда проектирования стабильно обновляется, а выбрав один популярный чип Xilinx XC3S500E вам придется довольствоваться устаревшей средой ISE 14.7 (хотя и там есть свои плюсы).
Разговор пойдет о более простых вещах, тем более ко мне в руки попал набор разработчика: Cyclone IV 4 FPGA Core Board и Altera USB Blaster Downloader PLD Development kit за 35$, приобретенный на AliExpress.
1 Демоплата Cyclone IV 4 FPGA Core Board, краткая характеристика
На плате (Рис. 1) установлен чип EP4CE6E22C8N, его характеристики:
На плате установлено:
В комплекте также идет программатор JTAG, Altera USB Blaster.
2. Среда Quartus II и наш первый проект
И жмем кнопку скачать (Download Selected Files). После чего нам предложат зарегистрироваться, регистрируемся, скачиваем и устанавливаем.
Создадим свой первый проект.
Жмем next, у нас спрашивают, пустой проект (empty project) или шаблон (Project template). Оставляем пустой, next. Дальше нас просят добавить существующие файлы, у нас ничего нет, поскольку мы только начинаем свой путь, жмем next.
Далее нам необходимо выбрать наш чип, это можно сделать в любое время. Выбираем как на рисунке, Family – Cyclone IV E, specific device selected in “Available devices” и выбираем наш чип EP4CE6E22C8N, он в самом начале. Если у вас другой, найдите свой, это важно. Жмем next.
В окне выбираем пункт «Unused pins». Эта настройка определяет, что будет с неподключенными пинами. Это может быть важно, в своем проекте вы вряд ли используете все пины, а не подключенные могут быть на деле соединены с землей или питанием (ну мало ли, кто разводил плату). Если вы подадите единичку на заземленный пин, то он сгорит, поэтому нужно внимательно следить за этим.
Далее нам нужно настроить пины, это нужно чтобы сигнал шел на нужные нам ножки чипа, ведь изначально Quartus не знает, что куда подключено и как именно осуществлена разводка платы.
Подключаем это все в «Assignment Editor»
В появившемся окне делаем как у меня, ну или если совсем правильно, то согласно схеме вашей платы.
В колонке «To» вписываем имя входа или выхода. В колонке «Assignment Name» выбираем «Location». В колонке «Value» номер контакта микросхемы, согласно схемы платы (у меня номера пинов написаны прямо на плате).
Также нужно указать, что делать с кнопками, которые одной ногой подключены к земле, а другой ко входу чипа. При нажатии на ноге будет низкий уровень, а вот без нажатия, непонятно, нога чипа будет просто висеть в воздухе, что очень плохо. Нужно подтянуть к питанию вход чипа либо резистором на плате, либо боле элегантным способом в «Assignments Editor». В колонке «Assignment Name» выбираем «Weak Pull Up resistor» для группы key* (группа обозначается через звездочку).
Далее нужно создать описание модуля верхнего уровня, который будет работать непосредственно с ножками чипа, все остальные модули будут работать только с ним. В главном меню жмем New, и выбираем «Design Files-> Block Diagram/Schematic File».
В открывшемся окне выбираем инструмент «Pin Tool» и располагаем вход и выход (пины ввода и вывода) на диаграмме. Переименовываем вход как key[0], выход как led[0] и соединяем их проводником. Сохраняем и нажимаем «Start Compilation».
После компиляции у нас возникли предупреждения, пока игнорируем их, они касаются неподключенных пинов, отсутствия тактового сигнала и описания для «Timing Analyzer».
Подключаем демоплату и программатор, выбираем инструмент «Programmer». В окне должно значиться «USB-Blaster [USB-..]», если нет то нажимаем «Hardware Setup» и пытаемся разобраться почему нет, скорее всего не установлены драйвера, смотрим в устройства Windows, ищем неопределенные устройства, может с кабелем проблема. Если все хорошо нажимаем «Auto Detect» и выбираем наш чип.
Нажимаем двойным щелчком мыши в поле «File» и выбираем файл для записи на ПЛИС (находиться в папке output_files нашего проекта), ставим галочку в поле «Program / Configure», и нажимаем кнопку «Start».
Поздравляю с первой конфигурацией ПЛИС! Диод D1 должен светиться, при нажатии key1 должен гаснуть (так как кнопка замыкает ножку с землей), далее мы с этим что-нибудь сделаем)
Сделай шаг к ПЛИС
Ты ждал знак? Вот он!
Много лет я не решался начать программировать ПЛИС, потому что это сложно, дорого и больно (как мне казалось). Но хорошо, когда есть друзья, которые помогают сделать первый шаг. И теперь я не понимаю одного — ПОЧЕМУ Я ЖДАЛ ТАК ДОЛГО?
Сейчас я помогу сделать первый шаг и тебе!
А зачем оно мне?
Ты устал постоянно читать доки по своему МК или держать кучу информации в голове. Ты все переписал на asm, но скорости все равно не хватает. Ты подключил два внешних устройства к своему МК, подключаешь третье, но у тебя кончились прерывания, перестают работать те модули, что уже работали. Ты берешь другой МК, более мощный из той же линейки, но опять мануалы, регистры флагов, биты… ад. Меняешь платформу: переходишь на другой МК и выкидываешь на помойку свои знания по прежней платформе. Что бы ты не делал — оно дается тяжело. Ты находишь популярную платформу, в которой можно легко из компонентов собирать проект, но выше аппаратных ограничений данного МК все равно не удается прыгнуть… Где-то на краешке сознания иногда проскакивает мысль, что вот на ПЛИС это бы точно заработало быстро и параллельно, что это «именно та задача, которую бы надо решать на плис», но я стар/глуп/занят/etc чтобы суметь/начать такое делать.
Хочешь наконец вздохнуть свободно? Идем дальше!
Радость от разработки на ПЛИС
У меня был тяжелый рабочий день. С одной работы я приехал на вторую работу, потом на дачу, вечером домашние дела, уроки, потом семейный просмотр кино и только в 23 часа я оказался совершенно свободен! Сказать, что я был уставший — ничего не сказать. Но в таком состоянии я сел за ноут с твердой целью: сделать генератор меандра на 440 Гц. Прошло 20 минут и я уже слышал его в наушниках. Я не верил своим ушам! Еще 15 минут мне потребовалось, чтобы сделать ШИМ и менять громкость. К тому времени плата с ПЛИС у меня была всего с неделю и до этого я пролистал всего пару книг по Verilog.
В тот вечер я понял: ВОТ ОНО! Вот та платформа, в которой я быстро и легко могу превращать свои мысли в реально работающее железо!
Почему так?
Проблема выбора
Сильно останавливают вопросы, что выбрать: 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 (240 или 570 ячеек). Могут подойти для начального ознакомления и дальнейшего пристройства в конечные устройства. На плате есть генератор, пара кнопок, пара светодиодов, остальные 80 выводов на свое усмотрение.
Блок питания
Обязательно должен быть, но не всегда идет в комплекте. Потребуется БП на 5 вольт и ток 2А.
Средний уровень от 900 до 1500 рублей. Это платы Cyclone 1, 2, 3, 4 отличающиеся в основном количеством ячеек.
Маркируются примерно так:
EP2C5T144 — Cyclone 2 примерно 5к ячеек
EP4CE6E22C8N — Cyclone 4 примерно 6к ячеек
EP2C8Q208C8N — 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), кнопки, переключатели, светодиоды, семисегментные индикаторы и т.д. Либо может идти базовая плата, а к ней могут прилагаться платы расширения отдельно.
Вот основная плата. На ней есть 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 вольт.
Altera Cyclone NIOS II SOPC FPGA Development Learning Board EP2C8Q208C8N+LCD1602 — 2670 рублей
Terasic Altera FPGA DE0-Nano Cyclone IV Development and Education Board — 4600 рублей
Но в целом, большие и дорогие отладочные платы я бы не рекомендовал сразу покупать. Дорогие покупки должны быть обоснованы, сейчас же пока не ясно что подойдет лучше. Ясно станет, когда начнется практика.
Заказал, ждем
Пока идут платы, можно начать себя морально и технически готовить:
— Установить Quartus II v.11.1
Почитать:
— Книга: А.К. Поляков Языки VHDL и Verilog в проектировании цифровой аппаратуры 2003
— www.kit-e.ru/articles/circuit/2008_3_161.php — Краткий курс HDL
— Уроки на марсоходе по верилогу, архитектура, простые советы по стилю.
— VERILOG как образ жизни
— Хорошие примеры (EN)
— Как начать работать с ПЛИС (Xilinx)
Мы ждем от тебя интересных проектов на ПЛИС!
PS. Обращаясь к тебе на «ты», я обращаюсь, как к равному, личности, а не части толпы. Если обращение на «ты» оскорбило, прошу меня извинить.
ВНИМАНИЕ! Verilog и ПЛИС не являются серебряной пулей и волшебным средством решения любых задач, они не могут заменить микроконтроллеры во всех проектах. Для работы с ПЛИС требуется определенный уровень технической подготовки. Вы сами несете ответственность за все решения в вашей жизни. Автор снимает с себя ответственность за возможные финансовые и временные потери, связанные с вашими исследованиями в области ПЛИС и Verilog.
ПЛИС. Заметки начинающего.
Решил поизучать ПЛИС. Статей, в сообществе и вообще, написано про них уже много. Но все они, как правило, освещают вопрос с одной стороны, конкретный чип, конкретный язык, конкретная среда, конкретная задача. Не всегда удается составить общую картину, чтобы потом уже складывать отдельные части паззла. Возникает множество вопросов общего характера, на каждый из них нагуглить ответ не составляет особых проблем, но в сумме затрачивает много времени. В процессе изучения основ, сделал несколько заметок, вроде конспекта. За достоверность не ручаюсь, но возможно другим желающим изучить ПЛИС мои записи пригодятся. Правда конспект получился скучным, без картинок 🙂
Назначение
Чем же ПЛИС отличается от микроконтроллеров? ПЛИС позволяет реализовать свой собственный контроллер. Если в микроконтроллере все внутренние соединения транзисторов жестко заданы производителем, то в ПЛИС все связи задаются прошивкой. Переконфигурировав внутренние блоки нужным образом, можно получить микросхему, выполняющую на аппаратному уровне нужные нам действия. Можно сконфигурировать так, что получится микроконтроллер. А можно сделать просто таймер, мигающий на выходе светодиодом. Главное чтобы для реализуемой задачи хватило программируемых блоков, число которых может меняться в большом диапазоне, в зависимости от производителя и модели ПЛИС. С точки зрения программиста микроконтроллер — как человек. Может выполнять только одну задачу одновременно. Может переключаться между разными задачами, ставить будильник, чтобы выполнить что-то по расписанию. Зато может производить сложные действия и пользоваться разными инструментами (периферией микроконтроллера). ПЛИС же скорее как стадо муравьёв. Каждый из них примитивен, зато их можно группировать для выполнения задачи. Например, если мы сделаем так, что 10 муравьёв срезают колосок пшеницы и выковыривают из него зёрна за одну минуту, то имея достаточное количество муравьёв (объём ПЛИС), можно легко убрать целое поле пшеницы за ту же минуту 🙂 Или к примеру, помигать светодиодом на микроконтроллере легко. Включил, подождал, выключил, подождал, вернулся в начало. А теперь попробуем добавить второй светодиод, который должен мигать с другой частотой, да ещё не кратной первой. Задача резко усложняется. На ПЛИС же, сделав блок мигания светодиодом, достаточно просто скопировать его, только поменять частоту и ножку со светодиодом. И два этих блока будут работать параллельно, никак друг другу не мешая, не снижая производительности. Таким образом на ПЛИС можно реализовывать устройства, которые сложно сделать на МК.
Архитектура
ПЛИС могут быть построены на основе разных базовых блоков. Поэтому разные ПЛИС не всегда можно сравнить по «объёму». Такими блоками бывают макроячейки и логические блоки. Макроячейки (macrocells) представляет собой небольшую схему из некоторого количества вентилей. Как я понял, схема макроячеек может может отличаться у разных производителей. Логические блоки (logical cells, logical elements, LE) обычно состоят из таблицы поиска на 4 входа и триггера, но бывают и с 6 входами, для увеличения производительности. В зависимости от задачи, необходимое количество макроячеек и логических блоков может меняться, поэтому какой-либо «курс» между ними вывести нельзя, но для очень примерной прикидки Альтера предлагает использовать цифру 1.3 LE на макроячейку. Вообще, блоки довольно эффективны, несколько десятков вполне хватит на задачи малой сложности. На 700 блоках можно реализовать полноценный микроконтроллер, а на 3000 это уже будет микроконтроллер с такими «взрослыми» фичами типа конвейера инструкций, динамическим предсказания ветвлений, кэшем, блоком управления памятью и производительностью в пару сотен DMIPS! Таким готовым виртуальным микроконтроллером является Nios II фирмы Altera. (Вспоминается древний боян, при загрузке компа появляется надпись: CPU not found. Please insert disk with software emulation).
Есть разные типы ПЛИС. Наиболее актуальные из них CPLD и FPGA.
CPLD, собственно и есть ПЛИС (Complex Programmable Logic Device, Программируемая Логическая Интегральная Схема). Содержат встроенную энергонезависимую память, которая хранит прошивку при отключении питания. Строятся традиционно на матрице макроячеек, хотя сейчас всё популярнее основанные на логических блоках. Обычно имеют сравнительно небольшое число элементов (сотни или тысячи). Они дешевле, проще в применении, требуют минимальной обвязки, быстро запускаются. Могут использоваться там, где не требуется сложная логика работы, но не хватает скорости или ног у обычного микроконтроллера. Например, для обработки сигналов, к примеру, как контроллер USB, VGA или PCI-шины.
FPGA (Field-Programmable Gate Array, Программируемая Пользователем Вентильная Матрица, ППВМ) — дальнейшее развитие ПЛИС. Построены на логических блоках с гибкой коммутацией. Могут иметь большое число элементов (десятки и сотни тысяч). Как правило требуют внешнюю энергонезависимую память для хранения прошивки, с которой «загружается» при включении питания. Часто содержат, помимо логики, отдельные блоки, например, для умножения. FPGA дороже, сложнее, зато на них можно реализовать, например, полноценный процессор или сложную обработку сигналов. Можно проверить сложную микросхему, прежде чем начать производить её в кремнии.
Линейки
Наиболее известные производители ПЛИС — Altera и Xilinx.
У Altera наиболее интересными для начинающего линейка CPLD Max и линейка малобюджетных FPGA Cyclone. FPGA среднего уровня Arria и хай-энд Stratix оставим на потом.
Max выпускается в нескольких модификациях.
7000S, 1995 года выпуска, уже не актуальна, разве что интересна 5 вольтовым I/O.
3000A, 2002 года, 300 нм технология, содержат от 32 до 512 макроячеек. Низкая цена для больших партий.
Max II, 2004 года, 180 нм, построена на логических блоках, как FPGA, 240-2210 блоков, до 304 MHz. В TQFP с шагом 0.5 мм от 100 ножек. Есть вариант Max IIZ 2007 года с пониженным потреблением и частотами до 152 MHz.
Max V, 2010 года, 180 нм, 40-2210 блоков, до 152 или 304 MHz, в зависимости от кол-ва блоков.
Cyclone выпускаются в пяти поколениях, I — V. Первое поколение было выпущено ещё в 2002 году, по 130 нм технологии. Последнее, пятое, совсем свежее, 2011 года, 28 нм технология. Соответственно отличаются потреблением и, наверное, быстродействием. Но все пять поколений остаются актуальными по сей день и на сайте отмечены рекомендуемыми для новых разработок.
Xilinx из CPLD предлагает серии XC9500XL и CoolRunner™-II.
XC9500XL построена на макроячейках, 36-288 штук, до 178 MHz или 208 MHz (288 макроячеек). Интересна наличием легкопаяемых моделей со всего 44 ножками и шагом 0.8. Также есть 64- и 100-пиновые с шагом 0.5, вполне приемлемо, как у STM8/32. Ещё есть модели в PLCC корпусах, их можно ставить в специальный кредл.
CoolRunner-II — оптимизированы для низкого потребления, сохраняя производительность и простоту использования. Рассчитаны на питание 1.8 вольт, ввод/вывод от 1.5 до 3.3 В. 180 нм технология, 32-512 макроячеек, 179-323 MHz (меньше ячеек — больше частота). Также встречаются в паяемых корпусах, как и 9500.
Из FPGA Xilinx предлагает серии Spartan-6, Artix-7, Kintex-7, Virtex-6 и 7. Virtex-7 — монстр с 2 миллионами логических блоков и до 1200 пинов.
Spartan-6 — FPGA, 3840-147443 блоков, причем блоки имеют 6 (а не 4, как обычно) входов. Может содержать встроенный контроллер DDR/2/3 памяти, PCI-express шины, гигабитного ethernet, SerialATA и прочие вкусности.
Atmel предлагает серию CPLD ATF15xx, которая позиционируется как замена Xilinx’ам (ATF15xxBE) или Altera 7000 и 3000 (ATF15xxAS/ASL/ASV/ASVL).
Чипы и отладочные платы
Посмотрим, что у нас есть из чипов интересного. Под интересным я подразумеваю доступное в России по приемлемой цене, паяемое ЛУТом и не слишком сложное в плане требуемой обвязки.