Привет. Волею удачного стечения обстоятельств в Июле мне пришлось столкнуться с ПЛИСами (FPGA). И теперь я хочу описать что это такое в кратце, так как теперь появилось свободное время пригодное для написания заметок.
Замечание: Дело в том, что ПЛИС - это более общее понятие чем FPGA, но в дальнейшем я буду их отождествлять.
FPGA (field programmable gate arrays) - программируемый в поле массив логических вентелей, или ПЛИС (программируемые логические интегральные схемы). Это цифровые интегральные схемы, которые представляют собой набор программируемых логических блоков и программируемых соединений между этими блоками.
--
Хочу отметить, что смысл выражения "программируемый в поле" а в оригинале "field programmable" означает оперативно программируемый. Иногда по ошибки некоторые это как "программируемые полем" но это не верно. Конечно э\м поле здесь участвует, но к нему данное выражение отношения не имеет. Термин "в поле" часто используют в замен "оперативный" чтобы подчеркнуть протекания процесса во время непосредственного иcполнения основных функций.
--
Итак, отвлечение на термин "в поле" закончено в связи с возникающими порой ошибочными трактовками, и переходим собственно к делу.
Зачем нужны ПЛИСы? Дело в том что в большинстве своём цифровая электроника выражена в ASIC - заказных микросхемах, которые очень дороги в единичном производстве. То есть, представим что вы разработчик, и хотите сделать свою цифровую ,и не только, микросхему, дома это сделать под стать к нынешним 14нм (тут меня можно покритиковать но это сейчас не важно) технологиям очень трудно (практически невозможно), и поэтому приходиться описать схему устройства и отослать его на завод производитель, который по заказу выпустит вашу микросхему, причём это очень дорогая услуга, и почти вся стоимость идёт в "шаблоносоздающие" работы. Такие работы очень выгодны при массовом производстве, при большом количестве микросхем, и разница между одной и 10 000 микросхем в цене незначительна. А представьте, что делать если вдруг произошла ошибка - производить новую партию? Дорого. Да и различные лабораторные исследования дороги. А как же эксперименты, единичная продукция, да и просто производство в малых масштабах? Тут на выручку как раз и приходят ПЛИС. Эти микросхемы (упс, точнее интегральные схемы) имеют массив вентилей, которые между собой большое количество связей на любой вкус, и вот вы собираете из этих вентелей что вам надо и связываете их как вам надо, и получаете свою собственную интегральную схему!! Класс... Тут конечно есть свои нюансы, но они больше исторические.
Конечно производство миллиона ASIC может и дешевле чем миллион ПЛИС, но производство одной ASIC намного дороже чем покупка одной ПЛИС. Да и ПЛИС можно переконфгурировать, если конечно там используется технология позволяющая это делать, современные FPGA все это позволяют.
Книга Клайва Максвилда "Проектирование на ПЛИС. Архитектура, средства и методы. Курс молодого бойца" Прекрасно рассказывает об исторических событиях связанных с ПЛИС, а также говорит о их архитектуре и внутреннем устройстве. Для понимания "Как же работают ПЛИСы?" я очень рекомендую эту книгу, хотябы первые 4 главы.
На ПЛИСах можно реализовать многое, хоть свой микропроцессор. Но всё же они имеют свои недостатки относительно заказных интегральных схем.
Ещё, хочу сказать, что FPGA идеальны для параллельной обработки данных, т.е. в нём можно реализовать параллельную обработку данных. "Типо" аппаратное шифрование для вашего устройство или для использования в качестве процессора для цифровой обработки сигналов. Тем более обычно выгодно взаимодействие вида: Микроконтроллер (МК) + ПЛИС, или ЦП (центральный процессор) + ПЛИС. Для реализации МК + ПЛИС часто ядра МК встраиваются в ПЛИС, так как вследствие аппаратной оптимизации на кристалле расположения вентилей аппаратные ядра МК намного быстрее чем созданные программно из вентилей ПЛИСа - программных ядер. Ещё в ПЛИСах часто есть ускорители вида: сумматоры, диспетчеры тактовых импульсов, умножители, встроенное ОЗУ, различные интерфейсы ввода вывода, часто используют гигабитный интерфейс.
О... а как обрабатывать данные гигабитного интерфейса, ведь для этого нужно как минимум использовать 1ГГц в качестве тактовой частоты, а в ПЛИС это тяжеловато. Тут на выручку приходит расспараллеливание - мы обрабатываем входные данные гигабитного интерфейса на 100 параллельных блока, а тут уже достаточно иметь тактовые частоты 1ГГц/100 , а это по 10Мгц, что очень даже возможно. Но последнее - это к примеру.
--
Итак, с ПЛИСами познакомились, теперь пару слов о проектировании.
Процесс проектирования выглядит примерно так: изначально используя специальные языки описания интегральных схем, создаётся собственно это описание схемы. После чего производится моделирование и отладка на ЭВМ. После чего происходит синтез для конкретного устройства файла конфигурации ПЛИС, и временной анализ, после чего либо по временному анализу выполняется оптимизация, либо сразу непосредственное конфигурирование ПЛИС.
Дело ещё в том, что современные FPGA энергозависимы. Их конфигурация хранится в энергозависимой памяти - сепециальных регистрах. При отключении питания конфигурация теряется, поэтому на плате с ПЛИСом часто имеется специальная flesh память или конигурирующее устройство, в котором хранится конфинурационный файл.
Проектирование на ПЛИС - очень сложная задача, и она наверное на половину только "программирование". Сам процесс мышения тут привязан к железу, поэтому нужно заботиться о многих вещах. Я в кратце в дальнейшем расскажу о некоторых нюансах. Немного упомяну о VHDL и о моём опыте использования этого языка описания интегральных схем. А также, если получится, раскажу об особенностях проектирования на ПЛИС.
В общем, дальнейшие мои заметки можно не читать, а сразу прочесть книгу: Сергиенко А. М. "VHDL для проектирования вычислительных устройств". Там подробно описаны особенности проектирования на ПЛИСах,рассмотрены методы оптимизации, а также приведено в качестве примера создания собственного учебного RISC микропроцессора.
Август 2012, виноград, тень, поле и жара. А тут ещё в придачу эти FPGA.
Доброго вам дня))).
--
PS. А помните, тут говорилось о создании микросхем дома? С ПЛИС,в цифровойэлектронике это бесмысслено.