Программирование Xilinx Как устроена подсистема логики CoolRunner-II Tue, December 12 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Как устроена подсистема логики CoolRunner-II Печать
Добавил(а) microsin   

CoolRunner™-II это семейство CPLD (Complex Programmable Logic Device) от компании Xilinx. CoolRunner-II показывает выдающиеся параметры по соотношению производительность/энергопотребление за вполне доступные цены, с широким ассортиментом корпусов микросхем. Этот апноут (перевод XAPP376 [1]) сосредоточен на описании, как CoolRunner-II CPLD создает логическую схему на основе своей фабрики CMOS. Скорее всего Вам никогда не понадобится вникать во все тонкости внутреннего устройства, которое здесь описывается, потому что ПО разработки автоматически обработает Ваш проект таким образом, чтобы дать наилучшие показатели скорости и потребления энергии, при минимальном вмешательстве пользователя в виде настройки проекта. В тех случаях, когда Вы хотите узнать, каким образом CoolRunner-II делает свою магию, этот апноут должен помочь удовлетворить все потребности. Для общей информации по семейству CoolRunner-II см. CoolRunner-II Family Data Sheet (ds90 [2]) и даташиты, посвященные отдельным устройствам. Все непонятные термины и сокращения см. в Словарике [3].

[Архитектура на верхнем уровне]

Рис. 1 показывает общую схему архитектуры CoolRunner-II. Здесь она напоминает большинство других CPLD. Ножки ввода/вывода (I/O pin) окружают чип, в котором имеется несколько программируемых функциональных блоков (Function Block, FB), которые можно соединять друг с другом и внешним миром через продвинутую матрицу внутренних соединений Advanced Interconnect Matrix (AIM). Ножки корпуса микросхемы и её матрица AIM поставляет входные переменные в FB, который реализует нужную логику, и отправляет её результаты обратно во внешний мир.

CoolRunner II CPLD Architecture fig01

Рис. 1. Архитектура CoolRunner-II CPLD.

[Архитектура FB]

CoolRunner-II Function Block (рис. 2) принимает 40 входных сигналов от AIM, и напрямую подключает их к массиву программируемой логики (Programmable Logic Array, PLA), который работает по всему блоку FB. 16 макроячеек реализуют комбинации логики PLA, и назначают сигналы на различные компоненты макроячейки - триггеры (flip-flops), пропускающие мультиплексоры (bypass multiplexors), тактовые сигналы (clock), сигналы сброса (reset), и т. д. Результирующие сигналы маршрутизируются обратно к AIM для дополнительного соединения с другими FB, или для вывода из чипа через ножки выходов. Обратите внимание, что глобальные ресурсы (тактовый сигнал, сигналы установки/сброса) доступны индивидуально для каждой ячейки, если это необходимо. ПО разработки назначает сигналы переменных на различные FB, и управляет внутренними соединениями FB как с логическими ресурсами, так и с глобальными ресурсами.

CoolRunner II CPLD Function Block fig02

Рис. 2. CoolRunner-II CPLD Function Block.

[Макроячейка]

Если заглянуть внутрь FB, то мы увидим там 16 макроячеек. В отличие от других архитектур CPLD, логические границы в FB несколько нечеткие. Сложно изолировать специфические логические ресурсы, которые выделены на отдельные макроячейки - из-за возможности внутренних соединений с помощью PLA. Рис. 3 подробно показывает макроячейку CoolRunner-II к которой мы будем часто обращаться в этом описании. Эта PLA размещена в левой части рисунка. При перемещении по рисунку вправо мы увидим триггер, у которого есть сигнал разрешения тактирования (clock enable, CE), и увидим несколько трапецеидальных мультиплексоров. У этих мультиплексоров явно не показаны их сигналы выборки и биты, которые делают выборку. Эти биты находятся в конфигурационной памяти, и они меняются при программировании ячеек внутренней энергонезависимой памяти CPLD (этим микросхема CPLD и отличается от микросхемы FPGA - первая имеет на борту энергонезависимую память, а вторая вместо этого использует ячейки RAM, конфигурация в которые загружается снаружи при включении питания). Триггер можно сконфигурировать как D-триггер, T-триггер или как прозрачную защелку. Тактирование может осуществляться по любому перепаду, и для этого может использоваться отдельный источник или может быть активирован режим DualEDGE. Схемы установки и сброса триггера очень похожи. Установка может быть выбрана из вариантов: отсутствие события установки (GND), сигнал установки p-term (PTA), Control Term Set (CTS) или сигнал Global Set/Reset (GSR). Глобальные сигналы проходят через весь чип микросхемы. Сигналы Control Term общие в пределах одного FB. Сигналы Product Term (p-term) локальны в пределах определенной макроячейки внутри FB.

CoolRunner II CPLD Macrocell fig03

Рис. 3. CoolRunner-II CPLD Macrocell.

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

[Как работает PLA]

Перед тем, как рассмотреть CoolRunner-II PLA, давайте сначала обсудим основные функции PLA. Рис. 4 показывает устройство одной из таких PLA. В этом случае мы видим 40 входных сигналов их комплементарные буферы. Сигналы и их комплемент (инверсия) входят в программируемый массив логики "И" (AND).

Basic PLA Architecture fig04

Рис. 4. Базовая архитектура PLA.

Программируемый массив AND может поначалу выглядеть довольно странным, хотя бы потому, что его вентили AND показаны только с одним длинным входом. Суть здесь в том, что вертикальные линии здесь пересекаются с горизонтальными, где может потенциально быть место соединения. Не запрограммированные места показаны крестиками, а на запрограммированных показан диск. Вентили AND называются здесь математическим именем - product term или p-term. У CoolRunner-II имеется набор из 56 p-term, представляющих вентили AND в каждом FB. Выходы p-term направляются вправо, где они входят в другой программируемый массив "ИЛИ" (массив OR).

Здесь мы снова видим вертикальные линии, пересекающие горизонтальные, и те же самые крестики и диски. Та же идея работает и с массивом OR. Здесь крестик это потенциальное (отсутствующее) соединение, и диск - реализованное соединение. Ключевая идея для понимания значения PLA в том, как совместно используются p-term. Обратите внимание, что выход, помеченный как MC1, объединяет операцией AND входы 1 и 2 в p-term PT1. И далее MC1 операцией OR объединяется со входом 40. Выход, помеченный как MC2, получает результат PT1, и функцией OR объединяется в p-term PT3. Здесь результат AND PT1 AND используется дважды. Нет специально выделенных p-term-ов для любого определенного выхода "MC". Просто для полноты: на этом рис. 4 MC56 вообще не используется.

[Как работает PLA CoolRunner-II]

Теперь давайте посмотрим, как эта общая идея получает воплощение в FB микросхемы CoolRunner-II. На рис. 5 более подробно рассматривается макроячейку в контексте PLA. Обратите внимание, что в этой версии диаграммы мы видим все 40 входов, свернутые слева в один входной буфер с его комплементарным драйвером. Верхний AND это в действительности 49 идентичных копий p-term (49 P-terms). Ниже идут еще четыре p-term (4 P-terms), за которым идут еще три одиночных p-term. Если посмотреть на рис. 3, то четыре p-term соответствуют сигналу, помеченному как четыре сигнала CT (Control Terms: CTC, CTR, CTS, CTE). Три отдельных p-term помечены на рис. 3 как PTA, PTB и PTC. Всего, если сложить 49 + 4 + 3, то получается 56 p-term. На рис. 5 мы обходимся без символов крестика и диска, и просто показываем маленькие символы диска в тех местах, которые могли бы быть запрограммированными.

CoolRunner II CPLD Partially Stripped Macrocell Diagram fig05

Рис. 5. Частично развернутая диаграмма макроячейки.

Выходы PLA p-term представлены к массиву OR, который подключается к одному входу вентиля OR, показанного внизу (см. рис. 6). И снова, маленькие диски показывают возможность подключения к OR term, составляющему отдельные входы вентиля OR. Внутри FB есть до 15 копий логики правой части рис. 5, начиная с вентиля EX-OR (исключающее ИЛИ). Таким способом такой же набор из 56 p-term подключается через структуру OR и Mux (мультиплексора) к другим 15 вентилям EX-OR макроячейки. Обратите внимание, что точка "Sum of Products" это выход OR, и формально выход PLA. EX-OR добавлен для гибкости и управления полярностью.

CoolRunner II PLA Structure fig06

Рис. 6. Структура CoolRunner-II PLA.

Для дальнейшего рассмотрения рис. 6 показывает, как PLA переходит в схему EX-OR. На рис. 7 более подробно показан кусок структуры Mux/OR/EX-OR, здесь показан один p-term, входящий в OR, и другой p-term входящий в Mux. Следует отметить, что оба p-term-а входят в массив OR, но здесь мы фокусируемся на рассмотрении логической структуры, генерируемой двумя p-term-ами, работающими в структуре Mux/OR/EX-OR.

CoolRunner II Macrocell OR EX OR Section fig07

Рис. 7. Секция OR/EX-OR макроячейки CoolRunner-II.

Мультиплексор управляет одной ножкой вентиля EX-OR, предоставляя выбор или VCC (лог. 1), или GND (лог. 0), и тем самым напрямую подключен или к p-term, ли к его комплементу. Сначала рассмотрим опции VCC и GND. Постоянная единица на одной из ножек вентиля EX-OR делает его инвертором (комплементом) сигнала на другой ножке. И наоборот, постоянный 0 на одной из ножек вентиля EX-OR делает выход EX-OR тем же сигналом, который присутствует на другом входе. Если проще, то VCC или GND на управляющем входе мультиплексора диктует, как будет проходить сигнал через вентиль EX-OR - напрямую или с инверсией (оригинальный сигнал или его комплемент).

Давайте обратим внимание на путь распространения сигнала рис. 7, показанный жирной линией, в аспекте VCC/GND на мультиплексоре, и мы увидим специальную высокоскоростную опцию. Один вентиль AND (p-term) может напрямую проходить мультиплексор, выходя через EX-OR, ли получить комплементарный (NAND) выход через EX-OR. Этот сигнал может быть затем либо подключен к триггеру, либо обойти его и быть подключенным к ножке I/O. Путем обхода PLA OR term может быть получено ускорение (обычно 0.3 нс), что может иметь значение для высокоскоростного декодирования. Часто декодирование адреса микропроцессора требует максимальной скорости, что может быть реализовано таким ускоренным прохождением сигнала. Тот же самый быстрый путь AND/NAND может использоваться для построения быстрых регистров сдвига, счетчиков и некоторых простых машин состояний.

[Использование ресурсов p-term (Product Term)]

Урезанная версия рис. 3 показана на рис. 8. Эта версия взгляда на макроячейку представляет возможность использовать один p-term (PTA) в как сигнал установки, и другой p-term (PTC) как сигнал тактов p-term. Обратите внимание, что ПО разработки должно сгенерировать биты программирования для управления мультиплексорами (показаны трапециями), чтобы выбрать нужное подключение. Ресурсы p-term доступны для определенной макроячейки, но не для любой другой макроячейки. Следует упомянуть, что PTA макроячейки № 1 отличается генерируется другим p-term, чем PTA для макроячейки 2, 3, или 16. PTA для макроячейки 16 должен быть другим из 49 p-term-ов, показанных на рис. 8.

CoolRunner II CPLD Macrocell Simplified PTS and PTC fig08

Рис. 8. Вид на макроячейку, упрощенный для отображения сигналов установки p-term (PTA) и тактов p-term (PTC).

[Использование ресурсов управления p-term (Control Term)]

Иногда несколько макроячеек в пределах одного FB должны иметь один и тот же AND, получающий сигналы тактов (Clock), сброса (Reset), установки (Set) или разрешения выхода (PTOE). В этом случае ПО Fit Xilinx должно использовать control term вместо product term. Control term то же самое, что и product term с тем исключением, что они подключаются к тем же сигналам мультиксора в каждой макроячейке в пределах одного FB. Из-за частого использования в проектах, это очень полезно для экономии содержимого массива 56 p-term AND. В сущности желательнее использовать один control term даже с двумя необходимыми макроячейками, чем тратить 2 ресурс p-term в отдельных макроячейках. Рис. 9 показывает, как в макроячейке используются сигналы control term set и control term clock, и также становятся доступными для других макроячеек.

CoolRunner II CPLD Macrocell Simplified CTS and CTC fig09

Рис. 9. Вид на макроячейку, упрощенный для отображения сигналов Control Term Set и Control Term Clock.

Рис. 10 показывает, как control term (CTC) влияет на все макроячейки в пределах одного FB. Если одни и те же такты должны были использоваться по нескольким FB, то для ПО было бы лучше назначить глобальный ресурс (такты, установка/сброс, разрешение выхода) вместо траты p-term-ов. В некоторых случаях меньшую потребляемую мощность даст использование ресурса control term или product term по сравнению с глобальным ресурсом, который тратит энергию на переключение глобальной цепи. Выбор диктует компромисс между скоростью и потреблением тока.

CoolRunner II CPLD Higher Level FB CTC fig10

Рис. 10. Высокоуровневый вид на FB, показывающий Control Term C.

[Комбинирование ресурсов Product Term и Control Term]

Рис. 11 показывает, как можно смешивать и совместно использовать ресурсы product term и control term в одной макроячейке. В этом примере мы видим product term set и control term clock. Сигнал control term clock также доступен для других макроячеек в пределах одного FB. Обычно ПО разработки будет делать выбор наподобие этого, если определенная макроячейка требует обработки события установки - уникального для неё - в то время как её тактирование должно быть идентичным как минимум еще одной другой макроячейке в пределах того же FB. Компромисс между какими ресурсами быть декларированными для генерации product term, и какие для глобальных сигналов или control term, решается с помощью ПО разработки Fit Xilinx.

CoolRunner II CPLD PTS and PTC fig11

Рис. 11. Вид на макроячейку, упрощенный для отображения использования сигналов Product Term и Control Term.

Высокая скорость и низкое потребление энергии это традиционный компромисс при реализации определенного дизайна. Обычно высокоскоростные CPLD требуют повышенного тока для реализации коротких интервалов переключения. CoolRunner-II предоставляет логику, требуемую для высокоскоростных приложений общего назначения при абсолютном минимуме потребляемой мощности.

[Ссылки]

1. XAPP376 Understanding the CoolRunner-II Logic Engine site:xilinx.com.
2. Семейство CPLD CoolRunner-II.
3. Термины и сокращения, словарик.

 
Top of Page