Шапка

11.2 Аппаратная часть

Современные PLD дьявольски сложны и не собираются упрощаться в будущем. Старшие модели уже имеют миллиарды транзисторов ( и это число постоянно растёт ). Чтобы разобраться с ними всеми, надо пройти несколько шагов: классическая архитектура PAL ( 22V10 ), чуть более сложные PLA ( Xilinx CoolRunner-II ) и, наконец, сложные FPGA.

11.2.1 Самые простые PAL

Простые PAL - хорошая исходная точка и хороший пример PLD. Классическая схема 22V10, где 10 означает число выходных макроячеек , а 22 - число сигнальных выводов всех видов ( исходно эти микросхемы упаковывали в 24-ногий корпус ). Внутренняя схема PAL включает программируемую матрицу межсоединений, где и входы, и линии обратной связи можно выборочно подключить к набору многовходовых вентилей «И». После «И» сигналы идут на элемент «ИЛИ», а уже его выход заводится в «выходную макроячейку», где может использоваться непосредственно ( комбинационный выход ) или защёлкиваться в D-триггере ( регистровый выход ). Идею иллюстрирует рис. 11.2 ( схема упрощена до 4 входных сигналов ). Каждый логический выход с элементов «ИЛИ» является результатом операции над выходами двух 8-входовых вентилей «И» и поступает на выходную макроячейку ( обратите внимание на то, как сворачиваются многочисленные параллельные сигналы на схеме 11.2A по сравнению с полной схемой 11.2B ).

Рис. 11.2   (A) В программируемом массиве логики ( PAL ) каждый доступный логический сигнал и его дополнение может подключаться к любым вентилям «И». Выходы нескольких «И» собираются на элементах «ИЛИ» и на пути к выходной линии проходят через макроячейку. (B) Каждый элемент «И» имеет множество входов, которые загромождают схему. Здесь показаны в сокращённой и полной форме

В настоящих PAL входов и вентилей гораздо больше. Структура реальной 22V10 показана на рис. 11.3 . Выглядит впечатляюще, но по современным стандартам очень скромная схема. 12 входов и их дополнения вместе с обратными связями с 10 выходов и тоже с дополнениями - всего 44 сигнала - заводятся в матрицу межсоединений. Теперь их в любом сочетании можно завести на любой 44-входовой элемент «И». Выходы «И» объединяются по «ИЛИ» с выходами других «И», причём таких «И» может быть от 7 до 15 ( по краям меньше, в центре больше ). Так получается 1 сигнал из 10 . Он не идёт на выход сразу, а заходит в макроячейку ( рис. 11.4 ), содержащую ещё немного логики, которая или защёлкивает сигнал в триггере, или пропускает его прямо на выход. По рис. 11.4 видно, что, кроме «регистрового» или «комбинационного», выход может быть ещё прямым, инверсным и вдобавок с Z-состоянием.

Рис. 11.3   Матрица межсоединений классической PAL 22V10 с архитектурой «программируемое_И/фиксированное_ИЛИ». Выходная макроячейка может работать как D-триггер или просто передавать сигнал на выход, см. рис. 11.4 . ( Схема взята из справочных данных ispGAL22V10 фирмы Lattice, ©Lattice Semiconductor Corporation, 2004 )

22V10 подходит для многих задач. На ней можно сделать регистр, счётчик, адресный декодер или просто собрать какую-то логическую схему. Но по современным воззрениям её возможности ничтожны как из-за ограниченного числа регистров и линий ввода-вывода, так и из-за единственного общего тактового сигнала «CLK». Счётчик пульсаций на 22V10 сделать нельзя.

Рис. 11.4   Программируемая «макроячейка» классической PAL 22V10. Выход может быть прямым, инверсным, комбинационным, регистровым и вдобавок с Z-состоянием. Кроме того, он заводится обратно в матрицу межсоединений. Сигналы «CLK», «SP» ( синхронная установка ) и «AR» ( асинхронный сброс ) являются общими для всех 10 макроячеек, а управление Z-состоянием идёт с индивидуальной для каждой макроячейки 44-входовой схемы «И»

Архитектуру можно развивать эволюционным путём, создав что-то вроде «супер-PAL», в которой тактовый сигнал для макроячеек можно брать из массива логики [* т.е. делать «асинхронную логику» ] , а число самих макроячеек увеличено. Всё перечисленное дополняется элементами, раздающими сигнал с выхода логики на соседние макроячейки. Такая модификация носит название cPLD и выпускается всеми производителями программируемой логики _6 . Число макроячеек может достигать 2000, плюс в таких ИМС есть линии синхронного тактирования. Часть ячеек при этом неизбежно оказывается «внутренней» , т.е. не имеет доступа к блокам ввода-вывода, хотя может участвовать во внутренних связях.

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

11.2.2 PLA

В PLA массив логики состоит из программируемых произведений ( «И» ), которые заводятся на программируемые суммы ( «ИЛИ» ), см. рис. 11.5 , в противоположность PAL, где «ИЛИ» фиксированы. Производители не разделяют PAL и PLA явным образом и называют оба типа cPLD. Чтобы понять, с чем предстоит работать, надо смотреть в справочные данные [* прямо скажем, необычный метод ] . Современный пример - CoolRunner-II ( XC2C ) фирмы Xilinx имеет от 32 до 512 макроячеек. В последнем случае половина макроячеек являются внутренними, поэтому у ИМС всего 324 вывода.

Рис. 11.5   Программируемый логический массив ( PLA ) - более гибкая схема, чем PAL ( рис. 11.2 ). В нём можно задавать конфигурацию и произведений «И», и сумм «ИЛИ»

Программные инструменты, используемые в работе с логическими матрицами, скрывают внутреннюю архитектуру кристаллов от пользователя. Обычно разработка состоит из создания кода на языке описания аппаратуры и прогона его через компилятор. Результат должен

  1. помещаться в выбранную матрицу и
  2. удовлетворять заданным временным ограничениям.

11.2.3 FPGA

PAL, PLA и cPLD - примеры того, что можно было бы назвать «много логики, мало регистров». Скажем, 22V10 имеет десятки 44-входовых элементов «И», связанных с вентилями «ИЛИ», но только 10 триггеров. Современный подход к вопросу выражен в FPGA. Это массив триггеров, на входе которых стоит небольшой блок логики ( обычно это четырёхвходовая таблица перекодировки - LUT , переплетённый массой линий связи. Речь идёт о десятках тысяч и более такого рода ячеек. Называют их «конфигурируемые логические блоки» ( CLB ) или «логические элементы» ( LE ). В комплекте идут блоки памяти, арифметические ускорители и умножители и даже встроенные процессоры и интерфейсные модули ( PCIe или Ethernet ). Такую «мелкодисперсную» _7 архитектуру можно назвать «мало логики, много регистров». Типичная ячейка показана на рис. 11.6 . В данном случае это Cyclone-II - FPGA фирмы Altera.

Рис. 11.6   Логический элемент ( LE ) FPGA, один из десятков тысяч таких же элементов в типичной ИМС из серии «Cyclone II» фирмы Altera. Тактируемый триггер и таблица перекодировки ( LUT ) обрамляются дополнительными элементами и расширяются за счёт управляющих сигналов из блока логики ( LAB ) более высокого уровня. ( Изображение взято в справочных данных семейства Cyclone II фирмы Altera, ©Altera Corporation, 2007 )

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

Обычная цена за небольшие cPLD и FPGA составляет один-два доллара, десять долларов за FPGA средней ёмкости и от ста долларов и до десятков тысяч (!) за старшие модели. Обычные FPGA не относятся к малопотребляющим схемам: типичных ток в режиме простоя исчисляется миллиамперами. Он дополняется динамическим током при высокой рабочей частоте. Но есть и микропотребляющие модели, предназначенные в первую очередь для мобильных приложений. К таким ИМС относится серия IGLOO фирмы Actel с током потребления в режиме ожидания на уровне 5..50 μW .

Крупнейшими игроками на рынке FPGA являются Altera и Xilinx ( родоначальник ). Небольшие модели выпускают Actel, Atmel, Cypress и Lattice.

11.2.4 Конфигурационная память

Программируемой логике надо где-то хранить конфигурацию внутренних связей. PLD всех видов держат эти данные в постоянной памяти на кристалле. Самые первые PAL фирмы MMI вообще имели однократные пережигаемые перемычки. Первые серии фирмы Altera ( например, MAX7000 ) имели кварцевые окошки и EPROM с ультрафиолетовым стиранием, но промышленность быстро перешла на память с электрическим стиранием ( EEPROM или Flash ). Сейчас так делаются все PLD. Стирание занимает секунды, а запись зависит от объёма, но обычно не больше минуты. В справочных данных есть параметр «минимальное время хранения» данных во внутренней конфигурационной памяти ( обычно порядка 20 лет ), стойкость составляет от 1000 до 10000 циклов стирания-записи.

Первые PLD требовали программатора - специального устройства, которым торговали BP Microsystems, Needhams Electronics и DatalO. Микросхемы требовалось сначала запрограммировать, а затем поставить на место в схему. Всё было хорошо, пока компоненты паковались в корпуса DIP с выводами под монтаж в отверстия. Для таких корпусов существуют панельки, которые можно было запаять на плату, но для SMT корпусов такая методика не работала. [* Поверхностные компоненты монтируют в специальной печи, где все корпуса сильно нагреваются, а вся программируемая память при этом норовит забыть всё, что в неё писали. Ну, или как минимум нагрев сокращает срок жизни данных в памяти ] . Решением стало программирование «в схеме» ( ISP ), которое в итоге добавили даже в старые серии PAL ( ispGAL22V10 фирмы Lattice - isp версия стандартной 22V10 ). Все современные PLD программируются внутрисхемно через порт граничного сканирования JTAG ( IEEE 1149 ) _9 . К выводам программирования микросхемы подключается адаптер, другим концом включённый в USB порт управляющей машины. Цена адаптера - около $100, см. обсуждение JTAG в §14.7.4 .

С FPGA ситуация иная. Традиционные серии не имеют внутри постоянной памяти, загружают конфигурацию из внешней микросхемы и хранят её, пока есть питание. Такая ситуация сохраняется по сей день, но теперь появились семейства FPGA с внутрикристальной конфигурационной памятью. Такие серии есть у Actel, Lattice и Xilinx. Как и cPLD, они программируются в схеме через адаптеры сравнимой стоимости.

11.2.5 Прочие программируемые логические устройства

Полезно помнить, что обычные микросхемы памяти - тоже относятся к программируемой логике: они выдают n-разрядное значение ( данные ) в ответ на m-разрядное входное воздействие ( адрес ). Так она используется в машине состояний общего вида ( рис. 10.64 ), а в совсем простом варианте 16×1 в таблице перекодировки ( LUT ) внутри логического элемента FPGA.

Существуют новые разработки программируемых микросхем смешанных сигналов . Примером является PSoC фирмы Cypress. Это программируемая микросхема, имеющая внутри усилители, фильтры и прочие аналоговые компоненты на одном кристалле с микропроцессором. [* Сейчас появились и чисто аналоговые программируемые микросхемы: см. Silego . Производитель утверждает, что параметры микросхем позволяют строить на них системы 12-разрядной точности ] .

11.2.6 Программное обеспечение

Прежде чем получится поработать с программируемой логикой, придётся поучиться работать с системой проектирования. Работа начинается с создания входного файла. Это может быть текст на языке описания аппаратуры или графическое изображение схемы. Затем запускается моделирование , которое проверит, что результат соответствует ожиданиям. Затем наступает черёд синтеза , который превращает схему в список связей - «нетлист» . Наконец включается размещение и разводка , в ходе которого нетлист размещается в целевом кристалле. Наконец размещённый и разведённый проект загружается в физическую микросхему: или в неё саму, или во внешнюю конфигурационную память, из которой FPGA грузится при включении питания. Возможна горячая загрузка конфигурации из вспомогательного процессора.

Производители программируемой логики распространяют программное обеспечение для ИМС средней ёмкости бесплатно 10 , но захотят от нескольких сотен до тысяч долларов за поддержку старших моделей. Часть суммы уходит на программные блоки с уже отлаженными периферийными устройствами, относящимися к классу «интеллектуальной собственности» ( IP ). Учебным и некоммерческим проектам даётся большая скидка.

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

Авторы не ставят задачи научить использованию упомянутых программных средств. Вместо этого предполагается разобрать пример законченной разработки, выполненной пятью разными способами ( §11.3 ), в числе которых есть и вариант с cPLD ( §11.3.3 ).

6 Например, серия MAX7000 ( Altera ), Mach 4000 ( Lattice ) или CoolRunner-II ( Xilinx ). Последняя использует более новую архитектуру PLA, см. §11.2.2 . <-

7 По случайному стечению обстоятельств эта изящная конструкция не попала в некоторых cPLD, которые и не PLD вовсе, а замаскированные FPGA. К таким сериям относятся Max-II ( фирма Altera cPLD, которые используют 4-входовые таблицы LUT ), Delta39K ( cPLDs фирмы Cypress ) или MachXO ( Lattice ). <-

8 Их иногда называют ASIC - интегральные схемы специального применения. <-

9 Организация IEEE опубликовала промышленный стандарт формата данных для внутрисхемной конфигурации через порт JTAG, см. IEEE 1532. <-

10 Пример: Xilinx “WebPACK”, загружаемый из интернета ( запаситесь терпением - придётся скачать и установить более 5GB данных ). <-

Previous part:

Next part: