Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Схемот_8_ПЛИС.doc
Скачиваний:
19
Добавлен:
13.09.2019
Размер:
374.78 Кб
Скачать

§ 8.2. Программируемые пользователем вентильные матрицы (fpga)

Программируемые пользователем вентильные матрицы (ППВМ или FPGA) топологически сходны с канальными БМК. В их внутренней области размешается множество регулярно расположенных идентичных конфигурируемых логических блоков (КЛБ), между которыми проходят трассировочные каналы, а на периферии кристалла расположены блоки ввода/вывод: (БВВ или ЮВ, Input/Output Blocks). Таким образом, архитектуру ППВМ можно представить рисунком, подобным рис. 7.21, а, О, если вместо наименования "базовая ячейка" иметь в виду наименование КЛБ, а вместо "периферийной ячейки" - БВВ.

К наиболее известным FPGA относятся БИС/СБИС семейств ХС2000, ХСЗООО, ХС4000, ХСЗООО и Spartan фирмы Xilinx, которая в 1985 г. впервые выпустила FPGA с триггерной памятью, конфигурации. Среди FPGA с перемычками типа antifuse следует отметить семейства АСТ1, 1200XL, ACTS, 3200DX фирмы Actel, используемые, в частности, в космической аппаратуре США.

Свойства и возможности FPGA зависят в первую очередь от характера их КЛБ и системы меж-соединений.

Логические блоки FPGA

В качестве КЛБ (далее для краткости просто ЛБ — логические блоки) используются:

□ транзисторные пары, простые логические вентили И-НЕ, ИЛИ-НЕ и т. п. Такие ЛБ называют SLC — Simple Logic Cells;

□ логические модули на основе мультиплексоров;

□ логические модули на основе программируемых ПЗУ, такие ЛБ называют LUTs - Look-Up Tables.

Важной характеристикой Л Б является их "зернистости (Granularity). Другой важной характеристикой считается "функциональность" (Functionality). Первое свойство связано с тем, насколько "мелкими" будут те части, из которых можно "собирать" нужные схемы, второе — с тем, насколько велики логические возможности ЛБ.

Рис. 8.5. Схема мелкозернистых логических блоков (а)

Примером наиболее мелкозернистого может служить ЛБ фирмы Crosspoint Solutions (рис. 8.5, а). Блок содержит цепочки транзисторов с р- и n-каналами (на рисунке использованы американские обозначения транзисторов, более простые, чем отечественные). ЛБ — пара из транзисторов разного типа проводимости (выделенный прямоугольник). Между цепочками транзисторов имеются трассировочные каналы, в которых могут быть реализованы необходимые межсоединения элементов.

Рис. 8.5. (окончание) Реализация межсоединений для воспроизведения функции X1X2VX3X4 (б) и пояснения к этой реализации (в, г)

На рис. 8.5, б показан пример межсоединений, дающих реализацию функции? = xix2Vx3X4. Пары транзисторов в прямоугольниках из штриховых линий имеют такие постоянные напряжения на затворах, что оказываются запертыми. Эти пары разделяют цепочки на части, изолированные друг от друга. В трех секциях собраны схемы типа рис. 8.5, в, т.е. ячейки И-НЕ обычного для схемотехники КМОП типа. Эти ячейки соединены между собою как показано на рис. 8.5, г, что и приводит к нужному результату.

Мелкозернистость ЛБ ведет к большей гибкости их использования, возможностям реализовать воспроизводимые функции разными способами, получая разные варианты в координатах "площадь кристалла — быстродействие". В та же время мелкозернистость ЛБ усложняет систему межсоединений FPGA в связи с большим числом программируемых точек связи.

Примерами более крупнозернистых ЛБ могут служить используемые в семействе микросхем ACT фирмы Actel. На рисунке (см. рис. 2.15, а) был показан ЛБ семейства АСТ1, состоящий из трех мультиплексоров "2—1" и элемента ИЛИ, для которого воспроизводимую функцию можно представить следующим образом-

F=A(S0VS1)eSAAoVSAA1)V(SoVS1)(SBBoVSBB1).

Подключая ко входам Л Б переменные и константы, можно получить все комбинационные функции двух переменных, все функции трех переменных с, по меньшей мере, одним положительно юнатным входом, многие функции четырех переменных и некоторые функции большего числа переменных, вплоть до восьми. В целом получаются 702 различных варианта (макроса). Например, подключая ко входам переменные и константы соответственно (рис. 8.6), где S0 = с; Si = SA = В0 = О, Ао = Ai = 1, В! = a, SB = b, получим функцию F = ab V Ас.

Рис. 8.6. Пример реализации функции F мультиплексорного логического блока

ab V Ас с помощью

Крупнозернистый блок семейства ХС4000Е (рис. 5.7) в качестве основы имеет три табличных функциональных логических преобразователя G, F и Н, а также ряд программируемых мультиплексоров (отмечены номерами Л... 12 или надписями у выходов) и два триггера.

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

Рис.8.8. Схема логического блока FPGA XC4000E

Табличные преобразователи представляют собой ППЗУ, для которых аргументы логической функции служат адресом (см. § 4.5). Воспроизводятся любые функции числа аргументов n при организации памяти 2n х 1. Число воспроизводимых функций, т. е. число возможных вариантов программирования ЗУ, составляет 2 n . Логические преобразователи G и F (блоки памяти с организацией 16 х 1) воспроизводят функции 4-х аргументов. Их выходные сигналы могут непосредственно передаваться на выходы Y и X при соответствующем программировании мультиплексоров 4 и 6, либо использоваться иным образом. Через мультиплексоры 1 и 2 выходы преобразователей G и F могут быть поданы на входы преобразователя Н, если мультиплексоры запрограммированы на передачу сигналов от нижних входов. Кроме того, преобразователь Н может использоваться как третий независимый генератор функций со входами НО, HI и Н2, если мультиплексоры 1 и 2 запрограммированы иначе. Входной сигнал DIN может

добавляться как дополнительный аргумент и при подаче на преобразователь Н выходов преобразователей G и F.

При подаче выходных сигналов преобразователей G и F на вход преобразователя Н он воспроизводит функции большего, чем 4 числа аргументов (от 5 до 9, причем для 5 аргументов воспроизводятся любые функции, а для 6...9 лишь некоторые).

В зависимости от программирования мультиплексоров 3 и 5, триггеры принимают данные от логических преобразователей или внешнего входа DIN. Сигналы К тактирования триггеров поступают от общего входа через мультиплексоры 7 и 8, программирование которых позволяет индивидуально изменять полярность фронта, тактирующего триггеры. Сигнал разрешения тактирования ЕС также поступает от общего входа, но, благодаря мультиплексорам 9 и 10, можно либо использовать сигнал разрешения, либо постоянно разрешить тактирование. Триггеры имеют асинхронные входы установки и сброса (SD — Set Direct и RD — Reset Direct), один из которых через программируемый селектор S/R может быть подключен к выходу коммутатора SR, который, в свою очередь, может программироваться для подключения к любому из внешних выводов ЛБ С1...С4.Это же возможно и .для других выходов коммутаторов .верхней строки рис. 8.7.

В специальных режимах блоки G и F функционируют как обычные ОЗУ; способные хранить 32 бита данных. Возможна реализация двухпортовых ОЗУ, буферов FIFO и т. д. Память распределена по всему кристаллу.

Блоки ввода/вывода FPGA

Характерные черты блока ввода/вывода рассмотрим на примере семейств ХС4000, ХС4000Е (рис. 8.8). Блок имеет два канала — для ввода сигналов и для вывода. В каждом канале сигналы могут передаваться прямым путем или фиксироваться в триггерах в зависимости от программирования мультиплексоров 7 и 4. При переводе буфера 1 в третье состояние выходной контакт не должен оставаться разомкнутым, т. к. на "плавающем" высокоомном входе элементов типа КМОП может накапливаться любой заряд, что может имитировать ввод в схему непредусмотренных сигналов.

Рис. 8.8. Схема блока ввода/вывода FPGA семейства ХС4000Е п Благодаря резисторам R потенциал разомкнутой контактной площадки КП либо подтягивается" к высокому уровню, либо привязывается к нулевой точке Выбор между этими вариантами программируется элементами памяти конфигурации имеющимися в схеме U/D (Up/Down). Выходной буфер 1 имеет регулировке крутизны фронта (линия SLR, Slew Rate). Скорости нарастания выходного сигнала можно придать одно из двух значений (быстрая и медленная), для чего имеется программируемый элемент памяти в схеме SLR. Пологие фронты снижают уровень помех, возникающих при работе схемы, и желательны везде, где это приемлемо по соображениям быстродействия. При включении питания во всех буферах устанавливается режим пологих фронтов.

Если внешний вывод работает в режиме входа (буфер 1 в третьем состоянии оуфер 2 активен), то внешний сигнал может подаваться в микросхему либо напрямую, либо через триггер, либо в обоих вариантах одновременно. В последнем случае блок ввода/вывода может демультиплексировать внешние сигналы (например, для шин адресов/данных сохранять адрес в триггере и передавать данные по прямому входу). Синхросигналы триггеров различны для входного (CLKI) и выходного (CLKO) триггера. Их полярности, как и полярность выходного сигнала О (Output), могут программироваться соответствующими мультиплексорами.

Сигнал на входе триггера 2 можно специально задерживать на несколько наносекунд программированием мультиплексора 8. Это сделано для такого подбора временного положения сигнала относительно тактирующего импульса при котором обеспечивается совместимость с шиной PCI.

Системы межсоединений FPGA

Системы межсоединений (системы коммутации), как и логические блоки, реализуются в широком диапазоне архитектурных и технологических решений. Линии связей в FPGA обычно сегментированы, т. е. составлены из проводящих сегментов (участков, не содержащих ключей) различной длины, соединяемых друг с другом программируемым элементом связи (ключом). Малое количество сегментов ведет к недостаточно эффективному использованию логических блоков, слишком большое — к появлению большого числа программируемых ключей в линиях связи, что увеличивает затраты площади кристалла и вносит дополнительные задержки сигналов.

Короткие сегменты затрудняют реализацию длинных связей, длинные — коротких. Поэтому целесообразна иерархическая система связей с несколькими типами межсоединений для передач на разные расстояния. Целью построения системы связей является обеспечение максимальной коммутируемости блоков при минимальном количестве ключей и задержек сигналов, а также предсказуемость последних, облегчающая проектирование.

Наличие ключей и схем для их программирования усложняют межсоединения FPGA сравнительно с межсоединениями БМК.

Критерий трассировочной способности системы межсоединений отображает возможность создания в FPGA множества схем типового применения (только с помощью программируемых ключей, т. к. сегментная часть соединений стандартная). Быстродействие FPGA существенно зависит от задержек сигналов в связях. Ключ в линии связи имеет схему замещения в виде RC-звена. В последовательной цепочке RC-звеньев задержка зависит от числа звеньев квадратично, поэтому цепи с большим числом ключей в них особенно нежелательны. Может оказаться целесообразным разбиение длинной линии на несколько коротких с помощью промежуточных буферных каскадов.

В разработке FPGA с однократным программированием перемычками antifuse ведущую роль играет фирма Actel. Логические блоки в FPGA этой фирмы располагаются в виде горизонтальных рядов, между которыми имеются трассировочные каналы. В каналах горизонтально в четыре строки расположены сегменты различной длины и различного взаимного положения по горизонтали. Через ЛБ и трассировочные каналы проходят вертикальные сегменты. Каждый вход ЛБ соединен со своим вертикальным сегментом, пересекающим ближайший канал. В зависимости от положения входа ЛБ, ближайший канал может находиться выше или ниже данного ряда ЛБ. Выход ЛБ имеет свой вертикальный сегмент, пересекающий несколько каналов (рис. 8.9).

рованные сепаенты

Рис. 8.9. Система коммутации FPGA фирмы Actel (для упрощения рисунка пересечения горизонтальных и вертикальных линий без их соединения показаны просто светлыми кружками, хотя точнее было бы показать их в виде -ф-)

В каждом пересечении сегментов предусмотрена программируемая перемычка, позволяющая соединять эти сегменты. Такая система коммутации обеспечивает разнообразие вариантов соединения ЛБ между собой. Выход Какого-либо соединения с теми горизонтальными сегментами, которые связаны с входами других ЛБ, получающих сигнал от данного выхода.

На рис. 8.9 показаны ЛБ с 4 входами, имеющими выводы в ближайший трассировочный канал. Кружками обозначены программируемые перемычки, позволяющие создавать связи между линиями пересечения. Выходы ЛБ соединены с вертикальными сегментами, пересекающими два канала выше данного ряда и два канала ниже его. Имеются ключи, связывающие при необходимости концы горизонтальных сегментов друг с другом для удлинения линий связи.

В каналах имеются также непрерывные по всей длине сегменты, один из которых заземлен, а другой соединен с источником питания, что позволяет подавать на любой из входов ЛБ сигналы логического нуля или логической единицы. В вертикальных направлениях идут также неспециализированные сегменты, пересекающие несколько рядов ЛБ и трассировочных каналов, Каждый такой вертикальный сегмент может соединяться с горизонтальными, которые он пересекает. К таким сегментам есть связи от выходов соседних ЛБ. Наличие неспециализированных вертикальных сегментов увеличивает трассировочную способность системы коммутации.

На рис. 8.9 для примера показаны зачерненными кружками те перемычки, которые должны быть запрограммированы для подачи сигнала с выхода ЛБ1 на входы блоков ЛБ2 и ЛБЗ.

В семействах FPGA фирмы Actel экономно реализуется адресация программируемых перемычек. Чтобы запрограммировать перемычку, т. е. замкнуть ее, к ней следует приложить повышенное напряжение Unp. Это осуществляется следующим образом. Вначале выполняется предзаряд всех сегментов напряжением Unp/2. Для этого в схеме имеются специальные транзисторные ключи, включенные параллельно перемычкам и используемые только при программировании и тестировании FPGA. В рабочих режимах ключи заперты и практически не влияют на работу схемы. При замыкании всех этих ключей сегменты соединяются в единые линии, которым и задают необходимые потенциалы. Для замыкания перемычки воздействуют на линии строки и столбца, в пересечении которых находится перемычка. Одна из этих линий заземляется, а другая подсоединяется к напряжению Unp. Как видно, при этом: только перемычка на пересечении адресующих линий попадает под напряжение Unp. Все остальные попадают под напряжение Unp/2, не пробивающее перемычку. Транзисторы логических блоков и блоков ввода/вывода, находящиеся в контакте с сегментами и при программировании перемычек попадающие под повышенное напряжение, специально проектируются с необходимой электрической прочностью, Тестирование FPGA производится многократно — до, во время и после программирования.

Система межсоединений FPGA фирмы ХШпх — иерархическая, включающая в себя связи общего назначения (General-Purpose Interconnects), длинные линии (Long Lines) прямые связи (Direct Interconnects) линии тактирования (Clock Lines).

Не все перечисленные разновидности связей встречаются одновременно в одной FPGA, а прямые связи, например, не у всех.

Связи общего назначения FPGA XC4000E показаны рис. 8.10, а. в этой си теме переключательные блоки (переключательные матрицы) расположен на пересечении горизонтальных и вертикальных трассировочных канале каждый из которых имеет восемь линий.

Рис. 8.10. Схема связей общего назначения с линиями одинарной длины (а) и схема переключательного блока (б) FPGA семейства ХС4000Е

Линии могут иметь одинарную длину (соединяя соседние переключательные блоки ПБ) или двойную (соединяя ПБ через один для сокращения числа ПБ в длинных путях). На рис. 8ЛО, а показана схема с одинарными линиями. Связи общего назначения позволяют подводить сигналы к разным сторонам логического блока ПБ. Крестиками отмечены программируемые точки связи. Структура одного ПБ показана на рис. 8.10, б. Она позволяет передавать сигналы влево-вправо или вверх-вниз между смежными одинарными линиями, а также изменять направление передачи сигнала. Схема, соответствующая зачерненному квадрату (рис. 8.10, б), показана отдельно справа. Видно, что для обеспечения перечисленных передач в эту схему должны входить 6 ключевых транзисторов. Прохождение сигналов через ПБ вносит в процесс распространения сигнала задержку, зависящую от конкретного пути, что создает проблему возможных гонок сигналов и сбоев в работе схемы.

Рис. 8.11. Схема связей общего назначения с пиниями двойной длины FPGA ХС4000Е (а)

Рис. 8.11. (окончание) Общие ресурсы связей этой микросхемы (б) Для ускорения и упрощения дальних передач приняты специальные меры Наряду со связями общего назначения типа рис. 8.10 имеются связи с линиями двойной длины, в которых переключательные блоки соединены через один что уменьшает их число при дальних передачах. Фрагмент таких связей представлен на рис. 8.11а

Для передач на большие расстояния с очень малой задержкой или для передач на разные приемники с малой расфазировкой сигналов служат длинные линии (здесь термин «длинные линии» имеет прямой смысл, и его не следует пугать с аналогичным термином, употребляемым при согласовании волновых сопротивлении). Длинные линии пересекают кристалл вдоль или поперек по всей его длине или ширине (на рисунках не показаны)

В микросхемах семейства ХС4000Е различают несколько типов длинных линий-горизонтальные и вертикальные линии (по несколько на каждую строку и столбец логических блоков), линии для тактирования блоков ввода/вывода (по две линии вдоль блоков ввода/вывода), так называемые глобальные линии с выходами на определенные БВВ, и линии для распределенных дешифраторов. При этом на каждый ЛБ приходится по 8 горизонтальных и вертикальных связей с линиями одинарной длины, по 4 с линиями двойной длины, по 6 горизонтальных и вертикальных длинных линий, 4 вертикальных глобальных длинных линии и 2 линии (вертикальных) для образования цепей переноса при построении сумматоров, счетчиков и т. д. Всего на каждый логический блок приходится 24 вертикальных линии и 18 горизонтальных (рис. 8.11, б)

Основные параметры FPGA фирмы Хilinx приведены ниже (см. § 8.5, табл. 8.1).

Области применения FPGA и других СБИС ПЛ

Вначале развитие FPGA связывалось с переносом концепции БМК в область малотиражной аппаратуры, но в дальнейшем в связи с появлением репрограммируемости стало ясным, что это нечто большее. Это, в частности, видно из приведенных ниже примеров.

Рассмотренные области применения не являются исключительной прерогативой FPGA, иногда возможно применение других СБИС ПЛ для решения перечисленных задач.

Построение реконфигурируемых систем

В различной аппаратуре встречаются ситуации, в которых те или иные блоки работают поочередно. Например, средства кодирования и декодирования при записи и чтении данных, использующие помехоустойчивые коды. Обе функции никогда не выполняются одновременно. Поэтому не обязательно иметь два устройства (кодер и декодер), а можно иметь одну FPGA с двумя разными конфигурациями, хранимыми в ПЗУ. То есть одна и та же аппаратная часть может выполнять различные преобразования после соответствующей перестройки.

Задачи логической эмуляции

При отладке устройств традиционно пользовались изготовлением прототипа и программными моделями. Изготовление прототипа — сложная и дорогостоящая задача, но с его помощью можно вести тестирование с реальными сигналами и на высоких скоростях, наблюдая фактические возможности устройства. Программное моделирование лишено указанных достоинств, но проще и дешевле. Модели легко изменяются для удаления ошибок в проекте и в них просто обеспечивается хорошая наблюдаемость процессов в объекте исследования.

Применение FPGA в задачах логической эмуляции дает сочетание достоинств обоих классических подходов. Система из FPGA легко создается и, изменяется, но, с другой стороны, может работать с реальными сигналами и частотами их изменения. Однако по затратам труда и времени создание системы на FPGA сложнее, чем создание программной модели. Поэтому программные модели не зачеркиваются появлением репрограммируемых FPGA. Следует также помнить, что полные свойства окончательно изготовленного устройства логическая эмуляция на FPGA отобразить не может, т. к. временные характеристики зависят от конкретной трассировки схемы, чего еще нет на этапе логической эмуляции. Таким образом, логическая эмуляция не отменяет прежние методы разработки и тестирования схем, а лишь хорошо дополняет их.

Кстати говоря, применение репрограммируемых FPGA может принести большую пользу при обучении студентов. Студенческие проекты требуют большой доработки исходных вариантов. На традиционных средствах (макетах) эту работу выполнить сложно из-за трудоемкости и дороговизны. Применение репрограммируемых FPGA может существенно упростить ситуацию.

Построение динамически реконфигурируемых систем

Динамическая реконфигурация (Run-Time Reconfiguration) применима в системах с выполнением действий по шагам, последовательным во времени, когда в данное время требуется только одна определенная настройка FPGA. Вместо нескольких аппаратных блоков можно использовать один перестраиваемый, т. е.

сэкономить аппаратные ресурсы за счет многократного использования одних и тех же средств в разных ролях. FPGA с динамическим реконфигурированием обозначаются DRFPGA (Direct Reconfigurable FPGA).

Сама DRFPGA может иметь практически любое число настроек, рост их количества ограничивается лишь емкостью памяти для их хранения. Устройства с DRFPGA уже используются практически и дают ожидаемый положительный эффект. В таких устройствах требуется быстрая смена настроек. Обычная настройка с введением в FPGA последовательного потока битов или байт-последовательного потока занимает достаточно большое время. В DRFPGA задача решается иначе; В самой системе уже имеется набор загруженных настроек, быстро сменяющих друг друга соответственно требованиям реализуемого алгоритма. Проблемы построения систем на FPGA с динамической реконфигурацией активно исследуются и отражены в литературе (см., например, [54]).

В современной литературе ставится также вопрос о построении FPGA процессоров с иными в сравнении с микропроцессорами свойствами. Алгоритмы работы процессора загружаются в FPGA принципиально подобно загрузке в память микропроцессорной системы выполняемой программы. Но при работе системы, в противоположность микропроцессорной системе, возникает сильно выраженный параллелизм на уровне мелкозернистых логических блоков с простейшими командами (типа воспроизведения функции от данного числа аргументов). Такие FPGA-процессоры могут давать хорошие результаты при параллельной обработке данных, где большое число переменных преобразуется сходным образом.

Обогащение цифровой элементной базы

Одним из применений FPGA можно считать обогащение элементной базы цифровых устройств новыми микросхемами типа FPIC (FPID) — Field Programmable Interconnect Circuits (Devices).

Микросхемы FPIC содержат программируемые соединения и блоки ввода/вывода, но не имеют логических блоков. Они предназначены для произвольного соединения своих внешних выводов согласно программированию. Для окончательно изготовляемых продуктов это не является необходимым, но при отработке прототипов и в системах с динамически реконфигурируемой структурой такие микросхемы бесспорно полезны. Соединяя СБИС ПЛ через FP1C, можно легко изменять их межсоединения, чего не обеспечивают технологии с жесткой трассировкой (печатные платы и др.). Область применения FPIC более узка, чем у таких СБИС ПЛ как FPGA и CPLD, соответственно тиражность их производства ниже и стоимость выше.