Види програмованої логіки
Залежить від технології
Отже про все по порядку.
У випадку з fuse або PROM програмування або «прожиг» полягає в ліквідації плавкою перемички шляхом розплавлення імпульсом струму великої тривалості і амплітуди. Тому fuse-пристрої відносять до однократно програмованим. Перемички бувають металевими (ніхром, титан-вольфрам) або полікристалічний (полікремній).
У разі EPROM схема програмується електрично за допомогою спеціального програматора і стирається опроміненням поверхні кристала сильним ультрафіолетовим світлом (наприклад від ртутної лампи) через кварцове віконце в корпусі.
SRAM або ж по-російськи статична оперативна пам'ять з довільним доступом характеризується низьким споживанням, тому знаходить своє застосування в FPGA. Осередок даного виду пам'яті складається з 6-8 транзисторів, звідси низька щільність запису і висока вартість зберігання кілобайт інформації. Загалом все досить просто і буденно.
А ось antifuse - це найцікавіше. Саме на них будуються ті самі Rad-hard FPGA (RTAX і RTSX-SU) фірми Actel, які принесли їй таку популярність. Як і у випадку з fuse вони одноразово-Перепалювані (правда не завжди, але про це нижче). Однак в конструкції є принципова відмінність - вони утворені тришаровим діелектриком з oxid-nitrid-oxid (ONO) і тут все зовсім навпаки.
У початковому стані така перемичка має високий опір, що досягає декількох мільйонів Ом. При подачі напруги між дифузійним шаром і кремнієвої шиною (на малюнку - gate) призводить до виникнення в оксиді тунельного ефекту Фаулера-Нордгейма і прямого тунельного ефекту. Це призводить до зростання струмів витоку і soft breakdown (оборотного пробою). Якщо прибрати електричне поле, то опір діелектрика відновиться. В іншому випадку струми будуть зростати і це призведе в кінцевому рахунку до теплового (необоротного) пробою діелектрика, утворення провідного каналу і різкого зростання струму через нього. Цей сценарій має в західній літературі назву hard breakdown.
Параметри стану перемички після пробою повинні зберігатися близько 40 років. Малі опору і малі паразитні ємко-сти перемичок типу antifuse позитивно впливають на швидкості поширеною-ня сигналів в програмованих зв'язках.
Під Mask мається на увазі програмування нанесенням на кристал-напівфабрикат 1-2 верхніх шару металізації з наступним травленням.
А тепер після тривалого вступу перейдемо, власне, до теми позначеної в заголовку. Пристрої PLD в залежності від кількості вентилів, архітектури та особливостей технології програмування можуть віднесені до класів, представленим на схемі нижче

Базовий матричний кристал (БМК)
У термінології прийнятої на Заході відомі також як HAL (Hard Array Logic) або ж Structured ASIC. Що щось середнє між замовними інтегральними схемами і PLD. З першими ріднить те, що програмування здійснюється технологічно. З другими те, що на одному кристалі можна отримати найрізноманітніші цифрові пристрої.
Програмування здійснюється нанесенням з подальшим травленням 1-2 шарів металізації на кристал-напівфабрикат з нескоммутірованнимі осередками. Розробники апаратури, побудованої із застосуванням FPGA мають можливість їх заміни на БІС на основі БМК, отримавши при цьому, в ряді випадків, помітний економічний ефект і збільшивши щільність компонування апаратури. Для забезпечення такої переробки виробники розробляють САПРи, що дозволяють виробляти автоматизований переклад проектів, виконаних на ПЛІС в базис бібліотек БМК.
Можуть включати до 100 000 вентилів і працювати на частотах до 50МГц. Операційний цикл становить близько 3-х місяців.
В даний час майже повністю витіснені FPGA і CPLD. Однак застосовуються в дрібносерійному виробництві з причини своєї дешевизни по відношенню до замовних мікросхемах. Випускається вітчизняним ВАТ Ангстрем. НВО Фізика і деякими іншими підприємствами.
Programmable Array Logic (PAL)
Складається з логіки введення-виведення і ядра, яке представляє з себе добре відому всім нам EPROM або EEPROM. Використовуються для створення кобінаціонних логичеких схем. Для проргаммрованія PAL сущестовала спеціальні мови програмування як PALASM, ABEL, CUPL. Ранні PAL проводилися по біполярної технології з одноразовим програмуванням за допомогою перепалювання титано-вольфрамових перемичок (fuses). Пізніші - по КМОП-технології. Складаються з десятків-сотень вентилів.
Як і БМК в даний час витіснені більш досконалими пристроями, однак все ще застосовується у виробах спеціального призначення, наприклад у військовій техніці. Випускаються фірмою Atmel
Programmable logic array (PLA)
Відрізняється від попереднього класу тим, що в них програмується як масив OR, так і AND. Через це - більш складні схеми і вартість вище, ніж у PAL. В силу того, що програмуються обидва масиви, швидкість нижче, ніж в разі PAL.
Complex Programmable Logic Device (CPLD)
Технологія програмованих логічних пристроїв зі складністю, що займає діапазон приблизно між PAL (Programmable Array Logic) і FPGA (Field-programmable gate array), і з поєднанням їх архітектурних особливостей.
Пристрій CPLD включають в себе тисячі - десятки тисяч осередків, мають добре передбачувані затримки проходження сигналу. Від FPGA відрізняє наявність незалежної перепрограммируемой пам'яті, ті для первинного завантаження не потрібні мікросхеми конфигурационной пам'яті, як у випадку FPGA. Тому ресурс перепрограмування менше ніж в разі останніх (не менше 1 000 циклів запис / стирання для сімейства Xilinx CoolRunner-II).

Структура CPLD являє собою сукупність функціональних блоків, що об'єднуються матрицею переключень Global Routing Pool. Архітектура функціональних блоків (Generic Array Logic) багато в чому подібна до архітектурі універсальних PAL. Відмінності полягають в тому, що всі вихідні макроячейки (Macrocells) мають дві зворотні зв'язки, а проміжні шини макроячейкам призначаються за допомогою розподільника (Logic allocator). Деякі макроячейки CPLD не мають зв'язку із зовнішнім виводом. Такі макроячейки називаються прихованими. Приховані макроячейки мають тільки одну зворотний зв'язок.
Зовнішні виходи CPLD зв'язуються з виходом макроячейки за допомогою ще однієї матриці межсодіненій ORP (Output Routing Pool). Ця ж матриця пов'язує вхідні логіку з GRP. Для зменшення затримок в деяких CPLD передбачаються Direct input входи пов'язані безпосередньо зі входами макроячеек.

Field-Programmable Gate Array (FPGA)
Незважаючи на відмінності між FPGA різних сімейств і різних виробників, включені до їх складу смакоту на зразок блоків DSP і процесорні ядра, загальні принципи архітектури FPGA залишаються незмінними.
Основною функціональною одиницею FPGA є CLB (Configurable Logic Block). Комутація CLB здійснюються за допомогою S блоків і С блоків (connection box). CLB в свою чергу може включати в себе кілька LUT (Look-up table). У фірми Xilinx CLB ще складаються з так званих Slices, які теж в свою чергу складаються з LUTов. Навіщо так все ускладнювати? Справа в тому, що є різні види секцій Slice, LUTи яких мають різною функціональністю.

У FPGA сімейств Virtex-6 і Spartan-6 CLB складається з 2-х секцій їх 3 види: SLICEM, SLICEL і SLICEX. У сімействі Spartan-6 один CLB складається з SLICEL і SCLCEX, а другий з SLICEL і SLICEM. У Virtex-6 все виглядає трохи по-іншому - один має в складі 2 секції SLICEL, а другий - SLICEL і SLICEM. При цьому кожна секція в CLB підключена до окремого ланцюга перенесення.

Розглянемо кожну з цих секцій.
SLICEM складається з 4 LUT, включає в себе логіку прискореного перенесення, таблиці перетворення, що конфігуруються як розподілена пам'ять і SRL (Shift register lookup table), і мультиплексори розширення кількості булевих аргументів

SLICEL складається з 4 LUT, включає в себе логіку прискореного перенесення і мультиплексори розширення кількості булевих аргументів

SLICEX складається з 4 LUT, тільки логіка. Ніякої розподіленої пам'яті, ланцюгів перенесення і мультиплексорів розширення.

Як же все це з'єднати разом? Для цього компанія Xilinx розробила архітектуру ASMBL (Application Specific Modular Block Architecture). Якщо коротко, то однакові блоки, такі як DSP, блокова пам'ять, вбудовані IP-блоки або логічні секції розташовуються в одному ряду. Шляхом комбінації таких рядів і виходять спеціалізовані для різних застосувань FPGA (наприклад, Virtex-6 бувають LXT, SXT і HXT).

Блоки введення-виведення сучасних FPGA підтримують понад 40 різних протоколів з різними напругами, такі як: LVCMOS, LVDS, Bus LVDS, LVPECL, SSTL, HSTL, RSDS_25 (point-to-point), PCI, I2C і інші. Висновки FPGA об'єднуються в банки по 30-80 висновків в кожному, висновки кожного банку можуть підтримувати різні групи стандартів.
- В. Соловйов, А. Климович, Введення в проектування комбінаційних схем на ПЛІС.
- Daniel Gomez-Prado, Maciej Ciselsky, A tutorial on FPGA routing.