Возможность ПМЛ передачи значения выходного сигнала по цепи обратной связи на вход матрицы И позволяет в одном устройстве строить многоуровневые каскадные схемы. Однако следует избегать случаев, когда значение некоторой функции является аргументом этой же функции, так как в подобной ситуации схема перестаёт быть комбинационной и переходит в класс последовательностных схем, а отсутствие в циклах элементов задержки приводит к непредсказуемости поведения схемы.
Обобщенная структура универсальных ПМЛ (рис.4.) включает n входов, программируемую матрицу И, m выходных макроячеек (MC) с одной обратной связью и m2 макроячеек (MCF) с двумя обратными связями. Архитектура макроячейки с двумя обратными связями показана на рис. 5.
В макроячейках с одной обратной связью отсутствует цепь от входа выходного буфера к входу матрицы И. С каждой макроячейкой универсальных ПМЛ связано различное число промежуточных шин, что позволяет более рационально их использовать: простые функции назначать для реализации на выходы, связанные с небольшим числом промежуточных шин, а сложные – назначать на выходы, связанные с большим числом промежуточных шин. Кроме того, каждая макроячейка допускает программирование логического уровня выходного сигнала благодаря наличию в архитектуре макроячейки вентиля Исключающее ИЛИ с программируемой связью одного входа с «землёй».
Поэтому из двух функций yi или ¯yi для реализации можно выбрать наиболее подходящую (например, которая требует для реализации меньше промежуточных шин), а необходимый вид функции на выходе ПМЛ образуется путём программирования логического уровня выходного сигнала.
Рис. 4. Обобщённая структура универсальных ПМЛ
Макроячейки с двумя обратными связями допускают одновременное использование в двух целях: для реализации промежуточных функций и для приёма входных переменных.
Рис. 5. Обобщённая структура выходной макроячейки универсальных ПМЛ с двумя обратными связями
Cложные программируемые логические схемы CPLD (Complex Programmable Logic Devices) (сложные программируемые логические устройства) содержат относительно крупные программируемые логические блоки — макроячейки соединённые с внешними выводами и внутренними шинами. Функциональность CPLD кодируется в энергонезависимой памяти, поэтому нет необходимости их перепрограммировать при включении.
Несколько блоков, подобных ПМЛ, объединяются средствами программируемой коммутационной матрицы (рис.6.). В CPLD могут входить сотни блоков и десятки и сотни тысяч эквивалентных вентилей. Архитектуры CPLD разрабатываются фирмами Altera, Atmel, Lattice Semiconductor, Cypress Semiconductor, Xilinx и др. Воздействуя на программируемые соединения коммутационной матрицы и ПМЛ, входящих в состав CPLD, можно реализовать требуемую схему.
Архитектура функциональных блоков здесь во многом подобна архитектуре универсальных ПМЛ. Отличия заключаются в том, что все выходные макроячейки имеют две обратные связи, а промежуточные шины макроячейкам назначаются с помощью распределителя (allocator). Некоторые макроячейки CPLD не имеют связи с внешним выводом. Такие макроячейки называются скрытыми. Скрытые макроячейки имеют только одну обратную связь.
Рис. 6. Обобщённая структура функционального блока CPLD и его взаимодействие с матрицей переключений
Каждый функциональный блок CPLD будем характеризовать числом входов n; выходных макроячеек m; общим числом макроячеек r, из которых r-m являются скрытыми; суммарным числом промежуточных шин функционального блока q и максимальным числом промежуточных шин qmax, которые могут быть подсоединены к одной макроячейке. Кроме того, общая структура CPLD характеризуется числом E функциональных блоков и числом dI «чистых» входов.
Отметим некоторые особенности синтеза комбинационных схем на CPLD, обусловленные их архитектурными свойствами:
· число подсоединяемых к макроячейке промежуточных шин не фиксировано, как для ПМЛ, а определяется для каждой макроячейки индивидуально;
· в некоторых CPLD промежуточные шины между макроячейками распределяются кластерами и для реализации любой функции (даже очень простой) необходимо не менее qCL промежуточных шин, где qCL – число промежуточных шин в одном кластере;
· для реализации промежуточных функций могут использоваться ресурсы скрытых макроячеек, а также выходных макроячеек, выводы которых используются в качестве входов;
· каждый функциональный блок имеет фиксированное число входов n, по которым могут поступать значения аргументов (в ПМЛ число входов может изменяться за счёт использования двунаправленных выводов в качестве входов);
· общее число аргументов СБФ, реализуемой на CPLD, может быть достаточно большим (dI + m·E – N), в то время как число аргументов СБФ, реализуемой одним функциональным блоком, ограничено параметром n, имеющим значение от 16 до 36;
· все значения аргументов и промежуточных функций поступают на входы функциональных блоков только через матрицу переключений, поэтому при частом дублировании входных переменных различных функциональных блоков возникает опасность быстрого истощения ресурсов матрицы переключений.
В качестве примера можно рассмотреть архитектуру микросхем семейства MAX 7000 фирмы Altera [5].
Архитектура MAX 7000 включает следующие элементы:
· логические блоки (LAB, Logic array blocks)
· макроячейки (МЯ, Macrocells)
· логические расширители, разделяемый и параллельный (Expander product terms)
· программируемая матрица соединений (PIA, Programmable interconnect array)
· блоки управления вводом/выводом (БВВ, I/O control blocks)
В структуру ПЛИС MAX 7000 входят четыре специализированных входа. Эти входы могут быть использованы как входы общего назначения для обработки “быстрых” сигналов. Через эти входы на каждую МЯ могут быть поданы глобальные управляющие сигналы (синхронизация, сброс, переход в третье состояние). На рис.7 представлена функциональная схема ПЛИС.
Архитектура ПЛИС MAX 7000 основана на логических блоках, состоящих из 16 макроячеек. Логические блоки соединяются вместе при помощи программируемой матрицы соединений (PIA).
Рис.7 Функциональная схема ПЛИС MAX 7000
К каждому логическому блоку подводятся следующие сигналы:
· 36 сигналов от PIA, используемых в качестве логических входов;
· глобальные управляющие сигналы;
· непосредственные цепи от входных буферов к регистрам, обеспечивающие высокое быстродействие.
Макроячейка содержит три функциональных блока:
· локальная программируемая матрица (Logic Array);
· матрица распределения термов (Product Term Select Matrix);
· программируемый регистр (Programmable register).
На рис.8 приведена структурная схема МЯ. Комбинационная логика реализуется на локальной программируемой матрице, которая передает пять основных термов в матрицу распределения термов. Матрица распределения термов позволяет реализовать комбинационную функцию путем выполнения операций “исключающее или”, “ИЛИ” над логическими произведениями. Кроме этого, матрица распределения может передать термы на регистры.
Для расширения функциональных возможностей доступны две логические схемы:
· разделяемый логический расширитель. Инвертирует терм и передает назад на локальную программируемую матрицу;
· параллельный логический расширитель. Передает термы из предыдущих МЯ в последующие.
Рис.8 Структурная схема макроячейки.
Комбинационная логика реализуется на локальной программируемой матрице, которая передает пять основных термов в матрицу распределения термов. Матрица распределения термов позволяет реализовать комбинационную функцию путем выполнения операций “исключающее или”, “ИЛИ” над логическими произведениями. Кроме этого, матрица распределения может передать термы на регистры.
САПР фирмы Altera способны автоматически оптимизировать процесс распределения термов в соответствии с требованиями проекта.
Для каждого регистра может быть выбран один из трех способов тактирования:
· тактирование глобальным синхросигналом. Это самый быстрый вариант;
· тактирование глобальным сигналом с применением локального сигнала разрешения тактирования;
· тактирование сигналом от локальной программируемой матрицы.
В MAX7000доступны два глобальных тактовых сигнала выводы GCLK1 или GCLK2.
Для каждого регистра имеется возможность асинхронного сброса и установки. Матрица распределения термов обеспечивает управление этими операциями. Возможно индивидуальное управление сбросом каждого регистра при помощи глобального тактирующего сигнала GCLRn.
Хотя большинство логических функций могут быть реализованы пятью термами, доступными в каждой МЯ. Возможна ситуация, при которой пяти переменных будет недостаточно. Для решения подобной проблемы предназначен специальный механизм – логические расширители. Этот механизм позволяет использовать термы любых МЯ, находящихся в данном логическом блоке. Логические расширители помогают добиться максимального быстродействия при минимальных затратах.
Каждый логический блок содержит 16 разделяемых расширителей, которые могут быть рассмотрены как емкость неподключенных термов (один от каждой макроячейки). Терм инвертируется и возвращается обратно в локальную программируемую матрицу. Инвертированный терм может использоваться любой МЯ данного логического блока. Временная задержка, вызванная использованием расширителя обозначается TSEXP.
Схема расширителя изображена на рис.9: