СБИС ПЛ КОМБИНИРОВАННОЙ АРХИТЕКТУРЫ FLEX10K
По архитектуре микросхемы семейства FLEX занимают промежуточное положение между классическими вариантами CPLD и FPGA. Сохранив ряд качеств CPLD, разработанных ранее фирмой «Altera», микросхемы семейства FLEX в то же время имеют логические элементы
табличного типа (LUT), расположенные в виде матрицы, и трассировочные каналы, проходящие горизонтально и вертикально между столбцами и строками матрицы логических элементов, что характерно для FPGA. В то же время трассы в каналах не сегментированы, а непрерывны, что типично для CPLD и дает хорошо предсказуемые и малые задержки сигналов.
На фрагменте микросхемы семейства FLEX1OK (рис. 7.24) показаны логические блоки LAB (Logic Array Blocks), содержащие по восемь логических элементов LE (Logic Elements) табличного типа, и локальная программируемая матрица межсоединений (локальная ПМС), обеспечивающая коммутацию сигналов в блоке. Коммутация сигналов на втором уровне обеспечивается глобальной программируемой матрицей соединений ГМПС, организованной в виде совокупности строк и столбцов, к концам которых подсоединены элементы ввода/вывода ЭВВ. Линии связи в ГПМС непрерывны и проходят по всей длине соответствующего направления (горизонтально или вертикально). Это отличает их от сегментированных линий связи в типичных FPGA и придает свойства CPLD в отношении предсказуемости задержек при передаче сигналов.
Важным новшеством в архитектуре семейства FLEX10K стало наличие блоков EABs (Embedded Array Blocks), представляющих собою реконфигурируемые модули памяти
(РМП). Эти блоки создают ресурсы встроенной памяти сверх тех распределенных ресурсов, которые имеют логические элементы табличного типа. Память может быть организована в вариантах 2048 ´1,1024 ´ 2, 512 ´ 4 и 256 ´ 8 и ориентирована также на реализацию буферов FIFO. В микросхемах FLEX10KE память блоков EABs ориентирована и на организацию двухпортовых ОЗУ, в которых может одновременно осуществляться запись по одному адресу и чтение по другому. Несколько блоков ЕАВ могут быть объединены для создания более емких блоков памяти.
Блоки встроенной памяти обладают характеристиками быстродействующих ОЗУ. При необходимости они могут применяться и для воспроизведения табличным способом сложных логических функций (арифметических операций, функций цифровой обработки сигналов и т. п.).
В микросхемах семейства FLEX10K средства логического преобразования данных имеют два уровня. Наименьшей структурной единицей является логический элемент (ЛЭ, LE).Компактная группа из восьми логических элементов образует логический блок (ЛБ, LAB - Logic Array Block). Логический блок выступает как самостоятельная структурная единица следующего иерархического уровня. Строкам и столбцам логических блоков соответствуют строки и столбцы глобальной матрицы соединений.
Логический элемент микросхем семейства FLEX10K (рис. 7.25) имеет в своем составе четырехвходовый табличный функциональный преобразователь типа ШТ (т. е. программируемую память с организацией 16´1), схемы переноса и каскадирования, программируемый триггер и несколько программируемых мультиплексоров. Функциональный преобразователь ФП-4 может быть сконфигурирован для воспроизведения двух функций трех переменных, для чего память с организацией 16´1 разбивается на два блока с организацией 8´1. Такое разбиение позволяет, например, воспроизводить функции суммы и переноса для одноразрядного сумматора. Цепи переноса у микросхем семейства FLEX10K имеют высокое быстродействие (задержка 1 не на каскад), что улучшает быстродействие схем с последовательными переносами, отличающихся простотой реализации.
Синхронный триггер может функционировать не только как триггер типа D (режим, соответствующий непосредственному использованию имеющейся схемы), но и как триггер типа Т или даже типов JK и RS, работа которых эмулируется с привлечением логических ресурсов, не входящих в схему триггера. Входные сигналы асинхронных сброса и установки вырабатываются схемой управления, в которую поступают два локальных управляющих сигнала ЛУС1, ЛУС2, сигнал общего сброса микросхемы и входная переменная D3. В схеме управления установкой/сбросом (СУ уст/сбр) имеются программируемые мультиплексоры, благодаря которым можно задать один из шести режимов воздействия на триггер. Все режимы асинхронные - это сброс, установка или загрузки в разных вариантах.
Триггер может быть использован не только совместно с комбинационной частью логического элемента, но и независимо от нее, как отдельный элемент, если на его вход через мультиплексор 1 поступает сигнал со входа D4.
Выходные сигналы ЛЭ через мультиплексоры 3, 4 могут подаваться в глобальную и локальную программируемые матрицы соединений в комбинационном или регистровом варианте.
Тактирование триггера возможно от любого из двух локальных управляющих сигналов ЛУСЗ и ЛУС4.
Функции, число аргументов у которых превышает четыре, получаются как композиции из функций четырех аргументов одним из двух способов. Первый способ (рис. 7.26, а) предполагает применение схем каскадирования, которые можно настраивать на любую функцию двух переменных, кроме функций суммы по модулю 2 и функции равнозначности. Схемами каскадирования отдельные функции четырех переменных объединяются в функцию большего числа аргументов.
Второй способ использует схему с обратными связями (рис. 7.26, б). Вначале вырабатываются функции, зависящие не более чем от четырех аргументов, а затем они играют роль аргументов для логического элемента, вырабатывающего окончательный вариант. Результатом является получение «функции от функций».
Возможности обоих вариантов определяются возможностями декомпозиции воспроизводимых функций.
Встроенные конфигурируемые блоки памяти ЕАВ с общей емкостью от 6 до 20 Кбит у разных представителей семейства расположены в центре каждой строки матрицы логических блоков. В каждом блоке имеется 2К программируемых битов памяти. Блок может быть как запоминающим устройством, так и функциональным преобразователем табличного типа для получения сложных функций.
Не рассматривая подробно глобальную систему коммутации и работу элементов ввода/вывода, заметим, что в них много сходства с работой схем аналогичного назначения, рассмотренных ранее.
7.7. СБИС ПРОГРАММИРУЕМОЙ ЛОГИКИ ТИПА «СИСТЕМА НА КРИСТАЛЛЕ»
ОБЩИЕ СВЕДЕНИЯ
Кристаллы современных СБИС ПЛ максимальной сложности содержат миллионы эквивалентных вентилей, а их рабочие частоты достигли сотен мегагерц. На таких кристаллах можно разместить целую систему со всеми ее характерными частями - процессором, памятью, интерфейсными схемами, обеспечив при этом высокую ее производительность. Подобные кристаллы относят к классу «система на кристалле» (в английской терминологии SOC, System On Chip или SOPC, System On Programmable Chip).
Стратегическая значимость решения задачи создания законченных систем на одном кристалле очевидна и вытекает из известных закономерностей зависимости качества цифровой аппаратуры от уровня интеграции ее элементной базы.
Реализация заказных систем на одном кристалле практически недоступна для подавляющего большинства пользователей по экономическим соображениям. СБИС программируемой логики позволяют ставить задачу создания систем на одном кристалле как задачу сегодняшнего дня. Соответствующие средства уже появились в составе продукции ряда фирм.
СБИС типа «система на кристалле» можно разделить на две разновидности. Первая разновидность реализуется схемами просто настолько «большими», что на них можно сконфигурировать целую систему, причем ее части (процессор, память, интерфейсные схемы и другие блоки) реализуются как мегафункции библиотеки кристалла или проектируются разработчиком и реализуются, в сущности, идентичными аппаратными средствами кристалла благодаря их программируемости. Такие СБИС ПЛ в английской терминологии иногда обозначают термином «generic».
Вторая разновидность - СБИС ПЛ блочного типа, в которых на кристалле выделяют специализированные области, предназначенные для выполнения определенных функций - аппаратные ядра (hardcores). Поскольку системы самого разного назначения в качестве составных частей имеют типовые модули, вопрос о целесообразности применения блочных структур СБИС ПЛ возник вполне закономерно.
Введение специализированных аппаратных ядер, имея ряд позитивных следствий, может в то же время сузить круг потребителей СБИС ПЛ, поскольку в сравнении со схемами типа «generic» схемы с аппаратными ядрами имеют меньшую универсальность.
Реализация сложных функций специализированными аппаратными ядрами по площади кристалла и достижимому быстродействию значительно эффективнее в сравнении с реализациями на конфигурируемых логических блоках общего назначения. Например, для умножителя 8´8, построенного по модифицированному алгоритму Бута методом заказного проектирования, потребовалась площадь кристалла в пять раз меньшая, чем для такого же умножителя, реализованного на реконфигурируемых логических блоках FPGA. Заметно выше было и быстродействие умножителя, реализованного в виде специализированной схемы.
Таким образом, введение специализированных аппаратных ядер в СБИС ПЛ - процесс, противоречивый по результатам. Он улучшает параметры схем, воспроизводящих сложные функции, но может и сузить рынок сбыта СБИС ПЛ, что, как известно, ведет к росту цен и потере в той или иной мере конкурентоспособности продукции. В связи с этим к выбору применяемых аппаратных ядер следует относиться с большой осторожностью. Наиболее бесспорным решением является применение аппаратных ядер памяти, так как блоки памяти нужны почти для всех систем, причем для многих в большом объеме. Для эффективного использования таких ядер целесообразно применять не слишком крупные блоки, обеспечивать возможность иметь асинхронный и синхронный режимы работы, организовывать буферы FIFO и двухпортовую память. В среднем блок памяти с заказным проектированием емкостью 256-512 бит может быть реализован на площади, приблизительно равной 1/10 от той, которая затрачивается на подобный блок, составленный из распределенных на кристалле ячеек памяти конфигурации. Времена доступа также уменьшаются (в 1,5-4 раза).
Области памяти - первые по времени освоения и самые важные аппаратные ядра блочных СБИС ПЛ типа «система на кристалле».
Других хорошо обоснованных аппаратных ядер не так уж много. Среди них можно назвать схемы быстродействующих умножителей и схемы интерфейса JTAG, которые выполняют важные функции, нужные очень многим потребителям. По-видимому, самыми сложными из практически разработанных ядер являются контроллеры шины PCI, также необходимые в очень многих проектах и требующие максимального быстродействия.