С чем ассоциируется цифровая электроника? В первую очередь с логическими элементами И, ИЛИ, НЕ. Далее в память приходят сдвиговые регистры, дешифраторы, мультиплексоры и прочее. Однако, по мере роста сложности электронных устройств и тенденции к миниатюризации, создание приборов на базе интегральных микросхем (ИМС) из вышеперечисленных компонентов затруднилось, заказные ИМС нужной топологии и схемотехники оправдывали себя только при крупном тиражировании устройства, в остальных случаях — это было неоправданно дорого.
Выходом из сложившейся ситуации стало развитие программируемых интегральных логических схем (сокращенно — ПЛИС, зарубежная аббревиатура — programmable logic device, PLD). Что это такое и где используется мы расскажем в этой статье.
Содержание статьи
Отличия от микроконтроллеров
При слове «программируемый» у большинства новичков происходит ассоциация с микроконтроллерами . Не смотря на то что их также программируют, ПЛИС — это совершенно другое устройство.
Для разработчиков в микроконтроллерах доступен фиксированный набор решений и средств присущих конкретному чипу, отступить от архитектуры никаким образом не получится. Вам предоставлен набор команд, с помощью которых вы производите операции взаимодействия с окружающей средой, посредством считывания данных с цифровых и аналоговых входов и отправка сигналов исполнительным устройствам с помощью выходов.
Кроме этого вы можете производить вычисления, сохранять данные в регистрах или ПЗУ, а также оперировать данными прошитыми в память микроконтроллера. На этом в сущности и заключается назначение и особенности работы с микроконтроллерами.
Программируемые логические интегральные схемы (ПЛИС) отличаются тем, что, программируя устройство вы сами создаете архитектуру из базовых логических элементов. Таким образом вы получаете высокое быстродействию и гибкость микросхемы. Это даёт возможность, не изменяя одного чипа сделать целый ряд проектов.
Обобщённо внутреннее устройство ПЛИС можно разделить на три основных группы:
1. Массив из логических элементов (макроячеек, логических блоков).
2. Блоки входа-выхода (IO).
3. Линии связи между ними и устройство, которое управляет этими связями.
Однако такое структурирование очень обобщено, немного подробнее мы рассмотрим этот вопрос ниже.
Программируя вы соединяете элементы подобно тому как бы вы это делали, собирая из отдельных элементов устройство и соединяя их входы и выходы проводниками.
Примечание:
Главным отличием ПЛИС от микроконтроллеров является то, что в микроконтроллере вы не можете изменять внутренних связей между простейшими элементами, а в ПЛИС на основе прописывания связей основывается программирование и работа с ними.
Выбор микроконтроллеров происходит на основе множества критериев, таких как:
Быстродействие и тактовая частота;
Объем ПЗУ и ОЗУ;
Количество входов и выходов.
Другие функциональные особенности и периферии, типа поддержки линий связи и протоколов (I2C, one-wire, PWM-сигнал и прочее).
При выборе ПЛИС основным критерием является количество программируемых блоков — их должно хватить для реализации задачи.
В зависимости от конкретного ПЛИС количество блоков может изменяться в широких пределах, соответственно изменяется и стоимость.
Микроконтроллер выполняет последовательно все операции, прописанные в его программе, в то время как блоки ПЛИС выполняют задачу параллельно и независимо друг от друга, поэтому сравнение этих устройств по тактовой частоте нецелесообразно. Слишком различается их принцип работы.
Виды
Актуальными на сегодняшний день являются два основных вида ПЛИС:
1. CPLD (Complex Programmable Logic Device — Программируемая Логическая Интегральная Микросхема, собственно это и есть ПЛИС в её классическом понимании). В ней обычно есть встроенная энергонезависимая памятью, в которую загружается прошивка.
Внутренняя структура строится на матрице макроячеек или логических блоков, а количество элементов в них лежит в пределах сотен и тысяч штук. Благодаря относительной простоте стоят дешевле чем следующий вид программируемой логики. Всё это приводит к тому, что используется CPLD в основном в схемах, где нужна высокая скорость и большое число выводов, при этом выполняют несложные задачи.
2. FPGA (Field-Programmable Gate Array — Программируемая Пользователем Вентильная Матрица, однако её часто относят к ПЛИС) — более развитые и сложные устройства по сравнению с CPLD, строятся на логических блоках с гибкой коммутаций и содержат большее число элементов (десятки или сотни тысяч штук).
Прошивка, как правило, хранится во внешней энергонезависимой памяти. Кроме простейших логических элементов в FPGA могут содержаться готовые блоки для выполнения каких-либо операций, например, блоки обработки сигнала DSP. Всё это позволяет реализовать процессор, устройства обработки сигналов и другие сложные устройства.
Интересно:
Хотя фактически наличие энергонезависимой памяти не делает программируемую логику CPLD. Это частично заблуждение. Главным отличием CPLD от FPGA является внутренняя структура.
Подробнее внутреннее устройство CPLD изображено на рисунке ниже.
А примерная схема её макроячейки выглядит таким образом:
Макроячейка состоит из программируемых мультиплексоров, триггеров (одного или нескольких) и формирует группу выходных сигналов ФБ в нескольких их вариантах.
Ниже приведен еще один пример – блок-схема CPLD микросхемы семейства MAX II фирмы Altera.
И структурный план микросхем этого же семейства.
Промежуточные шины макроячейкам назначаются с помощью такого узла, как распределитель, на англ. он звучит как Logic Allocator, что изображено на схеме ниже, на ней же изображена матрица переключений (Global Routing Pool), а у выходных макроячейки (macrocells) имеют по две обратных связи.
Внешние выводы микросхемы соединяются с выходами макроячеек через еще один блок (матрицу) – ORP (Output Routing Pool), обратите внимание, что через неё же происходит соединение ВХОДНОЙ логики с GRP, что изображено на иллюстрации ниже.
Примечание:
В некоторых CPLD есть т.н. прямые входы (Direct Input) – они соединены со входами ячеек напрямую, что уменьшает задержки.
У FPGA структура имеет вид:
L – логический конфигурируемый блок;
S (substitution block) – блок подстановок, он получает на ход определенное число бит, преобразует, по определенному алгоритму, а на выходе выдаёт другое число бит. Другими словами – дешифратор, шифратор и коммутатор.
C (connection block) – блок соединений.
Схема S-блока:
Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств
Программирование
HDL (Hardware Description Language, рус. Язык описания аппаратуры) — так называется язык с помощью которого программируются ПЛИС. Популярными и универсальными являются Verilog HDL и VHDL. Существуют и другие языки, например, присущие конкретным производителям, как AHDL для изделий компании ALTERA.
Разработчикам, которые работают с ПЛИС доступно графическое программирование. То есть вы можете просто рисовать логические схемы или комбинировать код с графикой. Последнее называют модульным методом разработки, когда конкретные модули прописываются, а верхний модуль, в котором всё объединяется программируется графическим способом.
Подборка полезных статей про микроконтроллеры:
Микроконтроллеры AVR для начинающих
Микроконтроллеры PIC для начинающих
Espruino, Iskra JS, микроконтроллеры программируемые на javascript
Примеры популярных производителей и серий ПЛИС
На момент написания статьи наиболее известными являются изделия двух производителей.
Altera (основана в 1983 году);
Xilinx (Основана в 1984 году).
У Altera есть несколько основных серий программируемой логики:
MAX, MAX II, MAX IIZ;
7000S;
3000A;
MAX V;
Cyclone;
Arria;
Stratix.
Рассмотрим каждый из них подробнее. В таблицах ниже вы видите общие сведения о микросхемах семейства.
CPLD фирмы Altera 3 CPLD:
MAX — это CPLD для использования в мобильных устройствах, отличительными чертами является относительно малое энергопотребление и тепловыделение. В зависимости от сложности и годов выпуска различают следующие модификации:
7000S на сегодняшний день устарела, она выпущена в 1995 году.
3000A — выпущена в 2002 году, производится по 300нм технологии. Состоит из небольшого числа макроячеек (32-512)
MAX II выпущена в 2004 году, производится по 100нм технологии, состоит из большего числа блоков (240-2210), работающих на частоте до 304МГц. Изделие выполняется в корпусах типа TQFP 0.5 mill со 100 и более ножек.
MAX IIZ — 2007 года, основной особенностью является пониженное энергопотребление — это положительный момент, однако и частоты понижены до 152МГц. Питание данных микросхем осуществляется от 1.8 В.
MAX V — 2010 год. Производится по технологии 180нм, может содержать от 40 до 2210 блоков и работать на частотах до 152МГц или на 304МГц — это зависит от количества блоков.
FPGA:
Cyclone — это уже бюджетные микросхемы типа FPGA. Различаются пять поколений, которые маркируются греческими цифрами (от I до V соответственно). Первое поколение выпущено в 2002 году, производилось по 180нм технологии, а пятое поколение вышло в 2011 году и производится по 28нм технологии. Стоит отметить что все поколения остаются актуальными.
Arria — также относятся к FPGA среднего уровня.
Stratix — мощные FPGA.
Ниже приведены сводные таблицы по программируемой логике FPGA от компании Altera.
И полная таблица по ссылке: https://remontka.com/tablitsa.docx
У производителя Xilinx CPLD представлены сериями:
XC9500XL из 36-288 макроячейках. Работают на частотах до 178МГц, а модели на 288 макроячеек на 208МГц. Выполняется как в небольших корпусах с 44 пинами (выводами) на расстоянии 0.8 мм друг от друга — такие корпуса считаются легкопаяемыми. Также бывают и с 64 и со 100 ножках с шагом в 0.5 мм, а также моделями в корпусах типа PLCC.
Серия CoolRunner-II — это энергоэффективные, но производительные CPLD. Особенностью является питание от напряжения в 1.8В, входы-выходы рассчитаны на работу в диапазоне 1.5-3.3В. Состоят из 32-512 макроячеек и производятся по 180нм технологии. В зависимости от количества ячеек работают в диапазоне частот 179-323МГц, при этом чем меньше ячеек — тем с большей частотой они могут работать в этом случае. Встречаются в разных корпусах, в том числе легкопаяемых, как в микросхемах рассмотренной выше серии.
Компания Xilinx не обошла стороной и FPGA:
Spartan-6 — состоят из 6-входовых логических блоков, их количество лежит в пределах 3840-147443 штуки. Интересны тем что могут содержать контроллеры для обмена данными типа DDR2, DDR3, PCI-EXPRESS, Ethernet 1Gbit, SerialATA etc…
Серия Vitrex-7 отличается сложностью, микросхемы могут содержать до 2 000 000 логических блоков и 1200 контактов.
Ниже вы можете ознакомиться со сводными таблицами с характеристиками CPLD и FPGA от Xilinx 6 и 7 серии, а также Zynq-7000.
Заключение
ПЛИС и ППВМ производится и другими компаниями такими как Lattice Semiconductor (в 2002 году начала производить FPGA), Actel и небезызвестный читателям нашего сайта своими микроконтроллерами ATMEL и многие другие. На программируемой логике можно реализовать ряд устройств, в одном устройстве реализовать параллельные независимые друг от друга вычисления, однако для домашних проектов часто их покупка является финансово неоправданной, но при этом довольно разумна в производственных масштабах, как альтернатива заказным интегральным схемам.
P.S. Посмотрите видео, в нём вы увидите пример реализации игровой приставки Nintendo на FPGA:
Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.