Программируемая матричная логика
Программируемые матрицы логики (PAL)
В программируемой логической матрице (ПЛМ) обе матрицы логических элементов «И» и «ИЛИ» программируемы. ПЛИС, в которых матрица логических элементов «И» является программируемой, а матрица логических элементов «ИЛИ» фиксированной, получили название программируемых матриц логики ПМЛ или PAL — Programmable Array Logic (англ.). Поскольку изготовить такие устройства проще, чем ПЛМ, они имеют меньшую стоимость и обладают улучшенными характеристиками, что привело к их высокой популярности. Пример ПМЛ с тремя входами, четырьмя логическими элементами «4ИЛИ», реализующими четыре минтерма шестого ранга и двумя выходами представлен на рисунке 1.
Рисунок 1. Обобщенная структура программируемых матриц логики (ПМЛ)
Напомню, что в схеме, приведенной на рисунке 1, действует следующее соглашение: Количество входов у логических элементов «И» равно количеству проводников на входе схемы (в данном случае шесть). Соединения, помеченные крестиком подключены ко входам логического элемента, остальные входы логического элемента «И» подключены через резистор к источнику питания, а значит не влияют на результат работы. Представленные на рисунке 1 запрограммированные соединения реализуют следующие логические функции:
Логические элементы «4И», реализующие термы P1 и P2 аппаратно соединены с первым элементом ИЛИ, а логические элементы «4И», реализующие термы P3 и P4 аппаратно соединены со вторым элементом. Эти соединения не могут программироваться. По сравнению с ПЛМ, программируемые матрицы логики обладает меньшей гибкостью программирования. ПМЛ позволяет использовать четыре терма в качестве входов для элементов ИЛИ, а элементы ИЛИ в ПМЛ имеют только два фиксированных входа. Для компенсации этого недостатка производители ПМЛ производят микросхемы разного объема с различным числом входов и выходов, а также различным числом входов логических элементов «ИЛИ».
К программируемым матрицам логики относятся большинство современных ПЛИС небольшой степени интеграции. В качестве примера подобных микросхем можно привести отечественные ИС КМ1556ХП4, КМ1556ХП6, КМ1556ХП8, КМ1556ХЛ8, ранние разработки микросхем ПЛИС (середина-конец 1980-х годов) фирм INTEL, ALTERA, AMD, LATTICE и др. Разновидностью этого класса микросхем являются ПЛИС, имеющие только одну (программируемую) матрицу логических элементов «И», например, микросхема 85C508 фирмы INTEL. Следующий традиционный тип ПЛИС — программируемая макрологика. Подобные микросхемы содержат единственную программируемую матрицу «И-НЕ» или «ИЛИ-НЕ», но за счёт многочисленных инверсных обратных связей способны формировать сложные логические функции. К этому классу относятся, например,ПЛИС PLHS501 и PLHS502 фирмы SIGNETICS, имеющие матрицу «И-НЕ», а также схема XL78C800 фирмы EXEL, реализованная на матрице логических элементов «ИЛИ-НЕ»
Вместе со статьей «Программируемые матрицы логики (PAL)» читают:
FPGA — теория программируемой логики (шлюзовой матрицы)
Главная страница » FPGA — теория программируемой логики (шлюзовой матрицы)
FPGA (Field Programmable Gate Array) — программируемая шлюзовая матрица. По своей сути FPGA является массивом взаимосвязанных цифровых подсхем, которыми реализуются общие функции. Также система видится инструментом, наделённым очень высоким уровнем гибкости. Однако чтобы реализовать полностью гибкость матрицы, потребуются исключить массу нюансов. Поэтому рассмотрим концепцию FPGA, попутно узнаем, что такое логические шлюзы, определим, как программировать FPGA. Наконец, найдём и определим отличия конструкции матрицы от конструкции микропроцессора.
FPGA или микроконтроллер?
Микроконтроллеры выступают доминирующим компонентом современного электронного конструирования. Микроконтроллеры относительно недорогие и универсальные электронные модули.
Это мощные инструменты, благодаря которым успешно решаются различные задачи проектирования. Тем не менее, микроконтроллеры построены на основе процессоров, а процессоры характерны некоторыми фундаментальными ограничениями.
Как же достичь превосходства FPGA над традиционным микроконтроллером? Конечно же, посредством программного обеспечения и аппаратных средств.
Процессор решает задачи, выполняя инструкции последовательно. Таким образом, операции процессора по существу ограничены. Требуемая функциональность должна быть адаптирована к доступным инструкциям, и в большинстве случаев невозможно одновременно выполнить несколько задач обработки.
Структура микроконтроллера: 1 – процессор; 2 – контроль прерываний; 3 – генератор импульсов; 4 – ROM; 5 – управление шиной; 6 – RAM; 7 – порты ввода/вывода; 8 – счётчики; 9 – последовательный порт
Набор инструкций рассчитан на высокую универсальность, и в настоящее время инструкции могут выполняться на чрезвычайно высоких частотах; однако эти характеристики не устраняют недостатки программного подхода к цифровому конструированию.
Альтернативой является аппаратный подход. Было бы чрезвычайно удобно, если бы каждая новая конструкция выстраивалась вокруг цифровой ИС, которая реализует точную функциональность, востребованную системой.
Тогда нет необходимости писать программное обеспечение:
- никаких ограничений набора команд,
- никаких задержек обработки,
- используется только одна ИС,
- выходы и цифровые схемы соответствуют операциям.
Эта методология нецелесообразна вне описания, поскольку она предполагает разработку ASIC (специализированной интегральной схемы) для каждой платы. Однако есть возможность аппроксимировать эту методологию через FPGA.
Программируемая шлюзовая матрица
FPGA – это, по сути, массив логических вентилей. Этот массив может быть запрограммирован пользователем для конкретного устройства. Рассмотрим подробнее такую возможность.
Так называемая «стартовая» (макетная) плата электронного устройства типа FPGA — доступного по цене и лёгкого в использовании для конечного пользователя
Логические шлюзы (AND, OR, XOR и т. д.) являются основными строительными блоками цифровой схемы. Поэтому неудивительно, когда цифровое устройство, которое необходимо конфигурировать (запрограммировать пользователем), состоит из множества шлюзов, связанных методом настройки.
Однако FPGA не является обширной коллекцией отдельных булевских шлюзов. Это был бы субоптимальный способ обеспечения функциональности настраиваемой логикой. Тот же принцип проявляется, к примеру, в области дискретных цифровых интегральных схем (ИС).
В принципе, можно приобрести интегральные схемы, которые состоят из И-шлюзов, ИЛИ-шлюзов и т. д. Между тем вряд ли рационально создавать сдвиговый регистр из отдельных шлюзов. Куда рациональнее и практичнее использовать ИС регистра сдвига.
Таким образом, FPGA видится намного более выразительным инструментом, чем просто массив шлюзов. Это массив тщательно разработанных и взаимосвязанных цифровых подсхем, которые эффективно реализуют общие функции.
Конфигурируемые логические блоки
Отмечено, что FPGA обеспечивает очень высокий уровень гибкости. Эту гибкость обеспечивают цифровые подсхемы, именуемые конфигурируемыми логическими блоками (CLB). Такими блоками образуется ядро программируемых логических возможностей FPGA.
Структура программируемой шлюзовой матрицы: CLB – настраиваемый логический блок; SB – переключающий бокс; CB – соединительный бокс; I/O – блок ввода/вывода; H – горизонтальный канал маршрутизации; V – вертикальный канал маршрутизации; C – «W» трек
Технически CLB взаимодействуют друг с другом и с внешней схемой. Для этих целей FPGA использует матрицу программируемых соединений и блоков ввода/вывода (I/O).
Программа FPGA хранится внутри ячеек SRAM, которые влияют на функциональность CLB и управляют коммутаторами, устанавливающими пути подключения.
Подробное объяснение внутренней структуры и работы CLB потребует отдельной публикации (или даже нескольких публикаций). Общая идея заключается в том, что CLB включают в себя:
- таблицы поиска,
- элементы хранения (триггеры или регистры),
- мультиплексоры.
Все эти включения позволяют CLB выполнять логические операции, операции хранения данных и арифметические операции.
Блок ввода-вывода состоит из различных компонентов, которые облегчают на электронной плате связь между CLB и другими компонентами. К ним относятся:
- подтягивающие резисторы,
- буферы,
- инверторы.
Пользовательская программируемая логика (как программировать FPGA?)
Каким же образом превратить массив CLB в цифровую схему, которая делает именно то, чего желает пользователь? На первый взгляд это действие кажется довольно сложной задачей.
Действительно, реализация FPGA обычно считается сложнее, чем программирование микроконтроллера. Однако разработка FPGA не требует глубоких знаний функциональности CLB или кропотливой компоновки внутренних взаимосвязей.
Это аналогично тому, когда разработка микроконтроллеров не требует глубокого знания инструкций на языке ассемблера процессора или внутренних сигналов управления.
На самом деле несколько неверно представлять FPGA как отдельный компонент. Система FPGA всегда поддерживается программным обеспечением разработки.
Такое ПО выполняет сложный процесс преобразования аппаратного конструирования в биты программирования. Этими битами определяется поведение взаимосвязей и CLB.
Языки программного «описания» оборудования
Существуют средства, которые позволяют пользователю «описывать» аппаратное обеспечение. Эти средства называются языками описания аппаратных средств (HDL). Среди наиболее распространенных языков следует отметить «сладкую парочку»: —
Несмотря на очевидное сходство между кодеком HDL и кодом, написанным на языке программирования высокого уровня, эти два средства принципиально отличаются друг от друга.
Пример программирования шлюзовой матрицы с помощью VHDL кода, благодаря чему достигаются все необходимые операции, на которые рассчитывает конечный пользователь
Программный код определяет последовательность операций, тогда как HDL-код больше похож на схему, которой используется текст с целью представления компонентов и создания взаимосвязей.
Заключительный момент обзора
Современные FPGA — это сложные, высокопроизводительные устройства. На первый взгляд это пугающе сложные системы для тех пользователей, кто привык работать с микроконтроллерами.
Микроконтроллеры видятся проще для сбора данных, управления ASIC и выполнения математических операций. Однако на практике легко обнаруживается, что для некоторых конкретных применений улучшенная производительность и универсальность достигаются именно разработкой на FPGA.
Что такое FPGA? Введение в программируемую логику
Рассмотрим аппаратный подход к выполнению вычислений, маршрутизации цифровых сигналов и управлении встраиваемыми системами с помощью программируемой логики и FPGA (Field-Programmable Gate Array, программируемой пользователем вентильной матрицы).
FPGA – это программируемая логическая матрица. По своей сути, FPGA представляет собой массив взаимосвязанных цифровых подсхем, которые реализуют общие функции, а также предлагают очень высокий уровень гибкости. Но полная картина того, что такое FPGA, требует большего разбирательства. В данной статье представлены концепции FPGA и кратко обсуждается, что такое логические элементы, как программировать FPGA, и что отличает FPGA от микропроцессоров в плане разработки.
FPGA против микроконтроллера (Или зачем использовать FPGA, когда будет работать и микроконтроллер?)
Я думаю, мы все можем согласиться с тем, что микроконтроллеры стали доминирующим компонентом в современных электронных проектах. Они недорогие и универсальные, и в наши дни они часто служат первым в мире знакомством с миром электроники. Естественно, что мы продолжаем использовать компоненты, с которыми знакомы, и поскольку микроконтроллеры становятся всё более мощными, всё меньше и меньше нужно рассматривать альтернативные решения для наших задач проектирования. Тем не менее, микроконтроллер построен вокруг процессора, а процессоры имеют фундаментальные ограничения, которые необходимо признать и в некоторых случаях преодолеть.
Итак, когда инженер предпочтет FPGA микроконтроллеру? Ответ сводится к программному обеспечению и аппаратным средствам.
Процессор выполняет свои задачи, выполняя инструкции последовательно. Это означает, что операции процессора, по сути, ограничены: требуемая функциональность должна быть адаптирована к доступным инструкциям, и в большинстве случаев невозможно одновременно выполнять несколько задач обработки.
Микроконтроллер построен на одном процессоре, а процессор построен на одном CPU, а один CPU выполняет одну операцию за раз
Набор инструкций рассчитан на высокую универсальность, и в настоящее время инструкции могут выполняться на чрезвычайно высоких частотах; однако эти характеристики не устраняют недостатки программного подхода к цифровому проектированию.
Альтернативой является аппаратный подход. Было бы чрезвычайно удобно, если бы каждый новый проект мог быть построен вокруг цифровой микросхемы, которая в точности реализует функциональность, требуемую системой: нет необходимости писать программное обеспечение, никаких ограничений набора команд, никаких задержек обработки, только одна микросхема, которая имеет входные выводы, выходные выводы и цифровую схему, в точности соответствующую необходимым операциям. Эта методология нецелесообразна вне описания, поскольку она предполагает разработку ASIC (application-specific integrated circuit, специализированной интегральной микросхемы) для каждой платы. Однако мы можем аппроксимировать эту методологию, используя FPGA.
Что такое программируемая пользователем вентильная матрица?
Хорошее название может быть довольно информативным, и я бы подумал, что «программируемая пользователем вентильная матрица» («field-programmable gate array») будет достаточно хорошим названием. FPGA – это матрица логических вентилей (ну вроде – смотрите ниже) и эта матрица может быть запрограммирована (на самом деле, «сконфигурирована», вероятно, более подходящее слово) в поле, то есть пользователем устройства, как противоположность людям, которые его разработали. Давайте посмотрим на основные характеристики.
Логические вентили (элементы) (И, ИЛИ, исключающее ИЛИ и т.д.) являются основными строительными блоками цифровой схемы. Поэтому неудивительно, что цифровое устройство, которое должно быть чрезвычайно конфигурируемым (то есть «field-programmable» / программируемым в поле / программируемым пользователем), будет состоять из множества вентилей, которые могут быть связаны между собой настраиваемым способом.
Однако FPGA не является огромной коллекцией отдельных булевых элементов. Это было бы очень неоптимальным способом обеспечения функциональности конфигурируемой логики, потому что не использовало бы тот факт, что распространенные операции могут быть реализованы гораздо эффективнее как фиксированные модули. Тот же принцип проявляется и в мире дискретных цифровых микросхем. Вы можете купить микросхемы, которые состоят из элементов И, элементов ИЛИ и т.д., но вы не захотите создавать сдвиговый регистр из отдельных элементов. Вместо этого вы купите микросхему сдвигового регистра.
Матрица конфигурируемых логических блоков
Конфигурируемые логические блоки (CLB) должны взаимодействовать друг с другом и с внешней схемой. Для этих целей FPGA использует матрицу программируемых межсоединенй и блоков ввода/вывода (I/O). «Программа» FPGA хранится в ячейках SRAM, которые влияют на функциональность блоков CLB и управляют коммутаторами, которые устанавливают пути подключения.
Подробное объяснение внутренней структуры и работы блоков CLB потребует целой статьи (если не нескольких статей). Общая идея заключается в том, что CLB включают в себя таблицы поиска, элементы хранения (триггеры и регистры) и мультиплексоры, которые позволяют CLB выполнять логические операции, операции хранения данных и арифметические операции.
Блок ввода/вывода состоит из различных компонентов, которые облегчают связь между CLB и другими компонентами на плате. К ним относятся подтягивающие резисторы, буферы и инверторы.
Программируемая пользователем логика (Или как вы программируете FPGA?)
Как мы собираемся превратить массив настраиваемых логических блоков (CLB, Configurable Logic Block) в цифровую схему, которая делает именно то, что мы хотим? На первый взгляд это кажется довольно сложной задачей. Действительно, реализация FPGA обычно считается сложнее, чем программирование микроконтроллера. Однако разработка для FPGA не требует глубокого знания функциональности CLB или кропотливой компоновки внутренних межсоединений, так же как разработка для микроконтроллеров не требует глубокого знания инструкций на языке ассемблера процессора или внутренних сигналов управления.
На самом деле, несколько неверно представлять FPGA как самостоятельный компонент. FPGA всегда поддерживаются программным обеспечением для разработки, которое выполняет сложный процесс преобразования аппаратного проектирования в программируемые биты, которые определяют поведение межсоединений и CLB.
Это оставляет нам важный вопрос: как мы «объясним» программе, что должно делать аппаратное обеспечение FPGA?
Языки описания аппаратных средств
Оказывается, люди создали языки, которые позволяют нам «описывать» аппаратное обеспечение, они называются (очень соответствующе) языки описания аппаратных средств (HDL, hardware description language), а два наиболее распространенных – VHDL и Verilog. Несмотря на очевидное сходство между HDL кодом и кодом, написанным на языке программирования высокого уровня, они принципиально отличаются друг от друга. Код программы определяет последовательность операций, тогда как HDL код больше похож на схему, которая использует текст для представления компонентов и создания взаимосвязей.
Пример цифровой схемы, которая соответствует VHDL коду, приведенному ниже
Заключение
Надеюсь, теперь вы понимаете основные характеристики устройств программируемой логики и их потенциальные преимущества в отношении процессорных систем. Современные FPGA – это сложные, высокопроизводительные устройства, которые могут быть несколько пугающими для тех, кто привык использовать микроконтроллеры для сбора данных, управления микросхемами специального назначения и выполнения математических операций. Однако вы можете обнаружить, что в некоторых приложениях улучшенная производительность и универсальность стоят дополнительных усилий в разработке.
А в ближайшее время на RadioProg появится несколько статей, помогающих начать разработку на FPGA.
FPGA. Разбираемся, как устроены программируемые логические схемы и чем они хороши
Содержание статьи
Может быть, ты умеешь взламывать устройства на другом конце света или кодить крутые веб-приложения, но понимаешь ли ты, как работает твой компьютер? И речь не о том, что делает операционка, как функционирует garbage collector в Java или как устроен компилятор C++. Я говорю о самом низком, аппаратном уровне, ниже ассемблера: как работает железо.
Что происходит в микросхеме сетевой карты, когда приходит пакет Ethernet? Как этот пакет передается дальше в оперативную память компьютера через шину PCI Express? Как работают самые быстрые системы распознавания изображений на аппаратном уровне?
Для ответа на эти вопросы надо немного разбираться в цифровой логике работы микросхем ASIC, но начинать с них очень сложно и дорого, и вместо этого лучше начать с FPGA.
FPGA расшифровывается как field-programmable gate array, по-русски — программируемые пользователем вентильные матрицы, ППВМ. В более общем случае они называются ПЛИС — программируемые логические интегральные схемы.
С помощью FPGA можно в буквальном смысле проектировать цифровые микросхемы, сидя у себя дома с доступной отладочной платой на столе и софтом разработчика за пару килобаксов. Впрочем, есть и бесплатные варианты. Заметь: именно проектировать, а не программировать, потому что на выходе получается физическая цифровая схема, выполняющая определенный алгоритм на аппаратном уровне, а не программа для процессора.
Работает это примерно так. Есть готовая печатная плата с набором интерфейсов, которые подключены к установленной на плате микросхеме FPGA, вроде крутой платы для дата-центра или отладочной платы для обучения.
Пока мы не сконфигурируем FPGA, внутри микросхемы просто нет логики для обработки данных с интерфейсов, и потому работать ничего, очевидно, не будет. Но в результате проектирования будет создана прошивка, которая после загрузки в FPGA создаст нужную нам цифровую схему. Например, так можно создать контроллер 100G Ethernet, который будет принимать и обрабатывать сетевые пакеты.
Важная особенность FPGA — возможность реконфигурации. Сегодня нам нужен контроллер 100G Ethernet, а завтра эта же плата может быть использована для реализации независимых четырех интерфейсов 25G Ethernet.
Существуют два крупных производителя FPGA-чипов: Xilinx и Intel, которые контролируют 58 и 42% рынка соответственно. Основатели Xilinx изобрели первый чип FPGA в далеком 1985 году. Intel пришла на рынок недавно — в 2015 году, поглотив компанию Altera, которая была основана в то же время, что и Xilinx. Технологии Xilinx и Altera во многом схожи, как и среды разработки. Чаще я работал с продуктами компании Xilinx, поэтому не удивляйся ее постоянному упоминанию.
FPGA широко применяются в разных устройствах: потребительской электронике, оборудовании телекома, платах-ускорителях для применения в дата-центрах, различной робототехнике, а также при прототипировании микросхем ASIC. Пару примеров я разберу чуть ниже.
Также рассмотрим технологию, которая обеспечивает аппаратную реконфигурацию, познакомимся с процессом проектирования и разберем простой пример реализации аппаратного счетчика на языке Verilog. Если у тебя есть любая отладочная плата FPGA, ты сможешь повторить это самостоятельно. Если платы нет, то все равно сможешь познакомиться с Verilog, смоделировав работу схемы на своем компе.
Принцип работы
Микросхема FPGA — это та же заказная микросхема ASIC, состоящая из таких же транзисторов, из которых собираются триггеры, регистры, мультиплексоры и другие логические элементы для обычных схем. Изменить порядок соединения этих транзисторов, конечно, нельзя. Но архитектурно микросхема построена таким хитрым образом, что можно изменять коммутацию сигналов между более крупными блоками: их называют CLB — программируемые логические блоки.
Также можно изменять логическую функцию, которую выполняет CLB. Достигается это за счет того, что вся микросхема пронизана ячейками конфигурационной памяти Static RAM. Каждый бит этой памяти либо управляет каким-то ключом коммутации сигналов, либо является частью таблицы истинности логической функции, которую реализует CLB.
Так как конфигурационная память построена по технологии Static RAM, то, во-первых, при включении питания FPGA микросхему обязательно надо сконфигурировать, а во-вторых, микросхему можно реконфигурировать практически бесконечное количество раз.
Очень упрощенная 2D-структура микросхемы без конфигурационной памяти
Блоки CLB находятся в коммутационной матрице, которая задает соединения входов и выходов блоков CLB.
Схема коммутационной матрицы
На каждом пересечении проводников находится шесть переключающих ключей, управляемых своими ячейками конфигурационной памяти. Открывая одни и закрывая другие, можно обеспечить разную коммутацию сигналов между CLB.
CLB очень упрощенно состоит из блока, задающего булеву функцию от нескольких аргументов (она называется таблицей соответствия — Look Up Table, LUT) и триггера (flip-flop, FF). В современных FPGA LUT имеет шесть входов, но на рисунке для простоты показаны три. Выход LUT подается на выход CLB либо асинхронно (напрямую), либо синхронно (через триггер FF, работающий на системной тактовой частоте).
Принцип реализации LUT
Интересно посмотреть на принцип реализации LUT. Пусть у нас есть некоторая булева функция y = (a & b) |
c . Ее схемотехническое представление и таблица истинности показаны на рисунке. У функции три аргумента, поэтому она принимает 2^3 = 8 значений. Каждое из них соответствует своей комбинации входных сигналов. Эти значения вычисляются программой для разработки прошивки ПЛИС и записываются в специальные ячейки конфигурационной памяти.
Значение каждой из ячеек подается на свой вход выходного мультиплексора LUT, а входные аргументы булевой функции используются для выбора того или иного значения функции. CLB — важнейший аппаратный ресурс FPGA. Количество CLB в современных кристаллах FPGA может быть разным и зависит от типа и емкости кристалла. У Xilinx есть кристаллы с количеством CLB в пределах примерно от четырех тысяч до трех миллионов.
Помимо CLB, внутри FPGA есть еще ряд важных аппаратных ресурсов. Например, аппаратные блоки умножения с накоплением или блоки DSP. Каждый из них может делать операции умножения и сложения 18-битных чисел каждый такт. В топовых кристаллах количество блоков DSP может превышать 6000.
Другой ресурс — это блоки внутренней памяти (Block RAM, BRAM). Каждый блок может хранить 2 Кбайт. Полная емкость такой памяти в зависимости от кристалла может достигать от 20 Кбайт до 20 Мбайт. Как и CLB, BRAM и DSP-блоки связаны коммутационной матрицей и пронизывают весь кристалл. Связывая блоки CLB, DSP и BRAM, можно получать весьма эффективные схемы обработки данных.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
Программируемая матричная логика
По сравнению с другими микроэлектронными технологиями, в том числе и другими классами СПИС, технология ПЛИС обеспечивает рекордно-короткий проектно-технологический цикл (несколько часов/ дней), минимальные затраты на проектирование, максимальную гибкость при модификации аппаратуры. При этом весь проектно-технологический цикл выполняется разработчиком РЭА на одном рабочем месте.
Структура ПЛИС основана на фундаментальных понятиях алгебры логики (булевой алгебры) и содержит следующие логические элементы:
— логическое «ИЛИ» (дизъюнкторы);
— логическое «НЕ» (инверторы);
— буферные элементы с прямыми, инверсными и тристабильными выходами;
— триггеры D‑ и T‑типа;
Поскольку любая логическая функция может быть представлена в виде суммы произведений —дизъюнктивной нормальной формы (ДНФ), базовыми структурными компонентами ПЛИС являются матрицы элементов «И»и «ИЛИ». На выходе матриц расположены так называемые макроячейки (Macrocells), конфигурация которых зависит от типа ПЛИС. Макроячейки могут содержать различные триггеры, тристабильные буферы, элементы управления полярностью сигнала и др. Пути прохождения сигнала в макроячейке (конфигурация) могут быть жестко заданы структурой ПЛИС или управляться посредством мультиплексоров.
Размерность логических матриц и конфигурация макроячеек определяют степень интеграции и функциональные возможности ПЛИС.
ПЛИС также содержат многочисленные обратные связи (ОС), позволяющие использовать текущие состояния и формировать последовательностные автоматы различных классов. Обобщенная структура ПЛИС приведена на рис.2.
Основным программируемым компонентом ПЛИС являются логические матрицы. Изначально оно обеспечивают соединение любого сигнала со входа или ОС с любым коньюнктором или дизъюнктором. В зависимости от требуемых логических функций некоторые из этих соединений разрываются, а некоторые остаются и служат для коммутации сигналов. Возможность разрыва обеспечивается наличием программируемого элемента (перемычки) в местах соединения сигнальных линий. В зависимости от технологии изготовления ПЛИС перемычка представляет собой плавкую металлическую перемычку или ячейку памяти.
На рис. 3 условно изображен один из коньюнкторов матрицы «И». В ПЛИС такой коньюнктор называется термом. В «чистом» (незапрограммированном) состоянии каждый из сигналов A, B, C является входом коньюнктора, образуя логическую функцию «3И».
Разрывая одну или несколько перемычек (на рисунках они обозначаются символом «X»), можно получить любую коньюнкцию от этих сигналов.
Примеры приведены на рис.4.
В ПЛИС каждый терм содержит не только прямые, но и инверсные линии сигналов (рис. 5). В общей сложности количество входов каждого терма достигает 100 и выше.
Матрицы логического «ИЛИ» в ПЛИС бывают двух видов: программируемые и фиксированные. Программируемые матрицы «ИЛИ» аналогичны матрице «И» и изначально коммутируют любой терм с любым дизъюнктором (рис.6).
Фиксированные матрицы «ИЛИ» обеспечивают соединение каждого дизъюнктора со строго определенными термами (рис.7). Количество таких термов, как правило, составляет от 8 до 16. Фиксированные матрицы «ИЛИ» менее универсальны, но проще и понятнее для проектирования.
Выходной сигнал логических матриц попадает в макроячейку и может быть сохранен в памяти триггера, выведен на контакт или возвращен через ОС в матрицу «И». На рис.8 приведена макроячейка ПЛИС 85C220/85C224 фирмы INTEL.
Символом «P» обозначены программируемые элементы (перемычки конфигурации). В зависимости от состояния перемычки P1 вход B элемента «исключающее ИЛИ» коммутируется либо с низким (L), либо с высоким (H) логическим уровнем. В соответствии с этим сигнал либо сохраняет свою полярность, либо инвертируется (рис.9).
Перемычка P2 управляет сигналом выхода и ОС: в зависимости от ее состояния этот сигнал снимается либо с комбинационной линии (дизъюнктор- «исключающее ИЛИ»), либо с выхода триггера.
При «закрытом» тристабильном буфере выходной контакт макроячейки можно использовать в качестве входного.
Некоторые другие ПЛИС имеют макроячейки с более сложной и гибкой структурой, содержащие до 5 перемычек конфигурации. Количество макроячеек в ПЛИС составляет от 8 до 100 и более.
2.1. Классификация ПЛИС
Наибольший интерес представляет классификация ПЛИС по структурам, т.к. она дает наиболее полное представление о классе задач, пригодных для решения на той или иной ПЛИС. Основным критерием такой классификации является наличие, вид и способы коммутации логических матриц. По этому признаку можно выделить следующие классы ПЛИС:
— программируемые логические матрицы (ПЛМ);
— программируемая матричная логика (ПМЛ);
— программируемая макрологика (ПМ);
— программируемые коммутируемые матричные блоки (ПКМБ);
— программируемые вентильные матрицы (ПВМ).
Программируемые логические матрицы — наиболее традиционный тип ПЛИС, имеющий программируемые матрицы «И» и «ИЛИ». В зарубежной литературе соответствующими этому классу аббревиатурами являются FPLA (Field Programmable Logic Array) и FPLS (Field Programmable Logic Sequensers). Примерами таких ПЛИС могут служить отечественные схемы K556PT1, PT2, PT21.
Программируемая матричная логика (зарубежная аббревиатура —PAL — Programmable Array Logic) — это ПЛИС, имеющие программируемую матрицу «И»и фиксированную матрицу «ИЛИ». К этому классу относятся большинство современных ПЛИС. В качестве примеров можно привести отечественные ИС КМ1556ХП4,ХП6, ХП8,ХЛ8, ПЛИС фирм INTEL, ALTERA, AMD, LATTICE и др. Разновидностью класса ПМЛ являются ПЛИС, имеющие только одну (программируемую) матрицу «И», например, схема 85C508 фирмы INTEL.
Программируемая макрологика —ПЛИС, содержащие одну программируемую матрицу «И‑НЕ» или «ИЛИ-НЕ», но за счет многочисленных инверсных ОС способные формировать сложные логические функции. К этому классу относятся, например, ПЛИС PLHS501 и PLHS502 фирмы SIGNETICS, имеющие матрицу «И‑НЕ», а также схема XL78C800 фирмы EXEL, основанная на матрице «ИЛИ-НЕ» (рис.10).
Программируемые коммутируемые матричные блоки — это ПЛИС, содержащие несколько (обычно 4—8) матричных логических блоков (МЛБ), объединенных коммутационной матрицей. Каждый МЛБ представляет собой структуру типа ПМЛ, т.е. программируемую матрицу «И», фиксированную матрицу «ИЛИ»и макроячейки (рис. 11). ПЛИС типа ПКМБ, как правило, имеют высокую степень интеграции (до 20000 вентилей). К этому классу относятся ПЛИС семейства MAX5000, MAX7000, и MAX9000 фирмы ALTERA, схемы семейств XC72xx, XC73xx и XC95xx фирмы XILINX.
Программируемые вентильные матрицы —это ПЛИС, вообще не содержащие логических матриц и относящиеся к ПЛИС вследствие возможности программирования пользователем. Такие схемы основаны на структуре БМК и вентильных матриц и состоят из логических блоков (ЛБ) и коммутирующих путей (рис.12). Как правило, они содержат значительное число триггеров, но их комбинационные и коммутационные возможности ограничены. ПВМ используются, главным образом, для разработки счетных структур с минимальным комбинационным обрамлением. К ПВМ классу относятся схемы фирм XILINX, ACTEL, а также семейства FLEX8000, FLEX10K и FLEX6000 фирмы ALTERA.
2.2. Технология ПЛИС
До 1985 г. все ПЛИС изготавливались по технологии ТТЛШ. Это обеспечивало высокое быстродействие (до 7— 10 нс) и низкую стоимость схем. Однако этим ПЛИС были присущи и все недостатки биполярной технологии: высокая потребляемая мощность, низкая степень интеграции, невозможность перепрограммирования. Поэтому в конце 80‑х годов появились и получили быстрое развитие ПЛИС по технологии КМОП. В таких ПЛИС роль соединительных элементов (перемычек) играют ячейки памяти типа EPROM или EEPROM. Если в биполярных ПЛИС соединения разрываются путем обычного прожига перемычки, то в КМОП-ПЛИС ячейки программируются за счет накопления или удаления электрического заряда. Такие перемычки можно не только разрывать, но и восстанавливать. Этот процесс называется стиранием схемы. В зависимости от типа ячеек памяти различают ПЛИС с УФ-стиранием (EPROM) и электрическим стиранием (EEPROM).
ПЛИС с УФ-стиранием изготавливаются в керамических корпусах с окном. Стирание происходит при облучении ПЛИС УФ-излучением с заданными параметрами. Стирание ПЛИС типа EEPROM осуществляется путем подачи на схему определенных электрических сигналов.
Большинство ПЛИС по технологии EPROM выпускаются также в пластмассовых корпусах без окна (так называемые однократнопрограммируемые). Являясь полными функциональными аналогами стираемых, такие ПЛИС стоят на 40—% дешевле.
Внедрение технологии КМОП позволило значительно увеличить степень интеграции ПЛИС и достичь 10000 и более вентилей. Потребление КМОП-схем составляет около 1mA/МГц, а некоторые ПЛИС имеют режим микроамперного потребления в статическом режиме.
За последние годы были выпущены ПЛИС и по другим технологиям, например, на GaAs (фирма GAZELLE MICROELECTRONICS) или по технологии «антиперемычек»(фирма ACTEL). Но эти схемы еще не получили широкого распространения.
2.3. Бит секретности
ПЛИС имеют такую уникальную технологическую особенность, как перемычка (бит) секретности. Если после программирования ПЛИС ее внутреннюю конфигурацию можно считать и полученный шаблон использовать для тиражирования схемы, то после разрыва бита секретности содержимое ПЛИС становится недоступным для чтения. Благодаря этому ПЛИС могут применяться в качестве электронного ключа для защиты аппаратных и программных средств от несанкционированного доступа и копирования.
2.4. Основные области применения ПЛИС
Применение ПЛИС особенно целесообразно в следующих случаях. Во-первых, при разработке оригинальной аппаратуры, требующей нестандартных схемотехнических решений, а также при проектировании малогабаритных устройств. ПЛИС обычно заменяют на плате от 8—10 до 50—70 корпусов стандартной логики (например, 555 серии). При этом значительно уменьшаются размеры оборудования, а вследствие сокращения количества ИС снижается потребление схемы и повышается ее надежность.
Другим критерием использования ПЛИС является потребность резко сократить сроки и затраты на проектирование, а также повысить возможности модификации и отладки аппаратуры. Поэтому ПЛИС широко применяется в стендовом оборудовании, на этапах разработки и производства опытных партий новых изделий, а также для эмуляции схем, подлежащих последующей реализации на другой элементной базе, в частности, БМК. В последние годы за рубежом особенно широко стала применяться технология интегрированного проектирования ПЛИС+ +БМК, которая объединяет проектирование, отладку и модификацию прототипа цифрового устройства на ПЛИС и тиражирование устройства большими партиями на БМК. Такая интеграция позволяет, исключив недостатки, полностью реализовать преимущества обеих технологий: рекордно-короткий цикл проектирования и отладки РЭА (технология ПЛИС), высокий уровень интеграции, высокий коэффициент использования кристалла, высокие экономические характеристики тиражирования (технология БМК).
Отдельной областью применения ПЛИС, как уже отмечалось, являются устройства для защиты от копирования. Обычно применение 1—2 ПЛИС средней степени интеграции оказывается вполне достаточным для надежного «закрытия» информации.
Наиболее широко ПЛИС используются в микропроцессорной и вычислительной технике. На их основе разрабатываются контроллеры шины, адресные дешифраторы, логика обрамления микропроцессоров, формирователи управляющих сигналов и др. На ПЛИС часто изготавливаются микропрограммные автоматы и другие специализированные устройства, например, цифровые фильтры, схемы обработки сигналов и изображения, процессоры быстрого преобразования Фурье и т.д. В технике связи ПЛИС применяются в аппаратуре уплотнения телефонных каналов.