Введение
Реконфигурируемый элемент цифровой схемы
Программируемое логическое устройство (PLD) – это электронный компонент, используемый для создания реконфигурируемых цифровых схем. В отличие от цифровой логики, построенной на дискретных логических элементах с фиксированными функциями, функция PLD не определена в момент производства. Прежде чем PLD можно будет использовать в схеме, его необходимо запрограммировать для реализации требуемой функции. По сравнению с фиксированной логикой, программируемые логические устройства упрощают разработку сложных логических схем и могут обеспечивать более высокую производительность. В отличие от микропроцессоров, программирование PLD изменяет соединения между элементами внутри устройства. PLD можно классифицировать, в порядке возрастания сложности, на простые программируемые логические устройства (SPLD), включающие программируемую логику с помощью массива соединений, программируемую логическую матрицу и универсальную логику с помощью массива соединений; сложные программируемые логические устройства (CPLD); и полевые программируемые вентильные матрицы (FPGA).
История
В 1969 году Motorola представила XC157 – программируемую маской матрицу логических элементов с 12 элементами и 30 неиспользованными выводами. В 1970 году Texas Instruments разработала программируемую маской интегральную схему на основе ассоциативной памяти IBM или ROAM. Это устройство, TMS2000, программировалось путем изменения металлического слоя в процессе производства интегральной схемы. TMS2000 имела до 17 входов и 18 выходов с 8 JK-триггерами для памяти. TI предложила термин "Программируемый логический массив" (PLA) для этого устройства. В 1971 году компания General Electric (GE) разрабатывала программируемое логическое устройство на основе новой технологии программируемой постоянной памяти (ППЗУ). Это экспериментальное устройство улучшало ROAM от IBM, обеспечивая многоуровневую логику. Intel только что представила ультрафиолетовую ППЗУ с плавающим затвором, поэтому исследователи GE включили эту технологию в свою разработку. Устройство GE стало первым стираемым PLD, разработанным когда-либо, опередив EPLD от Altera более чем на десятилетие. GE получила несколько ранних патентов на программируемые логические устройства. В 1973 году National Semiconductor представила программируемое маской PLA-устройство (DM7575) с 14 входами и 8 выходами без регистров памяти. Оно было более популярным, чем разработка TI, но стоимость изготовления металлической маски ограничивала его применение. Устройство имеет значение, поскольку стало основой для полевых программируемых логических массивов, произведенных Signetics в 1975 году – 82S100. (Intersil фактически опередил Signetics в выходе на рынок, но низкий выход годных изделий обрек их устройство на неудачу.) В 1974 году GE заключила соглашение с Monolithic Memories (MMI) о разработке программируемого логического устройства с использованием маски, включающего инновации GE. Устройство было названо "Программируемый ассоциативный логический массив" или PALA. MMI 5760 была завершена в 1976 году и могла реализовывать многоуровневые или последовательные схемы, состоящие более чем из 100 логических элементов. Устройство поддерживалось средой разработки GE, где булевы уравнения преобразовывались в шаблоны маски для конфигурирования устройства. Эта деталь так и не была выпущена на рынок.
ПЛК
В 1970 году компания Texas Instruments разработала маско-программируемую ИС на основе ассоциативной памяти IBM, или ROAM. Это устройство, TMS2000, программировалось путем изменения металлического слоя в процессе производства ИС. TMS2000 имел до 17 входов и 18 выходов с 8 JK триггерами для памяти. Компания TI ввела термин "программируемый логический массив" для обозначения этого устройства. FPGA обычно программируются после монтажа на печатную плату, аналогично более крупным CPLD. В большинстве крупных FPGA конфигурация является энергозависимой и должна перезагружаться в устройство при каждом включении питания или при необходимости изменения функциональности. Конфигурация обычно хранится в конфигурационной ПЗУ, EEPROM или флэш-памяти. Версии EEPROM могут быть программируемыми в системе (обычно через JTAG). Отличие FPGA от CPLD заключается в том, что FPGA внутренне основаны на таблицах подстановки (LUT), в то время как CPLD формируют логические функции с помощью множества логических элементов (например, сумма произведений). CPLD предназначены для более простых схем, а FPGA – для более сложных. В целом, CPLD являются хорошим выбором для широких комбинационных логических приложений, в то время как FPGA лучше подходят для больших конечных автоматов, таких как микропроцессоры.
EPLD
Используя ту же технологию, что и EPROM, EPLD имеют кварцевое окно в корпусе, позволяющее стирать их под воздействием ультрафиолетового света. Стираемое программируемое логическое устройство (EPLD) – это интегральная схема, состоящая из массива логических устройств (PLD), которые не имеют предварительных соединений; соединения программируются пользователем электрически. Большинство устройств GAL и FPGA являются примерами EPLD.
Другие варианты
Это микропроцессорные схемы, которые содержат как фиксированные, так и функции, которые можно изменять с помощью кода, выполняемого на процессоре. Разработка самонастраивающихся систем требует от инженеров освоения новых методов и создания новых программных средств. Сейчас в продаже появились ПЛИС, содержащие микропроцессор с фиксированной функцией (так называемое ядро), окруженный программируемой логикой. Эти устройства позволяют разработчикам сосредоточиться на добавлении новых функций в проекты, не заботясь о функционировании микропроцессора. Кроме того, микропроцессор с фиксированной функцией занимает меньше места на кристалле, чем эквивалентная реализация того же процессора в программируемой логической матрице, что освобождает больше места для специализированных схем разработчика в этой матрице.
Языки программирования PLD
Многие устройства программирования PAL принимают входные данные в стандартном формате файла, обычно называемом "файлами JEDEC". Они аналогичны компиляторам программного обеспечения. Языки, используемые в качестве исходного кода для логических компиляторов, называются языками описания аппаратуры (HDL).