Меню Закрыть

Программируемые логические интегральные схемы

Содержание

С чем ассоциируется цифровая электроника? В первую очередь с логическими элементами И, ИЛИ, НЕ. Далее в память приходят сдвиговые регистры, дешифраторы, мультиплексоры и прочее. Однако, по мере роста сложности электронных устройств и тенденции к миниатюризации, создание приборов на базе интегральных микросхем (ИМС) из вышеперечисленных компонентов затруднилось, заказные ИМС нужной топологии и схемотехники оправдывали себя только при крупном тиражировании устройства, в остальных случаях — это было неоправданно дорого.

Выходом из сложившейся ситуации стало развитие программируемых интегральных логических схем (сокращенно — ПЛИС, зарубежная аббревиатура — programmable logic device, PLD). Что это такое и где используется мы расскажем в этой статье.

Отличия от микроконтроллеров

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

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

Кроме этого вы можете производить вычисления, сохранять данные в регистрах или ПЗУ, а также оперировать данными прошитыми в память микроконтроллера. На этом в сущности и заключается назначение и особенности работы с микроконтроллерами.

Программируемые логические интегральные схемы (ПЛИС) отличаются тем, что, программируя устройство вы сами создаете архитектуру из базовых логических элементов. Таким образом вы получаете высокое быстродействию и гибкость микросхемы. Это даёт возможность, не изменяя одного чипа сделать целый ряд проектов.

Обобщённо внутреннее устройство ПЛИС можно разделить на три основных группы:

1. Массив из логических элементов (макроячеек, логических блоков).

2. Блоки входа-выхода (IO).

3. Линии связи между ними и устройство, которое управляет этими связями.

Однако такое структурирование очень обобщено, немного подробнее мы рассмотрим этот вопрос ниже.

Программируя вы соединяете элементы подобно тому как бы вы это делали, собирая из отдельных элементов устройство и соединяя их входы и выходы проводниками.

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

Выбор микроконтроллеров происходит на основе множества критериев, таких как:

Быстродействие и тактовая частота;

Объем ПЗУ и ОЗУ;

Количество входов и выходов.

Другие функциональные особенности и периферии, типа поддержки линий связи и протоколов (I2C, one-wire, PWM-сигнал и прочее).

При выборе ПЛИС основным критерием является количество программируемых блоков — их должно хватить для реализации задачи.

В зависимости от конкретного ПЛИС количество блоков может изменяться в широких пределах, соответственно изменяется и стоимость.

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

Виды

Актуальными на сегодняшний день являются два основных вида ПЛИС:

1. CPLD (Complex Programmable Logic Device — Программируемая Логическая Интегральная Микросхема, собственно это и есть ПЛИС в её классическом понимании). В ней обычно есть встроенная энергонезависимая памятью, в которую загружается прошивка.

Внутренняя структура строится на матрице макроячеек или логических блоков, а количество элементов в них лежит в пределах сотен и тысяч штук. Благодаря относительной простоте стоят дешевле чем следующий вид программируемой логики. Всё это приводит к тому, что используется CPLD в основном в схемах, где нужна высокая скорость и большое число выводов, при этом выполняют несложные задачи.

Читайте также:  Zotac gtx 960 4gb

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) – блок соединений.

Программирование

HDL (Hardware Description Language, рус. Язык описания аппаратуры) — так называется язык с помощью которого программируются ПЛИС. Популярными и универсальными являются Verilog HDL и VHDL. Существуют и другие языки, например, присущие конкретным производителям, как AHDL для изделий компании ALTERA.

Разработчикам, которые работают с ПЛИС доступно графическое программирование. То есть вы можете просто рисовать логические схемы или комбинировать код с графикой. Последнее называют модульным методом разработки, когда конкретные модули прописываются, а верхний модуль, в котором всё объединяется программируется графическим способом.

Примеры популярных производителей и серий

На момент написания статьи наиболее известными являются изделия двух производителей.

Altera (основана в 1983 году);

Xilinx (Основана в 1984 году).

У Altera есть несколько основных серий программируемой логики:

По мере развития цифровых микросхем возникло противоречие между возможной степенью интеграции и номенклатурой выпускаемых микросхем. Экономически оправдано было выпускать микросхемы средней интеграции, таких как регистры, счетчики, сумматоры. Более сложные схемы приходилось создавать из этих узлов. Разместить более сложную схему на полупроводниковом кристалле не было проблем, но это было оправдано либо очень большой серийностью аппаратуры, либо ценой аппаратуры (военная, авиационная или космическая). Заказные микросхемы не могли удовлетворить возникшую потребность в миниатюризации аппаратуры. Решение могло быть только одним — предоставить разработчикам аппаратуры возможность изменять внутреннюю структуру микросхемы (программировать).

История развития программируемых логических интегральных схем (ПЛИС) начинается с появления программируемых постоянных запоминающих устройств. Первое время программируемые ПЗУ использовались исключительно для хранения данных, однако вскоре их стали применять для реализации цифровых комбинационных устройств с произвольной таблицей истинности. В качестве недостатка подобного решения следует отметить экспоненциальный рост сложности устройства в зависимости от количества входов. Добавление одного дополнительного входа цифрового устройства приводит к удвоению требуемого количества ячеек памяти ПЗУ. Это не позволяет реализовать многовходовые комбинационные цифровые схемы.

Читайте также:  Jquery выделить текст в input

Для реализации цифровых комбинационных устройств с большим числом входов были разработаны программируемые логические матрицы (ПЛМ). В иностранной литературе они получили название — Programmable Logic Arrays (PLA). Именно программируемые логические матрицы можно считать первыми программируемыми логическими интегральными схемами (Programmable Logic Devices — PLDs). ПЛМ получили широкое распространение в качестве первых универсальных микросхем большой интеграции.

Классификация ПЛИС

В настоящее время программируемые логические интегральные схемы развиваются по нескольким направлениям, поэтому возникла необходимость как то различать эти микросхемы. Классификация программируемых логических интегральных схем (ПЛИС) приведена на рисунке 1.


Рисунок 1. Классификация программируемых логических интегральных схем (ПЛИС)

Следует отметить, что программируемые логические матрицы (ПЛМ) реализуют хорошо известные принципы создания цифровой комбинационной схемы по таблице истинности (СДНФ). Применение постоянных запоминающих устройств (ПЗУ) в качестве комбинационной схемы позволяет вообще обойтись без составления комбинационной функции и ее минимизации. Области применения этих микросхем сразу определились. ПЗУ применялись для создания комбинационных схем с малым количеством входов. При росте количества входов сложность внутреннего устройства ПЗУ и его цена резко возрастали (по квадратичному закону). ПЛМ позволяли реализовывать таблицы истинности с относительно малым количеством единичных сигналов на выходе и большим количеством входных сигналов, либо хорошо минимизирующиеся логические функции.

Первоначально цифровые устройства с памятью реализовывали либо на нескольких ПЛМ, либо добавляли внешние триггеры, затем стали включать их в состав программируемых логических устройств. По мере увеличения степени интеграции микросхем возникла необходимость объединять полученные сложные микросхемы на одном кристалле. В результате возникли сложные программируемые логические устройства (CPLD). В них появилась возможность программировать не только таблицу истинности комбинационного устройства, но и линии соединения входов и выходов ПЛД между собой. Таким образом можно считать CPLD дальнейшим развитием ПЛМ и ПЛД.

Точно так же развивались цифровые устройства на ПЗУ. Сначала к их выходам добавили триггер. Естественно предоставили возможность отключать его при необходимости. Затем несколько этих схем разместили на одном кристалле и предоставили возможность программировать соединения их входов и выходов между собой. Подобные устройства называются FPGA.

Вместе со статьей "Программируемые логические интегральные схемы (ПЛИС)" читают:

Программи́руемая логи́ческая интегра́льная схе́ма (ПЛИС, англ. programmable logic device , PLD ) — электронный компонент (интегральная микросхема), используемый для создания конфигурируемых цифровых электронных схем. В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при изготовлении, а задаётся посредством программирования (проектирования). Для программирования используются программатор и IDE (отладочная среда), позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др. Альтернативой ПЛИС являются:

  • базовые матричные кристаллы (БМК), требующие заводского производственного процесса для программирования;
  • ASIC — специализированные заказные большие интегральные схемы (БИС), которые при малосерийном и единичном производстве существенно дороже;
  • специализированные компьютеры, процессоры (например, цифровой сигнальный процессор) или микроконтроллеры, которые из‑за программного способа реализации алгоритмов в работе медленнее ПЛИС.
  • непрограммируемые цифровые устройства и системы, настроенные на решение заранее известных задач, построенные на принципах т.н. "жесткой логики".

Некоторые производители для своих ПЛИС предлагают программные процессоры, которые можно модифицировать под конкретную задачу, а затем встроить в ПЛИС. Тем самым:

  • обеспечивается увеличение свободного места на печатной плате (возможность уменьшения размеров платы);
  • упрощается проектирование самой ПЛИС;
  • увеличивается быстродействие ПЛИС.

Содержание

Этапы проектирования [ править | править код ]

  1. Задание принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др.
  2. Логический синтез с помощью программ-синтезаторов (получение списка электрических соединений (в виде текста) из абстрактной модели, записанной на языке описания аппаратуры).
  3. Проектирование печатной платы устройства с помощью системы автоматизированного проектирования (САПР) печатных плат (Altium Designer, P-CAD и др.), на которой размещается микросхема ПЛИС и прочие электронные компоненты (резисторы, конденсаторы, генераторы, АЦП, разъёмы и т.д.).
  4. Создание файла конфигурации ПЛИС.
  5. Загрузка файла в микросхему ПЛИС или отдельную микросхему памяти конфигурации. В результате загрузки конфигурации микросхема ПЛИС обретает заданную функциональность.
Читайте также:  Sony icd tx50 инструкция

Применение [ править | править код ]

ПЛИС широко используется для построения различных по сложности и по возможностям цифровых устройств, например:

  • устройств с большим количеством портов ввода-вывода (бывают ПЛИС с более чем 1000 выводов («пинов»));
  • устройств, выполняющих цифровую обработку сигнала (ЦОС);
  • цифровой видеоаудиоаппаратуры;
  • устройств, выполняющих передачу данных на высокой скорости;
  • устройств, выполняющих криптографические операции, систем защиты информации;
  • устройств, предназначенных для проектирования и прототипирования интегральных схем специального назначения (ASIC);
  • устройств, выполняющих роль мостов (коммутаторов) между системами с различной логикой и напряжением питания;
  • реализаций нейрочипов;
  • устройств, выполняющих моделирование квантовых вычислений;
  • устройств, выполняющих обработку радиолокационной информации.

Типы ПЛИС [ править | править код ]

Ранние ПЛИС [ править | править код ]

В 1970 году компания «TI» разработала маскируемые (то есть, программируемые с помощью маски, англ. mask-programmable ) интегральные схемы (далее ИС), основанные на ассоциативном ПЗУ (ROAM) фирмы «IBM». Эта микросхема называлась TMS2000 и программировалась чередованием металлических слоёв в процессе производства интегральной схемы (ИС). TMS2000 имела до 17 входов и 18 выходов с 8 JK-триггерами в качестве памяти. Для этих устройств компания «TI» ввела термин PLA — англ. programmable logic array — программируемая логическая матрица.

PAL [ править | править код ]

PAL (англ. programmable array logic ) — программируемый массив (матрица) логики. В СССР PLA и PLM не различались и обозначились как ПЛМ (программируемая логическая матрица). Разница между PLA и PLM состоит в доступности программирования внутренней структуры (матриц).

GAL [ править | править код ]

GAL (англ. generic array logic ) — это ПЛИС, имеющие программируемую матрицу «И» и фиксированную матрицу «ИЛИ».

CPLD [ править | править код ]

CPLD (англ. complex programmable logic device — сложные программируемые логические устройства) содержат относительно крупные программируемые логические блоки — макроячейки, соединённые с внешними выводами и внутренними шинами. Функциональность CPLD кодируется в энергонезависимой памяти, поэтому нет необходимости их перепрограммировать при включении. Может применяться для расширения числа входов/выходов рядом с большими кристаллами, или для предобработки сигналов (например, контроллер COM-порта, USB, VGA).

FPGA [ править | править код ]

FPGA (англ. field-programmable gate array ) содержат блоки умножения-суммирования, которые широко применяются при обработке сигналов (DSP, англ. digital signal processing ), а также логические элементы (как правило, на базе таблиц перекодировки — таблиц истинности) и их блоки коммутации. FPGA обычно используются для обработки сигналов, имеют больше логических элементов и более гибкую архитектуру, чем CPLD. Программа для FPGA хранится в распределённой памяти, которая может быть выполнена как на основе энергозависимых ячеек статического ОЗУ (подобные микросхемы производят, например, фирмы «Xilinx» и «Altera») — в этом случае программа не сохраняется при исчезновении электропитания микросхемы, так и на основе энергонезависимых ячеек flash-памяти или перемычек antifuse (такие микросхемы производит фирма «Actel» и «Lattice Semiconductor») — в этих случаях программа сохраняется при исчезновении электропитания. Если программа хранится в энергозависимой памяти, то при каждом включении питания микросхемы необходимо заново конфигурировать её при помощи начального загрузчика, который может быть встроен и в саму FPGA. Альтернативой ПЛИС FPGA являются более медленные цифровые процессоры обработки сигналов. FPGA применяются также, как ускорители универсальных процессоров в суперкомпьютерах (например, компьютер «Cray XD1» компании «Cray», проект «RASC» компании «Silicon Graphics» («SGI»)).

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.