Автор: Соловьев В.В.
Теги: компьютерные технологии полупроводниковые устройства программирование
ISBN: 978-5-9912-0500-9
Год: 2016
Текст
CPLD и FPGA 7-й серии Соловьев В. В. Архитектуры ПЛИС
Соловьев В. В. Архитектуры ПЛИС фирмы XILINX: CPLD и FPGA 7-й серии Москва Горячая линия - Телеком 2016
УДК 681.3 ББК 32.852.3 С60 Рецензенты: ведущий инженер-конструктор ООО «Регула» (г. Минск) А. А. Козин, канд. техн, наук, гл. инженер проекта ООО «Сенсор-М» (г. Минск) В. А. Радишевский Соловьев В. В. С60 Архитектуры ПЛИС фирмы Xilinx: CPLD и FPGA 7-й серии. - М.: Горячая линия - Телеком, 2016. - 392 с.: ил. ISBN 978-5-9912-0500-9. Рассмотрены архитектуры программируемых логических интегральных схем (ПЛИС) фирмы Xilinx. Приведена краткая классификация ПЛИС, дано введение в техно- логии проектирования на основе ПЛИС, описаны архитектуры CPLD и подробно рассмот- рены архитектуры FPGA 7-й серии. В частности, внутренняя логика FPGA: конфигури- руемые логические блоки, распределенная память, сдвиговые регистры, мультиплексоры и логика переноса; блоки цифровой обработки сигналов; блоки памяти RAM; режим па- мяти FIFO; блок встроенной коррекции ошибок при записи и чтения памяти. Кроме того, подробно рассмотрена система ввода-вывода, ресурсы синхронизации и вопросы конфи- гурирования FPGA. В приложениях дано описание примитивов и макросов, а также вре- менных моделей элементов архитектуры FPGA. Большинство глав заканчивается особен- ностями применения соответствующих функциональных блоков, что значительно упро- щает практическое использование компонентов архитектуры FPGA. Для инженеров-практиков, разработчиков электронных систем на основе ПЛИС, студентов и преподавателей, может быть полезна аспирантам и научным работникам, а также менеджерам, специалистам по продаже ПЛИС. ББК 32.852.3 Адрес издательства в Интернет WWW.TECHBOOK.ru Справочное издание Соловьев Валерий Васильевич Архитектуры ПЛИС фирмы Xilinx: CPLD и FPGA 7-й серии Редактор Ю. Н. Чернышов Компьютерная верстка Ю. Н. Чернышова Обложка художника О. Г. Карповой Подписано в печать 01.11.2015. Формат 70х100/16. Усл. печ. л. 31,85. Тираж 300 экз. (1-й завод 100 экз.) Изд. № 150500 ООО «Научно-техническое издательство «Горячая линия-Телеком» ISBN 978-5-9912-0500-9 © В. В. Соловьев, 2016 © Издательство «Горячая линия-Телеком», 2016
Предисловие Моей жене, детям и внукам. В настоящее время программируемые логические интегральные схемы (ПЛИС) широко используются в качестве элементной базы при разработке различных элек- тронных проектов. Однако с расширением области использования и возрастанием ответственности решаемых с помощью электроники задач также увеличивается слож- ность проектов, реализуемых на ПЛИС. Для решения указанных проблем производи- тели ПЛИС и средств проектирования на их основе предлагают ряд новых технологий проектирования на ПЛИС. К таким технологиям, в частности, относится использова- ние языков высокого уровня для описания проектов электронной аппаратуры (вместо традиционных графических редакторов), применение всех архитектурных возможнос- тей, которые предоставляют современные ПЛИС, и др. Таким образом, данная книга посвящена одной из технологий проектирования на основе ПЛИС: рассмотрению ар- хитектур CPLD и FPGA 7-й серии фирмы Xilinx. Несколько десятилетий назад ПЛИС выпускали практически все известные про- изводители микросхем. К настоящему времени число производителей ПЛИС несколь- ко сократилось. Наиболее известными фирмами-производителями ПЛИС являют- ся Altera и Xilinx, которые вместе занимают около 70 % мирового рынка. Кроме того, ПЛИС производят такие фирмы, как Achronix, Atmel, Lattice Semiconductor, MicroSemi (Actel), Tabula и др. ПЛИС фирмы Xilinx отличает большая функциональ- ная мощность (несколько миллионов логических элементов), возможность использо- вания логических элементов в качестве памяти (в дополнение к встроенным блокам памяти), большое количество блоков цифровой обработки сигналов, большое число триггеров (способствующих конвейерной обработке данных). Благодаря этим качест- вам ПЛИС фирмы Xilinx получили широкое распространение среди разработчиков электронной аппаратуры. Архитектура FPGA 7-й серии фирмы Xilinx (по утверждению фирмы Xilinx) во- брала в себя все лучшее, что до этого времени было разработано в области совер- шенствования архитектур ПЛИС, причем не только фирмой Xilinx, но и другими про- изводителями Поэтому архитектура FPGA 7-й серии стала базовой архитектурой для следующих поколений FPGA: UltraScale. Микросхемы систем на одном кристалле SoC фирмы Xilinx также строятся на основе архитектур FPGA 7-й серии. В настоящей книге информация из технической документации систематизирована таким образом, чтобы можно было изучать архитектуру современных ПЛИС фирмы Xilinx: от общих свойств до конкретных деталей. Отметим, что степень детализации информации является достаточной для возможности практического использования каждого компонента архитектуры. Книга содержит большой объем справочной ин- формации. Чтобы не отвлекать внимание читателя, большинство справочной инфор- мации вынесено в приложения. Первая глава является введением в проблематику современных ПЛИС. Приво- дится краткая классификация ПЛИС согласно их историческому развитию, дается
4 Предисловие введение в технологии проектирования на основе ПЛИС, приводится характеристика программируемых микросхем фирмы Xilinx, а также описываются основные свойства FPGA 7-й серии. Вторая и третья главы посвящены FPGA фирмы Xilinx, а именно семействам XC9500XL и CoolRunnerlL В электронных проектах CPLD часто устанавливаются на плату вместе с FPGA, их основной функцией является управление порядком пода- чи напряжений питания для всей системы, а также конфигурированием и инициа- лизацией FPGA. В четвертой главе описывается архитектура внутренней логики FPGA 7-й серии: конфигурируемые логическое блоки CLB, секции, функциональные генераторы LUT, распределенная память RAM и ROM, сдвиговые регистры, мультиплексоры, а также логика переноса. Отметим, что четвертая и все последующие главы заканчиваются особенностями применения соответствующих функциональных блоков. Практически ни один современный проект на ПЛИС не обходится без решения задач цифровой обработки сигналов (ЦОС). Поэтому пятая глава посвящена секции цифровой обработки сигналов DSP48E1. Здесь рассматривается общая архитектура секции DSP48E1, а также такие элементы, как арифметическо-логическое устройст- во, детектор шаблона, логика обнаружения переполнения и потери значимости, другие функциональные возможности секции DSP48E1. Особое внимание уделено особен- ностям применения секции DSP48E1. Редко какой из современных проектов обходится без использования памяти. Шестая глава посвящена встроенным блокам памяти RAM. Рассматривается архи- тектура блоков RAM, режимы функционирования, а также особенности применения, в частности, каскадирование блоков RAM, побайтная запись в память, использова- ние конвейерных регистров. Блоки памяти RAM FPGA 7-й серии могут также функционировать в режиме памяти типа FIFO. Седьмая глава посвящена рассмотрению свойств памяти FIFO: описывается общая архитектура памяти FIFO, рассматриваются режимы функциони- рования, а также особенности применения памяти FIFO. Блоки памяти FPGA 7-й серии как в режиме RAM, так и в режиме FIFO позво- ляют использовать механизм коррекции ошибок при записи и чтении данных. Для этого служит блок встроенной коррекции ошибок ЕСС. В восьмой главе описывается архитектура, функционирование и особенности применения блока ЕСС. В FPGA 7-й серии кардинальному усовершенствованию подверглись архитекту- ры элементов ввода-вывода. Это связано с необходимостью поддержки современных стандартов передачи данных, в частности дифференциальных стандартов, а также с необходимостью упрощения использования микросхем ПЛИС на системной плате. Поэтому в FPGA 7-й серии совокупность всех элементов ввода-вывода названа сис- темой ввода-вывода SelectlO. В книге системе SelectIO посвящены девятая, десятая и одиннадцатая главы. В девятой главе описывается общая концепция системы ввода-вывода FPGA 7- й серии, приводится архитектура блоков ввода-вывода, рассматривается механизм цифрового управления импедансом DCI, а также отмечаются особенности применения ресурсов системы ввода-вы вода. Десятая глава посвящена логическим ресурсам ввода-вывода, к которым отно- сятся входная IDELAY и выходная ODELAY задержки, а также блоки входной ILOGIC и выходной OLOGIC логики. Элементы IDELAY и ODELAY обеспечивают управляе- мую программируемую величину задержки для входных и выходных данных. Основной
Предисловие 5 функцией блоков входной и выходной логики является поддержка регистров передачи данных с удвоенной скоростью. В одиннадцатой главе рассматриваются расширенные логические ресурсы ввода- вывода. К последним относятся последовательно-параллельный ISERDESE2 и парал- лельно-последовательный OSERDESE2 преобразователи, подмодуль BITSLIP и па- мять FIFO ввода-вывода. Расширенные логические ресурсы могут использоваться для высокоскоростной последовательной передачи данных между микросхемами FPGA, расположенными на одной печатной плате. Ресурсы синхронизации FPGA 7-й серии описываются в двенадцатой главе. Здесь рассматривается общая архитектура ресурсов синхронизации, специализированные входы синхронизации, ресурсы глобальной и региональной синхронизации. Ресурсы синхронизации в FPGA 7-й серии управляются буферами синхронизации и блоками формирования синхросигналов СМТ. Особенности использования буферов синхро- низации также рассматриваются в двенадцатой главе. Тринадцатая глава посвящена блока формирования синхросигналов СМТ. Каж- дый блок СМТ содержит два блока: ММСМ и PLL. Блок PEL реализует некоторое подмножество функций блока ММСМ, поэтому в данной главе в основном рассмат- риваются свойства блока ММСМ. Блок ММСМ в FPGA 7-й серии предоставляет широкие возможности по формированию внутренних синхросигналов на основе внеш- него опорного синхросигнала. При этом возможны целочисленное и дробное деление частоты, фильтрация флуктуаций, статический и динамический фазовый сдвиг, пе- реключение опорных синхросигналов и др. В четырнадцатой главе рассматриваются вопросы конфигурирования FPGA 7-й серии, без которого не обходится ни один проект на ПЛИС. FPGA 7-й серии пре- доставляют большое разнообразие способов конфигурирования. При этом возмож- ны главные и подчиненные режимы, простые базовые решения, конфигурирование с низкой стоимостью и высоким быстродействием, конфигурирование от специальных ППЗУ фирмы Xilinx или от промышленных ППЗУ по стандартным интерфейсам, а также конфигурирование по JTAG-стандарту. Отметим, что каждая глава заканчивается выводами, где в сжатой форме пред- ставлена основная информация, излагаемая в данной главе. В некоторых случаях для быстрого изучения вопроса читатель может сразу обратиться к выводам в конце главы, а затем уточнить детали из содержания главы и приложений. В приложении А в основном описываются примитивы и макросы, которые могут использоваться при разработке проектов на FPGA 7-й серии. Приложение Б содержит описание временных моделей элементов архитектуры FPGA 7-й серии. В списке основной литературы приводятся ссылки на техническую документацию, которая непосредственно использовалась при написании данной книги. Дополнитель- ная литература включает отдельные документы, которые упоминались в тексте книги для уточнения конкретных деталей. Список литературы, относящейся к данной теме, включает ранее изданные книги по архитектурам ПЛИС, а также некоторые книги и статьи, которые не потеряли актуальность и могут быть полезны в вопросах проек- тирования на основе ПЛИС. Книга предназначена прежде всего для разработчиков электронных систем на основе ПЛИС. Инженеры-практики, которые впервые приступают к проектированию на ПЛИС фирмы Xilinx, найдут в книге много технической информации: от описания общей архитектуры до конкретных рекомендаций по практическому использованию. Инженеры, которые имеют опыт разработки проектов на ПЛИС других производи- телей, найдут в книге много интересной информации, которая может вызвать у них
6 Предисловие желание проектировать на ПЛИС фирмы Xilinx. Инженеры, уже проектирующие на ПЛИС фирмы Xilinx, также могут узнать из книги много новой информации, которая по каким-либо причинам была упущена из их поля зрения. Книга также предназначена для студентов и преподавателей технических универ- ситетов соответствующих специальностей. К сожалению, в настоящее время отсутст- вуют отечественные учебные пособия по архитектурам современных ПЛИС. Поэтому преподаватели найдут в книге много полезной информации для подготовки лекций, практических и лабораторных занятий, а студенты — ответы на поставленные во- просы. Книга может быть также полезна аспирантам и научным работникам как источник информации об архитектурных возможностях современных ПЛИС. Последние могут быть использованы при разработке новых методик, методов и алгоритмов проекти- рования на основе ПЛИС. Книга, безусловна, будет весьма полезна менеджерам, специалистам по продаже ПЛИС фирмы Xilinx и средств проектирования на их основе, поскольку менеджеры в первую очередь должны хорошо знать все архитектурные свойства и возможности каждого семейства ПЛИС, чтобы грамотно их предложить потенциальным клиентам. Работа выполнена при частичной финансовой поддержке Белостокского техно- логического университета (Республика Польша), грант S/WI/1/2013.
1 Программируемые логические интегральные схемы 1.1. Введение в программируемые логические интегральные схемы Понятие программируемые логические интегральные схемы (ПЛИС) с течением времени менялось, и в настоящее время этот термин не совсем точно отражает опре- деляемый предмет. Попытаемся разобраться, что такое ПЛИС. 1.1.1. Что такое ПЛИС? Прежде всего, под ПЛИС понимаются микросхемы большой и сверхбольшой сте- пени интеграции, которые пользователь может сам программировать. Способы программирования могут быть самые разные: с помощью специального оборудования (программаторов), с помощью кабеля от персонального компьютера, от микропроцессора или от постоянного запоминающего устройства (ПЗУ), находящихся на одной плате с ПЛИС и др. Главное, что пользователь (разработчик) может купить готовую ПЛИС и сам ее запрограммировать в домашних (лабораторных) условиях. При этом ему не надо обращаться к услугам производителей ПЛИС, как в случае за- казных специализированных микросхем (Application Specific Integrated Circuit — ASIC). Программирование ПЛИС заключается в изменении своей внутренней архитекту- ры для выполнение определенных функций. Например, стандартные логические мик- росхемы выполняют заранее определенные при их изготовлении функции, а ПЛИС может выполнять те функции, которые для нее определит пользователь. Производи- тели выпускают ПЛИС незапрограммированными, т. е. исходная ПЛИС не выполняет никаких функций. Если после программирования и выключения питания ПЛИС сохраняет свою внутреннюю структуру и может выполнять заданные функции при каждом следую- щем включении питания, говорят о программировании ПЛИС. Такие ПЛИС также называют энергонезависимыми. Энергонезависимая ПЛИС может вначале програм- мироваться с помощью программатора, а затем устанавливаться на плату, и может программироваться уже после установки на плату. В последнем случае говорят о программировании в системе (In-System Programmable — ISP). Если после программирования и выключения питания ПЛИС не сохраняет свою внутреннюю структуру (т. е. является энергозависимой) и при следующем включе- нии питания ее необходимо настраивать заново, говорят о конфигурировании ПЛИС. Конфигурирование ПЛИС всегда выполняется после установки ПЛИС на плате. Со- временные ПЛИС допускают десятки тысяч перепрограммирований и неограниченное число раз конфигурирований. 1.1.2. Чем ПЛИС отличаются от микроконтроллеров? Это один из ключевых вопросов, который разделил армию разработчиков элек- троники на поклонников ПЛИС и приверженцев микроконтроллеров. По способу использования микроконтроллеры и ПЛИС мало чем отличаются друг от друга: и те и другие перед применением необходимо программировать (конфигу- рировать). Главное отличие микроконтроллеров от ПЛИС: при программировании
8 Раздел 1 микроконтроллер не изменяет свою архитектуру. При программировании микрокон- троллера в его память записывается программа (и, возможно, данные), которая за- тем выполняется процессором микроконтроллера. Сама архитектура микроконтрол- лера (процессор, порты ввода-вывода, периферийные устройства и соединения между ними) остаются низменными. В отличие от микроконтроллеров ПЛИС при програм- мировании изменяет свою внутреннюю архитектуру. Благодаря этому архитектуру ПЛИС можно настроить на выполнение конкретных функций и задач. При обработке данных микроконтроллер последовательно выполняет команды за- писанной в память программы, причем выполнение одной команды может занимать несколько циклов процессора. ПЛИС в одном временном цикле параллельно обра- батывает некоторую порцию данных, поступающих на все входы ПЛИС. Поскольку ПЛИС имеют существенно больше внешних выводов, чем микроконтроллер, то при использовании ПЛИС значительно (на порядки, т. е. в 10...100 раз) возрастает ско- рость обработки данных. Кроме того, каждый внешний вывод ПЛИС, за исключением небольшого коли- чества специализированных (dedicated) выводов, является двунаправленным выводом общего назначения. Поэтому пользователю ПЛИС, в отличие от микроконтроллеров, предоставляются практически неограниченные возможности по определению ширины и расположению внешних шин и сигналов, подсоединяемых к ПЛИС. Что использовать в конкретном проекте, ПЛИС или микроконтроллер, во многом зависит от предыдущего опыта разработчика, имеющихся средств проектирования и особенностей проекта. Обычно функционально сложные и быстродействующие про- екты реализуются на ПЛИС, а простые и не требующие высокого быстродействия — на микроконтроллерах. 1.1.3. Программируемые логические матрицы Исторически первыми ПЛИС принято считать программируемые логические мат- рицы (ПЛМ — Programmable Logic Arrays — PLA). Хотя справедливости ради следует заметить, что первыми микросхемами, которые пользователь мог запрограммиро- вать на выполнение определенных функций, являются программируемые постоянные запоминающие устройства (ППЗУ — Programmable Read Only Memory — PROM). - программируемое соединение Рис. 1.1. Обобщенная структура ПЛМ ПЛМ начали выпускать промышленно- стью с 1971 года, и они получили доста- точно широкое распространение среди раз- работчиков цифровой аппаратуры, в первую очередь, в качестве замены элементов ма- лой и средней степени интеграции. Обоб- щенная структура ПЛМ показана на рис. 1.1. Архитектура ПЛМ имеет п парафазных вхо- дов и m выходов. Основу архитектуры ПЛМ составляют две программируемые матрицы: матрица AND (И) и матрица OR (ИЛИ). Выходы мат- рицы AND непосредственно соединены с входами матрицы OR и образуют промежу- точные шины (product terms) ПЛМ. В соответствии с названием матрица AND позво- ляет на каждом из своих выходах реализовать логическую функцию AND (конъюнк- цию), а матрица ИЛИ — логическую функцию OR (дизъюнкцию).
Программируемые логические интегральные схемы 9 Поэтому на ПЛМ очень легко реализуются системы булевых функций (СБФ), представленные в дизъюнктивной нормальной форме (ДНФ). Фактически, архитек- тура ПЛМ повторяет табличное представление СБФ, при этом на матрице AND реали- зуются отдельные элементарные конъюнкции, а на матрице OR — логическая сумма этих конъюнкций. 1.1.4. Программируемые логические устройства (PLD) Развитие архитектуры ПЛМ шло по пути усложнения выходных буферов. В вы- ходные буферы стали устанавливать триггеры для реализации регистров и последо- вательных устройств, начали вводить внутренние обратные связи между выходными буферами и входами ПЛМ для реализации конечных автоматов. Усовершенствован- ные таким образом выходные буферы стали называть выходными макроячейками или просто макроячейками (macrocells). Однако трудности вызывало програм- мирование двух матриц AND и OR, програм- мируемые элементы которых технологичес- ки сильно различались между собой. По- этому было предложено программирование матрицы OR сделать фиксированным (рис. 1.2). Так появилась архитектура про- граммируемых матриц логики (Programm- able Array Logic — PAL). Фиксированная настройка в PAL мат- рицы OR позволила реализовать ее в ви- де отдельных многовходовых вентилей OR, а сами вентили OR включить в выходные макроячейки PAL. Существенным недостат- ком PAL, по сравнению с ПЛМ, является ограничение на число промежуточных шин, подсоединяемых к одному выходу. Одна- ко в большинстве случаев, как показывает практическое использование, это ограниче- ние не критично. Поэтому именно архитек- тура PAL благодаря простоте программиро- вания получила наибольшее распростране- ние. В зависимости от того, какая из мат- риц (AND или OR) программируется, а ка- кая имеет фиксированную настройку, про- граммируемые пользователем микросхемы стали делить на три класса ПЛМ, PAL и ППЗУ в ПЛМ программируются обе матри- цы; в PAL программируется матрица AND, а матрица OR имеет фиксированную настрой- ку, в ППЗУ программируется матрица OR, а матрица AND настроена на выполнение функций полного дешифратора (рис. 1.3). Все эти три класса микросхем стали назы- OR 1 Ф ф Ч>— Ч>—О -0—0 О—О «»—о 0—0 зе- 1 2 ... m —- программируемое соединение —з|е— - фиксированное соединение Ч)—О •О—о -0—0- чз—о О-Чн о—о- О- Ч>—О- о—о о—о о—о о—о о—о о—о •о—о Ч >—{> Рис. 1.2. Обобщенная структура PAL ч >- - програм м ируемое соединение OR 1 ... m Рис. 1.3. Обобщенная структура ППЗУ вать программируемыми логическими устройствами (ПЛУ — Programmable Logic De- vices — PLD).
10 Раздел 1 Рис. 1.4. Структура универсальной PAL В литературе прошлого века можно также встретить относящиеся к PLD аббре- виатуры GAL (Generic Array Logic) и PLS (Programmable Logic Sequencer). GAL — это PAL с расширенными возможностями программирования выходных макроячеек, a PLS представляет собой ПЛМ с триггерами в выходных буферах (макроячейках) и внутренними обратными связями. В практике наибольшее распространение (и используются по настоящее время) получили универсальные PAL, обобщенная структура которых показана на рис. 1.4, а архитектура выходных макроячеек — на рис. 1.5. Обобщенная структура универсальных PAL включает программируемую матрицу AND, п парафазных входов, d «чистых» специализированных входов и di специали- зированных входов, которые могут использоваться как обычные логические входы. Имеется также два типа выходных макроячеек: m макроячеек МС с одной обратной связью и m2 макроячеек MCF с двумя обратными связями. Кроме того, в некото- рых универсальных PAL к различным макроячейкам подсоединяется различное число промежуточных шин. На рис. 1.5 показана типичная архитектура макроячейки универсальной PAL с одной обратной связью. Здесь вентиль XOR служит для программирования логичес- кого уровня (высокого или низкого) выходной функции, мультиплексор МХ1 — для Рис. 1.5. Архитектура макроячейки универсальной PAL
Программируемые логические интегральные схемы 11 программирования типа выхода (регистрового или комбинационного), МХ2 — для определения точки подключения обратной связи. В макроячейках с двумя обратными связями мультиплексор МХ2 отсутствует. 1.1.5. Сложные программируемые логические устройства (CPLD) Несмотря на большие функциональные возможности, при построении цифровых систем на плату приходилось устанавливать несколько PLD. Однако с увеличением степени интеграции появилась возможность на одном кристалле реализовать несколь- ко PLD. Такие устройства получили название сложных программируемых логических устройств (Complex Programmable Logic Devices — CPLD). Структура CPLD (рис. 1.6) представляет собой совокупность функциональных блоков FBx-FBt, объединяемых программируемой матрицей переключений (Switch Matrix — SM). Для большинства CPLD функциональный блок имеет структуру, подоб- ную PAL. Обрабатываемые данные в CPLD, как правило, поступают на двунаправлен- ные выводы функциональных блоков FBj-FBt- Результаты обработки данных фор- мируются также на двунаправленных выводах функциональных блоков. Кроме того, Рис. 1.7. Обобщенная структура функционального блока CPLD
12 Раздел 1 CPLD имеет d специализированных (dedicated) входов, de из которых могут исполь- зоваться для синхронизации триггеров, doE — для управления третьим состоянием выходных буферов, a dj могут использоваться как обычные логические выводы. Обобщенная структура функционального блока CPLD показана на рис. 1.7. Она включает программируемую матрицу AND, г макроячеек MCi,...,MCr и m внешних вы- водов, управляемых ячейками ввода-вывода IOC1,...,IOCm. Промежуточные шины от матрицы AND к макроячейкам подключаются с помощью распределителя (allocator) промежуточных шин. Некоторые CPLD имеют общий расширитель (Shared Expander — SE) промежуточных шин, в этом случае распределитель промежуточных шин назы- вают параллельным расширителем (Parallel Expander — РЕ) промежуточных шин. 1.1.6. Программируемые пользователем вентильные матрицы (FPGA) Заметим, что основными преобразователями информации в архитектурах PLD и CPLD являются программируемые матрицы AND и OR. Параллельно с развитием ар- хитектур PLD/CPLD также развивался другой класс программируемых пользователем микросхем, которые получили название программируемые пользователем вентильные матрицы (Field Programmable Gate Arrays — FPGAs). Основными преобразователями информации в FPGA являются функциональные генераторы типа LUT (Look Up Table)*. Функциональный генератор LUT представ- ляет собой небольшое ОЗУ с одним выходом. В зависимости от записанной в ОЗУ информации она может реализовать любую булеву функцию, аргументы которой по- ступают на адресные входы ОЗУ. Таким образом, LUT представляет собой функци- ональный генератор, который может реализовать любую булеву функцию от неболь- шого числа аргументов (обычно 4-6). Отметим, что ранее встречались FPGA, в которых в качестве функциональных ге- нераторов использовались мультиплексоры. При этом аргументы реализуемой функ- ции подавались на управляющие входы мультиплексоров. В FPGA функциональные генераторы LUT вместе с окаймляющими их мультип- лексорами и триггерами называются логическими элементами или логическими ячей- LUT также называют таблицей поиска или таблицей перекодировки
Программируемые логические интегральные схемы 13 ками (Logic Cells). Традиционно FPGA реализуется в виде матрицы логических эле- ментов, между которыми находится программируемое поле межсоединений (рис. 1.8), а по краям располагаются блоки ввода-вывода (Input-Output Block — IOB). Кроме основных компонентов для логического преобразования сигналов, архи- тектуры CPLD и FPGA также содержат целый ряд вспомогательных компонентов, таких как: • периферийная шина для передачи сигналов управления элементами ввода/вы- вода; • специализированные (dedicated) входы и связанные с ними деревья трассировки глобальных сигналов (синхронизации, разрешения выходных буферов, установки или сброса триггеров); • генераторы синхросигналов; • специализированные выводы для программирования (конфигурирования); • схемы граничного сканирования JTAG и др. 1.1.7. Системы на одном кристалле (SoC) Очевидно, что ресурсов одной CPLD или FPGA недостаточно для построения всей цифровой системы. С увеличением степени интеграции появилась возможность на одном кристалле располагать такие компоненты системы, как процессор, память, периферийные устройства, а также CPLD или FPGA (рис. 1.9). Такие микросхемы получили название система на кристалле (СнК — System On Chip — SoC), иногда встречается аббревиатура SOPC (System On one Programmable Chip). Отличительной чертой SoC является наличие в архитектуре процессора, в ка- честве которого часто выступает микро- контроллер, а также область программи- руемой логики (FPGA/CPLD) для быст- рого выполнения специальных функций. Именно наличие области FPGA/CPLD в архитектуре SoC отличает микросхемы SoC от однокристальных компьютеров. Термин ПЛИС обозначает все виды программируемых пользователем логиче- ских микросхем, т. е. PLD, CPLD, FPGA и SoC (SOPC). Отметим, что многие со- временные FPGA и SoC позволяют работать не только с логическими (принимаю- щими два уровня напряжений, обозначающих логические 0 и 1), но и с аналоговыми сигналами. Поэтому, как было сказано ранее, термин программируемые логические интегральные схемы не совсем точно отражает объекты, которые он обозначает. 1.1.8. Применение CPLD, FPGA и SoC Современные проекты обычно реализуются в виде сложных электронных систем, при этом на плате могут устанавливаться различные классы микросхем: процессоры, микроконтроллеры, программируемая логика (CPLD, FPGA и SoC), память, анало- говые микросхемы, контроллеры периферийных устройств и др. Отсюда возникает вопрос: какое место в электронных системах занимают компоненты программиру- емой логики? В настоящее время используются все три типа программируемой логики: CPLD, FPGA и SoC. CPLD в электронных системах используется: Микроконтроллер/ микропроцессор Память Ввод/вывод Другие модули Программируемая область со структурой FPGA/CPLD Рис. 1.9. Обобщенная структура SoC
14 Раздел 1 • для управления порядком подачи напряжений на микросхемы системы; • управления конфигурированием FPGA и других конфигурируемых компонентов системы; • преобразования уровней напряжений сигналов для частей системы, работающих с сигналами с различными уровнями напряжения; • реализации сложных и быстрых конечных автоматов (контроллеров). FPGA в электронных системах используется: • для реализации электронных систем малой и средней сложности; • в качестве сопроцессоров для высокопроизводительной обработки информации и реализации специальных функций, например, при цифровой обработке сигналов. SoC в электронных системах используется: • для реализации всей электронной системы или некоторых ее частей на одной микросхеме. Кроме того, FPGA часто применяются в качестве прототипа (макета) специали- зированных микросхем ASIC. При этом проект вначале реализуется на FPGA, прове- ряются основные концепции и идеи, заложенные в проект, а затем проект переносится на ASIC. Использование FPGA в качестве прототипа ASIC позволяет значительно со- кратить время и стоимость разработки проекта. 1.1.9. Технологии проектирования на основе ПЛИС Появление ПЛИС изменило традиционное проектирования цифровых систем. Вместо долгой и утомительной процедуры разработки принципиальной схемы про- екта, а также выполнения всех последующих действий (отладки, проектирования пе- чатной платы и др.), стало возможным описать функции проекта на языке проекти- рования и выполнить программирование ПЛИС. В общем случае проектирование на основе ПЛИС представляет собой новую идео- логию проектирования электронных систем, когда один разработчик может в домаш- них условиях создать сложную электронную систему. Но не все так просто. Для создания электронной системы проектировщик должен обладать целым рядом опре- деленных знаний и навыков, которые называются технологиями проектирования на основе ПЛИС. К таким технологиям относятся: • архитектуры ПЛИС; • языки проектирования; • программные и аппаратные средства автоматизированного проектирования; • блоки интеллектуальной собственности (IP-ядра) и проектирование на основе IP- ядер; • методологии проектирования на основе ПЛИС; • цифровая обработка сигналов; • проектирование со встроенными микропроцессорами; • проектирование интерфейсов; • отладка проектов; • проектирование печатных плат для проектов на ПЛИС; • обеспечение целостности сигналов; • энергосбережение; • конфигурирование ПЛИС; • динамическое и частичное реконфигурирование ПЛИС; • защита проекта и др.
Программируемые логические интегральные схемы 15 Архитектуры ПЛИС. Разработчик электронных систем на основе ПЛИС обязан очень хорошо знать архитектуру используемой микросхемы. Это очевидно. Разра- ботчик также должен знать все архитектуры ПЛИС, выпускаемые данным произ- водителем, чтобы выбрать наиболее подходящую микросхему. Желательно также знать архитектуры ПЛИС других производителей, чтобы сравнивать их возможности с требованиями проекта и, может быть, перейти к проектированию на ПЛИС дру- гого производителя. Хорошее знание архитектуры ПЛИС позволяет: • разрабатывать эффективные проекты, которые в наибольшей степени использу- ют имеющиеся архитектурные возможности ПЛИС; • не тратить время на разработку функциональных блоков, которые включаются в проект установкой одной опции (автор неоднократно наблюдал такие ситуации у начинающих разработчиков); • разрабатывать проекты с минимальной потребляемой мощностью, максималь- ным быстродействием, минимальной стоимостью и за короткий промежуток вре- мени. Языки проектирования. Фактически, использование языков описания аппара- туры — это новая технология проектирования цифровых систем, кардинально от- личающаяся от различных схемотехнических подходов, связанных с использованием графических редакторов. Современные языки проектирования позволяют не только описывать структуру и поведение устройства, но также подготавливать последова- тельность тестовых векторов для анализа, выполнять проверку результатов модели- рования, эмулировать внешнюю среду проекта, различными способами отображать результаты моделирования и др. Другими словами, язык проектирования — это мощный инструмент, использу- емый на многих этапах представления проекта: от системного уровня до уровня отдельных транзисторов, и на многих этапах разработки проекта: от логического синтеза до функционального и временного моделирования. Наиболее широко используемыми языками проектирования в настоящее время являются Verilog [1] и VHDL, на системном уровне используются языки SystemVerilog, SystemC, C/C++ и др. Средства автоматизированного проектирования. Разработка современной элек- тронной системы невозможна без использования средств автоматизированного про- ектирования, которые делятся на программные и аппаратные. Программные средства проектирования, как правило, обеспечивают: • ввод проекта (текстовый, графический, смешанный); • библиотеку примитивов и стандартных функциональных блоков; • компиляцию проекта (нахождение ошибок, формирование базы данных и машин- ного представления проекта); • функциональное и временное моделирование; • отображение проекта на структуру конкретной ПЛИС; • программирование (конфигурирование) ПЛИС. Кроме того, современные средства проектирования предоставляют целый ряд дополнительных программ для: • цифровой обработки сигналов; • проектирования на основе 1Р-ядер; • оценки и оптимизации потребляемой мощности; • высокоуровневого проектирования; • проектирования на основе встроенных процессоров;
16 Раздел 1 • интеграции отдельных частей цифровой системы в одно целое; • разработки проектов на основе SoC и др. Аппаратные средства проектирования. Все аппаратные средства проектирования на ПЛИС можно разделить на следующие категории: • программаторы; • кабели для программирования ПЛИС в системе (на плате) или для конфигури- рования ПЛИС; • учебные платы; • макетные платы; • комплекты разработчиков (development kits). Как было сказано ранее, программаторы — это специальные устройства для про- граммирования ПЛИС и конфигурационных ППЗУ. Конфигурационные ППЗУ служат источником данных в режимах конфигурирования, когда ПЛИС выступает в качестве главного (управляющего) устройства. В этом случае ПЛИС автоматически сама себя конфигурирует, загружая данные из ППЗУ, при каждом включении питания. Кабели для программирования используются при конфигурировании или про- граммировании ПЛИС в системе от персонального компьютера. Учебные платы используются при обучении студентов различным вопросам про- ектирования электронных систем на основе ПЛИС. Обычно учебные платы содержат кнопочные переключатели для подачи входных сигналов, светодиоды для отобра- жения состояний выходных сигналов, семисегментные дисплеи, дисплеи типа LCD, контроллеры стандартных интерфейсов (VGA, PS/2, RS-232, USB, 12С), гнезда для подключения внешней памяти, дополнительные разъемы для внешних выводов и др. ПЛИС на учебных платах обычно конфигурируются от персонального компьютера с помощью кабеля для программирования. Макетные платы — это более сложные устройства по сравнению с учебными пла- тами. Они предназначены для физической отладки проектов на ПЛИС конкретного семейства. Часто макетные платы ориентированы на определенную область приме- нения: цифровая обработка сигналов, проектирование со встроенными микропроцес- сорами, проектирование систем телекоммуникации и др. Комплекты разработчиков представляют собой полный набор программных и ап- паратных средств, достаточных для разработки электронной системы на ПЛИС опре- деленного семейства. Комплекты разработчиков также ориентированы на определен- ную область применения. Комплект разработчика обычно включает: программное средство проектирования, макетную плату, библиотеку IP-ядер, кабели для конфи- гурирования и др. Блоки интеллектуальной собственности (IP-ядра). Чтобы два раза «не изобре- тать велосипед», были придуманы блоки интеллектуальной собственности (Intellectual Property — IP), или просто IP-ядра. IP-ядро представляет собой некоторый ранее разработанный отлаженный и сертифицированный проект, который предлагается для использования как составная часть в других проектах. Из IP-ядер формируются биб- лиотеки, которые постоянно пополняются. В базовую комплектацию промышленных программных средств проектирования может входить часть этих библиотек. За дополнительную плату можно приобрести библиотеки IP-ядер таких компо- нентов, как основные арифметические блоки, приемопередатчики, контроллеры ин- терфейсов протоколов, контроллеры памяти, микропроцессоры, блоки DSP, а также библиотеки IP-ядер для решения задач проектирования из очень широкой области использования: обработка звука, обработка видеоинформации и изображений, авто- мобильная электроника, основная логика, интерфейсные шины и ввод-вывод, сети и
Программируемые логические интегральные схемы 17 телекоммуникация, цифровая обработка сигналов, математика, интерфейсы памяти, сетевые базы данных и др. Библиотеки IP-ядер предлагают уже готовые проекты в таких областях, как мо- дуляция и демодуляция сигналов; коррекция ошибок; видео и обработка изображений; беспроводная связь; широковещательная передача; промышленность; робототехника; медицина; космос и оборона; автомобильная техника и др. Кроме того, промышленные программные проекты автоматизированного проек- тирования предоставляют специальные средства проектирования на основе 1Р-ядер, а также генераторы 1Р-ядер. Методологии проектирования на основе ПЛИС. Среди всего разнообразия мето- дологий проектирования кратко рассмотрим только модульное, пошаговое и вирту- альное проектирование, которые используются при разработке электронных систем на ПЛИС. Технологические и архитектурные особенности ПЛИС позволили предложить но- вые методологии проектирования: модульное и пошаговое проектирование. Архитек- тура современных FPGA часто строится в виде столбцов различного типа. Каждый тип столбцов состоит из функциональных блоков определенного вида: логических, цифровой обработки сигналов, ввода-вывода, памяти и др. При модульном проектировании каждая часть модуля проекта может разрабаты- ваться независимыми группами инженеров. В последующем разработанный модуль размещается в одном или нескольких соседних столбцах ПЛИС, причем никакая дру- гая логика в эти столбцы размещена быть не может. Несмотря на некоторую избыточ- ность по стоимости модульного проектирования, гарантируется сохранение основных параметров каждого модуля независимо от их расположения в ПЛИС. Пошаговое проектирование разрешает модифицировать любой столбец ПЛИС на уровне регистровых передач. При этом в столбец может быть добавлена некоторая логика, что запрещено при модульном проектировании. Сочетание модульного и по- шагового проектирования обеспечивает достаточно хорошие результаты. Виртуальное проектирование позволяет значительно сократить время разработки проекта. На уровне регистровых передач схема проекта, как правило, имеет иерар- хическое представление. Однако средства размещения и трассировки ПЛИС преоб- разуют его в плоское или одноуровневое представление. В результате, если произ- вести незначительные изменения в одном из блоков на уровне регистровых передач и пересинтезировать только этот блок, все равно будет выполнен повторный синтез всего устройства. Концепция виртуального макетирования ПЛИС позволяет выполнять планиро- вание компоновки кристалла и осуществлять предварительный временной анализ до выполнения этапов размещения и разводки. Данный подход позволяет также выпол- нять синтез, размещение и разводку индивидуально для каждого блока устройства. В результате значительно сокращается время разработки устройства. Цифровая обработка сигналов (digital signal processing — DSP). Цифровая об- работка сигналов является неотъемлемой частью современных электронных систем на ПЛИС. Технология проектирования на ПЛИС DSP-приложений поддерживается на разных уровнях: • архитектуры FPGA включают специальные DSP-блоки для высокой скорости вы- полнения операций цифровой обработки сигналов; • промышленные программные пакеты включают специальные программные сред- ства (редактор DSP, генератор DSP);
18 Раздел 1 • библиотека IP-ядер содержит широкий набор элементов для реализации как от- дельных DSP-приложений (фильтры, аналогоцифровые и цифро-аналоговые пре- образователи, вычислители тригонометрических функций, модули быстрого пре- образования Фурье и др.), так и уже готовые проекты, требующие минимальной адаптации. Все программные средства проектирования DSP-приложений, как правило, рабо- тают совместно с пакетом MATLAB/Simulink. В электронных системах FPGA часто выступают в качестве DSP-процессоров и по своей производительности часто пре- восходят стандартные DSP-процессоры. Проектирование со встроенными микропроцессорами. Современные ПЛИС мо- гут содержать микропроцессоры (или микроконтроллеры). Имеется два способа ре- ализации микропроцессоров в ПЛИС: аппаратный и программный. При аппаратной реализации микропроцессора часть кристалла изначально отводится под микропро- цессор, а оставшаяся часть — под ПЛИС. В таком случае микросхема ПЛИС называ- ется системой на кристалле (System on Chip — SoC). При программной реализации микропроцессора часть кристалла ПЛИС конфигурируется для реализации функций м и кроп роцессора. Имеется два способа аппаратной реализации микропроцессора в ПЛИС. В первом из них микропроцессор реализуется в виде отдельной полосы (решение фирмы Altera), содержащей процессорное ядро, ОЗУ, элементы ввода-вывода и другие процессорные устройства. Эта процессорная полоса может реализовываться на одном кристалле ПЛИС или на отдельном кристалле, который объединяется с ПЛИС в одном корпусе. Во втором способе микропроцессор реализуется непосредственно в структуре ПЛИС (решение фирмы Xilinx). Имеется также два способа программной реализации микропроцессора. В первом (soft) микропроцессор описывается на уровне RTL и реализуется на ПЛИС вместе с остальной логикой проекта. Во втором случае (firm) микропроцессорное ядро реали- зуется в виде уже размещенных и разведенных конфигурируемых блоков, такая реа- лизация называется микропрограммной. Программная реализация микропроцессора медленнее аппаратной. Преимуществом программной реализации микропроцессора является то, что микропроцессор может быть реализован на любой FPGA, которая располагает достаточным количеством ресурсов. Кроме того, на одной ПЛИС может быть реализовано несколько микропроцессорных ядер и таким образом может быть построена мультипроцессорная система. Кроме рассмотренных подходов реализации микропроцессоров, предлагаемых производителями ПЛИС, любые микропроцессоры и микроконтроллеры могут быть реализованы на ПЛИС программно с помощью соответствующих 1Р-ядер. Проектирование интерфейсов. Данную технологию можно разделить на три час- ти: приемопередатчики, интерфейсы внешней памяти и интерфейсы стандартных протоколов. Приемопередатчики представляют собой высокоскоростные последовательные соединения типа точка-точка, используемые для соединения различных микросхем на одной плате. Для реализации таких соединений используются дифференциаль- ные пары (differential pairs). Имеется много различных стандартов, поддерживаемых приемопередатчиками: Fibre Channel (оптический кабель), InifiniBond, PCI Express, RapidlO, SkyRoil, 10G Ethernet и др. Важными параметрами, которыми характеризуются приемопередатчики, являют- ся: восстановление синхронизации (clock data recovery— CDR); глазковая диаграмма или глазковая маска; окно достоверности данных. Приемопередатчики, реализуемые
Программируемые логические интегральные схемы 19 в ПЛИС, часто позволяют конфигурировать некоторые свои параметры. Наиболее часто конфигурируются следующие параметры приемопередатчиков: • определение разделителей; • амплитуда выходного сигнала; • согласующие резисторы выходных буферов; • внесение предискажений; • реализация компенсации. При проектировании микропроцессорных и встроенных систем на ПЛИС часто объема памяти внутренних (встроенных) блоков ПЛИС бывает недостаточно. В этом случае используются внешние микросхемы памяти, для которых на ПЛИС необходимо предусмотреть соответствующие интерфейсы. Современные ПЛИС поддерживают интерфейсы со следующими типами памяти: DDR4, DDR3 SDRAM, DDR2 SDRAM, LPDDR3, LPDDR2, RLDRAMII, RLDRAMIII, QRDII SRAM, QRDII+SRAM. Реализация интерфейсов внешней памяти поддерживается усовершенствованной архитектурой ПЛИС, специальным программным обеспечением (настраиваемыми функциями, генератором интерфейса памяти), эталонными проектами, демонстра- ционными платами и моделями для компьютерного моделирования. ПЛИС также поддерживают ряд интерфейсов стандартных протоколов, среди ко- торых особое место занимает стандарт шины PCI Express. Протокол PCI Express, называемый также PCIe, является последовательным интерфейсом общего назначе- ния, который может использоваться в устройствах связи, во встроенных системах, в серверах, мобильных и настольных приложениях, системах хранения данных и др. Протокол PCI Express может также использоваться в качестве интерфейса перифе- рийных устройств, интерфейса от микросхемы к микросхеме и моста к другим стан- дартам, таким как 1394b, USB2.0, InfiniBand™ и Ethernet. Интерфейсы стандартных протоколов в ПЛИС поддерживаются настраиваемыми IP-ядрами, макетными платами и эталонными примерами. Отладка проектов. Главной проблемой при отладке систем на ПЛИС является то, что отсутствует возможность установить пробник внутри ПЛИС. Имеется мно- го различных подходов к решению данной проблемы. Одним из них является метод граничного сканирования (boundary scan), суть которого заключается в том, что все триггеры устройства последовательно соединяются в одну цепочку, в результате обра- зуется один большой сдвиговый регистр. Значение этого сдвигового регистра может последовательно выводиться на внешние контакты, например, по JTAG-формату. Од- нако с увеличением размера ПЛИС данный подход становится весьма трудоемким и мало пригодным для практического использования. Для отладки проектов на современных ПЛИС используют специальные програм- мные средства, называемые логическими анализаторами. Логический анализатор позволяет исследовать поведение внутренних сигналов во время работы проекта на ПЛИС без использования внешних выводов. Другими словами, логический анализа- тор помогает отлаживать проект на ПЛИС, зондируя состояние внутренних сигналов в проекте без использования внешнего оборудования. Данные, полученные с помощью логического анализатора, могут храниться в памяти ПЛИС, а также в определенные моменты времени выводиться на внешние интерфейсы. Проектирование печатных плат для проектов на ПЛИС. Значительное увеличение быстродействия и числа выводов ПЛИС привело к возникновению ряда проблем у разработчиков печатных плат.
20 Раздел 1 Увеличение быстродействия микросхем непосредственно связано с увеличением крутизны фронтов сигналов, которая, в свою очередь, приводит к увеличению уров- ня шума и перекрестных помех. В связи с этим при разработке плат необходимо применять дополнительные меры по анализу искажений сигналов и их устранению. Современные стандарты высокоскоростных интерфейсов ввода-вывода требуют строго определенных значений волнового сопротивления подключаемых проводников. ПЛИС позволяют конфигурировать внутренние согласующие резисторы для удовлет- ворения требованиям различным стандартам. Более того, многие ПЛИС поддержива- ют опцию цифрового управления импедансом (digitally controlled impedance — DCI), которая позволяет автоматически выполнять согласование значения волнового со- противления в зависимости от изменений температуры и напряжения питания. В ряде случаев многие проблемы передачи сигналов на печатной плате могут быть решены путем отказа от передачи параллельных данных и перехода на высо- коскоростную последовательную передачу данных, например, с помощью реализован- ных в ПЛИС универсальных асинхронных приемопередатчиков (universal asynchronous receiver/traHcmitter — UART). Еще одна проблема печатных плат при использовании ПЛИС — это пиковые зна- чения тока напряжения питания при включении системы. Для решения этой проблемы часто на плату системы устанавливается CPLD, которая управляет порядком подачи напряжений питания на все FPGA и SoC, расположенные на плате. Обеспечение целостности сигналов. Понятие целостности сигналов включает в себя ряд различных аспектов, таких как изменение формы сигнала при его прохож- дении через проводник, отражение сигнала от конца несогласованного проводника, а также перекрестные помехи. Все эти явления присущи как сигналам внутри крис- талла, так и сигналам на плате. Проблемы целостности сигналов внутри кристалла уже решены производителями ПЛИС, в то время как на плате эти проблемы должен решать пользователь. Когда сигнал в одном из соседних проводников переходит с одного логического уровня на другой, то он провоцирует кратковременную импульсную помеху в дру- гом проводнике. При этом первый проводник называется «агрессором», а второй — «жертвой». Такого рода помехи также называются перекрестными, поскольку «жерт- ва» также может оказывать воздействие на «агрессора». Перекрестные помехи провоцируют возникновение шумов и задержку сигналов. Кроме того, проводников- агрессоров может быть несколько. Точный анализ современных схем требует, чтобы влияние каждого проводника-агрессора было проанализировано и учтено индивиду- ально. Перекрестные помехи на платах также называются коммутационными шумами. В качестве обратной цепи для коммутационных шумов служит «земля». Когда не- сколько сигнальных цепей используют одну и ту же цепь обратной связи (т. е. цепь земли), то коммутационные шумы проходят по общей цепи и называются шумами общего провода. Для уменьшения влияния шумов общего провода сигнальные цепи должны, по возможности, иметь различные общие провода. Поэтому микросхемы ПЛИС имеют множество выводов цепей земли и питания, которые стараются рав- номерно распределить на корпусе микросхемы. При монтаже микросхемы ПЛИС на плате все выводы земли и питания должны быть подсоединены — это способствует уменьшению шумов общего провода. С возрастанием скорости передачи сигналов обостряются проблемы целостности сигналов. Одним из путей решения этих проблем является использование дифферен- циальных пар вместо отдельных проводников. Отметим, что буферы ввода-вывода
Программируемые логические интегральные схемы 21 ПЛИС поддерживают большое число стандартов с дифференциальными выводами. Второй способ — использование внутренних согласующих резисторов вместо внеш- них резисторов. Большинство ПЛИС также позволяют конфигурировать внутренние согласующие резисторы. Энергосбережение. Энергосбережение представляет собой серьезную проблему, которая должна решаться на всех уровнях проектирования системы на ПЛИС. Про- изводители ПЛИС предоставляют ряд технологий (методов) для снижения энергос- бережения, а также программные средства для оценки энергопотребления проекта. Энергосбережение ПЛИС поддерживается: • многочисленными опциями для снижения потребляемой мощности в различных элементах архитектуры ПЛИС; • анализатором потребляемой мощности; • опцией снижения потребляемой мощности в программных средствах автомати- зированного проектирования. Конфигурирование ПЛИС. Чтобы разработать эффективную электронную систе- му на ПЛИС, важно рассмотреть, какой режим конфигурирования ПЛИС лучше всего соответствует требованиям системы. В общем случае современные ПЛИС допускают 5 режимов конфигурирования: • последовательная загрузка, ПЛИС в режиме ведущий (master); • последовательная загрузка, ПЛИС в режиме ведомый (slave); • параллельная загрузка, ПЛИС в режиме ведущий (master); • параллельная загрузка, ПЛИС в режиме ведомый (slave); • последовательная загрузка через JTAG-порт. При выборе режима конфигурирования необходимо рассмотреть следующие во- просы: • где будут храниться конфигурационные данные; • время конфигурирования (время готовности системы к работе после включе- ния питания); • стоимость схемы конфигурирования; • предусматривается ли в будущем изменение конфигурационных данных; • предусматривается ли удаленное обновление системы и др. Каждый режим конфигурирования использует определенные контакты ПЛИС и может временно использовать другие многофункциональные контакты только во вре- мя конфигурирования. Когда конфигурирование заканчивается, эти многофункцио- нальные контакты становятся доступными для общего использования. Режим конфи- гурирования может также установить ограничения напряжения для некоторых банков ввода-вывода ПЛИС. Динамическая и частичная реконфигурация ПЛИС. Под динамической реконфи- гурацией понимается конфигурация ПЛИС «на лету», т. е. во время работы системы. В принципе, любую ПЛИС можно переконфигурировать во время работы системы, вот только будет ли после этого система работать. При динамической реконфигура- ции ПЛИС возникает ряд вопросов: • как отключить выводы ПЛИС во время конфигурации; • как сократить время конфигурации; • как сохранить содержимое регистров, установленных до конфигурации; • как сохранить работоспособность системы во время конфигурации ПЛИС и др. Первый вопрос самый простой — для большинства ПЛИС сигнальные выводы во время конфигурации автоматически переводятся в высокоимпедансное состояние. Время конфигурации ПЛИС можно сократить путем увеличения ширины шины, по
22 Раздел 1 которой передаются конфигурационные данные. Традиционные ПЛИС не позволяют положительно ответить на два последних вопроса. Однако ПЛИС от фирмы Atmel позволяют решить эти проблемы. До недавнего времени необходимость внесения даже небольших изменений в кон- фигурацию ПЛИС требовало переконфигурирования всего устройства. Последние по- коления ПЛИС допускают частичную реконфигурацию устройства. При этом значи- тельно уменьшается время реконфигурации. Защита проекта. Поскольку большинство ПЛИС конфигурируются всякий раз при включении питания, в этот момент возможен несанкционированный доступ к данным конфигурирования. Большинство средств защиты проектов на ПЛИС под- держивают следующие возможности: • встроенное дешифрование по стандарту (AES) с поддержкой 256-разрядного клю- ча, алгоритм безопасности проекта промышленного стандарта (FIPS 197 Certi- fied); • энергозависимая и энергонезависимая программная поддержка ключа; • ограничение доступных инструкций стандарта JTAG во время включения питания в безопасном режиме; • поддержка аутентификация POF и защита от атаки по сторонним каналам; • отключение всех инструкций JTAG от момента включения питания, до момента, пока устройство не инициализировано. В мире известно около двух десятков фирм — разработчиков и производителей ПЛИС. Одним из таких производителей является фирма Xilinx, занимающая 30...40 % всего мирового объема производства ПЛИС. Данная книга посвящена рассмотрению архитектур ПЛИС фирмы Xilinx, т. е. пер- вой из технологий проектирования на основе ПЛИС. 1.2. ПЛИС фирмы Xilinx 1.2.1. Историческая справка Первые ПЛИС фирмы Xilinx по архитектуре FPGA начали производиться в сере- дине 80-х годов прошлого столетия. Изобретателями FPGA фирмы Xilinx считаются Росс Фримен (Ross Freemen) и Бернард Вондершмитт (Bernard Vonderschmitt). До появления FPGA фирмы Xilinx уже были известны и широко использовались PLD со структурой PAL. Однако сложные системы строились на основе заказных микросхем ASIC и полузаказных микросхем вентильных матриц. Отсюда возник естественный вопрос: а нельзя ли соединить возможность программирования микросхем пользо- вателем с мощностью заказных ASIC. Эту проблему решила фирма Xilinx, предло- жив программируемые пользователем вентильные матрицы (Field Programmable Gate Arrays — FPGA). Первые FPGA изготавливались по CMOS-технологии, а для хранения информа- ции использовалось энергозависимое статическое ОЗУ (SRAM). FPGA фирмы Xilinx организованы в виде массива логических элементов (Logic Element) или логических ячеек (Logic Cell), состоящих из функциональных генераторов LUT, представляющих собой таблицу перекодировки (Look-Up Table — LUT), мультиплексоров и триггеров. Логические элементы в FPGA фирмы Xilinx группируются в виде конфигурируемых логических блоков (Configurable Logic Blocks — CLB). В настоящее время фирма Xilinx производит такие классы микросхем програм- мируемой логики, как CPLD, FPGA и SoC.
Программируемые логические интегральные схемы 23 1.2.2. CPLD фирмы Xilinx Фирмой Xilinx выпускается две серии ПЛИС с архитектурой CPLD: XC9500XL и CoolRunner-IL CPLD фирмы Xilinx строятся на основе популярной архитектуры PAL: программируемая матрица AND и фиксированная матрица OR. Оособенностями CPLD фирмы Xilinx являются: • высокая производительность (задержка сигналов от входа до выхода — до 5 нс); • возможность перепрограммирования в системе (не менее 10 000 циклов запись/ стирание); • программируемый режим пониженной потребляемой мощности для каждой мак- роячейки; • расширенная возможность защиты запрограммированной информации от копи- рования; • мощный выход (24 мА); • малая статическая потребляемая мощность; • широкий выбор корпусов упаковки; • простота использования. Семейство XC9500XL разрабатывалось для тесного взаимодействия с FPGA се- мейств Virtex, Spartan и XC4000XL, позволяя системным проектировщикам оптималь- но разделять логику между быстрыми интерфейсными схемами, какими являются CPLD, и устройствами с высокой логической плотностью, т. е. FPGA. Параметры CPLD семейства XC9500XL представлены в табл. 1.1. Таблица 1.1 Параметры CPLD семейства XC9500XL Параметр XC9536XL XC9572XL XC95144XL XC95288XL Число системных вентилей Число макроячеек Максимальное число термов, подсоединяемых к одной макроячейке Число глобальных синхросигналов Чисор локальных синхросигналов функционального блока Число пользовательских выводов Уровни входных сигналов, В Уровни выходных сигналов, В Задержка на комбинационной части, нс Максимальная частота функционирования, МГц 800 36 90 3 18 36 2,5/3,3/5 2,5/33 5 178 1600 72 90 3 18 72 2,5/3,3/5 2,5/3,3 5 178 3200 144 90 3 18 117 2,5/3,3/5 2,5/3,3 5 178 6400 288 90 3 18 192 2.5/3.3/5 2,5/3,3 6 208 Таблица 1.2 Параметры CPLD семейства CoolRunnerll Параметр ХС2С32А ХС2С64А ХС2С128 ХС2С256 ХС2С384 ХС2С512 Число системных вентилей 750 1500 3000 6000 9000 12000 Число макроячеек 32 64 128 256 384 512 Число пользовательских выводов 33 64 100 184 240 270 Задержка на комбинационной 3,8 4,6 5,7 5,7 7,1 7,1 части, нс Максимальная частота функцио- нирования, МГ ц 323 263 244 256 217 179 Число блоков ввода-вывода 2 2 2 2 4 4 Делитель синхросигнала (Clock — — X X X X Devider) Управление энергопотреблением (DataGATE) — — X X X X
24 Раздел 1 Микросхемы семейства CoolRunnerll, по сравнению с семейством XC9500XL, об- ладают большим быстродействием, меньшим энергопотреблением и проще в исполь- зовании. Области применения микросхем семейства CoolRunnerll: высокоскоростные системы передачи данных, вычислительные системы, портативные устройства. Параметры CPLD семейства CoolRunnerll представлены в табл. 1.2. 1.2.3. FPGA фирмы Xilinx Несмотря на ряд положительных качеств CPLD, производимых фирмой Xilinx, все-таки наибольшую популярность, мировое признание и 30...40 % мирового объема программируемой логики фирме Xilinx приносят ее FPGA. В свое время фирма Xilinx в больших объемах производила такие семейства FPGA, как ХС2000, ХС3000, ХС4000, Spartan-Il, Spartan-3, Virtex-4, -5, -6. До недавнего времени верхом совершенства считалась и до сих пор широко используется архитектура FPGA семейства Spartan-6. Однако в 2012 году фирма Xilinx предложила новую линейку семейств FPGA 7-й серии: Artix-7, Kintex-7 и Virtex-7. По утверждению фирмы Xilinx, в FPGA 7-й се- рии воплотились все мировые достижения в области разработки архитектур FPGA, причем не только фирмы Xilinx. Для сравнения возможностей микросхем из различ- ных семейств в табл. 1.3 приведены максимальные значения основных параметров микросхем FPGA 7-й серии и Spartan-б из предыдущего поколения ПЛИС. Таблица 1.3 Максимальные значения параметров FPGA фирмы Xilinx Параметр Spartan-6 Artix-7 Kintex-7 Virtex-7 Число логических ячеек Объем памяти в блоках RAM, Мбит Число секций DSP Производительность DSP1, GMAC/c Приемопередатчиков Скорость приемопередатчиков, Гбит/с Скорость интерфейса памяти (DDR3), Мбит/с Скорость последовательного интерфейса (Full Duplex), Гбит/с Интерфейс PCI Express Число пользовательских выводов Напряжение сигналов ввода-вывода, В Конфигурация AES Аналогово-цифровой преобразователь XADC Решение EasyPath для снижения стоимости Опции упаковки 1. Пиковая производительность при реализации 2. GMAC/c — миллиардов операций умножени 150000 4,8 180 8 3,2 800 xl Gen2 576 1,2/1,5/1,8/ 2,5/3,3 Да Нет Нет фильтра с сиг я в секунду. 215000 13 740 9252 16 6,6 1066 211 х4 Gen 2 500 1.2/ Да Да Нет Low-Cost, Wire- Bond, Lidless Flip-Chip иметричным 478000 34 1920 2845 32 12,5 1866 800 x8 Gen 2 500 '1,35/1,5/1,8/; Да Да Да Low-Cost, Lidless Flip-Chip, High Performance Flip-Chip и коэффициен 1955000 68 3600 5335 96 28,05 1866 2784 x8 Gen3 1200 >.5/3,3 Да Да Да Highest Performance Flip-Chip гами. 1.2.4. Микросхемы UltraScale Устройства UltraScale представляют собой микросхемы, которые изготавлива- ются по архитектуре FPGA, но имеют более высокую степень интеграции, поскольку изготавливаются по технологиям 20 и 16 нм. Имеется два семейства FPGA UltraScale: Kintex UltraScale и Virtex UltraScale. Как не трудно догадаться по названию, первое из
Программируемые логические интегральные схемы 25 Таблица 1.4 Максимальные параметры FPGA UltraScale Параметр Kintex UltraScale Virtex UltraScale Число логических ячеек Объем памяти блоков RAM, Мбит Число секций DSP Производительность DSP Число приемопередатчиков Скорость приемопередатчиков, Гбит/с Общая полоса пропускания, Гбит/с Интерфейс памяти (DDR3) Интерфейс PCI Express Поддержка смешанных сигналов Число двунаправленных выводов Напряжение двунаправленных выводов, В 1160880 76 5520 8180 GMACs 64 16,3 2086 2400 х8 Gen 3 Системный монитор 832 1,0...3,3 4407480 132,9 2880 4268 GMACs 120 32,75 5886 2400 x8 Gen 3 Системный монитор 1456 1,0...3,3 этих семейств основано на архитектуре Kintex-7, а второе — на Virtex-7. Отличают- ся эти семейства только параметрами, максимальные значения которых приведены в табл. 1.4. В FPGA UltraScale применяются передовые технологии ASIC, используется син- хронизация, подобная ASIC, усовершенствованы межсоединения и, самое главное, FPGA UltraScale относятся к микросхемам, изготавливаемым по технологии 3D. Основные особенности архитектуры FPGA UltraScale: • быстродействующая память; • усовершенствована архитектура блоков DSP; • повышена пропускная способность внутри кристалла и оптимизирован интерфейс микросхем памяти 3D; • увеличена пропускная способность ввода-вывода и памяти, включая поддержку памяти следующего поколения; • возможно управление питанием со значительным объемом помех; • применяется система безопасности проекта следующего поколения. 1.2.5. Микросхемы SoC На основе FPGA 7-й серии фирмой Xilinx производятся микросхемы семейства Zynq 7000, которые относятся к классу систем на кристалле SoC. В устройствах Zynq 7000 процессорное ядро реализовано аппаратно. Основные параметры процессора в микросхемах SoC семейства Zynq 7000 приведены ниже. Процессор............................................... Чисор выводов процессорной системы...................... Сопроцессор для операций с плавающей точкой............. Частота................................................. Кэш L1.................................................. Кэш L2.................................................. Dual ARM Cortex-A9 MPCore 130 NEON&Single 800 МГц 32 Кбит команд и 32 Кбит данных 512 Кбит Встроенная память..................................... Поддерживаемая внешняя память......................... Поддерживаемая внешняя статическая память............. Каналы DMA............................................ Выводов периферийных устройств в статической памяти.. Периферийные устройства.............................. 256 Кбит DDR3, DDR2, LPDDR2 2xQuard-SPI, NAND, NOR 8 (4 для FPGA) 54 2xUSB2.0w/DMA, 2xTri-ModeGigabit Ethernet w/DMA, 2xSD/SDIO w/DMA, 2xUART, 2xCAN 2,0 B, 2xl2C, 2xSPI, 4x32bGPIO Программируемая часть микросхем Zynq 7000 строится на основе FPGA семейств Artix-7 и Kintex-7. Параметры FPGA в составе семейства Zynq 7000 представлены в табл. 1.5. 1
26 Раздел 1 Таблица 1.5 Параметры FPGA в составе семейства Zynq 7000 Параметр XC72010 ХС72020 ХС72030 ХС72040 Семейство ПЛИС Artix-7 Artix-7 Kintex-7 Kintex-7 Число логических ячеек (К) 28 85 125 235 Число LUT (К) 17.6 53,2 78,6 147,4 Число триггеров, тыс. 35,2 106,4 157,2 294,8 Число блоков памяти по 36 Кбит 60 140 265 465 Число секций DSP (18x25) 80 220 400 760 Число блоков PCI Express (Gen 2) — — 4 8 Число выводов на 3,3 В 100 200 100 200 Число приемопередатчиков на 10.3G — — 4 12 Число выводов на 1,8 В — — 150 150 1.2.6. Переход от ПЛИС к ASIC В случае больших объемов производства для снижения стоимости ПЛИС мо- гут программироваться на заводе во время их изготовления. С этой целью фирмы, производители ПЛИС, предлагают микросхемы ASIC, которые по всем своим харак- теристикам совпадают с соответствующими микросхемами ПЛИС. Фирма Xilinx производит микросхемы ASIC серии EasyPath-7, EasyPath-6 и Easy- Path, которые соответствуют микросхемам ПЛИС серии Virtex/Kintex-7, Virtex-6 и Virtex соответственно. 1.3. Основные свойства FPGA 7-й серии фирмы Xilinx 1.3.1. Семейства микросхем FPGA 7-й серии FPGA 7-й серии фирмы Xilinx объединяет три семейства FPGA (Artix-7, Kintex-7 и Virtex-7), которые охватывают широкий спектр системных требований: от микросхем малой стоимости для изделий массового производства — до ультравысокой степе- ни интеграции для высокопроизводительных систем цифровой обработки сигналов с высокой пропускной способностью. FPGA 7-й серии фирмы Xilinx включает следующие семейства: • Artix-7 — оптимизировано для наименьшей стоимости и энергопотребления, име- ет малые габариты и рассчитано на использование в изделиях массового про- изводства; • Kintex-7 — совершенно новое семейство FPGA, оптимизировано для наилучшего соотношения цена/производительность, по которому в 2 раза превосходит все предыдущие семейства; • Virtex-7 — оптимизировано для наивысшей степени производительности; допуска- ет 2-х кратное увеличение производительности благодаря применению технологии стековых кремниевых межсоединений (stacked silicon interconnect — SSI). FPGA 7-й серии изготавливаются по 28-нанометровой технологии high-k metal gate (HKMG), которую отличает высокая производительность и малое энергопотреб- ление (low-power — HPL). FPGA 7-й серии представляют собой альтернативу заказ- ным специализированным микросхемам (ASIC) и специализированным процессорам ASSP. Все микросхемы 7-й серии имеют общую архитектуру, организованную в виде столбцов функциональных блоков одного типа. Данная архитектура основана на опти- мизированных функциональных блоках четвертого поколения Advanced Silicon Modular Block (ASMBL) и позволяет сократить время разработки и внедрения системы, а также увеличивает мобильность проектов.
Программируемые логические интегральные схемы 27 1.3.2. Архитектура ASMBL В основе всех FPGA 7-й серии положена архитектура ASMBL (Advanced Silicon Modular Block — оптимизированный кремниевый модульный блок), показанная на рис. 1.10. Feature Options Column Based ASMBL Architecture GlU Global Clock P О High-performance I/O R О High-range I/O I EO Hard IP S HI Mixed Signal TO Transceivers L Ш Logic (sliced E □ Logic (SLICEM) D@ DSP MO Memory CO Clock Management Tile Рис. 1.10. Элементы технологии ASMBL FPGA фирмы Xilinx Applications Domain C Applications В архитектуре ASMBL функциональные блоки различного назначения (логичес- кие, памяти, цифровой обработки сигналов, ввода-вывода, обработки аналоговых сигналов, управления синхронизацией, приемопередатчиков и др.) располагаются на кристалле в виде столбцов (по высоте кристалла). Каждый столбец состоит из функциональных блоков одного типа. Между столбцами функциональных блоков на- ходятся ресурсы межсоединений. В зависимости от области (domain) применения (бытовая электроника, цифровая обработка сигналов или телекоммуникация) микросхемы FPGA 7-й серии могут вклю- чать различные типы столбцов функциональных блоков с необходимой комбинацией свойств. Таким образом образуются семейства и подсемейства FPGA 7-й серии. Особенности архитектуры ASMBL: • устранение геометрических ограничений расположения, таких как зависимости между количеством элементов ввода-вывода и размером матрицы структуры; • улучшение распределения цепей питания и земли, позволяя цепям питания и зем- ли размещаться на кристалле где угодно; • возможность аппаратным IP-блокам (блокам интеллектуальной собственности) масштабироваться независимо друг от друга и окружающих ресурсов. 1.3.3. Технология SSI Новая технология стековых кремниевых межсоединений (Stacked Silicon Intercon- nect — SSI) фирмы Xilinx позволяет вводить в архитектуру FPGA следующий струк- турный уровень, благодаря чему могут создаваться FPGA очень высокой плотности и производительности. Для этого площадь кристалла разделяется на множество супер- логических регионов (Super Logic Regions — SLR), которые объединяются с помощью супердлинных линий (Super Long Line — SSL) (рис. 1.11). Таких пассивных соединений в FPGA, по которым сигналы передаются с очень высокой скоростью (с задержкой около 1 нс), может быть более 10000. Технология SSI применяется только в FPGA семейства Virtex-7. Имеется два типа областей SLR, используемых в семействе Virtex-7: с повышенным количеством
28 Раздел 1 внутренней логики, используются в подсемействе Т, и с большим количеством блоков DSP, RAM и приемопередатчиков, используются в подсемействах XT и НТ. 1.3.4. Свойства FPGA 7-й серии Основные свойства FPGA 7-й серии: • напряжение питания ядра 1,0 В с возможностью снижения до 0,9 В; • архитектура основана на технологии 6-входовых функциональных генераторах LUT (Look-Up Table), с возможностью конфигурирования как распределенная память RAM (Distributed RAM — DRAM); • включают двухпортовые блоки памяти RAM на 36 Кбит с встроенной логикой для организации памяти типа FIFO для буферизации данных на кристалле; • в архитектуре реализована высокопроизводительная технология ввода-вывода Se- lectlO для поддержки интерфейсов к внешней памяти DDR3 со скоростью пере- дачи данных до 1,866 Мбит/с; • включают высокопроизводительные последовательные интерфейсы с встроенны- ми приемопередатчиками, которые позволяют передавать данные со скоростью от 600 Мбит/с до 28,05 Гбит/с, обеспечивая специальный режим малого энер- гопотребления, оптимизированный для реализации интерфейса между микросхе- мами на плате (chip-to-chip); • имеется пользовательский конфигурируемый аналоговый интерфейс (configurable analog interface — XADC), соединяющий двойные 12-битовые lMSPS-скоростные аналого-цифровые преобразователи с температурными и электрическими (напря- жения) датчиками на кристалле; • имеются DSP-секции, каждая из которых содержит предварительный сумматор,
Программируемые логические интегральные схемы 29 25x18 умножитель, 48-битовый аккумулятор и сумматор; DSP-секции использу- ются для высокопроизводительной фильтрации, включая фильтрацию с симмет- ричными коэффициентами (symmetric coefficient filtering); • в архитектуре имеются блоки управления синхросигналами (clock management tiles — СМТ), каждый из которых включает один комбинированный блок фазо- вой автоподстройки частоты (ФАПЧ — phase-locked loop — PLL) и один блок управления смешанными режимами синхронизации (mixed-mode clock manager — ММСМ) для высокочастотных и малых флуктуаций (колебаний); • имеются интегрированные блоки PC! Express (PCIe) со скоростью передачи по стандартам Gen2 и Gen3 для проектов, включающих корневой порт и конечных пользователей; • обеспечивается широкое разнообразие опций конфигурации, включая поддерж- ку для стандартных микросхем памяти, 256-битовое AES-шифрование с аутети- фикацией HMAC/SHA-256 и встроенной схемой SEU обнаружения и коррекции ошибок; • совместимость корпусов микросхем из разных семейств, упрощающая переме- щение проектов между микросхемами из разных семейств; отсутствие свинца в корпусах. 1.3.5. Семейство Artix-7 Семейство Artix-7 является правопреемником Spartan-б и обладает по сравнению с ним целым рядом преимуществ: вдвое меньшим энергопотреблением и на 30 % уве- личенной производительностью. Устройства семейства Artix-7 являются идеальными для построения портативных устройств. Особенности семейства Artix-7: • оптимизировано для массового производства недорогой продукции; • уменьшено энергопотребление на 50 % и стоимости на 35 % по сравнению с предыдущим семейством Spartan-6; • возможна обработка аналоговых сигналов (технология Analog Mixed Signal); Таблица 1.6 Параметры микросхем семейства Artix-7, подсемейства SL (XC7AnnSL), SLT (XC7AnnSLT) и Т (ХС7АпппТ) Параметр 20SL3 20SLT 35SL 35SLT 50SL 50SLT 75SL 75SLT 100Т 200Т Число логических ячеек 16000 32909 52480 71642 101440 215360 Блоки CLB: число секций 2500 5142 8200 11194 15850 33650 DRAM, Кбит 208 453 688 974 1188 2888 Число секций DSP48E1 60 120 180 240 240 740 Число блоков памяти RAM: 18 Кбит 60 130 190 250 270 730 36 Кбит 30 65 95 125 135 365 Мах Кбит 1080 2340 3420 4500 4860 13140 Число блоков СМТ 3 3 4 4 6 10 Число блоков PCIe х4 Gen2 1 1 1 1 1 1 Число блоков приемопередатчиков GTP 4 4 8 8 8 16 Число блоков XADC 1 1 1 1 1 1 Число банков ввода-вы вода1 5 5 6 6 6 10 Число пользовательских выводов2 216 216 300 300 300 500 1. Не учитывается конфигурационный BankO. 2. Не учитываются выводы приемопередатчиков GTP 3. Микросхемы подсемейства SL не имеют блоков PCIe и GTP.
30 Раздел 1 • максимальная скорость передачи составляет 6,6 Гбит/с; • имеются встроенные блоки DSP48E1 и PCI Express; • изготавливаются в BGA-корпусах. Основные параметры микросхем семейства Artix-7 приведены в табл. 1.6, где DRAM (Distributed RAM) — распределенная память, реализуется на ресурсах логи- ческих блоков СЕВ. Область применения семейства Artix-7 определяется низкой ценой и малым энер- гопотреблением, семейство предназначено для дешевых приложений большого объ- ема включая: • ультразвуковое оборудование; • беспроводные сети; • программируемые контроллеры; • цифровые телевизионные приставки; • автомобильная электроника; • медицинская техника; • промышленные системы контроля и управления. 1.3.6. Семейство Kintex-7 Kintex-7 — это абсолютно новое семейство ПЛИС седьмого поколения, позволя- ющее достичь максимальных показателей цена/производительность. ПЛИС Kintex-7 предназначены для реализации высокопроизводительной логики, цифровой обработ- ки сигналов и последовательных интерфейсов при снижении стоимости на 50 % по сравнению с предыдущим семейством. Устройства семейства Kintex-7 являются иде- альными для построения телекоммуникационных систем, видеообработки, медицин- ской техники. Особенности семейства Kintex-7: • энергопотребление уменьшено на 50 %; • соотношение цена/производительность увеличено вдвое по сравнению с преды- дущим семейством; • возможность обработки аналоговых сигналов (технология Agile Mixed Signal); • максимальная скорость передачи 12,5 Гбит/с; Таблица 1.7 Параметры микросхем семейства Kintex-7 (XC7KnnnT) Параметр 70Т 160Т 325Т 355Т 410Т 420Т 480Т Число логических ячеек 65600 162240 326080 356160 406720 416960 477760 Блоки CLB: число секций 10250 25350 50950 55650 63550 65150 74650 DRAM, Кбит 838 2188 4000 5088 5663 5938 6788 Число секций DSP48E1 240 600 840 1440 1540 1680 1920 Число блоков памяти RAM: 18 Кбит 270 650 890 1430 1590 1670 1910 36 Кбит 135 325 445 715 795 835 955 Мах Кбит 4860 11700 16020 25740 28620 30060 34380 Число блоков СМТ 6 8 10 6 10 8 8 Число блоков PCIe х8 Gen2 1 1 1 1 1 1 1 Число блоков приемопередатчиков GTX 8 8 16 24 16 32 32 Число блоков XADC 1 1 1 1 1 1 1 Число банков ввода-вывода1 6 8 10 6 10 8 8 Число пользовательских выводов2 300 400 500 300 500 400 400 1. Не учитывается конфигурационный BankO. 2. Не учитываются выводы приемопередатчиков GTX.
Программируемые логические интегральные схемы 31 • общий объем памяти до 34,4 Мбит; • BGA-корпуса. Основные параметры микросхем семейства Kintex-7 приведены в табл. 1.7. Область применения семейства Kintex-7 определяется высокой производитель- ностью обработки сигналов и низкой потребляемой мощностью для широкого диа- пазона приложений, включая: • авиационная радиоэлектроника; • дисплеи LED и 3DTV; • узкополосные системы LTE; • переносимое ультразвуковое оборудование; • многорежимное радио; • цифровые камеры; • передача видеоизображений по протоколу IP. 1.3.7. Семейство Virtex-7 Virtex-7 — семейство ПЛИС седьмого поколения, предназначенное для высокоп- роизводительных систем. Переход на новый технологический процесс (28 нм) позво- лил вдвое увеличить емкость и быстродействие по сравнению с семейством преды- дущего поколения Virtex-б при уменьшении энергопотребления на 50 %. Устройства семейства Virtex-7 предназначены для построения систем проводной и беспроводной связи, радаров, гражданских систем обработки информации. Особенности семейства Virtex-7: • включает три подсемейства XT, Т и НТ, оптимизированные для различного при- менения; • включает до двух миллионов логических ячеек; • скорость передачи до 28,05 Гбит/с; • блок обработки аналоговых сигналов (AMS); Таблица 1.8 Параметры микросхем семейства Virtex-7, подсемейство XT (XC7VXnnnT) Параметр ЗЗОТ 415Т 485Т 550Т 690Т 980Т 1140Т Число логических ячеек Блоки CLB: Число секций DRAM, Кбит Число секций DSP48E1 Число блоков памяти RAM: 18 Кбит 36 Кбит Мах Кбит Число блоков СМТ Число блоков PCIe1 Число блоков приемопередатчиков GTX Число блоков приемопередатчиков GTH Число блоков XADC Число банков ввода-вывода2 Число пользовательских выводов3 Число блоков SLR4 1. Блоки PCI Express семейства Virtex-7 пс чением микросхемы XC7VX485T, которая 2. Не учитывается конфигурационный Ваг 3. Не учитываются выводы приемопереда’ 4. Блоки SLR (Super Logic Region — су выполненных по технологии SSL 326400 51000 4388 1120 1500 750 27000 14 2 0 28 1 14 700 >дсемейс поддерж ikO. гчиков G перлогич 412160 64400 6525 2160 1760 880 31680 12 2 0 48 1 12 600 гва XT пс ивает х8 ТХ или ( еская об 485760 75900 8175 2800 2060 1030 37080 14 4 56 0 1 14 700 эддержиЕ Gen2. ЗТН. ласть) Я1 554240 86600 8725 2880 2360 1180 42480 20 2 0 80 1 16 600 >ают инте зляются 693120 108300 10888 3600 2940 1470 52920 20 3 0 80 1 20 1000 ?рфейс х? составнс 979200 153000 13838 3600 3000 1500 54000 18 3 0 72 1 18 880 5 Gen3, з й частьн 1139200 178000 17700 3360 3760 1880 67680 24 4 0 96 1 22 1100 4 а исклю- э FPGA,
32 Раздел 1 Таблица 1.9 Параметры микросхем семейства Virtex-7, подсемейства Т (XC7VnnnT) и НТ (XC7VHnnnT) Параметр XC7V585T XC7V2000T XC7VH580T XC7VH870T Число логических ячеек Блоки CLB: 582720 1954560 580480 876160 число секций 91050 305400 90700 136900 DRAM, Кбит 6938 21550 8850 13275 Число секций DSP48E1 Число блоков памяти RAM: 1260 2160 1680 2520 18 Кбит 1590 2584 1880 2820 36 Кбит 795 1292 940 1410 Мах Кбит 28620 46512 33840 50760 Число блоков СМТ 18 24 12 18 Число блоков PCIe1 3 4 2 3 Число блоков приемопередатчиков GTX 36 36 0 0 Число блоков приемопередатчиков GTH 0 0 48 72 Число блоков приемопередатчиков GTZ 0 0 8 16 Число блоков XADC 1 1 1 1 Число банков ввода-вывода2 17 24 12 13 Число пользовательских выводов3 850 1200 600 650 Число блоков SLR4 — 4 2 3 1. Блоки PCI Express семейства Virtex-7 подсемейства Т поддерживают мейства НТ — х8 Gen3. 2. Не учитывается конфигурационный BankO. 3. Не учитываются выводы приемопередатчиков GTX, GTH или GTZ. интерфейс х8 Gen2, а подсе- 4. Микросхемы подсемейства НТ используют технологию передатчиками со скоростью 28,05 Гбит/с. SSI для соединения блоков SLR с приемо- • встроенные блоки PCI Express Gen2 и Gen3; • объем памяти до 96 Мбит; • производительность блоков DSP до 6,7 TeraMACS. Микосхемы Virtex-7 из всего седьмого семейства имеют самый большой объем логических и специализированных аппаратных ресурсов и по производительности пре- восходят Virtex-6 вдвое. Семейство Virtex-7 можно рассматривать в качестве перспек- тивной элементной базы для высокопроизводительных систем связи нового поколе- ния. Основные параметры микросхем семейства Virtex-7 приведены в табл. 1.8 и 1.9. Область применения семейства Virtex-7 определяется высокой пропускной спо- собностью и широким диапазоном использования, включая: • макетирование заказных микросхем (ASIC); • автоматические приемопередатчики или сетевые карты OTU4 2xl00G; • сетевые карты OLT 10GPON/100GEPON; • сетевые карты 100GE; • оптический приемопередатчик 100G OTN. 1.4. Выводы Программируемые логические интегральные схемы (ПЛИС) — это такие микро- схемы, которые пользователь может сам программировать на выполнение требуемых функций. ПЛИС могут программироваться с помощью специального оборудования (программаторов), с помощью кабеля от персонального компьютера, от микропро- цессора или от постоянного запоминающего устройства (ПЗУ), находящихся на од- ной плате с ПЛИС. Программирование в системе (In-System Programmable — ISP) означает программирование ПЛИС после установки ее на плате.
Программируемые логические интегральные схемы 33 Если после выключения питания ПЛИС не сохраняет свою внутреннюю структу- ру и при следующем включении питания ее необходимо настраивать заново, говорят о конфигурировании ПЛИС. Большинство современных CPLD программируются, а FPGA — конфигурируются. Современные ПЛИС допускают десятки тысяч перепро- граммирований и неограниченное число раз конфигурирований. Главное отличие микроконтроллеров от ПЛИС: при программировании микрокон- троллер не изменяет свою архитектуру, а ПЛИС изменяет свою внутреннюю структуру для выполнения заданных функций. Исторически первыми ПЛИС принято считать программируемые логические мат- рицы (ПЛМ — Programmable Logic Arrays — PLA). Основу архитектуры ПЛМ состав- ляют две программируемые матрицы: матрица AND (И) и матрица OR (ИЛИ). В зависимости от того, какая из матриц AND или OR программируется, про- граммируемые логические устройства (ПЛУ — Programmable Logic Devices — PLDs) делятся на три класса (ПЛМ, PAL и ППЗУ): в ПЛМ программируются обе матрицы; в PAL программируется матрица AND, а матрица OR имеет фиксированную настрой- ку, в ППЗУ программируется матрица OR, а матрица AND настроена на выполнение функций полного дешифратора. Структура CPLD (Complex Programmable Logic Devices) представляет собой со- вокупность функциональных блоков, объединяемых программируемой матрицей пе- реключений. Для большинства CPLD функциональный блок имеет структуру, по- добную PAL. Программируемые пользователем вентильные матрицы (Field Programmable Gate Arrays — FPGAs) представляют собой совокупность функциональных генераторов ти- па LUT (Look Up Table), которые позволяют реализовать любую булеву функцию от небольшого числа аргументов (обычно 4-6). Структура системы на кристалле (СнК — System On Chip — SoC) включает та- кие компоненты, как процессор, память, периферийные устройства, а также область программируемой логики: CPLD или FPGA. Проектирование на ПЛИС представляет собой новую концепцию проектирова- ния электронных систем, основу которой составляют технологии проектирования на ПЛИС. К основным технологиям проектирования на ПЛИС относятся: архитектуры ПЛИС, языки проектирования, программные и аппаратные средства автоматизиро- ванного проектирования, блоки интеллектуальной собственности (IP-ядра) и проекти- рование на основе IP-ядер, методологии проектирования на основе ПЛИС, цифровая обработка сигналов, проектирование со встроенными микропроцессорами, проекти- рование интерфейсов, отладка проектов, проектирование печатных плат для проектов на ПЛИС, обеспечение целостности сигналов, энергосбережение, конфигурирование ПЛИС, динамическое и частичное реконфигурирование ПЛИС, защита проекта и др. Первые ПЛИС фирмы Xilinx по архитектуре FPGA начали производиться в се- редине 80-х годов прошлого столетия. FPGA фирмы Xilinx организованы в виде массива логических элементов (Logic Element), состоящих из функциональных ге- нераторов LUT, мультиплексоров и триггеров. Логические элементы в FPGA фирмы Xilinx группируются в виде конфигурируемых логических блоков (Configurable Logic Blocks — CLB). В настоящее время фирма Xilinx производит такие классы микросхем програм- мируемой логики, как CPLD, FPGA и SoC. Фирмой Xilinx выпускается две серии ПЛИС с архитектурой CPLD: XC9500XL и CoolRunner-ll. Отличительными особенностями CPLD фирмы Xilinx являются: высо- кая производительность, возможность перепрограммирования в системе, программи-
34 Раздел 1 руемый режим пониженной потребляемой мощности, мощный выход (24 мА), малая статическая потребляемая мощность, простота использования. Микросхемы семейства CoolRunnerll, по сравнению с семейством XC9500XL, об- ладают большим быстродействием, меньшим энергопотреблением и проще в исполь- зовании. Семейство XC9500XL разрабатывалось для тесного взаимодействия с FPGA се- мейств Virtex, Spartan и XC4000XL, позволяя оптимально разделять логику между быстрыми интерфейсными схемами, какими являются CPLD, и устройствами с вы- сокой логической плотностью, т. е. FPGA. Области применения микросхем семейства CoolRunnerll: высокоскоростные системы передачи данных, вычислительные систе- мы, портативные устройства. В 2012 году фирма Xilinx предложила новую линейку семейств FPGA 7-й серии. По утверждению фирмы Xilinx в FPGA 7-й серии воплотились все мировые достижения в области разработки архитектур FPGA. Устройства UltraScale представляют собой микросхемы, которые изготавлива- ются по архитектуре FPGA, но имеют более высокую степень интеграции, поскольку изготавливаются по технологиям 3D с проектными нормативами в 20 и 16 нм. На основе FPGA 7-й серии фирмой Xilinx производятся микросхемы SoC семейст- ва Zynq 7000, в которых процессорное ядро реализовано аппаратно. Фирма Xilinx также производит микросхемы ASIC серии EasyPath-7, EasyPath-6 и EasyPath, которые соответствуют микросхемам ПЛИС серии Virtex/К intex-7, Virtex-6 и Virtex соответственно и могут использоваться для снижения стоимости, поскольку могут программироваться на заводе во время их изготовления. Серия 7 FPGA фирмы Xilinx включает следующие семейства: Artix-7 — оптими- зировано для наименьшей стоимости и энергопотребления, имеет малые габариты и рассчитано на использование в изделиях массового производства; Kintex-7 — со- вершенно новое семейство FPGA, оптимизировано для наилучшего соотношения це- на/производительность, по которому в 2 раза превосходит все предыдущие семейства; Virtex-7 — оптимизировано для наивысшей степени производительности; допускает 2- кратное увеличение производительности благодаря применению технологии стековых кремниевых межсоединений (stacked silicon interconnect — SSI). Все микросхемы 7-й серии имеют общую архитектуру, организованную в виде столбцов функциональных блоков одного типа. Данная архитектура получила назва- ние оптимизированный кремниевый модульный блок (Advanced Silicon Modular Block — ASMBL). Кроме того, технология SSI фирмы Xilinx, используемая в некоторых микро- схемах семейства Virtex-7, позволяет вводить в архитектуру FPGA следующий струк- турный уровень, благодаря чему могут создаваться FPGA очень высокой плотности и производительности. Семейство Artix-7 является правопреемником Spartan-б и обладает по сравнению с ним целым рядом преимуществ: вдвое меньшим энергопотреблением и на 30 % уве- личенной производительностью. Устройства семейства Artix-7 являются идеальными для построения портативных устройств. Kintex-7 — это абсолютно новое семейство ПЛИС седьмого поколения позволя- ющее достичь максимальных показателей цена/производительность. ПЛИС Kintex-7 предназначены для реализации высокопроизводительной логики, цифровой обработ- ки сигналов и последовательных интерфейсов при снижении стоимости на 50 % по сравнению с предыдущим семейством. Устройства семейства Kintex-7 являются иде- альными для построения телекоммуникационных систем, видео обработки, медицин- ской техники.
Программируемые логические интегральные схемы 35 Virtex-7 — семейство ПЛИС седьмого поколения предназначенное для высокопро- изводительных систем. Переход на новый технологический процесс (28 нм) позволил вдвое увеличить емкость и быстродействие по сравнению с семейством предыдущего поколения Virtex-б при уменьшении энергопотребления на 50 %. Устройства семейст- ва Virtex-7 предназначены для построения систем проводной и беспроводной связи, радаров, гражданских систем обработки информации.
2 CPLD семейства XC9500XL Изначально семейство XC9500XL разрабатывалось для тесного взаимодействия с FPGA семейств Virtex, Spartan и XC4000XL, позволяя оптимально разделять логику между быстрыми интерфейсными схемами, какими являются CPLD, и устройствами с высокой логической плотностью, т. е. FPGA. CPLD также очень эффективны при реализации конечных автоматов и быстрых контроллеров. Подробные параметры для каждой микросхемы CPLD семейства XC9500XL приведены в табл. 1.1. Здесь отметим только основные технические параметры CPLD семейства XC9500XL: • предназначены для использования в системах с напряжением питания 3,3 В; • изготавливаются по 0.35 микронной технологии FastFLASH CMOS; • задержка прохождения сигнала с входа на выход — 5 нс; • максимальная частота функционирования — 208 МГц; • используемые типы корпусов: VQFP, TQFP, CSP; • программирование в системе (In-System Programmable — ISP); • 54 входа на каждый функциональный блок; • глобальных синхросигналов — 3; • локальных синхросигналов функционального блока — 18; • максимальное число термов, подсоединяемых к одной макроячейке — 90. Кроме того, CPLD семейства XC9500XL обладают следующими свойствами: • индивидуальное управление сигналами разрешения выхода (output enable — ОЕ); • петля гистерезиса (input hysteresis) на всех пользовательских входах; • схемы удержания шины (bus-hold) на всех пользовательских входах; • возможность программного подсоединения неиспользуемых выводов к «земле» для уменьшения системного шума; • поддержка горячей вставки (hot-plugging); • поддержка стандарта граничного сканирования IEEE 1149.1 (JTAG); • быстрое параллельное программирование; • управление скоростью нарастания сигнала (slew rate) для каждого выхода; • расширенные возможности защиты информации от считывания; • до 10000 циклов перепрограммирования; • до 20 лет хранение запрограммированной информации. Областью использования CPLD семейства XC9500XL является замена в старых проектах множества микросхем малой и средней степени интеграции (в частности, се- рии 7400) одной микросхемой, что приводит к увеличению быстродействия, снижению энергопотребления и удобству использования проектируемой аппаратуры. Поскольку CPLD энергонезависимы и готовы к работе сразу после включения питания (с неболь- шой задержкой), то микросхемы CPLD часто используются в электронных системах как стартовые контроллеры, которые управляют порядком включения напряжений питания, конфигурированием и инициализацией микросхем на плате.
CPLD семейства XC9500XL 37 2.1. Описание архитектуры 2.1.1. Общая структура Архитектура устройств семейства XC9500XL состоит из множества функциональ- ных блоков (Functional Blocks — FBs) и блоков ввода-вывода (I/O Blocks — lOBs), соединяемых матрицей переключений FastCONNECTII (рис. 2.1). Рис. 2.1. Обобщенная структура CPLD семейства XC9500XL Каждый функциональный блок имеет 54 входа, 18 макроячеек и до 18 выходов (в зависимости от корпуса). Сигналы с выходов функционального блока поступа- ют прямо в блоки ввода-вывода. Кроме того, структура CPLD семейства XC9500XL включает специализированные входы сигналов глобального управления: три сигна- ла глобальной синхронизации GCK и один сигнал глобального сброса или установки GSR, а также 2 или 4 (для устройств XC95144XL и XC95288XL) сигнала разреше- ния выходов GTS. В структуре каждого устройства семейства XC9500XL дополнительно имеется 4 контакта порта JTAG-стандарта, по которым выполняется граничное сканирование (boundary-scan) и программирование в системе (In-System Programming). 2.1.2. Структура функционального блока Структура отдельного функционального блока CPLD семейства XC9500XL по- казана на рис. 2.2. Входы функционального блока (рис. 2.2) парафазные, что обеспечивает 108 пря- мых или инверсных значений входных сигналов, поступающих на вход программи-
38 Раздел 2 Global Global Set/Reset Clocks Рис. 2.2. Структура функционального блока CPLD семейства XC9500XL OUT То FastCONNECT II Switch Matrix ► To I/O Blocks PTOE руемой матрицы AND. Выходы матрицы AND называются промежуточными шина- ми (product terms). Матрица AND на своих выходах позволяет формировать до 90 логических произведений входных сигналов. Распределитель промежуточных шин (Product Term Allocator) назначает промежуточные шины макроячейкам функцио- нального блока. При этом к каждой макроячейке могут быть подсоединены все 90 промежуточных шин. Отметим, что не все макроячейки функционального блока имеют прямую связь с блоками ввода-вывода, однако выходы всех макроячеек имеют связь с входом матри- цы переключений FastCONNECTIL Макроячейки, выходы которых не имеют прямой связи с блоками ввода-вывода, называются скрытыми (buried). 2.1.3. Архитектура макроячеек Архитектура макроячеек CPLD семейства XC9500XL (рис. 2.3) имеет типичную архитектуру PAL (Programmable Array Logic), которая включает многовходовой вен- тиль OR, вентиль XOR, D- или Т-триггер, мультиплексор обхода триггера, а так- же мультиплексоры выбора сигналов управления триггером и второго входа венти- ля XOR. Каждая макроячейка может управляться одним глобальным сигналом сброса/ установки GSR, тремя глобальными сигналами синхронизации GCK, а также сигнала- ми индивидуального управления (которые формируются на отдельных промежуточ- ных шинах): синхронизации Clock, установки Set, сброса Reset и разрешения синхро- низации Clock Enable. Мультиплексор обхода триггера позволяет на выходе макроя- чейки реализовать комбинационную или регистровую функцию. В общем случае макроячейка имеет два выхода: один соединяется с блоком ввода-вывода, а другой поступает на вход матрицы переключений FastCONNECTIL Скрытые макроячейки имеют только один выход, который соединяется с входом мат- рицы FastCONNECTIL Кроме того, каждая макроячейка одну промежуточную шину может использовать для индивидуального управления выходным буфером соответ- ствующего блока ввода-вывода. Взаимодействие выходов функциональных блоков (макроячеек), блоков ввода-вывода и матрицы переключений показано на рис. 2.4.
CPLD семейства XC9500XL 39 Рис. 2.3. Архитектура макроячеек CPLD семейства XC9500XL Рис. 2.4. Передача сигналов между матрицей переключений, функциональными блоками и блоками ввода-вывода
40 Раздел 2 2.1.4. Архитектура блока ввода-вывода Каждый блок ввода-вывода (рис. 2.5) включает входной буфер, выходной буфер (драйвер) и мультиплексор выбора сигнала разрешения выхода. Значение выходно- го сигнала в блок ввода-вывода поступает с выхода соответствующей этому блоку макроячейки. Основу архитектуры блока ввода-вывода составляет буфер с тремя со- стояниями. Третье состояние этого буфера может управляться глобально с помощью сигналов GTS или управляться индивидуально от промежуточной шины РТОЕ соот- ветствующей макроячейки. Каждый блок ввода-вывода имеет отдельную обратную связь с матрицей переключений, которая используется для приема значений вход- ных сигналов. Входной буфер блока ввода-вывода совместим с сигналами стандарта TTL на 5,0 В и стандарта CMOS на 5,0, 3,3 и 2,5 В. Входной буфер использует внутрен- нее напряжение питания Vccint на 3,3 В для уверенности, что пороги напряжений входных сигналов являются постоянными и не изменяются с изменением напряжения питания блока ввода-вывода Vccio- Каждый входной буфер обеспечивает входной гистерезис на 50 mV для уменьшения системного шума. То other Macrecells Рис. 2.5. Архитектура блока ввода-вывода
CPLD семейства XC9500XL 41 Рис. 2.6. Совмещение систем с разными уровнями напряжения сигналов с помощью CPLD семейства XC9500XL Напряжение питания Vccio на 3,3 В и 2,5 В выходного драйвера обеспечивает стандарт сигналов CMOS на 3,3 В (5,0 В стандарта TTL) и 2,5 В соответственно. На рис. 2.6 показаны напряжения питания выводов CPLD семейства XC9500XL для сопряжения систем с разными уровнями сигналов. 2.2. Архитектурные особенности CPLD семейства XC9500XL использоваться как источник сигнала 2.2.1. Архитектурные свойства буферов ввода-вывода Каждый блок ввода-вывода имеет три индивидуально программируемых архи- тектурных свойства: • управление скоростью возрастания сигнала (Slew Rate Control); • программируемое подсоединение к земле (User-Programmable Ground); • удержание (захват) шины (Bus-Hold). Уменьшение скорости возрастания сигнала может использоваться для уменьше- ния системного шума для сигналов, не влияющих на производительность системы. Неиспользуемые выводы микросхемы могут путем программирования CPLD подсое- диняться к «земле» с целью уменьшения потребляемой мощности и снижения сис- темного шума. Кроме того, эти выводы мог} с низким логическим уровнем. Каждый блок ввода-вывода также пре- доставляет схему удержания (захвата) ши- ны (рис. 2.7), называемую «хранителем» (keeper), которая является активной в режи- ме пользовательского функционирования. Свойство удержания шины исключает необходимость подсоединять неиспользуе- мые выводы к высокому или низкому уров- ню для удержания последнего состояния входа до тех пор, пока не будет установлено следующее действительное значение. Ког- да устройство функционирует не в пользо- вательском режиме, схема удержания шины эквивалентна подтягивающему резистору на стирания (erased), в режиме программирования, в режиме граничного сканирования JTAG INTEST, а также во время инициализации при включении питания. Set to PIN during valid user operation Drrve t0 Рис. 2.7. Схема удержания значения шины 50 кОм. Это происходит в состоянии
42 Раздел 2 Отметим, что к любому выводу может подсоединяться внешний подтягивающий к «земле» резистор на 1 кОм для переопределения сопротивления внутреннего резис- тора Rbh. например для установки значений выводов в низкий уровень при вклю- чении питания. 2.2.2. Безопасность проекта Устройства XC9500XL предоставляют функции защиты данных программирова- ния от несанкционированного чтения, стирания или перепрограммирования. Биты защиты чтения могут быть установлены пользователем для предохранения внутрен- него шаблона (образа) программирования от чтения или копирования. Когда биты защиты чтения установлены, они запрещают будущие операции программирования, но разрешают стирание устройства. Стирание устройства является единственным способом сбросить бит защиты чтения. Биты защиты записи обеспечивают дополнительную защиту против случайно- го стирания или перепрограммирования устройства, когда выводы JTAG подвержены шуму, например при включении питания системы. Будучи установленной, деактивиза- ция защиты записи может быть выполнена, когда необходимо перепрограммировать устройство с допустимым шаблоном с помощью специальной последовательности ко- манд протокола JTAG (табл. 2.1). Таблица 2.1 Опции защиты данных Защита записи Защита чтения По умолчанию Установлена По умолчанию Установлена Чтение разрешено. Программирование и стирание разрешены Чтение разрешено. Программирование и стирание разрешены Чтение запрещено. Программирование и стирание разрешены Чтение запрещено. Программирование и стирание запрещены 2.2.3. Режим пониженного энергопотребления В устройствах XC9500XL предоставляется режим пониженного энергопотребле- ния (Low Power), который может быть установлен для каждой макроячейки индивиду- ально или сразу для всех макроячеек устройства. Режим пониженного энергопотреб- ления вводит дополнительную задержку tbp для сигналов комбинационной логики, а также увеличивает время установки (setup) для триггеров. Рекомендация Xilinx: макроячейки, сигналы которых переключаются с периодом 50 нс и более, должны программироваться в режиме пониженного энергопотребления. 2.3. Выводы Семейство XC9500XL разрабатывалось для тесного взаимодействия с FPGA се- мейств Virtex, Spartan и XC4000XL, позволяя оптимально разделять логику между быстрыми CPLD и FPGA с высокой логической плотностью. CPLD также очень эф- фективны при реализации конечных автоматов и быстрых контроллеров. Поскольку CPLD программируются и готовы к работе сразу после включения питания (с небольшой задержкой), то микросхемы CPLD часто используются в элек- тронных системах как стартовые контроллеры, которые управляют порядком включе- ния напряжений питания, конфигурированием и инициализацией микросхем на плате.
CPLD семейства XC9500XL 43 Архитектура устройств семейства XC9500XL состоит из множества функциональ- ных блоков (Functional Blocks — FBs) и блоков ввода-вывода (I/O Blocks — lOBs), со- единяемых матрицей переключений FastCONNECTIL Кроме того, структура CPLD се- мейства XC9500XL включает специализированные входы сигналов глобального управ- ления: три сигнала глобальной синхронизации GCK и один сигнал глобального сброса или установки GSR, а также 2 или 4 сигнала разрешения выходов GTS. Функциональный блок имеет 52 парафазных входа. Это позволяет на вход мат- рицы AND подавать до 108 прямых или инверсных значений входных сигналов. Мат- рица AND на своих выходах (промежуточных шинах) позволяет формировать до 90 логических произведений входных сигналов. Архитектура макроячеек CPLD семейства XC9500XL имеет типичную архитектуру PAL, которая включает многовходовой вентиль OR, вентиль XOR, D- или Т-триггер, мультиплексор обхода триггера, а также мультиплексоры выбора сигналов управления триггером и второго входа вентиля XOR. К одной макроячейке могут быть подсоединено до 90 промежуточных шин. Каждая макроячейка может управляться одним глобальным сигналом сброса/ установки GSR, тремя глобальными сигналами синхронизации GCK, а также сигнала- ми индивидуального управления: синхронизации Clock, установки Set, сброса Reset и разрешения синхронизации Clock Enable. Мультиплексор обхода триггера позволяет на выходе макроячейки реализовать комбинационную или регистровую функцию. Блок ввода-вывода включает входной буфер, выходной буфер (драйвер) и муль- типлексор выбора сигнала разрешения выхода. Каждый блок ввода-вывода имеет три индивидуально программируемых архитектурных свойства: • управление скоростью возрастания сигнала (Slew Rate Control); • программируемое подсоединение к земле (User-Programmable Ground); • удержание (захват) шины (Bus-Hold). Устройства XC9500XL предоставляют функции защиты данных программирова- ния от несанкционированного чтения, стирания или перепрограммирования. Для это- го служат биты защиты чтения и биты защиты записи. В устройствах XC9500XL предоставляется режим пониженного энергопотребле- ния (Low Power), который может быть установлен для каждой макроячейки индиви- дуально или сразу для всех макроячеек устройства.
3 CPLD семейства CoolRunnerll Микросхемы семейства CoolRunnerll, по сравнению с семейством XC9500XL, об- ладают большим быстродействием, меньшим энергопотреблением и проще в исполь- зовании. Области применения микросхем семейства CoolRunnerll: высокоскоростные системы передачи данных, вычислительные системы, портативные устройства. Пара- метры микросхем CPLD семейства CoolRunnerll были приведены в табл. 1.2. Здесь перечислим только основные технические параметры CPLD семейства CoolRunnerll: • предназначены для использования в системах с напряжением питания 1,8 В; • изготавливаются по 0,18 микронной технологии CMOS; • минимальная задержка прохождения сигнала с входа на выход — 3,8 нс; • максимальная частота функционирования — 323 МГц; • используемые типы корпусов: VQFP, TQFP, PQFP, QFN, CSP BGA, FineLine BGA; • 40 входов на каждый функциональный блок; • максимальное число промежуточных шин, подсоединяемых к одной макроячей- ке — 56; • число глобальных синхросигналов — 3; • число локальных синхросигналов функционального блока — 16; • уровни входных и выходных сигналов (вольт) — 1.5/1.8/2.5/3.3; Кроме того, CPLD семейства CoolRunnerll обладают следующими свойствами: • программирование в системе (In-System Programmable — ISP) по стандарту IEEE 1532 (JTAG); • индивидуальное управление сигналами разрешения выхода (output enable — ОЕ); • возможность установки триггеров Шмита на пользовательских входах; • все выводы общего назначения имеют на входах схемы удержания шины (bus- hold); • поддержка горячей вставки (hot-plugging); • поддержка граничного сканирования (Boundary Scan Test — BST) по стандарту IEEE 1149.1 (JTAG); • расширенные возможности защиты информации от считывания (Design Security); • до 1000 циклов перепрограммирования; • до 20 лет хранение запрограммированной информации; • выводы объединены в банки ввода-вывода (I/O Banks); • управление энергопотреблением осуществляется с помощью отдельного сигна- ла (DataGATE); • гибкость режимов синхронизации: • переключение по двум фронтам синхросигнала (DualEDGE); • наличие делителя частоты синхросигнала (Clock Divider) с коэффициентами 2, 4, 6, 8, 10, 12, 14, 16; • режим пониженного энергопотребления CoolCLOCK; • дополнительные опции глобальных сигналов для управления макроячейками: • доступно 3 глобальных сигнала с выбором фронта для каждой макроячейки; • возможно 3 глобальных сигнала разрешения выхода (output enable — ОЕ);
CPLD семейства CoolRunnerll 45 • доступны глобальные сигналы установки и сброса триггера для каждой макро- ячейки; • возможность формирования на промежуточных шинах локальных (индивидуаль- ных) сигналов синхронизации, разрешения выходов, установки/сброса для управ- ления функциональным блоком (макроячейкой); • опция открытый сток (open-drain) выходов для реализации проводного OR и управления светодиодами LED; • слабое подтягивание (weak pull-up) отдельных выводов; • программирование подсоединения к «земле» неиспользованных выводов; • поддержка стандартов LVTTL, LVCMOS33, 25, 18, 15; • поддержка стандартов STTL2_1, STTL3.1 и HSTL.1 для микросхем с числом макроячеек 128 и выше; • реконфигурирование «на лету» (On-The-Fly reconfiguration — OTF). 3.1. Описание архитектуры 3.1.1. Общая структура Обобщенная структура CPLD CoolRunnerll приведена на рис. 3.1. Она состо- ит из функциональных блоков (Functional Block — FB) и блоков ввода-вывода (I/O Blocks — lOBs), которые соединяются глобальной матрицей переключений Advanced Interconnect Matrix (AIM). Каждый функциональный блок содержит 16 макроячеек. Архитектура CPLD CoolRunnerll также содержит периферийную шину (из 16 линий), по которой к блокам ввода-вывода передаются сигналы управления и синхрониза- ции. Кроме того, все блоки ввода-вывода последовательно соединяются цепью BSC (Boundary Scan Control) для граничного сканирования и программирования в системе (In-System Programming — ISP) по протоколу стандарта JTAG. BSC Path Рис. 3.1. Обобщенная структура CPLD CoolRunnerll 3.1.2. Структура функционального блока Функциональный блок CPLD семейства CoolRunnerll (рис. 3.2) имеет 40 пара- фазных входов (по которым из матрицы переключений может поступать 80 значений
46 Раздел 3 Global Global SeVReset Clocks Рис. 3.2. Структура функционального блока CPLD семейства CoolRunnerll сигналов), программируемую матрицу AND и 16 макроячеек. Функциональные блоки CPLD семейства CoolRunner-ll строятся на основе ар- хитектуры программируемых логических мат- риц (ПЛМ — PLA), т. е. любая промежуточ- ная шина может быть подсоединена к любой макроячейке, а также допускается одновремен- ное подключение одной промежуточной шины к разным макроячейкам. Один функциональ- ный блок имеет 56 промежуточных шин, 4 из которых могут использоваться для формиро- вания локальных сигналов управления. 3.1.3. Архитектура макроячеек Архитектура макроячейки CPLD семейст- ва CoolRunnerll приведена на рис. 3.3. Она включает многовходовой вентиль OR, вентиль XOR, триггер, мультиплексор обхода триггера, а также мультиплексоры выбора сигналов управления триггером. Триггер макроячейки может программи- роваться как D или Т триггер, защелка или в режиме DualEDGE. Кроме того, вход триггера имеет прямую связь с соответствующим блоком ввода-вывода. Благодаря этому триггер может использоваться в качестве входного буфера. Каждая макроячейка CPLD семейства CoolRunnerll имеет 3 выхода: один соеди- нен с соответствующим блоком ввода-вывода, а два (регистровый и комбинацион- ный) — с матрицей переключений AIM. Рис. 3.3. Архитектура макроячеек CPLD семейства CoolRunnerll
CPLD семейства CoolRunnerll 47 3.1.4. Архитектура блока ввода-вывода Архитектура блока ввода-вывода CPLD семейства CoolRunnerll приведена на рис. 3.4. Она включает входной и выходной буферы, мультиплексор выбора сигна- лов управления выходным буфером, мультиплексор выбора входного сигнала, схемы удержания шины и буфер опорного напряжения. Значение выходного сигнала в блок ввода-вывода поступает с выхода соответствующей макроячейки. Третье состояние выходного буфера может управляться глобальными сигналами GTS [0:3], локальным сигналом СТЕ и индивидуальным сигналом РТВ. Кроме того, выходной буфер мо- жет программироваться для уменьшения скорости возрастания сигнала, в режиме открытый сток (Open Drain), захвата шины (Bus-Hold) и с подтягиванием к напря- жению питания. Available on 128 Macrocell Devices and Larger То Macrocell Direct Input Enabled GTE PTB GTS[0:3J CGND Open Drain Disabled From Macrocell Global termination Pulhjp/Bus-Hold Рис. 3.4. Архитектура блока ввода-вывода CPLD семейства CoolRunnerll Когда блок ввода-вывода конфигурируется как вход, для снижения шума в цепь входного сигнала может включаться триггер Шмитта с петлей гистерезиса на 500mV. Каждый вход может подсоединяться к матрице переключений AIM, а также непо- средственно ко входу триггера соответствующей макроячейки. Стандарты, поддерживаемые блоками ввода-вывода CPLD семейства CoolRun- nerll приведены в табл. 3.1. Таблица 3.1 Стандарты ввода-вывода Стандарт Vccio> В Vrff. В Поддержка триггера Шмита LVTTL 3,3 — Дополнительно LVCMOS33 3,3 — Дополнительно LVCMOS25 2,5 — Дополнительно LVCMOS18 1,8 — Дополнительно LVCMOS15 1.5 — Не поддерживается HSTL-1 1.5 0,75 Не поддерживается SSTL2-1 2,5 1,25 Не поддерживается SSTL3-1 3.3 1,5 Не поддерживается Некоторые стандарты требуют подачи в блоки ввода-вывода опорного напряже- ния Vref- Для приема значения опорного напряжения может использоваться любой вывод общего назначения устройства CPLD семейства CoolRunnerll (детали см. в документе ХАРР382 CoolRunner-ll I/O Characteristics).
48 Раздел 3 3.2. Архитектурные особенности CPLD семейства CoolRunnerll 3.2.1. Режим снижения энергопотребления DataGATE Режим снижения энергопотребления DataGATE позволяет для указанных выво- дов с помощью перемычек (assertion rail) блокировать поступление значений входных сигналов (рис. 3.5). При этом во внутреннюю логику CPLD (матрицу AIM) будут поступать последние значения сигналов, хранящиеся в защелках. Каждому входному контакту, который ис- пользует режим DataGATE, должен быть назначен атрибут DATA.GATE. Для управ- ления режимом DataGATE используется отдельный сигнал. Сигнал, управляющий перемычками DataGATE, может поступать от внешнего вывода или формироваться во внутренней логике. В последнем случае значение сигнала формируется как выход комбинационной схемы, счетчика или конечного автомата. Если сигнал поступает с внешнего вывода, то этот вывод должен иметь атрибут BUFG = DATA.GATE. Сигнал разрешения режима DataGATE является отдельным выделенным выводом DGE/I/O для каждого корпуса устройств семейства CoolRunnerll. 3.2.2. Режим делителя частоты синхросигнала ClockDivider Режим делителя частоты синхросигнала ClockDivider позволяет делить частоту синхросигнала, который поступает на глобальный вывод GCK2, с коэффициентами 2, 4, 6, 8, 10, 12, 14, 16. Схема делителя синхросигнала (рис. 3.6) имеет управляющий сигнал CDRST для гарантии, что паразитные сигналы не могут пройти по глобальным цепям синхросигнала. При установке сигнала CDRST выход делителя недоступен после текущего цик- ла. При сбросе сигнала CDRST выход делителя становится активным после первого фронта на выводе GCK2. Использование режима ClockDivider возможно из языков проектирования VHDL, Verilog и ABEL (см. документ ХАРР378 Using CoolRunner- ll Advanced Features).
CPLD семейства CoolRunnerll 49 Рис. 3.6. Схема делителя синхросигнала для входа GCK2 3.2.3. Режим функционирования с удвоенной частотой синхросигнала DualEDGE Опция DualEDGE включает режим функционирования с удвоенной частотой син- хросигнала Dual Edge Triggered (DET), который позволяет триггеру каждой макроя- чейки функционировать с удвоенной частотой входного синхросигнала, т. е. переклю- чаться на каждом фронте синхросигнала (рис. 3.7). Рис. 3.7. Цепь синхросигнала макроячейки с установленной опцией DualEDGE Режим DET используется в синхронных интерфейсах памяти и при передаче дан- ных с удвоенной скоростью. Режим DET может быть установлен в языках проектиро- вания или в графическом редакторе для любой ячейки во всех устройствах семейства CoolRunnerll. 3.2.4. Режим совмещения схемы делителя синхросигнала с удвоенной частотой синхросигнала CoolCLOCK Режим совмещения схемы делителя синхросигнала с удвоенной частотой син- хросигнала CoolCLOCK обеспечивает совмещение схемы делителя синхросигнала с режимом DualEDGE с целью дальнейшего снижения энергопотребления (рис. 3.8). Режим CoolCLOCK доступен для микросхем с числом макроячеек 128 и более. 3.2.5. Защита проекта Опция Design Security служит для защиты микросхемы от считывания информа- ции о программировании. Проекты могут защищаться во время программирования для предотвращения случайного или несанкционированного считывания путем обрат- ного чтения (readback). При использовании данного свойства в микросхеме обеспе- чивается 4 независимых уровня защиты, чем обеспечивается предотвращение любого электрического или визуального обнаружения образа конфигурации. Биты безопас- ности могут быть изменены только путем перепрограммирования всей микросхемы (см. документ WP170 CoolRunner-ll CPLDs in Secure Applications).
50 Раздел 3 Рис. 3.8. Опция CoolCLOCK, созданная объединением опций ClockDivider и DualEDGE 3.2.6. Режим реконфигурации «на лету» On-The-Fly reconfiguration Режим реконфигурации «на лету» On-The-Fly reconfiguration (OTF) позволяет перепрограммировать некоторую энергонезависимую часть микросхемы, в то время как другой образ используется в настоящее время. Во время замены образа выводы переводятся в третье состояние со слабым подтягиванием к напряжению Vccio- В за- висимости от размеров микросхемы время реконфигурации «на лету» составляет от 50 до 300 мкс (см. документ ХАРР388 On the Fly Reconfiguration with CoolRunner- ll CPLDs). 3.3. Программирование CPLD Программирование CPLD фирмы Xilinx рассмотрим на примере программирова- ния устройств семейства XC9500XL. CPLD семейства XC9500XL могут программи- роваться автономно или в составе системы (рис. 3.9). Автономное программирова- ние устройств XC9500XL выполняется с помощью программатора фирмы Xilinx HW- 130 или аналогичного программатора других производителей, после чего микросхема CPLD устанавливаться на плату. В системе (In-System Programming) CPLD семейства XC9500XL могут програм- мироваться вместе с другими микросхемами (например, микроконтроллером или дру- гой CPLD) от системного компьютера с помощью четырех выводов JTAG-стандарта. Для этого может использоваться кабель фирмы Xilinx или аналогичный кабель других производителей. Во время программирования в системе все выводы переводятся в третье состояние и подтягиваются к верхнему уровню схемой захвата шины. Устройства XC9500XL допускают 10000 циклов программирования в системе и обеспечивают сохранение информации в течение 20 лет.
CPLD семейства CoolRunnerll 51 Рис. 3.9. Программирование CPLD семейства XC9500XL системного компьютера по JTAG-стандарту 3.4. Выводы Микросхемы семейства CoolRunnerll, по сравнению с семейством XC9500XL, об- ладают большим быстродействием, меньшим энергопотреблением и проще в исполь- зовании. Области применения микросхем семейства CoolRunnerll: высокоскоростные сис- темы передачи данных, вычислительные системы, портативные устройства. Структура CPLD CoolRunnerll состоит из функциональных блоков и блоков ввода- вывода, которые соединяются глобальной матрицей переключений Advanced Intercon- nect Matrix (AIM). Каждый функциональный блок содержит 16 макроячеек. Архи- тектура CPLD CoolRunnerll также содержит периферийную шину (из 16 линий), по которой к блокам ввода-вывода передаются сигналы управления и синхронизации. Функциональный блок CPLD семейства CoolRunnerll имеет 40 парафазных вхо- дов, по которым из матрицы переключений в программируемую матрицу AND может поступать 80 значений сигналов. Один функциональный блок имеет 56 промежуточных шин, 4 из которых могут использоваться для формирования локальных сигналов управления. Архитектура макроячейки CPLD семейства CoolRunnerll включает многовходовой вентиль OR, вентиль XOR, триггер, мультиплексор обхода триггера, а также мульти- плексоры выбора сигналов управления триггером. Триггер макроячейки может программироваться как D- или Т-триггер, защел- ка или в режиме DualEDGE. Вход триггера имеет прямую связь с соответствующим блоком ввода-вывода, благодаря чему триггер может использоваться в качестве вход- ного буфера. Каждая макроячейка CPLD семейства CoolRunnerll имеет 3 выхода: один соеди- нен с соответствующим блоком ввода-вывода, а два (регистровый и комбинацион- ный) — с матрицей переключений AIM. Третье состояние выходного буфера может управляться глобальными сигналами GTS [0:3], локальным сигналом СТЕ и индивидуальным сигналом РТВ. Кроме того, выходной буфер может программироваться для уменьшения ско- рости возрастания сигнала, в режиме открытый сток (Open Drain), захвата шины (Bus-Hold) и с подтягиванием к напряжению питания.
52 Раздел 3 Архитектурные особенности CPLD семейства CoolRunnerll: • режим снижения энергопотребления DataGATE позволяет для указанных выводов с помощью перемычек блокировать поступление значений входных сигналов; • режим делителя частоты синхросигнала ClockDivider позволяет делить частоту синхросигнала, который поступает на глобальный вывод GCK2, с коэффициен- тами 2, 4, 6, 8, 10, 12, 14, 16; • опция DualEDGE включает режим функционирования с удвоенной частотой син- хросигнала Dual Edge Triggered (DET), который позволяет триггеру каждой мак- роячейки функционировать с удвоенной частотой входного синхросигнала; • режим совмещения схемы делителя синхросигнала с удвоенной частотой синхро- сигнала CoolCLOCK обеспечивает совмещение схемы делителя синхросигнала с режимом DualEDGE с целью дальнейшего снижения энергопотребления; • опция Design Security служит для защиты микросхемы от считывания информа- ции о программировании, обеспечивает до четырех уровней защиты; • режим реконфигурации «на лету» On-The-Fly reconfiguration (OTF) позволяет перепрограммировать некоторую энергонезависимую часть микросхемы, в то вре- мя как в настоящее время используется другой образ внутренней конфигурации. Микросхемы CPLD фирмы Xilinx могут программироваться автономно или в сис- теме. Автономное программирование устройств XC9500XL выполняется с помощью программатора фирмы Xilinx HW-130 или аналогичного программатора других про- изводителей, после чего микросхема CPLD устанавливаться на плату. В системе CPLD фирмы Xilinx могут программироваться вместе с другими мик- росхемами (например, микроконтроллером или другой CPLD) от системного компью- тера с помощью четырех выводов JTAG-стандарта. Устройства CPLD фирмы Xilinx допускают 10000 циклов программирования в системе и обеспечивают сохранение информации в течение 20 лет.
4 Внутренняя логика FPGA: конфигурируемые логические блоки CLB, секции, функциональные генераторы LUT Внутренняя логика FPGA 7-й серии состоит из столбцов конфигурируемых логи- ческих блоков CLB (Configurable Logic Block). В общем случае программные средства синтеза позволяют реализовать проект на внутренней логике FPGA без вмешательст- ва пользователя. Однако знание внутренней структуры и архитектурных возмож- ностей блоков CLB позволит разработчику значительно повысить эффективность проекта. В данной главе рассматривается общая структура блоков CLB, архитектура сек- ций и их отдельные компоненты, а также различные архитектурные возможности внутренней логики: генератор LUT, распределенная память RAM и ROM, сдвиговые регистры, мультиплексоры и логика переноса. Кроме того, в приложении А пред- ставлены примитивы внутренней логики и рассмотрены вопросы эффективного ис- пользования отдельных компонентов. В приложении Б приведены временные модели функционирования элементов внутренней логики. 4.1. Конфигурируемые логические блоки CLB Каждый блок CLB состоит из двух секций Slice(l) и Slice(O), причем на кристалле секция Slice(l) расположена в правом верхнем углу блока CLB, а секция Slice(O) — в левом нижнем углу (рис. 4.1). Для подключения CLB к общим ресурсам трассировки FPGA служит матрица переключений (Switch Matrix). Блоки CLB в FPGA 7-й серии организованы в виде столбцов. Для реализации арифметических переносов все секции в пределах одного столбца соединяются вер- тикально с помощью цепей переноса (рис. 4.2). В общем случае блоки CLB в FPGA располагаются в виде регулярной матрицы (рис. 4.3). Между строками и столбцами блоков CLB находятся каналы межсоедине- соит соит соит соит Рис. 4.1. Расположение секций в блоках CLB Рис. 4.2. Цепи переноса в столбце блоков CLB
54 Раздел 4 ний, которые являются ресурсами общей трассировки кристалла (interconnect routing resources). Межсоединения (interconnect) также используются для передачи сигна- лов между функциональными блоками FPGA, такими как: блоки ввода-вывода ЮВ, секции цифровой обработки сигналов DSP, блоки памяти RAM и др. Отметим, что секции одного блока CLB не имеют никаких соединений между собой. Возможна только передача сигналов по цепям переноса соседним секциям, расположенным выше данного блока CLB, а также прием сигналов по цепям переноса от соседних секций, расположенных ниже данного блока CLB. При необходимости пе- редачи сигналов между секциями в пределах одного блока CLB задействуются ресурсы матрицы переключений, а при передаче сигналов между блоками CLB задействуются ресурсы межсоединений. Каждая секция блока CLB, в свою очередь, содержит четыре 6-входовых функ- циональных генератора LUT и 8 триггеров (по два на каждый LUT). Секции делятся на два типа: SLICEL и SLICEM. Секции типа SLICEM обладают дополнительными архитектурными возможностями, которые позволяют им конфигу- рироваться как блок распределенной памяти RAM на 256 битов или сдвиговый регистр SRL на 128 битов. Один блок CLB может содержать либо две секции SLICEL, либо одну секцию SLICEL и одну секцию SLICEM. Общие ресурсы одного блока CLB: Ресурс Количество Число секций........................................2 Число LUT...........................................8 Число триггеров.....................................16 Число цепей переноса................................2 Объем распределенной памяти RAM..................... 256 битов Сдвиговый регистр...................................128 битов
Внутренняя логика FPGA 55 Таблица 4.1 Ресурсы блоков CLB для FPGA семейства Artrix-7 Параметр 7А35Т 7А50Т 7А75Т 7А100Т 7А200Т Число секций 52 815 118 1585 3365 Число SLICEL 36 575 8232 111 221 исло SLICEM 16 24 3568 475 1155 Число 6-входовых LUT 208 326 472 634 1346 Объем распределенной памяти, Кбит 400 600 892 1188 2888 Сдвиговый регистр, Кбит 200 300 446 594 1444 Число триггеров 416 652 944 1268 2692 Таблица 4.2 Ресурсы блоков CLB для FPGA семейства Kintex-7 Параметр 7К70Т 7К160Т 7К325Т 7К355Т 7К410Т 7К420Т 7К480Т Число секций 1025 2535 5095 5565 6355 6515 7465 Число SLICEL 69 166 3495 353 409 414 475 Число SLICEM 335 875 16 2035 2265 2375 2715 Число 6-входовых LUT 41 1014 2038 2226 2542 2606 2986 Объем распределенной памяти, Кбит 838 2188 4 5088 5663 5938 6788 Сдвиговый регистр, Кбит 419 1094 2 2544 2831 2969 3394 Число триггеров 82 2028 4076 4452 5084 5212 5972 Таблица 4.3 Ресурсы блоков CLB для FPGA семейства Virtex-7 Параметр 7V585T 7V2000T 7VX ЗЗОТ 7VX 415Т 7VX 485Т 7VX 550Т 7VX 690Т 7VX 980Т 7VX 1140Т 7VH 580Т Число секций 9105 3054 51 644 759 866 1083 153 178 907 Число SLICEL 633 2192 3345 383 432 517 6475 9765 1072 553 Число SLICEM 2775 862 1755 261 327 349 4355 5535 708 354 Число 6-входовых LUT 3642 1221600 204 2576 3036 3464 4332 612 712 3628 Объем распределенной памяти, Кбит 6938 2155 4388 6525 8175 8725 10888 13838 177 885 Сдвиговый регистр, Кбит 3469 10775 2194 3263 4088 4363 5444 6919 885 4425 Число триггеров 7284 2443200 408 5152 6072 6928 8664 1224000 1424000 7256 Параметры ресурсов блоков CLB для семейств Artrix-7, Kintex-7 и Virtex-7 при- ведены в табл. 4.1-4.3 соответственно. 4.2. Секции блоков CLB Как было отмечено ранее, блоки CLB могут содержать секции двух типов: SLICEM (рис. 4.4) и SLICEL (рис. 4.5). Архитектура секции SLICEM включает четыре 6-входовых функциональных гене- ратора LUT (А, В, С, D), цепь переноса, 4 вентиля XOR, 4 выходных запоминающих элемента, 4 дополнительных триггера, схемы BYPASS обхода генераторов LUT, муль- типлексоры конфигурации для выбора сигналов, а также мультиплексоры F7AMUX, F7BMUX и F8MUX (на рис. 4.4 и рис. 4.5 не показаны). Основными входами данных являются шины А[6:1], В[6:1], С[6:1] и D[6:l], зна- чения сигналов с которых поступают на входы соответствующих функциональных генераторов LUT. Для обхода функциональных генераторов по схеме BYPASS служат входы АХ, ВХ, СХ и DX. Кроме того, для реализации сдвиговых регистров служат дополнительные входы Al, Bl, CI и DL Каждая секция имеет 4 комбинационных выхода А, В, С и D, 4 регистровых выхода AQ, BQ, CQ и DQ с выходных запоминающих элементов, а также 4 выхода AMUX, BMUX, CMUX и DMUX с выходов одноименных мультиплексоров.
56 Раздел 4 Reset Type о sync Async соит SR □ FF/LAT ODMUX r> W6W1 05 DH CK WEN MO- SR OS DP Dlt CK W£:W1 Dll CK О SRHI 0 SRLO OINIT1 Q О INITO O8MUX BX СИ2 □ FF/LAT □ iNITO о SRLO SR CK WEN CE CK Рис. 4.4. Архитектура секции SLICEM OSRHI a SRLO oimti a GE □ INITO GE CK □ FF/LAT □ INIT1 a INITO □ SRHI □ SRLO 012 A8:A1 W6.W1 WEN MC31 012 A6LA1 W6:W1 06 OS WEN MC31 OS WEN MC31 □ SRHI □ SRLO a INIT1 0 INITO SR о SRHI Q SRLO □ INIT1 □ INITO SR CE CK D CE GK DrF/LAT CBNITt □ iKT*C a SRHi □ SRLO SR OFF/LAT □ INITD □ SRH □ SRLO SR Управляющие сигналы секции SLICEM представлены сигналами: SR — установки или сброса; CLK — синхронизации; СЕ — разрешения синхронизации; WE — разре- шения записи в распределенную память RAM. Кроме того, цепь переноса секции имеет входной сигнал CIN и выходной сигнал COUT. Таким образом, секция SLICEM в сумме имеет 37 входов и 13 выходов. В сек- ции SLICEL отсутствуют дополнительные входы Al, Bl, CI и DI, а также управляющий сигнал WE. Поэтому секция SLICEL имеет только 32 входа и 13 выходов. Отметим, что управляющие сигналы являются общими для всех запоминающих
Внутренняя логика FPGA 57 CIN Рис. 4.5. Архитектура секции SLICEL элементов секции. Поэтому триггеры FPGA 7-й серии не имеют сигналов индивиду- ального управления. Для управляющих сигналов SR, СЕ и WE активным является высокий уровень. Однако синхросигнал может программироваться с активным как положительным, так и отрицательным фронтом. 4.3. Функциональный генератор LUT Функциональные генераторы FPGA 7-й серии представляют собой б-входовые таблицы перекодировки (Look-Up Table— LUT). Каждый функциональный генератор имеет 6 независимых входов А6:А1 и два независимых выхода 05 и Об.
58 Раздел 4 Функциональные генераторы секций SLICEM (см. рис. 4.4) дополнительно име- ют входы Dll, DI2, входы W6:W1 (которые используются как адрес записи в па- мять), входы управляющих сигналов: синхронизации СК и разрешения записи WEN, а также выход МС31. Функциональный генератор LUT может реализовать: • одну функцию от 6 аргументов (на выходе Об) или • две функции от 5 общих аргументов (на выходах 05 и Об) или • две функции от 3 и 2 (или меньше) разных аргументов (на выходах 05 и Об). Задержка сигналов в LUT не зависит от реализуемой функции. Сигналы от функ- циональных генераторов могут поступать: • на выход секции (через выходы А, В, С и D для выхода Об или через выходы мультиплексоров AMUX, BMUX, CMUX и DMUX для выхода 05); • на вход отдельного вентиля XOR с выхода Об; • в цепь логики переноса с выхода 05; • на управляющий вход мультиплексора логики переноса с выхода Об; • на вход D запоминающих элементов; • на вход широких мультиплексоров F7AMUX или F7BMUX с выхода Об. Для реализации функции от семи аргументов используются мультиплексоры F7AMUX (при объединении выходов функциональных генераторов А и В) и F7BMUX (при объединении выходов функциональных генераторов С и D). Для реализации функции от 8 аргументов дополнительно используется мультиплексор F8MUX, кото- рый объединяет выходы мультиплексоров F7AMUX и F7BMUX. Таким образом, одна секция может реализовать: • одну функцию от 8 аргументов; • две функции от 7 аргументов; • четыре функции от 6 аргументов; • восемь функций от 5 попарно общих аргументов; • четыре функции от 3 (или меньше) и четыре функции от 2 (или меньше) разных аргументов. Для реализации функций с числом аргументов больше 8 используется несколько секций и ресурсы межсоединений. 4 .3.1. Запоминающие элементы Каждая секция имеет 4 основных (выходных) запоминающих элемента и 4 до- полнительных триггера (рис. 4.6). Выходные запоминающие элементы могут кон- фигурироваться либо как D-триггеры, либо как защелки (прозрачные D-триггеры). В последнем случае защелка передает сигнал при низком уровне сигнала синхрониза- ции CLK. Дополнительные триггеры могут конфигурироваться только как триггеры. Вход D основных запоминающих элементов может управляться непосредственно выходами LUT Об или 05 через мультиплексоры AFFMUX, BFFMUX, CFFMUX или DFFMUX, или входами секций BYPASS, обходя функциональные генераторы через вход АХ, ВХ, СХ или DX. Вход D дополнительных триггеров может управляться вы- ходом LUT 05 или входами секции BYPASS через вход АХ, ВХ, СХ или DX. Когда 4 основных запоминающих элемента конфигурируются как защелки, 4 дополнительных запоминающих элемента использоваться не могут. Сигналы с выходов основных запоминающих элементов поступают на выходы секции AQ, BQ, CQ и DQ, а дополнительных триггеров — на выходы секции AMUX, BMUX, CMUX и DMUX.
Внутренняя логика FPGA 59 Рис. 4.6. Варианты конфигурации запоминающих элементов: 4 триггера и 4 триггера/защелки 4 .3.2. Сигналы управления запоминающих элементов Каждая секция имеет следующие сигналы управления запоминающими элемен- тами: синхронизации CLK, разрешения синхронизации СЕ и установки/сброса SR. Активным для сигналов СЕ и SR является высокий уровень, а сигнал синхрони- зации CLK может инвертироваться. Поэтому в проекте инвертор на линии сигнала синхронизации всегда реализуется внутри секции (поглощается секцией). Сигналы управления являются общими для всех запоминающих элементов в дан- ной секции, т. е. запоминающие элементы FPGA 7-й серии не имеют сигналов индиви- дуального управления. Поэтому если в проекте требуется индивидуальное управление триггерами, они будут размещены в разных секциях и может случиться ситуация, когда оставшиеся ресурсы этих секций будут использованы не полностью. Замечание. В проектах на FPGA 7-й серии следует избегать индивидуального управления запоминающими элементами. С другой стороны, все запоминающие элементы имеют опции индивидуальной инициализации: SRLOW — сброс по сигналу SR, по умолчанию устанавливает INIT0; SRHIGH — установка по сигналу SR, по умолчанию устанавливает INIT1; INIT0 — асинхронный сброс по включению питания или глобальная установ- ка/сброс; INIT1 — асинхронная установка по включению питания или глобальная установ- ка/сброс;
60 Раздел 4 SRTYPE — тип управления по сигналу SR: синхронный (SYNC) или асинхрон- ный (ASINC). Атрибуты SRLOW и SRHIGH могут устанавливаться индивидуально для каждого запоминающего элемента, однако выбор типа управления SRTYPE по сигналу SR не может устанавливаться индивидуально. Значения этих опций можно определить при описании проекта на языках проектирования HDL (VHDL или Verilog). Кроме того, основные запоминающие элементы имеют дополнительную опцию FF/LAT, с помощью которой они могут конфигурироваться как D-триггеры или как защелки. Отметим также, что все запоминающие элементы FPGA 7-й серии имеют только один управляющий вход SR для синхронной или асинхронной установки или сброса. Это означает, что управление триггерами с помощью двух различных сигналов (один установки, а другой сброса) потребует использования дополнительной логики. Замечание. В проектах на FPGA 7-й серии следует избегать управления тригге- рами с помощью двух различных сигналов: установки и сброса. 4.4. Распределенная память RAM Функциональные генераторы LUT в секциях типа SLICEM могут использовать- ся как элементы памяти RAM. Такая память называется распределенной памятью (имеется в виду, что такая память распределена по блокам CLB во внутренней логике FPGA), в отличие от памяти RAM, реализуемой в блоках RAM. Обычно распреде- ленная память используется для реализации элементов памяти небольшого размера (при наличии достаточного количества логических ресурсов), чтобы сохранить ре- сурсы блоков RAM. Как правило, операции записи в распределенную память являются синхронными (управляемые синхросигналом СК и сигналом разрешения записи WEN генератора LUT), а операции чтения — асинхронными. При необходимости операция чтения также может быть реализована как синхронная. Для этого на выход памяти уста- навливается дополнительный триггер той же самой секции. Используя этот триггер, производительность распределенной памяти RAM увеличивается благодаря уменьше- нию значения задержки триггера clock-to-out. Однако добавляется дополнительное время ожидания синхросигнала. Таблица 4.5 Конфигурации распределенной RAM RAM Число LUT Примитив 32x15 1 RAM32X1S 32xlD 1 RAM32X1D 32x2Q 4 RAM32M 32X6SDP 4 RAM32M 64x15 1 RAM64X1S 64X1D 2 RAM64X1D 64X1Q 4 RAM64M 64X3SDP 4 RAM64M 128x15 2 RAM128X1S 128xlD 4 RAM128X1D 256x15 4 RAM256X1S Элементы распределенной памяти совмест- но используют один и тот же вход синхрониза- ции. Для выполнения операции записи вход раз- решения записи WEN (управляемый выводом СЕ или WE секции SLICEM), должен быть установ- лен в высокое значение. С помощью элементов распределенной памяти может быть реализова- на: • однопортовая память RAM (S); • двухпортовая память RAM (D); • простая двухпортовая память RAM (SDP); • четырехпортовая память RAM (Q). Возможные конфигурации распределенной памяти, реализуемые на одной секции и используемые при этом примитивы, приведены в табл. 4.5. 4.4.1. Однопортовая распределенная память RAM Однопортовая распределенная память RAM (рис. 4.7) имеет одну общую адрес- ную шину А, которая используется как для чтения, так и для записи, однобитовые
Внутренняя логика FPGA 61 RAM64X1S D А[5:0} WCLK WE Рис. 4.7. Пример однопортовой памяти RAM64X1S порты входа данных D и выхода данных О (который может запоминаться в триггере), а также управляющие сигналы: синхронизации записи WCLK и разрешения записи WE. 4.4.2. Двух-портовая распределенная память RAM В двухпортовой распределенной памяти RAM (рис. 4.8), в отличие от однопор- товой, имеется две адресные шины А и DPRA, а также два выхода SPO и DPO. Адресная шина А используется для чтения данных из первого порта на выход SPO, а адресная шина DPRA используется для чтения данных из второго порта на выход SPO. Для записи в оба порта совместно используется адресная шина А. Вход данных D и сигналы управления WCLK и WE являются общими для обоих портов. В два блока двухпортовой памяти может быть записана только одинаковая информация, при этом используется вход данных D, один порт с адресной шиной А и управляющие сигналы WCLK и WE. Чтение информации из двухпортовой памяти может осущест- вляться по двум независимым портам: один порт с выходом SPO адресуется шиной А, а другой порт с выходом DPO адресуется шиной DPRA. RAM64X1D Рис. 4.8. Пример двухпортовой памяти RAM64X1D 4.4.3. Простая двухпортовая распределенная память RAM В простой двухпортовой распределенной памяти RAM (рис. 4.9) один порт (реа- лизуемый в секции на LUT D) используется только для записи, а второй порт (реали-
62 Раздел 4 Рис. 4.9. Пример простой двухпортовой памяти RAM32x6SDP зуемый в секции на LUT А, В и С) используется только для чтения. Адресная шина WADDR первого порта используется для записи, а адресная шина RADDR второго порта — для чтения. Входные данные поступают на шину DATA, а выходные данные выводятся на шину О. Отметим, что в простой двухпортовой памяти SDP не исполь- зуются выходы генератора LUT D. В то же время в элементы памяти на основе генера- торов LUT А, В и С может записываться и читаться независимая информация. Таким образом, ширина слова данных распределенной памяти может достигать 6 битов. 4.4.4. Четырехпортовая распределенная память RAM В четырехпортовой памяти RAM (рис. 4.10) один порт используется для записи и чтения, а остальные три порта — только для чтения. Адресная шина ADDRD является общей при записи для всех четырех портов, а также используется для чтения из порта D. Адресные шины ADDRA, ADDRB и ADDRC используются только для чтения из портов А, В и С соответственно. Записываемые данные поступают на общий вход DID, а читаемые данные формируются на выходах DOA, DOB, DOC и DOD. Во все четыре элемента памяти, реализуемых на генераторах LUT А, В, С и D, может быть записана только одна и та же информация, которая поступает по
Внутренняя логика FPGA 63 Рис. 4.10. Пример четырехпортовой памяти RAM64xlQ RAM128X1S Рис. 4.11. Пример однопортовой памяти RAM128X1S
64 Раздел 4 входу DID и адресуется шиной ADDRD. Чтение информации осуществляется по че- тырем независимым портам на выходы DOA, DOB, DOC и DOD, которая адресуется четырьмя независимыми адресными шинами ADDRA, ADDRB, ADDRC и ADDRD соответственно. Для реализации распределенной памяти RAM с глубиной больше 64 требуется использование мультиплексоров F7AMUX, F7BMUX и F8MUX, например, как для па- мяти RAM128xlS (рис. 4.11). 4.4.5. Другие конфигурации распределенной памяти, реализуемые в одной секции Четыре примитива RAM64X1S (см. рис. 4.7) могут занимать одну секцию SLI- CEM, совместно используя управляющие сигналы, а также адресную шину А; такая конфигурация эквивалентна однопортовой памяти RAM64x4S. Подобным образом, два примитива RAM64X1D (см. рис. 4.8) могут занимать одну секцию SLICEM, совместно используя управляющие сигналы, а также адресную шину А; такая конфигурация эквивалентна двухпортовой памяти RAM64x2D. Аналогично, два примитива RAM128X1S (см. рис. 4.11) могут занимать одну секцию SLICEM, совместно используя управляющие сигналы, а также адресную шину А; такая конфигурация эквивалентна двухпортовой памяти RAM128x2S. Конфигурации распределенной памяти RAM с размерами больше, чем в рассмот- ренных конфигурациях, для своей реализации требуют более одной секции SLICEM и строятся с использованием дополнительной логики. 4.4.6. Функционирование распределенной памяти RAM Операция записи в распределенную память всегда является синхронной, управ- ляется фронтом синхросигнала и разрешена при высоком уровне на линии WE (раз- решения записи). При выполнении операции записи значение выхода D загружается в ячейку памяти, расположенную по адресу А. В общем случае операция чтения из распределенной памяти является асинхрон- ной. Адрес А определяет выход О для однопортового режима или выход SPO для двухпортового режима, а адрес DPRA определяет выход DPO для двухпортового ре- жима. В каждый момент времени новый адрес применяется к адресным выводам, значение адресуемой ячейки памяти становится доступным на выходе после времени задержки доступа к LUT. Эта операция не зависит от сигнала синхронизации. Отметим, что имеется возможность устанавливать триггеры на выходах памяти, которые управляются тем же синхросигналом, что и операция чтения. В этом случае операция чтения становится синхронной. Таким образом, распределенная память предназначена для реализации в проекте элементов памяти небольшого размера с целью экономии ресурсов блоков памяти RAM. Распределенная память может функционировать в следующих режимах: • однопортовая RAM32xlS, RAM64xlS, RAM128xlS и RAM256xlS; • двухпортовая RAM32xlD, RAM64xlD и RAM128xlD; • простая двухпортовая RAM32x6SDP и RAM64x3SDP; • четырехпортовая RAM32x2Q и RAM64xlQ. Дополнительно в одной секции могут быть реализованы следующие конфигура- ции распределенной памяти: RAM64x4S, RAM64x2D и RAM128x2S. Операция записи распределенной памяти всегда синхронная (управляется сигна- лами WCLK и WE), а операция чтения может быть как асинхронной (по умолчанию), так и синхронной (управляется сигналом WCLK). Сигнал синхронизации может ин- вертироваться.
Внутренняя логика FPGA 65 4.5. Распределенная память ROM Функциональные генераторы LUT обо- их типов секций SLICEM и SLICEL могут также реализовать распределенную память типа ROM (Real Only Memory). Возмож- ные конфигурации памяти ROM и требуе- мое для их реализации число LUT приведе- ны в табл. 4.6. Таблица 4.6 Конфигурации распределенной памяти ROM Конфигурация ROM Число LUT ROM32X1 1 ROM64X1 1 ROM 128x1 2 ROM256X1 4 4.6. Сдвиговые регистры, реализуемые в секциях SLICEM Каждый функциональный генератор LUT секции SLICEM может использоваться как 32-битовый сдвиговый регистр. В этом режиме функционирования генератора LUT входом данных сдвигового регистра является вывод DI1, а выходом данных — вывод МС31 (рис. 4.4). Каждый LUT может задерживать данные от одного до 32 циклов синхронизации. Выводы DI1 и МС31 могут последовательно соединяться для создания больших сдвиговых регистров. В одной секции SLICEM может быть реализован сдвиговый регистр до 128 битов. Возможно также объединение сдвиговых регистров нескольких секций, однако при этом задействуются ресурсы матрицы переключений. Сдвиговые регистры могут использоваться при реализации: • задержек, времени ожидания; • синхронной памяти типа FIFO (first-in, first-out); • ассоциативной памяти САМ (content addressable memory). Условное обозначение сдвигового регистра, соответствующего примитиву SRLC32E и реализуемого на одном LUT, приведено на рис. 4.12. Последовательный поток данных поступает на вход сдвигового регистра DI1 с входа D или с выхода МС31 предыдущего LUT. Сдвигаемые данные появляются на выходе Q31 (МС31 LUT). Адресная шина А[4:0] (А[б:2] LUT) показывает номер бита, значение которого выводится на выход Q (Об LUT). Значение выхода дополнительно может запоминаться в триггере. Операция сдвига является синхронной и управляется сигналом синхронизации CLK и разрешения синхронизации СЕ. Логика работы сдвигового регистра показана на рис. 4.13. Рис. 4.12. Условное обозначение сдвигового регистра SRLC32E
66 Раздел 4 SHIFTOUT(Q31) Рис. 4.13. Структурная схема сдвигового регистра SRLC32E Сдвиговый регистр SRLC32E имеет фиксированную длину 32 бита и выполня- ет сдвиг данных на каждом такте синхросигнала. Значение каждого бита сдвигового регистра может быть передано на выход Q с помощью мультиплексора MUX, управля- емого адресной шиной А. Это архитектурное свойство позволяет строить сдвиговые регистры малого размера, например на 15 битов. Если адрес на шине А не изменя- ется, то операция чтения является статической, а если адрес на шине А изменяется, то операция чтения является динамической. Отметим, что в сдвиговых регистрах SRL не поддерживаются операции установки и сброса, а также параллельная загрузка данных. Соединенные в цепь сдвиговые регистры и мультиплексоры F7AMUX, F7BMUX и F8MUX позволяют реализовать в одной секции SLICEM сдвиговый регистр до 128 битов (рис. 4.14). Возможно также создание сдвиговых регистров с числом битов более 128, однако при этом будут задействоваться дополнительные ресурсы FPGA. Отметим, что при установке на выходе сдвигового регистра дополнительного триггера длина сдвигового регистра увеличивается на единицу. Отметим некоторые свойства сдвиговых регистров, реализуемых в секциях SLICEM: • один функциональный генератор LUT позволяет реализовать сдвиговый регистр длиной до 32 битов; • одна секция позволяет реализовать сдвиговый регистр длиной до 128 битов; • при установке на выход триггера длина сдвигового регистра увеличивается на единицу; • выходной бит Q (размер сдвигового регистра) определяется значением на ад- ресной шине А; • выход Q31 всегда содержит значение последнего бита сдвигового регистра; • операция чтения сдвигового регистра может быть динамической, при изменении значений на адресной шине А, или статической, при постоянном значении на адресной шине А; • сдвиговые регистры секций SLICEM не поддерживают операции установки или сброса, а также параллельную загрузку данных; • операция сдвига требует одного фронта синхросигнала; • выход Q31 изменяется синхронно после каждой операции сдвига;
Внутренняя логика FPGA 67 SHIFTIN (D) A[6:0] CLK WE Рис. 4.14. 128-битовый сдвиговый регистр, реализуемый в одной секции SLICEM • операции чтения динамической длины являются асинхронными; • операции чтения статической длины являются синхронными; • вход данных имеет временной параметр setup-to-clock (время установки после прихода фронта синхросигнала). 4.7. Мультиплексоры Функциональные генераторы LUT секций обоих типов SLICEM и SLICEL могут конфигурироваться для реализации мультиплексоров. При этом возможны следу- ющие конфигурации: • мультиплексоры 4:1, используя один LUT, четыре мультиплексора 4:1 на секцию; • мультиплексоры 8:1, используя два LUT, два мультиплексора 8:1 на секцию; • мультиплексоры 16:1, используя четыре LUT, один мультиплексор 16:1 на секцию. В структурах мультиплексоров 8:1 используются специальные мультиплексоры F7AMUX и F7BMUX, а в мультиплексорах 16:1 дополнительно используется специ- альный мультиплексор F8MUX (рис. 4.15). Отметим, что хотя выходы мультиплексоров являются комбинационными, они могут буферизироваться в запоминающих элементах блока CLB. Возможно также создание мультиплексоров шире, чем 16 входов, в нескольких секциях CLB. Однако при этом используются дополнительные ресурсы FPGA.
68 Раздел 4 SLICE SELD(1:0], DATA D [3:0] Input (1) SEL C(1:0]. DATA C [3:0] Input (1) SELF7(1) CLK SEL В [1:0]. DATA В [3:0] Input (2) SELA [1:0], DATA A [3:0] Input (2) SELF7(2) 8:1 MUX Output (1) Registered Output 8:1 MUX Output (2) Registered Output Рис. 4.15. Реализация мультиплексора MUX 16:1 в одной секции 4.8. Логика переноса В дополнение к функциональным генераторам, каждая секция содержит спе- циальную схему, называемую логикой переноса (Carry Logic), которая показана на рис. 4.16. В основном, схема логики переноса предназначена для реализации последова- тельных сумматоров (вычитателей) с очень малым временем переноса (заема) меж- ду разрядами. Данная схема может также использоваться при построении других функциональных узлов, таких как умножители, счетчики, компараторы, декодеры ад- реса, а также широкие (с большим числом аргументов) логические функции, осо- бенно AND и OR. Схема логики переноса (рис. 4.16) включает четыре мультиплексора MUXCY и че- тыре вентиля XOR. На входы S0-S3 поступают сигналы распространения (propagate) переноса, формируемые на выходах Об функциональных генераторов LUT. На входы DI0-DI3 поступают сигналы генерации (generate) переноса, которые формируются на выходах 05 функциональных генераторов LUT (при создании умножителей) или поступают с входов секции АХ, ВХ, СХ и DX схемы обхода BYPASS (при создании сумматоров или вычитателей). Выходы 00-03 содержат значение суммы, а выходы СОО-СОЗ — значения переноса для каждого разряда. На выходах суммы дополни- тельно могут устанавливаться триггеры (при создании аккумуляторов). На вход CIN поступает значение переноса от схемы переноса предыдущей секции, а выход COUT передает сигнал схеме переноса следующей секции. Кроме того, име-
Внутренняя логика FPGA 69 06 From LUTB 1 > 05 From LUTB BX COUT (То Next Slice) Об From LUTD CD- 05 From LUTD CD—ft DXED--U 06 From LUTC CD- 05 From LUTC CD—ft cxcd^-V 06 From LUTA I >- 05 From LUTA Q—ft AXED-fU П Carry Chain Block T (CARRY4) -------CD DMUX/DQ* -------CDDMUX cTol—CD DQ >___(Optional) -------CD CMUX/CCT -----CDCMUX D~o]—CD CO >. (Optional) -----DBMUW _____CDBMUX d“q]—CD BQ >____(Optional) --------CD AMUX/AQ’ ---------CDAMUX D~Q|—CD AO I____(Optional) * Can be used rf unregistereckregistered outputs are free. CIN (From Previous Slice) Рис. 4.16. Схема логики переноса ется вход CYINIT, на котором может быть значение (0 или 1) начального переноса в цепи, а также от входа секции АХ, динамическое значение первого переноса (при создании сум матора/вы читателя). Входы CIN и выходы COUT могут последовательно соединяться для построения больших цепей переноса. Длина цепи переноса ограничивается только высотой столб- ца секций в архитектуре ASMBL. Заметим, что цепи переноса не могут пересекать гра- ницы суперлогических областей SLR в устройствах, использующих технологию SSL 4.9. Особенности применения внутренней логики 4.9.1. Общие рекомендации для эффективного использования блоков CLB Для эффективного и наиболее полного использования архитектурных возмож- ностей внутренней логики FPGA 7-й серии, необходимо придерживаться рассматри- ваемых ниже правил. В отношении использования ресурсов блоков CLB. При написании кода проек- та придерживайтесь универсального стиля описания языков проектирования VHDL или Verilog, это позволит средствам синтеза оптимально выбирать имеющиеся ре- сурсы блоков CLB.
70 Раздел 4 Инстанцирование (создание экземпляров) примитивов отдельных ресурсов бло- ков CLB следует использовать только в случае необходимости удовлетворения опре- деленным требованиям по стоимости и производительности; дело в том, что средства синтеза автоматически создают необходимые примитивы на основании кода проекта. Для проверки эффективности реализации проекта сравнивайте полученные ре- зультаты с предполагаемым количеством секций. В случае недостатка ресурсов в целевом устройстве следует определить, какой фактор является ограничивающим, и рассмотреть возможности использования аль- тернативных ресурсов, например: • перемещение регистров в блоки сдвиговых регистров SRL или в распределен- ную память RAM; • перемещение распределенной памяти RAM в блоки памяти RAM; • перемещение общей логики блоков CLB в секции цифровой обработки сигна- лов DSP. В случае, когда проект переносится из одного семейства FPGA (CPLD) в другое, удалите из него все инстанцирования, а также любые ограничения на отображение (mapping) и план кристалла (floorplanning) (детали см. в документе UG429 7 Series FPGAs Migration Methodology Guide). При написании кода проекта на языках VHDL и Verilog придерживайтесь реко- мендаций фирмы Xilinx, которые изложены в руководстве по технологии синтеза XST (см. документ UG687 XST User Guide for Virtex-6, Spartan-6, and 7 Series Devices). В отношении конвейеризации. Особенностью архитектуры FPGA 7-й серии явля- ется большое количество триггеров (по два на каждый LUT). Для их эффективного использования и повышения производительности проекта старайтесь широко исполь- зовать конвейеризацию при проектировании последовательных схем. В отношении сигналов управления. FPGA 7-й серии располагают относительно ограниченными ресурсами для реализации сигналов управления. Поэтому: • используйте управляющие сигналы только тогда, когда они необходимы; • избегайте использования глобального сигнала сброса и минимизируйте исполь- зование локальных сигналов сброса; • для управляющих сигналов в качестве активного используйте высокий уровень, поскольку использование низкого уровня в качестве активного требует задейст- вования дополнительных логических ресурсов; • избегайте использование для одного и того же триггера двух управляющих сиг- налов (установки и сброса); дело в том, что все триггеры РРСА7-й серии имеют только один вход управления SR, который может использоваться либо для уста- новки, либо для сброса, а применение двух различных управляющих сигналов установки и сброса требует задействования дополнительных логических ресурсов; • избегайте использования управляющих сигналов для сдвиговых регистров и эле- ментов памяти небольшого размера; это позволит вместо ресурсов блоков памя- ти RAM использовать ресурсы блоков CLB. В отношении используемых средств автоматизации проектирования. Программ- ные средства проектирования, в случае их правильного использования, предоставля- ют пользователю широкие возможности для оптимизации проекта. Поэтому: • для автоматического улучшения производительности проекта используйте вре- менные ограничения проекта; • производительность проекта также можно улучшить за счет большего времени работы программных средств проектирования путем установки соответствующих опций.
Внутренняя логика FPGA 71 4.9.2. Использование защелок в качестве логических вентилей Поскольку функция защелки является чувствительной к уровню сигнала, она может использоваться как эквивалент логического вентиля. Для определения этой функции служат примитивы AND2B1L (2-входовой вентиль AND с одним инверсным входом) и OR2L (2-входовой вентиль OR), как показано на рис. 4.17. Реализация вентиля OR2L показана на рис. 4.18. Рис. 4.17. Примитивы AND2B1L и OR2L Рис. 4.18. Реализация вентиля OR2L (Q = D или SRI) Использование вентилей AND2B1L и OR2L сохраняет ресурсы генераторов LUT. Вентили допускают инициализацию к известному состоянию при включении пита- ния и при активизации сигнала глобальной установки/сброса GSB (Global Set/Reset). Используя эти примитивы, можно сократить число логических уровней и увеличить плотность логики устройства. Однако, поскольку требуются статические входы для синхросигнала и разрешения синхронизации, использование примитивов AND2B1L и OR2L может создать проблемы упаковки регистров в секции, запрещая использова- ние остальных регистров и защелок данной секции. 4.9.3. Использование схемы логического переноса Схема специального логического переноса в блоках CLB улучшает производи- тельность арифметических функций, таких как сумматоры, счетчики и компараторы. Проекты, которые включают подобные узлы, автоматически задействуют логику пе- реноса. Более сложные функции, включающие умножители, могут реализовываться, используя отдельную секцию DSP48E1. Выбор между применением схемы логики переноса блока CLB и секцией DSP48E1 зависит от приложения. Малые арифметические функции могут быть реализованы быстрее и с меньшим энергопотреблением путем использования логического перено- са блока CLB, по сравнению с секцией DSP48E1. Когда ресурсы секции DSP48E1 полностью израсходованы, секции CLB и логический перенос обеспечивают эффек- тивную альтернативу. Для более сложных функций логику переноса можно ввести с помощью макро- сов, разработанных для FPGA 7-й серии. Универсальные макросы (unimacros) вклю- чают сумматоры, счетчики, компараторы, умножители и умножители-аккумуляторы. Универсальные макросы используют секцию DSP48E1. Программа CORE Generator позволяет реализовать большинство из этих функций, при этом пользователь мо- жет выбирать, где будут реализованы функции: в логике переноса CLB или в сек- ции DSP48E1.
72 Раздел 4 4.9.4. Реализация синхронных сдвиговых регистров В общем случае выход Q сдвиговых регистров, реализуемых в секциях блоков CLB, является асинхронным, т. е. его значение устанавливается асинхронно в зависи- мости от значения на адресной шине, в то время как операции записи и сдвига яв- ляются синхронными. Для реализации полностью синхронного сдвигового регистра можно использовать дополнительный триггер секции, как показано на рис. 4.19. При этом сдвиговый регистр и триггер должны использовать один и тот же синхросигнал. Synchronous Output Поскольку триггер может рассматриваться в качестве последнего триггера в це- почке сдвигового регистра, адрес выбираемого бита должен указывать на требуемую длину минус единица. 4.9.5. Реализация больших сдвиговых регистров При необходимости построения больших сдвиговых регистров можно несколько примитивов SRLC32E последовательно соединить в одну цепочку. Для этого выход Q31 некоторого примитива SRLC32E соединяется с входом D следующего в цепочке примитива. При этом адресовать следует только последний примитив в цепочке. оит (72-bit SRL) OUT (72-bit SRL) Рис. 4.20. Пример реализации сдвигового регистра на 72 бита с асинхронным и синхронным выводом
Внутренняя логика FPGA 73 Пусть, например, необходимо построить сдвиговый регистр на 72 бита. Для этого можно использовать три примитива SRLC32E, первые два дают длину сдвигового регистра 64 бита (32 + 32), а на адресный вход третьего регистра подается значение ООНI2 = 710 (32 + 32 + 8 = 72) (напомним, что адресное значение 0 соответствует сдвиговому регистру длиной в 1 бит). Если необходимо построить синхронный сдвиговый регистр на 72 бита, то адре- суемое значение для третьего примитива следует уменьшить на единицу (рис. 4.20). 4.9.6. Использование распределенной памяти В общем случае распределенная память блоков СЕВ предназначена для реализа- ции памяти небольшого размера с целью сохранения ресурсов блоков памяти RAM. В проекте распределенная память может вводиться с помощью инстанции (созда- ния экземпляров примитивов распределенной памяти) или с помощью программы CORE Generator. Что использовать, распределенную память блоков СЕВ или память блоков RAM, зависит от имеющихся ресурсов, а также требований по производительности и энер- гопотреблению. Распределенная память обычно имеет меньшую задержку clock-out, меньше потребляет энергии и имеет меньше ограничений по размещению, чем блок RAM. Поэтому можно предложить следующие рекомендации по использованию рас- пределенной памяти: • если объем памяти не превышает 64 бита и имеются свободные ресурсы блоков CLB, всегда используйте распределенную память; • для памяти от 64 до 128 битов, если имеется дефицит блоков RAM, используйте распределенную память; • если ширина слова данных больше 16 битов, используйте блок RAM; • если необходимо уменьшить энергопотребление и повысить производительность, используйте распределенную память. 4.9.7. Использование глобальных управляющих сигналов GSR и GTS В дополнение к общецелевым межсоединениям, FPGA 7-й серии имеют два гло- бальных сигнала логического управления: GSR для глобальной установки/сброса всех регистров и триггеров в состояние инициализации и GTS для глобального асинхрон- ного перевода всех выводов в высокоимпедансное состояние. Сигналы GSR и GTS имеют высокий уровень активности. Каждый из глобальных управляющих сигналов GSR и GTS имеет собственную сеть межсоединений, которая отделена от ресурсов общецелевых межсоединений. Эти сигналы используются во время конфигурации FPGA. Если в проекте необходим общий сигнал сброса или установки всех триггеров устройства, с этой целью можно использовать сигнал GSR. То же относится и к сигналу GTS: если в проекте необходимо все выводы перевести в третье состояние, для этого можно использовать сигнал GTS. Напомним, что источники сигналов GSR и GTS определяются с помощью примитива STARTUPE2. 4.9.8. Оптимизация ресурсов межсоединений Межсоединения (interconnect) являются программируемой трассировкой сигна- лов внутри FPGA между входами и выходами функциональных элементов, таких как секции IOB, CLB, DSP и блоки RAM. Межсоединения для оптимизации соединений разделены на сегменты. Средство Place and Route (PAR) пакета ISE использует мат- рицу межсоединений для обеспечения оптимальной системной производительности и быстрого времени компиляции.
74 Раздел 4 Большинство свойств межсоединений являются недоступными для разработчи- ков FPGA. Обычно межсоединения реализуются программным обеспечением автома- тически на основании ограничений на производительность проекта. Из всех возмож- ностей межсоединений доступными пользователю являются: • использование глобальных управляющих сигналов GSR и GTS с помощью при- митива STARTUPE2; • выбор ресурсов трассировки синхросигналов путем использования буферов син- хросигналов (см. документ UG472 7 Series FPGAs Clocking Resources User Guide). В случае неудовлетворительного решения задач трассировки межсоединений воз- можны три подхода для решения данных проблем: • выполнение временного анализа и временных характеристик; • использование копирования источника сигнала сети; • изменение плана кристалла. Временный анализ межсоединений позволяет определить тип межсоединения, расстояние, требуемое для проведения в устройстве, и число матриц переключений, чтобы добавить задержку на матрице переключений к общей задержке. Большинство временных проблем решаются путем проверки задержек блоков и определяя влияние использования меньшего числа уровней или более быстрых путей. Если задержки межсоединений кажутся слишком большими, увеличиваются усилия по реализации уровней или выполняются итерации по улучшению производительности. Сети с критическим временем или сети, которые загружены в большей степени, часто могут улучшаться путем дублирования источника сигнала сети. Конфигурация двойных 5-входовых LUT в одной секции упрощает дублирование логики. Дублиро- вание логики во многих секциях дает программному обеспечению больше гибкости для размещения независимых источников. Путем создания плана кристалла (floorplanning), пользователь может определить ограничения на размещение компонентов проекта. Планирование размещения может быть выполнено либо до, либо после автоматического размещения и трассировки. Однако автоматическое размещение и трассировку всегда рекомендуется выполнять первыми, до определения пользовательского плана кристалла. Средства проектиро- вания Xilinx позволяют отображать размещение компонентов проекта в графическом виде. Это помогает проектировщику выбрать между RTL-кодированием (синтезом) и реализацией с широким исследованием проекта с помощью аналитических функций. 4.9.9. Особенности применения устройств, использующих технологию SSI Как было отмечено ранее, некоторые устройства семейства Virtex-7 используют технологию стековых кремниевых межсоединений (stacked silicon interconnect — SSI). Эти устройства предоставляют уникальный дополнительный тип ресурсов межсоеди- нений, названных супердлинными линиями (super long line — SLL). Эти специальные ресурсы трассировки могут трактоваться подобно другим ресурсам трассировки, по- скольку они являются обширными (более 10000) и быстрыми (задержка сигналов около 1 нс). Ресурсы SLL обеспечивают соединения между суперлогическими реги- онами (super logic region — SLR). Объединение нескольких регионов SLR эффективно увеличивает высоту столб- цов архитектуры ASMBL и увеличивает возможности устройства. Программное обес- печение позволяет использовать преимущества этой конфигурации, а пользователи могут применить планирование кристалла для размещения логики в регионах SLR и между регионами SLR.
Внутренняя логика FPGA 75 Однако распространение логического переноса ограничивается пределами одного региона SLR и не передается по линиям SLL. Такие же правила каскадирования рас- пространяются и на другие блоки: RAM, DSP и DCL Границы регионов SLR контроли- руются средствами планирования кристалла и указываются во временных рапортах. Проекты, реализуемые на устройствах с технологией SSI, требуют один экзем- пляр примитива STARTUPE2. В этом случае источник для сигналов GSR и GTS будет распространяться через границы региона SLR ко всем элементам устройства. Для получения дополнительной информации об устройствах, использующих техно- логию SSI, см. документы: DS180 7 Series FPGAs Overview, WP380 Xilinx Stacked Silicon Interconnect Technology Delivers Breakthrough FPGA Capacity, Bandwidth, and Power Efficiency. 4.10. Выводы Внутренняя логика FPGA 7-й серии состоит из столбцов конфигурируемых ло- гических блоков CLB (Configurable Logic Block). Блоки CLB в FPGA располагаются в виде регулярной матрицы. Между строками и столбцами блоков CLB находятся ресурсы общей трассировки кристалла (межсоединения). Каждый блок CLB состоит из двух секций Slice(l) и Slice(O). Для подключения CLB к общим ресурсам трассировки FPGA служит матрица переключений (Switch Matrix). Секции в пределах одного столбца соединяются вертикально с помощью цепей переноса. Секции одного блока CLB не имеют прямых соединений между собой. Возможна только передача сигналов по цепям переноса соседним секциям, расположенным вы- ше. При необходимости передачи сигналов между секциями в пределах одного блока CLB задействуются ресурсы матрицы переключений, а при передаче сигналов между блоками CLB задействуются ресурсы межсоединений. Каждая секция блока CLB содержит четыре 6-входовых функциональных гене- ратора LUT и 8 триггеров. Секции делятся на два типа: SLICEL и SLICEM. Секции типа SLICEM обладают дополнительными архитектурными возможностями, которые позволяют им конфигурироваться как блок распределенной памяти RAM на 256 битов или сдвиговый регистр SRL на 128 битов. Один блок CLB может содержать либо две секции SLICEL, либо одну секцию SLICEL и одну секцию SLICEM. Архитектура секции SLICEM включает четыре 6-входовых функциональных гене- ратора LUT (А, В, С, D), цепь переноса, 4 вентиля XOR, 4 выходных запоминающих элемента, 4 дополнительных триггера, схемы BYPASS обхода генераторов LUT, муль- типлексоры конфигурации для выбора сигналов, а также мультиплексоры F7AMUX, F7BMUX и F8MUX. Управляющие сигналы секции SLICEM представлены сигналами: SR — установки или сброса; CLK — синхронизации; СЕ — разрешения синхронизации; WE — разреше- ния записи в распределенную память RAM. Управляющие сигналы являются общими для всех запоминающих элементов секции. Поэтому триггеры FPGA 7-й серии не имеют сигналов индивидуального управления. Для управляющих сигналов SR, СЕ и WE активным является высокий уровень. Синхросигнал может программироваться с активным как возрастающим, так и падающим фронтом. Секция SLICEM суммарно имеет 37 входов и 13 выходов. В секции SLICEL от- сутствуют дополнительные входы Al, Bl, CI и DI, а также управляющий сигнал WE. Поэтому секция SLICEL имеет 32 входа и 13 выходов. Каждый функциональный генератор имеет 6 независимых входов А6:А1 и два независимых выхода 05 и Об. Функциональные генераторы секций SLICEM дополни-
76 Раздел 4 тельно имеют входы Dll, DI2, входы W6-W1, которые используются как адрес записи в память, управляющие сигналы синхронизации СК и разрешения записи WEN, а также выход МС31. Функциональный генератор LUT может реализовать: • одну функцию от 6 аргументов (на выходе Об) или • две функции от 5 общих аргументов (на выходах 05 и Об) или • две функции от 3 и 2 (или меньше) разных аргументов (на выходах 05 и Об). Для реализации функции от семи аргументов используются мультиплексоры F7AMUX и F7BMUX, а для реализации функции от 8 аргументов дополнительно ис- пользуется мультиплексор F8MUX. Одна секция может реализовать: • одну функцию от 8 аргументов; • две функции от 7 аргументов; • четыре функции от 6 аргументов; • восемь функций от 5 попарно общих аргументов; • четыре функции от 3 (или меньше) и четыре функции от 2 (или меньше) разных аргументов. Для реализации функций с числом аргументов больше 8 используется несколько секций и ресурсы межсоединений. Каждая секция имеет 4 основных (выходных) запоминающих элемента и 4 до- полнительных триггера. Выходные запоминающие элементы могут конфигурировать- ся либо как D-триггеры, либо как защелки. Защелка передает сигнал при низком уровне сигнала синхронизации CLK. Дополнительные триггеры могут конфигуриро- ваться только как триггеры. Каждая секция имеет следующие сигналы управления запоминающими элемен- тами: синхронизации CLK, разрешения синхронизации СЕ и установки/сброса SR. Сигналы управления являются общими для всех запоминающих элементов в дан- ной секции. Поэтому в проектах на FPGA 7-й серии следует избегать индивидуального управления запоминающими элементами. Все запоминающие элементы имеют опции индивидуальной инициализации. Поскольку в качестве запоминающих элементов в FPGA 7-й серии используют- ся D-триггеры или защелки, следует избегать использование триггеров другого типа (Т, RS, JK). Запоминающие элементы FPGA 7-й серии имеют только один управляющий вход SR для синхронной или асинхронной установки или сброса. Поэтому в проектах на FPGA 7-й серии следует избегать управления триггерами с помощью двух различных сигналов: установки и сброса. Функциональные генераторы LUT в секциях типа SLICEM могут использоваться как распределенная память RAM. Распределенная память предназначена для реали- зации в проекте элементов памяти небольшого размера с целью экономии ресурсов блоков памяти RAM. Операция записи в распределенную память является синхронной, а операция чте- ния — асинхронной. При необходимости операция чтения также может быть реали- зована как синхронная. С помощью элементов распределенной памяти может быть реализована: одно- портовая память RAM (S); двухпортовая память RAM (D); простая двухпортовая па- мять RAM (SDP); четырехпортовая память RAM (Q). Распределенная память может функционировать в следующих режимах: • однопортовая RAM32xlS, RAM64xlS, RAM128xlS и RAM256xlS;
Внутренняя логика FPGA 77 • двухпортовая RAM32xlD, RAM64xlD и RAM128xlD; • простая двухпортовая RAM32x6SDP и RAM64x3SDP; • четырехпортовая RAM32x2Q и RAM64xlQ. Дополнительно в одной секции могут быть реализованы следующие конфигура- ции распределенной памяти: RAM64x4S, RAM64x2D и RAM128x2S. В два блока двухпортовой распределенной памяти может быть записана только одинаковая информация, однако чтение из памяти осуществляется по двум незави- симым портам, аналогично для четырехпортовой распределенной памяти. Функциональные генераторы LUT обоих типов секций SLICEM и SLICEL мо- гут также реализовать память типа ROM. Возможные конфигурации памяти ROM: ROM32xl, ROM64xl, ROM128xl и ROM256xl. Каждый функциональный генератор LUT секции SLICEM может использоваться как 32-битовый сдвиговый регистр SRL. В этом режиме входом данных сдвигового регистра является вывод DI1, а выходом данных — вывод МС31. Выводы DI1 и МС31 могут последовательно соединяться для создания больших сдвиговых регистров. В одной секции SLICEM может быть реализован сдвиговый регистр до 128 битов. Возможно также объединение сдвиговых регистров нескольких секций, однако при этом задействуются ресурсы матрицы переключений. Сдвиговые регистры могут использоваться при реализации: задержек, времени ожидания; синхронной памяти типа FIFO (first-in, first-out); ассоциативной памяти САМ (content addressable memory). Значение каждого бита сдвигового регистра может быть передано на выход Q с помощью мультиплексора, управляемого адресной шиной А. Это позволяет строить сдвиговые регистры любого размера. В сдвиговых регистрах SRL не поддерживаются операции установки и сброса, а также параллельная загрузка данных. Перед использованием сдвиговых регистров, реализуемых в секциях внутренней логики, следует ознакомиться с их отличительными свойствами (см. подраздел 4.6.2). Функциональные генераторы LUT могут конфигурироваться для реализации мультиплексоров, при этом мультиплексор 4:1 реализуется на одном LUT, 8:1 — на двух LUT и 16:1 — на четырех LUT. В структурах мультиплексоров 8:1 используются специальные мультиплексоры F7AMUX и F7BMUX, а в мультиплексорах 16:1 допол- нительно используется специальный мультиплексор F8MUX. При реализации мультиплексоров с числом входов более 16 задействуются до- полнительные логические ресурсы FPGA. Каждая секция содержит специальную схему, называемую логикой переноса. Схе- ма логики переноса предназначена для реализации последовательных сумматоров (вычитателей) с очень малым временем переноса (заема) между разрядами. Дан- ная схема может также использоваться при построении таких функциональных узлов, как умножители, счетчики, компараторы, декодеры адреса и широкие (с большим числом аргументов) логические функции, особенно AND и OR. Входы CIN и выходы COUT могут последовательно соединяться для построе- ния больших цепей переноса. Длина цепи переноса ограничивается только высотой столбца секций в архитектуре ASMBL. Цепи переноса не могут пересекать границы суперлогических областей SLR в устройствах, использующих технологию SSL
5 Секции цифровой обработки сигналов DSP48E1 Кроме блоков CLB, в FPGA 7-й серии информация также преобразуется в секци- ях цифровой обработки сигналов (ЦОС — Digital Signal Processing — DSP) DSP48E1. Секции DSP48E1 в приложениях ЦОС обеспечивают лучшую гибкость и использо- вание ресурсов, повышают эффективность приложений, уменьшают потребляемую мощность и увеличивают максимальную частоту функционирования. Высокая произ- водительность FPGA 7-й серии позволяет реализовать множество медленных опера- ций в одной секции DSP48E1, используя методы временного мультиплексирования. Секции DSP могут использоваться для реализации цифровых фильтров, быстро- го преобразования Фурье (FFT), арифметических вычислений (сложение, вычитание, умножение, деление), операций с плавающей точкой, счетчиков и мультиплексоров широких шин. Каждая секция DSP48E1 включает: предварительный сумматор (pre-adder), ум- ножитель с накоплением (МАСС — Multiplier Accumulator), арифметическо-логическое устройство (ALU), детектор шаблона (pattern detector). Кроме того, секции DSP48E1 поддерживают реализацию архитектуры с одним потоком команд и несколькими по- токами данных (single instruction/multiple date — SIMD). Дополнительно секции DSP48E1 поддерживают много независимых функций: ум- ножение, умножение с накоплением (МАСС), умножение со сложением, 3-входовое сложение, побитовые логические функции, циклический сдвиг, компаратор абсолют- ных величин, обнаружение переполнения и потерю значимости, а также счетчик на большое число битов. Секции DSP48E1 позволяют с малым энергопотреблением и высокой произво- дительностью реализовать параллельные и конвейерные алгоритмы цифровой обра- ботки сигналов, которые используют много умножителей и аккумуляторов. Секции DSP48E1 также улучшают скорость и эффективность многих приложений вне цифро- вой обработки сигналов, такие как широкие динамические шинные преобразователи, генераторы адреса памяти и отображаемые на память регистры ввода-вывода. Рис. 5.1. Плитка из двух секций DSP48E1 и относительные размеры плитки Архитектура секций DSP48E1 также под- держивает каскадирование множества секций для формирования широких математических функций, фильтров ЦОС и сложной арифмети- ки без использования общей логики FPGA. Две секции DSP48E1 и специальные (ло- кальные) межсоединения формируют плитку (tile) DSP48E1 (рис. 5.1). В столбце DSP плит- ки располагаются вертикально. Высота одной плитки DSP48E1 соответствует пяти конфигу- рируемым логическим блокам CLB или одному блоку RAM на 18 Кбит. Устройства FPGA 7-й серии могут содержать от 3 до 20 столбцов DSP или от 240 до 3600 секций DSP48E1, обеспечивая производительность от десятков до тысяч
Секции цифровой обработки сигналов DSP48E1 79 Таблица 5.1 Число секций DSP48E1 в устройствах FPGA 7-й серии Микросхема Число секций DSP48E1 Число столбцов секций DSP48E1 Число секций DSP48E1 в столбце 7А100Т 240 3 80 7А200Т 740 9 10 7К70 240 3 80 7К160Т 600 6 100 7К325Т 840 6 140 7К355Т 1,440 12 120 7К410Т 1,540 11 140 7К420Т 1,680 12 16 7К480Т 1,920 12 160 7V585T 1,260 7 180 7V2000 2,160 9 24 7VX330 1,120 8 140 7VX415 2,160 18 120 7VX485 2,800 20 140 7VX550 2,880 18 20 7VX690 3,600 18 20 7VX980 3,600 20 18 7VX1140T 3,360 14 24 7VH580 1,680 14 12 7VH870 2,520 14 18 GMAC/c (гига операций умножения с накоплением в секунду). Число секций DSP48E1 для устройств FPGA 7-й серии приведено в табл. 5.1. 5.1. Архитектура секции DSP48E1 Общая архитектура секции DSP48E1 приведена на рис. 5.2. Архитектура портов А и D приведена на рис. 5.3, а порта В — на рис. 5.4. Основными преобразователями информации секции DSP48E1 (см. рис. 5.2) явля- ются предварительный сумматор (pre-adder), умножитель MULT 25x18 и 48-разрядое арифметическо-логическое устройство ALU. CARRYCASCOUT’ Рис. 5.2. Архитектура секции DSP48E1
80 Раздел 5 Входные данные в секцию DSP48E1 поступают по четырем шинам: 30-битовой А, 18-битовой В, 48-битовой С и 25-битовой D. Шины А и D могут использовать пред- варительный сумматор, который расположен во входном порту шин А и D (рис. 5.3). Шина В также имеет входной порт, показанный на рис. 5.4. Во входных портах шин А и В имеются двойные регистры А1 и А2 для шины А, а также В1 и В2 для шины В. Эти регистры используются при конвейерной обработке данных. Шины А и В образу- ют внутреннюю 48-разрядную шину А:В, при этом шина А представляет 30 старших разрядов, а шина В — 18 младших разрядов. Порты А и D с предварительным сумматором, а также порт В управляются 5- битовой входной шиной INMODE. Шина С является независимым (от шин А, В и D) входом данных и не имеет входного порта, а только один входной регистр С. Умножитель MULT принимает в качестве аргумента 25 битов от входного порта шин А и D, а также 18 битов от входного порта В, выполняет умножение и записывает результат в регистр М. Следующий уровень архитектуры составляют мультиплексоры X, У и Z. Они по- зволяют выбирать аргументы для 48-разрядного арифметическо-логического устрой- ства. Входами мультиплексора X являются: внутренняя шина А:В, выход регистра ум- ножителя М и цепь обратной связи от выходного регистра Р. Входами мультиплексора У являются: выход регистра умножителя М и выход регистра С независимой входной шины С. Входами мультиплексора Z являются: выход регистра С, цепь обратной свя-
Секции цифровой обработки сигналов DSP48E1 81 зи от выходного регистра Р и шина каскадирования PCIN. Входы обратной связи и шины каскадирования мультиплексора Z могут дополнительно сдвигаться вправо на 17 битов для возможности реализации более широкого умножения. Выбор необходимого входа для каждого мультиплексора X, У и Z обеспечивает 7-разрядная управляющая шина OPMODE. ALU получает аргументы с выходов мультиплексоров X, Y и Z, а также сигнал переноса CIN. Сигнал переноса выбирается с помощью мультиплексора, входами кото- рою являются входной сигнал CARRYIN и каскадный перенос CARRYCASCIN. Выбор сигнала переноса осуществляется с помощью управляющего сигнала CARRYINSEL Код операции, выполняемой ALU, определяется 4-битовой шиной ALUMODE. Резуль- тат, полученный в ALU, запоминается в выходном 48-битовом регистре Р. В выходных регистрах также запоминаются 4-битовые сигналы переноса CARRYOUT и каскади- рования CARRYCASCOUT. Кроме основных логических преобразователей, секция DSP48E1 содержит детек- тор шаблона (pattern detector), выходами которого являются сигналы PATTERN DE- TECT и PATTERNBDETECT. Для построения широких (т. е. большого размера) функциональных узлов пре- дусмотрено каскадное соединение секций DSP48E1 снизу вверх, в пределах одного столбца DSP-блоков. Данные от предыдущей секции поступают на входы ACIN и BCIN, а к следующей секции передаются по шинам ACOUT и BCOUT. Результаты вычислений от предыдущей секции поступают на входы PCIN, а к следующей секции передаются по шинам PCOUT. Аналогично передается сигнал переноса: поступает на вход CARRYCASCIN, передается с выхода CARRYCASCOUT. Кроме того, имеют- ся специальные каскадные сигналы MULTSIGNIN и MULTSIGNOUT, которые управ- ляются шиной OPMODE и предназначены для поддержки 96-битового расширения умножения с накоплением. Отметим некоторые архитектурные особенности секций DSP48E1. Двухуровневые каскадные регистры входов А и В предназначены для поддержки конвейерной обработки данных. Вход С является независимым, т. е. имеет собственный синхросигнал и управ- ляющий сигнал сброса. Выбор аргументов ALU может выполняться динамически с помощью мультип- лексоров X, Y, Z и управляющей шины OPMODE. При конвейерной обработке данных благодаря управляющей шине INMODE воз- можно динамическое переключение между операциями умножения (А*В) и деления (А:В). Для трехвходовых сумматоров или вычитателей возможен режим с одним пото- ком команд и несколькими потоками данных SIMD: • двойной 24-битовый сумматор/вычитатель/аккумулятор SIMD с двумя отдель- ными сигналами CARRYOUT; • учетверенный 12-битовый сумматор/вычитатель/аккумулятор SIMD с четырьмя отдельными сигналами CARRYOUT. ALU, кроме операций сложения и вычитания, позволяет выполнять побитовые логические операции AND, OR, NOT, NAND, NOR, XOR и XNOR от двух 48-битовых аргументов. Выполняемая операция может динамически указываться с помощью ши- ны ALUMODE. Детектор шаблона позволяет: • определять переполнение и потерю значимости; • выполнять сходящееся (конвергентное) округление;
82 Раздел 5 • определять шаблон конечной величины и на его основании формировать сигнал автоматического сброса. ALU, выходная шина Р и шина переноса CARRYOUT, кроме 48-битового сумма- тора, также поддерживают 24- и 12-битовые сумматоры. Дополнительный 17-битовый сдвиг вправо предназначен для возможности реа- лизации более широкого умножителя. Сигнал CIN входного переноса для ALU может поступать с входа CARRYIN, при этом возможна его буферизация в триггере, а также от предыдущей секции CARRYCASCIN. Допускается динамический выбор сигнала переноса с помощью ши- ны CARRYINSEL. Сигналы выходного переноса формируются как для каждого 12-битового сумма- тора на 4-битовой шине CARRYOUT, так и для 48-битового сумматора на выходе CARRYCASCOUT. Выходные переносы шины CARRYOUT используются в режиме работы с одним потоком команд и несколькими потоками данных SIMD. Кроме то- го, сигналы каскадирования CARRYCASCOUT и MULTSIGNOUT используются при реализации умножителя с накоплением МАСС на 96 битов. Все входы данных, а также выходы предварительного сумматора, умножителя и ALU имеют дополнительные регистры для поддержки конвейерной обработки данных. С этой же целью дополнительные регистры имеют все управляющие сигналы, а также шины OPMODE, ALUMODE и CARRYINSEL. Отметим, что максимальная произво- дительность секции DSP48E1 достигается только при конвейерной обработке данных. Для увеличения гибкости использования секция DSP48E1 имеет независимые сигналы разрешения синхронизации и сброса. Для уменьшения потребляемой мощ- ности, когда умножитель не используется, атрибут USEJMULT позволяет выключать внутреннюю логику умножителя. 5.2. Функционирование секции DSP48E1 Математическая часть секции DSP48E1 (рис. 5.5) состоит из 25-битового пред- варительного сумматора, умножителя на 25x18 битов в двоичном дополнительном коде, за которым следуют три 48-битовые мультиплексоры каналов передачи данных с выходами X, Y и Z. Затем следует арифмерическо-логическоеустройство (ALU), кото- рое может выполнять функции 3-входового сумматора/вычитателя или 2-входового логического устройства. При функционировании ALU в режиме 2-входового логи- ческого устройства умножитель использоваться не может. Таким образом, секция DSP48E1 имеет три активных элемента преобразования данных: предварительный сумматор, умножитель и арифметическо-логическое устройство. Кроме того, имеется детектор шаблона и возможность проводного сдвига вправо на 17 разрядов данных, поступающих с выхода Р на вход мультиплексора Z. Секция DSP48E1 имеет четыре входные шины А, В, С и D, по которым могут поступать входные данные. Входные данные на шинах А и В могут дополнительно запоминаться в двухуровневых регистрах один или два раза для помощи при создании конвейерных структур (см. рис. 5.3 и рис. 5.4). Другие входные данные и сигналы управления дополнительно могут запоминаться в регистрах один раз. Напомним, что максимальная частота функционирования секций DSP48E1 может достигаться только при использовании конвейерных регистров. Предварительный сумматор позволяет выполнять сложение или вычитание зна- чений входов А и D до поступления данных на умножитель. Дополнительно пред сумматор может обходиться потоком данных от входа D, делая D отдельным вход- ным путем данных для умножителя. Когда путь D не используется, выход конвейера
Секции цифровой обработки сигналов DSP48E1 83 Рис. 5.5. Упрощенная схема функционирования секции DSP48E1 А до поступления в мультиплексор может инвертироваться. Имеется до 10 режимов функционирования предсумматора, делая этот блок очень гибким для использования в различных приложениях. Функционирование секции DSP48E1 с использованием предварительного сумма- тора можно описать следующим выражением: Р = С ± (В х (D ± А) + CIN), (5.1) где Р — значение, формируемое в выходном регистре ALU. Отметим, что урав- нение (5.1) является особенно полезным при реализации симметричных фильтров (symmetrical filters). На второй стадии вычислений арифметическо-логическое устройство ALU в ре- жиме сумматора/вычитателя реализует следующую функцию: Р= (Z±(X+ Y+ CIN)) или Р = (-Z + (Х+ Y+ CIN) - 1). (5.2) Уравнение (5.2) выражает общую функцию, реализуемую сумматором/вычита- телем над выходами мультиплексоров X, Y, Z и сигналом CIN. Типичным использова- нием секции DSP48E1 является случай, когда входы А и В умножаются, а результат добавляется или вычитается из регистра С. Умножитель секции DSP48E1 является асимметричным (аргументы имеют раз- личный размер), он умножает 25- и 18-битовые числа в двоичном дополнительном коде и производит два 43-битовых частичных произведения (partial products). Эти два частичных произведения дают 86-битовый результат (рис. 5.6). До подачи на вход сумматора/вычитателя два 43-разрядных частичных произведения знаково рас- ширяются до 48 разрядов. Для достижения больших произведений поддерживается каскадирование умножи- телей с 17-битовым правым сдвигом. Правый сдвиг используется для выравнивания вправо частичных произведений на заданное число битов. Этот каскадный путь по-
84 Раздел 5 Partial Product 1 Partial Product 2 Optional MREG Рис. 5.6. Умножитель чисел в двоичном дополнительном коде с дополнительным регистром MREG дается на мультиплексор Z, который подсоединяется к сумматору/вычитателю со- седней секции DSP. Умножитель может эмулировать беззнаковую математику путем установки стар- шего значащего бита операнда в 0. Дополнительный конвейерный регистр MREG на выходе умножителя обеспечивает увеличение производительности за счет увеличе- ния задержки на такт синхросигнала. Когда умножитель не используется, ALU может реализовать 2-входовые пораз- рядные логические функции AND, OR, NOT, NAND, NOR, XOR и XNOR. Входами этих функций являются шины А:В, С, Р или PCIN, выбранные с помощью мульти- плексоров X и Z, при этом на выходе мультиплексора У устанавливаются либо все 1, либо все 0, в зависимости от выполняемой операции. Выход ALU также питает логику детектора шаблона. Детектор шаблона позво- ляет секции DSP48E1 поддерживать сходящееся (конвергентное) округление, автома- тический сброс счетчика, когда значение счета было достигнуто, а также переполне- ние, потерю значимости и насыщенность в аккумуляторах. Совместно с логическим устройством, детектор шаблона, может расширяться для выполнения 48-битового динамического сравнения двух 48-битовых полей. Это включает такие функции как А: В NAND С == 0 или А:В (поразрядная логика) С == Pattern. Функциями ALU управляют комбинации сигналов OPMODE, ALUMODE, CAR- RYINSEL и CARRYIN. 5.2.1. Функционирование ALU в режиме сумматора/вычитателя В режиме сумматора/вычитателя ALU может функционировать как один 48-би- товый сумматор/вычитатель, два 24-битовых сумматора/вычитателя или четыре 12-битовых сумматора/вычитателя. Входы данных в сумматор/вычитатель выбираются сигналами OPMODE и CAR- RYINSEL. Сигналы ALUMODE выбирают функцию, реализуемую в сумматоре/вычи- тателе. Таким образом, вместе сигналы OPMODE, CARRYINSEL и ALUMODE опре- деляют функционирование суммирующего/вычитающего/логического устройства. Когда ALU используется как логическое устройство, умножитель использоваться не должен. Биты OPMODE определяют разделение функций на части. Выполняемая опе- рация (сложение или вычитание) определяется состоянием управляющего сигнала ALUMODE. 5.2.2. Режим один поток команд, несколько потоков данных (SIMD) При функционировании ALU в режиме сумматора/вычитателя 48-битовый сум- матор/вычитатель/аккумулятор может разделяться на небольшие сегменты данных, где блокируется распространение внутренних переносов для обеспечения независи- мости функционирования всех сегментов.
Секции цифровой обработки сигналов DSP48E1 85 ALUMODE[3:0] Р[47:36], CARRYOUT[3] Р[35:24], CARRYOUT[2] Р[23:12], CARRYOUT[1] Р[11:0], CARRYOUT[0] Рис. 5.7. Конфигурация четырех 12-битовых сумматоров в режиме SIMD Сумматор/вычитатель/аккумулятор может разделяться на два 24-битных или че- тыре 12-битных устройства с выходным сигналом переноса для каждого сегмента (рис. 5.7). Режим сегментации SIMD является статической конфигурацией, как про- тивоположность динамическому типу управления с помощью сигналов шины OPMODE. На рис. 5.7 представлены четыре сегмента 12-разрядных сумматоров с двумя или тремя 12-разрядными входами, 12-битовым выходом и выходом переноса для каждого сегмента. Функции определяются динамически битами ALUMODE[3:0], а источник операндов — OPMODE[6:0]. В режиме SIMD работы ALU (один поток ко- манд, несколько потоков данных) все четыре арифметических устройства выполняют одну и ту же функцию. 5.2.3. Функционирование ALU в режиме логического устройства В режиме логического устройства ALU выполняет побитовые логические опе- рации над выходами мультиплексоров X и Z, при этом на выходах мультиплексора Y устанавливаются все нули или все единицы, в зависимости от выполняемой операции В табл. 5.2 представлены логические функции, которые могут быть реализованы ALU Таблица 5.2 Функции, реализуемые логическим устройством Реализуемая функция OPMODE[3:2] ALUMODE[3:0] Реализуемая функция OPMODE[3:2] ALUMODE 3:0] 3 2 3 2 1 0 3 2 3 2 1 0 XXOR 0 0 0 1 0 0 X XNOR Z 1 0 0 1 0 0 X XNOR Z 0 0 0 1 0 1 XXOR 1 0 0 1 0 1 X XNOR Z 0 0 0 1 1 0 X XOR 1 0 0 1 1 0 X XOR 0 0 0 1 1 1 X XNOR Z 1 0 0 1 1 1 X AND 0 0 1 1 0 0 X OR Z 1 0 1 1 0 1 X AND (NOT Z) 0 0 1 1 0 1 X OR (NOT Z) 1 0 1 1 0 1 X NAND Z 0 0 1 1 1 0 X NOR 1 0 1 1 1 0 (NOT X) OR Z 0 0 1 1 1 1 (NOT X) AND 1 0 1 1 1 1
86 Раздел 5 в режиме логического устройства, в зависимости от установки управляющих сигналов OPMODE и ALUMODE. Установка OPMODE[3:2] в «00» выбирает по умолчанию значение 0 на выходе мультиплексора У; установка OPMODE[3:2] в «10» выбирает «все единицы» на выхо- де мультиплексора Y. Значение битов OPMODE[1:0] выбирает выход мультиплексора X, а значение битов OPMODE[6:4] выбирает выход мультиплексора Z. 5.2.4. Детектор шаблона Детектор шаблона представляет собой устройство проверки на равенство выхо- да ALU. Однако использование детектора шаблона приводит к снижению скорости функционирования секции DSP48E1 из-за дополнительной логики на пути выходных данных (рис. 5.8). Схема детектора шаблона включает мультиплексор выбора шаблона, два муль- типлексора выбора маски, схему сравнения и выходные триггеры. Маска используется для маскирования определенных битов в шаблоне. В отдельных ячейках памяти хра- нятся 48-битовые значения шаблона и маски, значения которых с помощью соответ- ствующих атрибутов могут устанавливаться пользователем. Стандартным значением шаблона является 48‘Ь0000... 0, а маски — 48‘ЬООП... 1. Значения шаблона и маски могут также поступать с выхода регистра отдельного входа С. Дополнительно маска с входа С может инвертироваться и сдвигаться вправо на один или два разряда. Схема сравнения формирует два выходных сигнала PATTERNDETECT (PD) и PATTERN BDETECT (PBD), а также два внутренних сигнал PATTERN DETECT PAST и PATTERNBDETECTPAST. Детектор шаблона позволяет: • обнаруживать образец, при этом может дополнительно использоваться маска; • сравнивать образец динамического входа С с результатом А*В; • обнаруживать переполнение/потерю значимости/насыщение в битах старше би- та Р[46]; SEL MASK I. Denotes an infernal signal Рис. 5.8. Логика детектора шаблона
Секции цифровой обработки сигналов DSP48E1 87 • вычислять логические функции А:В == С, А.В OR С = = О, А:В AND С= = 1, А:В {функция}С == 0; • автоматически сбрасывать 48-разрядный счетчик при обнаружении конца счета; • обнаруживать средние точки для операций округления. В проектах детектор шаблона может также использоваться и для других целей: • дублировать вывод (например, знаковый бит), чтобы уменьшить разветвление выхода и таким образом увеличить скорость; • реализовать встроенный конвертер на одном бите (например, для знакового би- та), исключая необходимость выполнять это в логике FPGA; • проверять отдельные биты в арифметике с плавающей точкой, управлять специ- альными случаями, контролировать выходы секции DSP48E1; • устанавливать флаг, если встретится определенное условие или если определен- ное условие больше не выполняется. 5.2.5. Логика переполнения и потери значимости Аккумулятор должен иметь, по крайней мере, один защитный (guard) бит. Когда детектор шаблона устанавливается для обнаружения шаблона равного ООО. ..Ос мас- кой 00111... 1 (установки по умолчанию) секция DSP48E1 указывает флагами пере- полнение сверх 00111... 1 или потерю значимости сверх 11000... 0. Для возможности использования логики детектора шаблона атрибут USE_PATTERN_DETECT устанав- ливается в PATDET. Эта реализация переполнения/потери значимости использует избыточный знаковый бит и сокращает ширину выхода до 47 битов (рис. 5.9). Путем установки маски в другие значения, подобные 0000111... 1, может изме- няться битовое значение P[N], от которого обнаруживается переполнение. Эта логика поддерживает диапазон чисел до 2N — 1 (отрицательных до —2N) в двоичном допол- нительном коде, где N — число единиц в поле маски. Работу логики переполнения и потери значимости рассмотрим для примера, когда N = 2. В этом случае допустимыми значениями являются числа от 22 — 1 до —22 или от 3 до —4, а в качестве маски используется значение 0... 011. Случаи переполнения и потери значимости для нашего примера показаны на рис. 5.10 и 5.11 соответственно. Выход PD устанавливается в 1, если Р == pattern или mask; выход PBD уста- навливается в 1, если Р == patternb или mask. Когда выход PD переходит с 1 в 0, устанавливается флаг переполнения; когда выход PBD переходит с 1 в 0, устанавли- вается флаг потери значимости. PATTERNDETECTPASP1> PATTTERNBDETECT PATTTERNDETECT Overflow PATTERNBDETECTPAST{1) PATTERNBDETECT PATTERNDETECT Underflow Notes: 1. Denotes an internal signal PATTERN = 48'500000000... MASK = 48 ' 500111111... Рис. 5.9. Логика переполнения или потери значимости
88 Раздел 5 "X X X х X * * X х Хо ооооХо . 0001X0 . ооюХо .0011X0 0100Х" PD Caused by Overflow /--------------------- ....................*.I High to Low Overflow/ \_ Рис. 5.10. Условие переполнения “X * X x x x < x XO- OOOO^1-1111)G~^OX1 iioiX~i . 1100X1 ioio~X' PBD Caused by Underflow High to Low Underflow Рис. 5.11. Условие потери значимости 5.2.6. Другие функциональные возможности Высший уровень функций цифровой обработки сигналов в FPGA 7-й серии под- держивается путем каскадированием отдельных секций DSP48E1 в столбце DSP- блоков. Возможности каскадирования обеспечивают два канала передачи данных (ACOUT и BCOUT) и выходы секции DSP48E1 (PCOUT, MULTSIGNOUT и CARRY- CASCOUT). Для каскадного объединения секций в пределах одного столбца DSP- блоков служит внутренняя 48-разрядная шина PCOUT/PCIN. Возможности каскадирования обеспечивают высокопроизводительную реализа- цию функций цифровых фильтров. Например, проект фильтра с импульсной харак- теристикой конечной длины (FIR-фильтр) может использовать каскадные входы для ранжирования серий выборок входных данных, а каскадные выходы — для ранжиро- вания серий частичных выходных результатов. Для арифметики повышенной точности секция DSP48E1 обеспечивает провод- ной сдвиг вправо на 17 разрядов. Благодаря этому частичное произведение от одной секции DSP48E1 может быть выровнено по правому краю и добавлено к следующему частичному произведению, вычисленному в соседней секции DSP48E1. Применяя по- добную методику, секции DSP48E1 могут использоваться для построения больших умножителей. Кроме того, пропускную способность улучшает программируемая конвейерная обработка входных операндов, промежуточные произведения и выходы аккумулятора. Для объединения нескольких столбцов DSP-блоков необходимо использовать до- полнительные ресурсы FPGA. 5.3. Особенности применения В приложении А приведено описание примитива и макросов секции DSP48E1. Для лучшего понимания материала, представленного в данном разделе, читателю желательно ознакомиться с примитивом секции DSP48E1 из приложения А. 5.3.1. Реализация операции вычитания Секция DSP48E1 и структура цепи переноса блока CLB используют различные способы реализации операций вычитания. При выполнении операции вычитания в блоках CLB необходимо на вход переноса подать 1. Стандартная операция вычита- ния со значением ALUMODE = ООН в секции DSP48E1 не требует, чтобы вывод CARRYIN был установлен в 1.
Секции цифровой обработки сигналов DSP48E1 89 Sub/Add = 1/0 (Carry input must be 1 for a subtract operation, so it is not available for other uses.) Рис. 5.12. Реализация сумматора/вычитателя в блоках CLB Sub/add-------------*----------------------- Opt. carry input-------------------- A +/- (B + optional carry input) (Carryin available as an input even for subtract operations) Рис. 5.13. Сумматор/вычитатель с дополнительными входами переноса В двоичном дополнительном коде отрицательное значение получается путем вы- полнения побитной инверсии с прибавлением единицы, т. е. (-В) = ((not В) + 1). Блок CLB реализует выражение A-В как A+(not В)+ 1 (рис. 5.12). Альтерна- тивной реализацией двухвходового вычитания является not(B+(not А)) (рис. 5.13), данная реализация позволяет входам переноса к сумматору/вычитателю оставаться доступными при выполнении операции вычитания. Секция DSP48E1 использует вторую реализацию, расширенную до 3-входовых сумматоров с входом переноса (рис. 5.14). Это позволяет операциям SIMD секции DSP48E1 выполнять операции вычитания без сигнала CARRYIN для каждого такого устройства сложения/вычитания. FPGA 7-й серии и семейство Virtex-б дополнительно поддерживают следующие операции вычитания: DSP48E1 Slice Add/Subtract Рис. 5.14. 3-входовой сумматор секции DSP48E1
90 Раздел 5 Two CARRYOUT bits are produced in the hardware and are labeled as MULTSIGNOUT and CARRYCASCOUT in the simulation model One Bit Carry Out to Fabric CARRYOUT[3] P[47:0] Рис. 5.15. Трехвходовой сумматор • ALUMODE = 0001 реализует функцию (—Z+(Х+Y+CIN) —1); для большинства использований CIN устанавливается в 1 для подавления —1; • ALUMODE = 0010 реализует функцию — (Z+X+Y+CIN) —1; эта инверсия выхо- да Р каскадируется с другими секциями для реализации вычитания в двоичном дополнительном коде. Для операций сложения сигналы CARRYOUT[3] и CARRYCASCOUT являются одинаковыми, но отличаются при указании заема в операциях вычитания. CARRY- OUT[3] соответствует общепринятому соглашению для структурных вычитаний, что позволяет функции сложения/вычитания непосредственно использовать вывод CAR- RYOUT^] для расширения двухвходовых операций вычитания. Однако сигнал CAR- RYCASCOUT учитывает способ вычитания, используемый в секции DSP, и является идеальным при каскадировании с другими секциями DSP. 5.3.2. Сигналы MULTSIGNOUT и CARRYCASCOUT Сигнал CARRYOUT[3] не должен использоваться для нескольких операций ум- ножения, потому что умножитель генерирует две частичные суммы, которые затем суммируются в ALU. Трехвходовые операции сложения при цифровой обработке сигналов (включая умножение-сложение и умножение с накоплением) для обеспечения полной точности производят два бита переноса: MULTSIGNOUT и CARRYCASCOUT (рис. 5.15). Сигналы MULTSIGNOUT и CARRYCASCOUT служат как два бита переноса для операций МАСС-EXTEND. Если MULTSIGNOUT является битом знака умножителя, a CARRYCASCOUT является каскадируемым битом переноса, результатом является абстракция модели программы Unisim. Сигналы MULTSIGNOUT и CARRYCASCOUT в модели симуляции не соответст- вуют аппаратуре, но биты выхода Р выполняют согласование для поддержки функций, таких как МАСС-EXTEND. Например, трассировка CARRYCASCOUT к логике FPGA путем использования всех нулей в верхней секции DSP не выполняет согласование CARRYOUT[3] младшей секции DSP. Аналогично, сигнал MULTSIGNOUT, выводи- мый в структуру FPGA, действительно не является знаком результата умножения. Сигналы MULTSIGNOUT и CARRYCASCOUT позволяют строить высокоточные функции умножения с запоминанием (МАСС-EXTEND), такие как 25x18 аккумулиру- ющие умножения до 96 битов,работающие на максимальной частоте секции DSP48E1. Они также необходимы для установки OPMODEREG и CARRYINSEL в 1, когда стро- ятся большие аккумуляторы, такие как 96-битовый умножитель с накоплением. При функционировании только сумматора/вычитателя аппаратные и программ- ные значения сигнала CARRYOUT[3] совпадают. Однако аппаратные и программные значения сигнала CARRYCASCOUT совпадают, когда ALUMODE - 0000, и инвер- тируются, когда ALUMODE = ООН. Это несоответствие происходит из-за того, что
Секции цифровой обработки сигналов DSP48E1 91 Рис. 5.16. Программная и аппаратная модели МАСС (частичные суммы от функционирования умножителя складываются вместе в ALU) секция DSP48E1 выполняет операцию вычитания, используя алгоритм, отличный от логики FPGA. Поэтому секция DSP48E1 требует инвертирования CARRYOUT, в от- личие от логики FPGA. MULTSIGNOUT является неверным только при функционировании сумматора. При функционировании умножителя с накоплением МАСС значение сигнала CAR- RYOUT[3] является неверным. Аппаратные и программные значения сигналов CAR- RYCASCOUT и MULTSIGNOUT не совпадают из-за разногласий моделирования. Программная модель симулятора является абстракцией аппаратной модели. Пред- ставления программного обеспечения сигналов CARRYCASCOUT и MULTSIGNOUT логически не эквивалентны аппаратным сигналам CARRYCASCOUT и MULTSIGN- OUT. Логически эквиваленты только аппаратный и программный результаты на вы- ходе Р (рис. 5.16). 5.3.3. Реализация FIR-фильтров в виде дерева сумматоров В обычных прямых формах FIR-фильтров входной поток выборок поступает на один вход умножителей секции DSP48E1, а коэффициенты поступают на другой вход умножителей. Для объединения выходов нескольких умножителей используется де- рево сумматоров (рис. 5.17). Заключительные стадии последующего суммирования в логике FPGA являются узким местом производительности, которое потребляет много мощности. Глубина дерева сумматоров вычисляется как функция Iog2 Т, где Т — число ответвлений (taps) фильтра. Использование структуры дерева сумматоров на рис. 5.17 может также увеличить стоимость, логические ресурсы и потребляемую мощность. Блоки CLB FPGA 7-й серии позволяют использовать функциональные генера- торы LUT6 и цепи переноса в одной и той же секции для построения эффективных троичных сумматоров. Генератор LUT6 в блоке CLB функционирует как двойной генератор LUT5. Функциональный генератор LUT5 может использоваться как ком- прессор 3:2 для сложения трех входных значений с целью получения двух выходных значений (рис. 5.18). Двойной генератор LUT5, сконфигурированный как компрессор 3:2, в комбина- ции с 2-входовым сумматором каскадного переноса складывает три N-разрядных чис- ла для получения одного (N+2)-битового выхода (рис. 5.19) путем вертикального соединения требуемого числа секций.
92 Раздел 5 Рис. 5.17. Традиционное дерево сумматоров FIR-фильтра Сумматор 3:1, показанный на рис. 5.19, используется как строительный блок для больших деревьев сумматоров. В зависимости от числа входов, которые необходимо сложить, в структуре логики FPGA также могут быть построены компрессоры 5:3 или 6:3, используя несколько функциональных генераторов LUT5 или LUT6. Последова- тельная комбинация компрессоров 6:3 с двумя секциями DSP48E1 складывает вместе шесть операндов для получения одного выхода (рис. 5.20). Младшие значащие биты первой секции DSP48E1, которые остаются открытыми из-за левого сдвига шин У и Z, должны подсоединяться к нулю. Последняя секция DSP48E1 использует входные регистры А:В глубиной 2 для выравнивания (конвейер- ное соответствие) шины X к выходу первой секции DSP48E1. Для расширения числа входных шин могут использоваться несколько уровней компрессоров 6:3. Ниже приведены логические уравнения для шин X, Y и Z из рис. 5.20: Х(п) = А(п) XOR B(n) XOR C(n) XOR D(n) XOR E(n) XOR F(n);
Секции цифровой обработки сигналов DSP48E1 93 I RY BBUS(O) SUB/ I AX ADDB \ Z(1)4M2 j B41IN4 |B3»IN3 Y(1) ---F— BBUS(O)^B5I1N5 SUB/ ! 81 | INI ADDB О6В BMUX I BBUS(1) VDD O5B IN6 VDD O5A IN6 GND AMUX; BBUS(O) BQ I SUM(1) • ABUS(O) O6A1 AQ । SUM(O) Рис. 5.18. Троичное сложение/вычитание с компрессором 3:2 CY(1) CY(O) D Q —|CK U4HN4 АЗ IIN3 Y(O) ~4 Z(0) -f SUB/ JA5IIN5 ADDB D Q CK Y(n) = A(n)B(n) XOR A(n)C(n) XOR A(n)D(n) XOR A(n)E(n) XOR A(n)F(n) XOR B(n)C(n) XOR B(n)D(n) XOR B(n)E(n) XOR B(n)F(n) XOR C(n)D(n) XOR C(n)E(n) XOR C(n)F(n) XOR D(n)E(n) XOR D(n)F(n) XOR E(n)F(n); Рис. 5.19. Трехвходовой сумматор Рис. 5.20. Шести входовой сумматор
94 Раздел 5 Z(n) = A(n)B(n)C(n)D(n) OR A(n)B(n)C(n)E(n) OR A(n)B(n)C(n)F(n) OR A(n)B(n)D(n)E(n) OR A(n)B(n)D(n)F(n) OR A(n)B(n)E(n)F(n) OR A(n)C(n)D(n)E(n) OR A(n)C(n)D(n)F(n) OR A(n)C(n)E(n)F(n) OR A(n)D(n)E(n)F(n) OR B(n)C(n)D(n)E(n) OR B(n)C(n)D(n)F(n) OR B(n)C(n)E(n)F(n) OR B(n)D(n)E(n)F(n) OR C(n)D(n)E(n)F(n). Элементы компрессора и каскадного сумматора могут располагаться подобно де- реву для построения больших сумматоров. Последняя стадия суммирования должна реализовываться в секции DSP48E1. При необходимости могут добавляться конвей- ерные регистры для удовлетворения временным требованиям проекта. Отметим, что дерево сумматоров может иметь большую площадь и/или потребляемую мощность, чем каскад сумматоров. 5.3.4. Реализация FIR-фильтров в виде каскада сумматоров Каскадная реализация сумматоров FIR-фильтров использует каскадный путь внутри секции DSP48E1, при этом задействуется минимальное количество ресурсов FPGA. Данный подход включает вычисление совокупного результата путем прираще- ния значения, используя каскадный путь (рис. 5.21). В случае реализации FIR-фильтра в виде каскада сумматоров для достижения корректного результата важно найти баланс между задержкой входной выборки и коэффициентами FIR-фильтра. Отметим, что коэффициенты могут чередоваться во времени (волновые коэффициенты). Использование каскадных путей для реализации сумматоров существенно улуч- шает потребляемую мощность и скорость. Максимальное число каскадов в пути огра- ничивается только общим числом секции DSP48E1 в одном столбце кристалла. Высота столбцов в различных семействах FPGA 7-й серии может отличаться и должна рассматриваться при перенесении проектов между устройствами. Охват столбцов становится возможным, беря выход шины Р от вершины одного столбца DSP и добавляя структуру конвейерных регистров к маршруту этой шины к порту С нижней секции DSP48E1 соседнего столбца DSP. Также необходимо выполнять выравнивание входных операндов для охвата нескольких столбцов DSP. 5.3.5. Применение предварительного сумматора Возможности предварительного сумматора секции DSP48E1 могут использовать- ся в таких приложениях, как беспроводная связь (например, в алгоритмах Long-Term Evolution), универсальная фильтрация (FIR и IIR-фильтры), обработка изображения (например, альфа-смешивание) и др. На рис. 5.22 показано, как предсумматор может использоваться в проекте 8-отводного систолического симметричного FIR-фильтра. 5.3.6. Временное мультиплексирование секции DSP48E1 Высокоскоростные математические элементы в секции DSP48E1 дают возмож- ность проектировщикам использовать временное мультиплексирование в DSP-проек- тах. Временное мультиплексирование является процессом реализации более чем од- ной функции внутри одной секции DSP48E1 в различные моменты времени. Вре- менное мультиплексирование легко выполняется для проектов с низкой скоростью выборки. Следующее неравенство определяет число функций N, которые могут вы- полняться в одной секции DSP48E1: N X Fchannal F dice? где Fchannai — частота канала; Fciice — максимальная частота функционирования сек- ции DSP48E1.
Секции цифровой обработки сигналов DSP48E1 95 Slice 8 Y(n-10) Slice 5 No Wire Shift The post adders are contained entirely in dedicated silicon for highest performance and lowest power. No Wire Shift No Wire Shift --------------- 48 Slice 3 h2(n-2) " 18 r-*. ---- 18 bk No Wire Shift Slice 1 hO(n) 0—7^“ 18 Х(п) о—7^. 18 Sign Extended from 36 Bits to 48 Bits Рис. 5.21. Каскадный сумматор (пост-сумматоры находятся полностью внутри секций DSP48E1) Эти DSP-проекты с временным мультиплексированием имеют дополнительную конвейеризацию, которая позволяет достигнуть совокупной многоканальной скорос- ти выборки до 500 миллионов выборок в секунду. Временное мультиплексирование в проектах на секциях DSP48E1 позволяет уменьшить использование ресурсов и по- требляемую мощность. Секция DSP48E1 содержит базовые элементы классических FIR-фильтров: ум- ножитель с последующим сумматором, задерживающие или конвейерные регистры, а также возможность каскадировать входной поток (шина В) и выходной поток без обращения к общей структуре секции.
96 Раздел 5 Рис. 5.22. 8-отводной систолический симметричный FIR-фильтр Многоканальная фильтрация может рассматриваться как одноканальные филь- тры с временным мультиплексированием. В сценарии типичной многоканальной фильтрации несколько входных каналов фильтруются, используя отдельные цифро- вые фильтры для каждого канала. Благодаря высокой производительности секций DSP48E1 в FPGA 7-й серии единственный цифровой фильтр может использоваться для фильтрации восьми входных каналов путем синхронизации одного фильтра с 8- кратной частотой синхросигнала. Такая реализация использует 1/8 общих ресурсов FPGA, по сравнению с реализацией каждого канала отдельно. 5.3.7. Применение отображаемых на память регистров ввода-вывода Чтобы использовать секции DSP48E1 как отображаемые на память регистры ввода-вывода, пользователь должен широковещательно передать для использования шину записываемых данных ко всем секциям DSP48E1. Для возможности произволь- ного чтения необходим широкий мультиплексор. Уменьшение нагрузки трассировки может выполняться путем конфигурирования дополнительных секций DSP48E1 как мультиплексор широкой шины. Для загрузки соответствующих выходных регистров DSP значениями от шины за- писываемых данных необходим декодер адреса. Декодер адреса реализуется в струк- туре логики FPGA с целью индивидуального управления разрешением синхронизации регистров PREG. 5.3.8. Рекомендации по повышению производительности и уменьшению потребляемой мощности Для повышения производительности. Для того чтобы получить максимальную производительность секций DSP48E1 в FPGA 7-й серии, желательно использовать все конвейерные стадии в пределах секции. С этой целью проект нуждается в полной конвейеризации. Для проектов, основанных на умножителях, требуется три стадии конвейера. Для проектов, не основанных на умножителях, должны быть использованы две стадии
Секции цифровой обработки сигналов DSP48E1 97 конвейера. Если в проекте важна задержка сигналов и могут использоваться только один или два регистра в секции DSP48E1, позволяйте использовать регистр М. Для минимизации потребляемой мощности. Функции, реализованные в секции DSP48E1, потребляют меньше мощности, чем реализованные в структуре FPGA. Ис- пользование каскадных путей в пределах секции DSP48E1 вместо трассировки в струк- туре FPGA уменьшает энергопотребление. Умножитель с включенным регистром М использует меньше мощности, чем без использования регистра М. Для операндов меньше 25x18 можно сократить мощность структуры FPGA, помещая операнды в старшие значащие биты и заполняя нулями младшие значащие биты. Если умножи- тель не используется, атрибут USE_MULT должен быть установлен в NONE. 5.3.9. Рекомендации по применению секций DSP48E1 При описании DSP-проектов на языке HDL (hardware description language), таких как Verilog или VHDL, используйте знаковые величины. Как в секции DSP48E1, так и в структуре проекта используйте конвейер для повышения производительности и снижения энергопотребления. Для запоминания коэффициентов фильтров используйте защелки сдвиговых ре- гистров (SRL) в блоках CLB, распределенную память RAM и/или блоки памяти RAM. Рассмотрите возможность использования в проекте временного мультиплекси- рования. Небольшие умножители (например, 4x4), а также небольшие сумматоры и счет- чики реализуйте, используя функциональные генераторы LUT и цепи переноса бло- ков CLB. Если проект имеет большое число операций сложения или счетчиков, восполь- зуйтесь преимуществом режима SIMD для реализации функционирования в секции DSP48E1. Когда для функций в режиме SIMD входные регистры также помещаются в секцию DSP48E1, наблюдается двухкратное уменьшение стоимости и потребляемой мощности, по сравнению с использованием блоков CLB и ресурсов межсоединений. Когда реализуются функции с малым числом битов,входные операнды всегда рас- ширяйте знаково. Для минимизации потребляемой мощности операнды помещайте в старшие значащие биты, а младшие биты обнуляйте. Когда каскадируются различные секции DSP48E1, должны быть согласованы ста- дии конвейера различных путей сигналов. При реализации в секции DSP48E1 счетчика по возрастанию на одну единицу следует использовать вход CARRYIN; а для счетчиков, увеличивающихся на N или переменное число битов, можно использовать входы С или внутреннюю шину А:В. Счетчик секции DSP48E1 может использоваться для реализации логики управ- ления, которая работает с максимальной скоростью. Сдвиговые регистры SRL16 или SRL32 в блоках CLB и блоки RAM должны ис- пользоваться для запоминания коэффициентов фильтра или действовать как файл регистров или элементы памяти совместно с секцией DSP48E1. Поразрядная пе- редача входных битов (4 бита на межсоединение) спроектирована для соответствия передачи CLB- и RAM-блоков. Конвейерные регистры должны использоваться на выходах блоков сдвиговых ре- гистров SRL16 или RAM до подсоединения к входам секции DSP48E1. Это обес- печивает лучшую производительность входных операндов, поступающих в секцию DSP48E1. Блоки RAM могут использоваться как быстрые конечные автоматы для логичес- кого управления DSP-проектов.
98 Раздел 5 Для аппаратного ускорения процессорных функций секция DSP48E1 может ис- пользоваться совместно с процессором, например MicroBlaze или PicoBlaze. 5.4. Выводы Секции цифровой обработки сигналов DSP48E1 FPGA 7-й серии обеспечивают лучшую гибкость, улучшают использование ресурсов, повышают эффективность при- ложений, уменьшают потребляемую мощность и увеличивают максимальную частоту функционирования. Высокая производительность FPGA 7-й серии позволяет исполь- зовать методы временного мультиплексирования путем реализации нескольких мед- ленных операций в одной секции DSP48E1. Секции DSP могут использоваться для реализации цифровых фильтров, быстро- го преобразования Фурье, арифметических вычислений (сложение, вычитание, умно- жение, деление), операций с плавающей точкой, счетчиков и мультиплексоров шин. Каждая секция DSP48E1 включает: предварительный сумматор, умножитель с накопителем, арифметическо-логическое устройство и детектор шаблона. Кроме то- го, секции DSP48E1 поддерживают реализацию архитектуры с одним потоком команд и несколькими потоками данных SIMD для параллельной реализации нескольких опе- раций. С помощью секции DSP48E1 можно реализовать много независимых функций: умножение, умножение с накоплением (МАСС), умножение со сложением, 3-входовое сложение, побитовые логические функции, циклический сдвиг, компаратор абсолют- ных величин, обнаружение переполнения и потерю значимости, а также счетчик на большое число битов. Секции DSP48E1 позволяют с малым энергопотреблением и высокой произво- дительностью реализовать параллельные и конвейерные алгоритмы цифровой обра- ботки сигналов, которые используют много умножителей и аккумуляторов. Секции DSP48E1 также улучшают скорость и эффективность многих приложений вне цифро- вой обработки сигналов, такие как широкие динамические шинные преобразователи, генераторы адреса памяти и отображаемые на память регистры ввода-вывода. Архитектура секций DSP48E1 также поддерживает каскадное соединение мно- жества секций для формирования широких математических функций, фильтров ЦОС и сложной арифметики без использования общей логики FPGA. Устройства FPGA 7-й серии могут содержать от 3 до 20 столбцов DSP или от 240 до 3600 секций DSP48E1. Основными преобразователями информации секции DSP48E1 являются 25-бито- вый предварительный сумматор, умножитель на 25x18 битов и 48-битовое арифме- тическо-логическое устройство. Входные данные в секцию DSP48E1 поступают по четырем шинам: 30-битовой А, 18-битовой В, 48-битовой С и 25-битовой D. Шины А и D могут использовать предварительный сумматор, который расположен во входном порту шин А и D. Во входных портах шин А и В имеются двойные регистры, которые используются при конвейерной обработке данных. Шины А и В образуют внутреннюю 48-разрядную шину А:В. Шина С является независимым (от шин А, В и D) входом данных и не имеет входного порта, а только один входной регистр С. Умножитель MULT принимает в качестве аргумента 25 битов от входного порта шин А и D, а также 18 битов от входного порта В, выполняет умножение и результат записывает в регистр М.
Секции цифровой обработки сигналов DSP48E1 99 Следующий уровень архитектуры составляют мультиплексоры X, У и Z. Они по- зволяют выбирать аргументы для 48-разрядного арифметическо-логического устрой- ства. ALU получает аргументы с выходов мультиплексоров X, Y и Z, а также сигнал переноса CIN. Результат, полученный в ALU, запоминается в выходном 48-битовом регистре Р. Кроме основных логических преобразователей, секция DSP48E1 содержит де- тектор шаблона (pattern detector). Архитектурные особенности секций DSP48E1: • выбор аргументов ALU выполняеться динамически с помощью мультиплексоров X, Y, Z и управляющей шины OPMODE; • при конвейерной обработке данных благодаря управляющей шине INMODE воз- можно динамическое переключение между операциями (А*В) и деления (А:В); • режим с одним потоком команд и несколькими потоками данных SIMD позволяет реализовать двойной 24-битовый и учетверенный 12-битовый сумматор/вычита- тель/аккумулятор; • ALU, кроме сложения и вычитания, позволяет выполнять побитовые логические операции AND, OR, NOT, NAND, NOR, XOR и XNOR от двух 48-битовых ар- гументов, выполняемая операция может динамически указываться с помощью шины ALUMODE. Детектор шаблона позволяет: • определять переполнение и потерю значимости; • выполнять сходящееся (конвергентное) округление; • определять шаблон конечной величины и на его основании формировать сигнал автоматического сброса. Дополнительный 17-битовый сдвиг вправо предназначен для возможности реа- лизации более широкого умножителя. Максимальная производительность секции DSP48E1 достигается только при кон- вейерной обработке данных. Для уменьшения потребляемой мощности, когда умножитель не используется, атрибут USE_MULT позволяет выключать внутреннюю логику умножителя. Имеется до 10 режимов функционирования предсумматора, делая этот блок очень гибким для использования в различных приложениях. Типичным использованием секции DSP48E1 является случай, когда входы А и В умножаются, а результат добавляется или вычитается из регистра С. Умножитель секции DSP48E1 является асимметричным, он умножает 25- и 18- битовые числа в двоичном дополнительном коде и производит два 43-битовых час- тичных произведения. До подачи на вход ALU 43-битовые частичные произведения знаково расширяются до 48 разрядов. В режиме сумматора/вычитателя ALU может функционировать как один 48- битовый сумматор/вычитатель, два 24-битовых сумматора/вычитателя или четыре 12-битовых сумматора/вычитателя. Когда умножитель не используется, ALU может реализовать 2-входовые пораз- рядные логические функции AND, OR, NOT, NAND, NOR, XOR и XNOR. Детектор шаблона позволяет выполнять сходящееся (конвергентное) округление, автоматический сброс счетчика по модулю, динамическое сравнение двух 48-битовых полей, а также определять переполнение, потерю значимости и насыщение в акку- муляторах.
100 Раздел 5 Дополнительные функциональные свойства обеспечивает возможность каскади- рования отдельных секций DSP48E1 в пределах столбца DSP-блоков. Возможности каскадирования обеспечивают высокопроизводительную реализа- цию функций цифровых фильтров. Например, FIR-фильтр может использовать кас- кадные входы для ранжирования серий выборок входных данных, а каскадные выхо- ды — для ранжирования серий частичных выходных результатов.
6 Блоки памяти RAM Блоки встроенной памяти RAM в FPGA 7-й серии имеют достаточно широкую область использования. Главной функцией блоков памяти RAM, безусловно, являет- ся запоминание, хранение и буферизация данных. Кроме того, блоки памяти RAM могут использоваться в качестве FIFO-буферов (памяти типа FIFO), высокопроизво- дительных конечных автоматов, больших функциональных генераторов LUT, памяти типа ROM, а также больших сдвиговых регистров. Важным свойством блоков RAM FPGA 7-й серии является поддержка кода с исправлением ошибок (error-correcting code — ЕСС). С помощью генератора блоков памяти CORE Generator фирмы Xilinx на блоках RAM легко реализуются двух и однопортовые модули RAM, модули ROM, синхронная память FIFO, а также преобразователи широких слов данных. В данной главе рассматриваются только возможности блоков памяти FPGA 7-й серии при их функционировании в режиме памяти типа RAM. Использование блоков памяти в режиме памяти типа FIFO будет рассмотрено в главе 7, а функциониро- вание памяти RAM и FIFO в режиме исправляющего ошибки кодирования описы- вается в главе 8. Блок RAM в FPGA 7-серии запоминает до 36 килобит (Кбит) данных и может конфигурироваться либо как два независимых блока памяти RAMB18 размером 18 Кбит, либо как один блок памяти RAMB36 размером 36 Кбит. Блоки памяти RAM FPGA 7-й серии, когда они используются в качестве памяти типа RAM, имеют три основных режима функционирования: • действительно двухпортовый (true dual-port — TDP) режим; • простой двухпортовый (simple dual-port — SDP) режим; • однопортовый (single port) режим. Каждый блок RAMB36 в простом двухпортовом режиме может иметь следующую конфигурацию: 64Кх1 (когда каскадируется с соседним блоком RAMB36), 32Кх1, 16Кх2, 8Кх4, 4Кх9, 2Кх18, 1Кх36 или 512x72. Каждый блок RAMB18 может иметь следующую конфигурацию: 16Кх1, 8Кх2, 4Кх4, 2Кх9, 1Кх18 или 512x36. Два порта являются симметричными и полностью независимыми, совместно ис- пользуя только записанные в память данные. Каждый порт может иметь одну из до- пустимых конфигураций, независимую от конфигурации другого порта. Кроме того, для каждого порта ширина порта чтения может отличаться от ширины порта записи. Содержимое памяти может инициализироваться или создаваться битовым пото- ком при конфигурации FPGA. Основные свойства блоков памяти RAM: • операции чтения и записи являются синхронными; • для операции чтения и записи требуется один фронт синхросигнала; • простой двухпортовый режим SDP позволяет удваивать ширину данных до 72 битов для блока RAMB36 и до 36 битов для блока RAM В18; • режим SDP поддерживает различную ширину данных для операций записи и чте- ния;
102 Раздел 6 Таблица 6.1 Ресурсы блоков памяти RAM в FPGA 7-й серии Устройство Число блоков памяти RAMB36 Число столбцов блоков памяти RAM Число блоков памяти RAM в столбце ХС7А100Т 135 4 40 ХС7А200Т 365 9 50 ХС7К70Т 135 4 40 ХС7К160Т 325 7 50 ХС7К325Т 445 7 70 ХС7К355Т 715 12 60 ХС7К410Т 795 12 70 ХС7К420Т 835 12 80 ХС7К480Т 955 12 80 XC7V585T 795 9 90 XC7V2000T 1292 11 120 XC7VX330T 750 11 70 XC7VX415T 880 15 60 XC7VX485T 1030 15 70 XC7VX550T 1180 15 100 XC7VX690T 1470 15 100 XC7VX980T 1500 16 90 XC7VX1140T 1880 16 120 XC7VH580T 940 16 60 XC7VH870T 1410 16 90 • два соседних блока RAMB36 могут объединяться в один блок с конфигурацией 64Кх1 без использования дополнительной логики; • возможна синхронная установка/сброс выходов к начальному значению; • на всех выходах по умолчанию устанавливаются защелки; • возможна установка на выходах дополнительных конвейерных регистров, которые имеют отдельный независимый вывод синхронного сброса/установки; • порты шириной 18, 36 или 72-бита могут иметь индивидуальное разрешение за- писи на байт, это свойство используется в интерфейсах процессоров; • все выходы имеют функцию чтения или функцию чтения во время записи, в зависимости от состояния вывода разрешения записи (WE); • выходы являются доступными после временного интервала clock-to-out; • выходы по отношению к операции чтения во время записи могут иметь один из трех режимов функционирования: WRITE-FIRST, READ-FIRST и NO-CHANGE. Наличие блоков памяти RAM в FPGA 7-й серии приведено в табл. 6.1. 6.1. Архитектура блока памяти RAM 6.1.1. Логическая схема функционирования памяти RAM Логика функционирования одного порта блока памяти RAM приведена на рис. 6.1. Основу архитектуры блока RAM составляет матрица памяти (Memory Array), ко- торая является общей для обоих портов. На вход матрицы памяти по шине DI посту- пают входные данные, адресуемые значением на шине адреса (Address). Входные дан- ные и значения адреса по умолчанию буферизируются во входном регистре (Register). Выходные данные из матрицы памяти по умолчанию буферизируются в выходных за- щелках (Latches). На пути выходных данных может устанавливаться дополнительный регистр для организации конвейера. Устройство управления (Control Engine) блока RAM на основании сигналов раз- решения записи WE, разрешения функционирования EN и синхросигнала CLK форми- рует следующие сигналы управления: разрешения записи (Write Strobe), разрешения
Блоки памяти RAM 103 CLK Рис. 6.1. Логическая схема блока RAM (показан один порт) чтения (Read Strobe) и разрешения запоминания в выходных защелках (Latch Enable). Сигнал синхронизации CLK, который может инвертироваться, используется также для синхронизации входного и дополнительного выходного регистров. Таким образом, операции записи и чтения всегда являются синхронными, вход- ные данные и адрес буферизируются в регистрах, а выходные данные могут буфери- зироваться как в защелках, так и в дополнительном конвейерном регистре. 6.1.2. Потоки данных в блоке памяти RAM В общем случае блок памяти RAM можно представить так, как показано на рис. 6.2. Каждый блок RAMB36 имеет одну общую матрицу памяти на ЗбКбит и два независимых порта А и В. Аналогично, блок RAMB18 имеет матрицу памяти на 18Кбит и два независимых порта А и В. Каждый порт имеет свои собст- венные выводы для адреса (ADDR), входных (DI) и выходных (DO) данных, синхросигнала (CLK), разрешения функционирования (EN) и разрешения записи (WE). Кроме того, каждый порт имеет независимые сигналы управления регистрами и защелками: синхронной установ- ки/сброса выходных защелок (RSTRAM), син- хронной установки/сброса выходного регистра (RSTREG) и разрешения синхронизации выход- ного регистра (REGCE). В дополнение к основным данным, шири- ной в 32 бита, каждый порт имеет 4 бита чет- ности (Parity Bits), которые могут совмещаться с основными битами, образуя слова шириной в 36 битов. Биты четности имеют отдельные входные (DIP) и выходные (DOP) шины. Для возможности объединения соседних 32 4 “T* 16, t* 4, CASCADEOUTA CASCADEOUTB I 36-Kbit Block RAM | DIA DIPA ADDRA Port A WEA ENA ---► RSTREGA - RSTRAMA ------->CLKA *(regcea 36 Kb Memory Array DOA DOPA 32 32 16. 4Z DIB DIPB -------- ADDRB WEB ENB Port В RSTREGB RSTRAMB > CLKB REGCEB DOB DOPB 32, """7*" cascadeina cascadeinb блоков памяти RAM с целью построения бло- ка размером 64Кх1 бит служат входы (CAS- CADEIN) и выходы (CASCADEOUT) каскадирования. Рис. 6.2. Потоки данных в двухпортовом блоке RAMB36 Описание портов блока памяти RAMB36 приведено в табл. 6.2.
104 Раздел 6 Таблица 6.2 Порты двухпортового блока RAMB36 Имя порта1 Описание DI[A/B] DIP[A/B] ADDR[A/B] WE[A/B] EN[A/B] RSTREG[A/B] RSTRAM[A/B] CLK[A/B] DOJA/B]1 DOP[A/B] REGCE[A/B] CASCADEIN[A/B] CASCADEOUT[A/B] 1. Имена портов при Шина входных данных Шина битов четности входных данных; может использоваться как дополнитель- ные входы данных Шина адреса Разрешение записи каждого байта Разрешение функционирования, когда вывод неактивный, никакие данные не записываются в блок RAM, а выходная шина остается в предыдущем состоянии Синхронная установка/сброс выходных регистров (при DO-REG =1); атрибут RSTREG-PRIORITY определяет приоритет над сигна- лом REGCE Синхронная установка/сброс защелок выходных данных Вход синхросигнала Шина выходных данных Шина битов четности выходных данных; может использоваться как дополни- тельные выходы данных Разрешение синхронизации выходных регистров Вход каскадирования для режима 64Кх1 Выход каскадирования для режима 64Кх1 митивов блоков RAM могут отличаться от имен функций портов. 6.2. Функционирование блока памяти RAM 6.2.1. Режимы функционирования блока памяти RAM Как было отмечено ранее, блок памяти RAM FPGA 7-й серии может функцио- нировать в трех основных режимах: • действительно двухпортовом режиме TDP; • простом двухпортовом режиме SDP; • однопортовом режиме. Структура блока RAM на рис. 6.2 как раз соответствует действительно двухпорто- вому режиму TDP. Простой двухпортовый режим SDP расширяет возможности блока RAM и будет рассмотрен ниже. Однопортовый режим блока RAM легко вводится с помощью макроса BRAM_SINGLE_ MACRO. Отметим некоторые особенности режимов функционирования памяти RAM: • TDP имеет отдельные синхросигналы CLKA и CLKB для каждого порта А и В; • SDP имеет отдельные синхросигналы WRCLK и RDCLK для операций записи и чтения; • TDP имеет отдельные адресные шины ADDRA и ADDRB для портов А и В, которые являются общими для операций записи и чтения; • SDP имеет отдельные адресные шины WRADDR и RDADDR для операций за- писи и чтения; • SDP имеет большую ширину порта данных: 64 и 72 бита; • режимы записи WRITE-FIRST, READ-FIRST и NO-CHANGE возможны только для однопортовой памяти. 6.2.2. Операции чтения и записи Чтение. Операция чтения использует один фронт синхросигнала. Адрес чтения запоминается в регистре порта чтения, и ранее запомненные данные загружаются в выходные защелки после времени доступа к памяти RAM. В случае использова- ния выходных регистров время чтения увеличивается на один дополнительный цикл синхросигнала.
Блоки памяти RAM 105 Запись. Операция записи также является операцией одного фронта синхроим- пульса. Адрес записи запоминается в регистре порта записи, а вход данных запо- минается в памяти. Имеется три режима записи, определяющие поведение данных на выходной шине после прихода фронта синхроимпульса: WRITE-FIRST, READ-FIRST и NO-CHANGE. Режим записи определяется во время конфигурации с помощью атрибута WRITE- MODE. Атрибут режима записи может устанавливаться индивидуально для каждого порта. Умалчиваемым режимом является WRITE-FIRST. Режим WRITE-FIRST вы- водит недавно записанные данные на выходную шину. Режим READ-FIRST выводит на выходную шину ранее запомненные в памяти данные, в то время как новые дан- ные записываются в память. Режим NO.CHANGE поддерживает выход в состоянии, сгенерированном предыдущей операцией чтения. Режим NO.CHANGE является наиболее эффективным по энергопотреблению. Этот режим невозможен в режиме SDP. 6.2.3. Синхронное и асинхронное тактирование Блоки RAM в FPGA 7-й серии являются действительно двухпортовыми памятя- ми RAM, где два порта одновременно могут иметь доступ к одной ячейке памяти. Однако в таких ситуациях пользователь должен соблюдать определенные ограниче- ния. Здесь возможны две принципиально разные ситуации: либо два порта имеют общий синхросигнал (синхронное тактирование— synchronous clocking), либо частота синхронизации и фаза синхросигнала являются различными для двух портов (асин- хронное тактирование — asynchronous clocking). Асинхронное тактирование является наиболее общим случаем, где активные фронты обоих синхросигналов не появляются одновременно. В этом случае нет вре- менных ограничений, когда оба порта выполняют операцию чтение. Однако когда один порт выполняет операцию записи, другой порт не должен иметь доступ для чте- ния или записи к той же самой ячейке памяти. Следует избегать режима READ-FIRST в действительно асинхронных приложе- ниях, потому что здесь нет гарантии, что в обоих режимах TDP и SDP будут читаться старые данные. Если это условие нарушается, то средства моделирования констати- руют ошибку, а результат операций чтения или записи является непредсказуемым. Если выполняется операция чтения и записи, то операция записи записывает дейст- вительные данные в адресуемую ячейку памяти. Когда асинхронные синхросигналы могут вызывать одновременные операции чтения или записи по одному и тому же адресу, рекомендуемым режимом является режим WRITE-FIRST. Синхронное тактирование является специальным случаем, когда оба входа син- хронизации управляются одним и тем же синхросигналом. При этом нет временных ограничений, когда оба порта выполняют операцию чтения. Когда один порт выпол- няет операцию записи, другой порт не должен писать в ту же самую ячейку памяти, за исключением случая, когда оба порта пишут идентичные данные. Когда один порт выполняет операцию записи, запись выполняется успешно; другой порт может надеж- но читать данные из той же самой ячейки памяти, если записывающий порт имеет режим READ-FIRST. Шина DATA-OUT на обоих портах отображает ранее запомнен- ные данные. Если записывающий порт имеет режим WRITE.FIRST или NO.CHANGE, то данные выхода DATA-OUT порта чтения могут быть недостоверными; установки режимов порта чтения не влияют на это функционирование.
106 Раздел 6 6.2.4. Дополнительные выходные регистры для конвейерных приложений Дополнительные (конвейерные) выходные регистры улучшают производитель- ность проекта путем исключения задержек трассировки к триггерам логических бло- ков CLB для конвейерных операций. Конвейерные выходные регистры имеют незави- симые входы синхронной установки/сброса и разрешения синхронизации (на рис. 6.1 не показаны). В результате конвейерные регистры позволяют задерживать выходные данные независимо от функционирования входного регистра. 6.2.5. Независимая ширина данных портов чтения и записи Каждый порт блока RAM может управлять шириной данных и глубиной адреса (с точки зрения отношения). Действительный двухпортовый блок памяти RAM в FPGA 7-серии расширяет это свойство на операции чтения и записи, где каждый индивиду- альный порт может быть сконфигурирован с различной шириной данных. Например, порт А может иметь 36-битовую ширину для чтения и 9-битовую ширину для записи, а порт В может иметь 18-битовую ширину для чтения и 36-битовую ширину для записи. Если ширина порта чтения отличается от ширины порта записи и конфигуриру- ется в режиме WRITE_FIRST, то выход DO показывает действительно новые данные для всех доступных байтов записи. Порт DO выводит оригинальные данные, запом- ненные в памяти для всех недоступных байт. Независимый выбор ширины портов чтения и записи увеличивает эффектив- ность реализации в блоке RAM ассоциативной памяти типа САМ (content addressable memory — память, адресуемая по содержимому). Имеется два примитива блока RAM: RAMB36E1 и RAMB18E1. Атрибут RAM_ MODE определяет режим функционирования блока RAM: либо простой двухпортовый режим SDP, либо действительно двухпортовый режим TDP. Когда используются примитивы блока RAM, возможны различные варианты ши- рины портов чтения и записи; биты четности доступны только для портов с шириной х9, х18 и х36. Если ширина чтения равна xl, х2 или х4, то эффективная ширина записи равна xl, х2, х4, х8, х16 или х32. Аналогично, когда ширина записи равна xl, х2 или х4, то фактическая доступная ширина чтения равна xl, х2, х4, х8, х16 или х32 даже при том, что атрибуты примитива установлены в значение 1, 2, 4, 9, 18 и 36 соответственно. В табл. 6.3 представлены некоторые возможные сценарии различной ширины портов чтения и записи в случае использования бита четности. Таблица 6.3 Сценарии использования бита четности Примитив Установки Эффективная ширина чтения Эффективная ширина записи Ширина чтения Ширина записи RAMB18E1 1, 2 или 4 9 или 18 Как установлено 8 или 16 RAMB18E1 9 или 18 1, 2 или 4 8 или 16 Как установлено RAMB18E1 1, 2 или 4 1, 2 или 4 Как установлено Как установлено RAMB18E1 9 или 18 9 или 18 Как установлено Как установлено RAMB36E1 1, 2 или 4 9, 18 или 36 Как установлено 8, 16 или 32 RAMB36E1 9, 18 или 36 1, 2 или 4 8, 16 или 32 Как установлено RAMB36E1 1, 2 или 4 1, 2 или 4 Как установлено Как установлено RAMB36E1 9, 18 или 36 9, 18 или 36 Как установлено Как установлено Не используйте ше или равна 9 бит четности, когда ширина одного порта меньше 9, а ширина другого порта боль-
Блоки памяти RAM 107 6.2.6. Простой двухпортовый режим SDP Каждый блок RAMB18 или RAMB36 может быть сконфигурирован в режиме простой двухпортовой памяти RAM. В этом режиме ширина порта RAM удваивается до 36 бит для блока RAMB18 и до 72 битов для блока RAMB36. В простом двухпор- товом режиме SDP независимые операции чтения и записи могут происходить однов- ременно, где порт А рассматривается как порт чтения, а порт В — как порт записи. Когда порты чтения и записи одновременно обращаются к одной и той же ячейке памяти, такая ситуация трактуется как конфликт, аналогичный конфликту портов в действительно двухпортовом режиме TDP. В режиме SDP поддерживаются только два режима на выходной шине: READ-FIRST и WRITE-FIRST. На рис. 6.3 показан простой двухпортовый поток данных для модуля RAMB36 в режиме SDP. Описание портов модуля RAMB36 в простом двухпортовом режиме SDP при- ведены в табл. 6.4. 36 Kb Memory Array 64 DI DO DIP OOP RDADDR ECCPARITY RDCLK SBITERR RDEN DBITERR REGCE SSR WE WRADDR WRCLK WREN 8 8y 8, 15 8 / 15, инп.иуб iii.iui Рис 6.3. Модуль RAMB36 в прос- том двухпортовом режиме SDP Таблица 6.4 Функции портов в простом двухпортовом режиме SDP Имя порта Описание DO DOP DI DIP RDADDR RDCLK RDEN REGCE SBITER DBITER ECCPARITY SSR WE WRADDR WRCLK WREN Шина выходных данных Шина битов четности выходных данных Шина входных данных Шина битов четности входных данных Шина адреса читаемых данных Синхросигнал читаемых данных Разрешение порта чтения Разрешение синхронизации выходного регистра Бит состояния одиночной ошибки Бит состояния двойной ошибки Шина выходного шифратора ЕСС Синхронная установка или сброс выходных ре- гистров или защелок Разрешение записи каждого байта Шина адреса записываемых данных Синхросигнал записываемых данных Разрешение порта записи 6.2.7. Каскадирование блока RAM В FPGA 7-й серии два соседних модуля RAMB36 можно объединять в один блок размером 64Кх1 без использования локальных соединений или дополнительных ло- гических ресурсов. Данное свойство доступно в режиме 64Кх1 (рис. 6.4). Вывод А15 в примитиве RAMB36E1 может использоваться только для каскади- рования; во всех других случаях вывод А15 должен оставаться неподсоединенным или в высоком состоянии. 6.2.8. Побайтовая запись данных Это свойство дает возможность записывать 8 битов (один байт) входных данных. В примитиве RAMB36E1 действительно двухпортовой памяти RAM (режим TDP) имеется 4 независимых входа разрешения записи шириной в байт. В простом двух- портовом режиме SDP примитив RAMB36E1 имеет 8 таких входов. Каждый вход разрешения записи шириной в байт соответствует одному байту входных данных и одному биту четности. Все входы разрешения записи шириной в байт могут управляться во всех конфигурациях ширины данных (табл. 6.5). Это
108 Раздел 6 CASCADEOUT (No Connect! Interconnect Block RAM Рис. 6.4. Логика каскадирования блока RAM Таблица 6.5 Ширина данных при побайтной записи Примитив Максимальная ширина, бит Ширина, байт RAMB36E1 режим TDP 36 4 RAMB36E1 режим SDP 72 8 RAMB18E1 режим TDP 18 2 RAMB18E1 режим SDP 36 4 свойство является полезным, когда блок RAM используется для интерфейса с мик- ропроцессором. Разрешение записи шириной в байт недоступно в режиме двойной синхрони- зации памяти FIFO и режиме ЕСС. На рис. 6.5 показаны временные диа- граммы разрешения записи шириной в байт для модуля RAMB36E1. Когда модуль RAMB36E1 сконфигурирован для 36- или 18-битовой передачи дан- ных, любой порт может ограничить запись в указанное расположение байта в преде- лах слова данных. Если модуль RAMB36E1 сконфигурирован в режиме READ.FIRST, Рис. 6.5. Временные диаграммы функционирования записи шириной в байт (хЗб WRITE-FIRST)
Блоки памяти RAM 109 шина DO показывает предыдущее содержимое всего адресуемого слова. В режиме WRITE-FIRST шина DO показывает комбинацию недавно записанных разрешенных байт и начальное содержимое незаписанных байт. 6.2.9. Режим кодирования с исправлением ошибок ЕСС Оба типа памяти (RAM и FIFO) в блоке RAM размером 36 Кбит поддержива- ют режим 64-битовой реализации кода коррекции ошибок (Error Correction Code — ЕСС). Этот код используется для обнаружения одиночных и двойных битовых оши- бок при считывании данных в блоке RAM. Одиночные ошибки затем корректируются в выходных данных. Более подробно использование кода коррекции ошибок рассмат- ривается в главе 8. 6.2.10. Минимизация потребляемой мощности Для уменьшения энергопотребления FPGA 7-й серии выключают неиспользуемые блоки RAM, начиная с размера 18 Кбит. Доступ к неиспользуемым блокам RAM запрещается путем отключения внутреннего функционирования. 6.2.11. Некоторые архитектурные особенности Инвертирование управляющих выводов. Для каждого порта управляющие сиг- налы CLK, EN, RSTREG и RSTRAM имеют опцию индивидуального инвертирования. В отношении сигнала синхронизации это означает, какой фронт является активным: положительный или отрицательный. Сигнал глобальной установки или сброса GSR. В FPGA 7-й серии сигнал глобаль- ной установки или сброса GSR является глобальным асинхронным сигналом, который активизируется в конце конфигурирования устройства. Сигнал GSR может также в любое время вернуть устройства 7-й серии в начальное состояние. Сигнал GSR иници- ализирует выходные защелки в значение INIT (простой двойной порт) или в значения INIT-A и INIT-В (действительный двойной порт). Сигнал GSR не воздействует на внутреннее содержимое памяти. В примити- вах блока RAM (на функциональном уровне) отсутствует вывод, соответствующий сигналу GSR. Неиспользуемые входы. Неиспользуемые входы данных должны быть подсоеди- нены к низкому уровню. Неиспользуемые адресные входы должны быть подсоединены к высокому уровню. Отображение адресов блока RAM. Каждый порт обращается к одному и тому же множеству ячеек памяти количеством 18432 (RAMB18E1) или 36864 (RAMB36E1), используя Таблица 6.6 Отображение адресов порта Ши- рина порта Расположе- ние битов четности Расположение данных 1 N/A 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 2 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 4 7 6 5 4 3 2 1 0 8+1 3 2 1 0 3 2 1 0 16+2 1 0 1 0 32+4 0 0
110 Раздел 6 соответствующую схему адресации. Физическое расположение ячеек памяти RAM зависит от ширины слова данных и определяется по следующим формулам: START = ADDR х Width; END = ((ADDR + 1) х Width) - 1, где START — начальный адрес записываемых данных; END — конечный адрес; ADDR — значение на адресной шине; Width — ширина шины данных. В табл. 6.6 показано отображение младших адресов для различной ширины пор- та данных. 6.3. Особенности применения блоков памяти RAM Для использования блоков памяти RAM в FPGA 7-й серии имеется два примитива RAMB18E1 и RAMB36E1, описание которых приведено в приложении А. Другие биб- лиотечные примитивы и макросы строятся на основе этих примитивов. Для наиболее часто используемых режимов работы созданы макросы памяти RAM, описание кото- рых также приведено в приложении А. Эти макросы находятся в библиотеке UniMacro программных средств синтеза фирмы Xilinx и могут быть инстанцированы в языках VHDL и Verilog (детали см. в документе UG768 Xilinx 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide for HDL Designs). 6.3.1. Ограничения на расположение блоков RAM Экземпляры блоков RAM могут иметь присоединенное свойство (параметр) LOC, чтобы ограничить их размещение. Свойства LOC имеют следующую форму: LOC = RAMB36_X#Y#, где # — некоторое десятичное число. Например, RAMB36-X0Y0 означает левый верх- ний блок RAM в устройстве. Если модуль RAMB36E1 размещается по расположению RAMB36_X#Y#, то для памяти FIFO нельзя указать FIFO36_X#Y#, потому что они совместно используют одно и то же местоположение. Два модуля RAMB18E1 могут размещаться в том же самом месте RAMB36E1, например: inst «my_raml8_2» LOC = RAMB36_X0Y0; inst «my_raml8_l» LOC = RAMB36_X0Y0. Кроме того, один модуль FIFO18 и один модуль RAM 18 могут размещаться в том же самом месте RAMB36E1, например: inst «my_raml8» LOC = RAMB36-X0Y0; inst «my_fifol8» LOC = RAMB36JX0Y0. 6.3.2. Инициализация блока RAM в языках VHDL и Verilog В языках VHDL и Verilog атрибуты и содержимое блока RAM могут быть иници- ализированы при создании экземпляра блока памяти в коде проекта (для синтеза и симуляции) путем использования карт генерации (generic maps) — для языка VHDL — или путем определения параметров (defparams) — для языка Verilog. 6.3.3. Дополнительные выходные регистры Дополнительные выходные регистры могут использоваться в порте А или В. Установка дополнительного выходного регистра выполняется путем использования атрибута DO[A/B]_REG. Выходные регистры имеют независимые сигналы разреше- ния синхронизации REGCE[A/B]. Когда используются дополнительные выходные ре- гистры порта [А/В], с помощью атрибута SRVAL и активизации выводов синхронной
Блоки памяти RAM 111 установки или сброса (RSTREG и RSTRAM) на выходах порта [A/В] можно устано- вить определенные значения. 6.3.4. Независимые размеры порта чтения и записи Для того чтобы определить различные размеры портов в двухпортовом режи- ме блока RAM, пользователь должен использовать атрибуты READ_WIDTH_[A/B] и WRITE_WIDTH_[A/B]. При этом необходимо соблюдаться следующие правила: • проектирование однопортового блока RAM требует установки двух размеров пор- тов: один для записи и один для чтения (т. е. READ_WIDTH_A и WRITE. WIDTH-A); • проектирование двухпортового блока RAM требует установки всех размеров пор- тов; • если размеры двух портов записи или двух портов чтения установлены в 0, средст- ва проектирования не реализуют проект; • в простом двухпортовом режиме SDP одна сторона портов фиксируется, а вторая сторона может иметь переменную ширину; • примитив RAMB18E1 имеет ширину порта до 36 битов, a RAMB36E1 — до 72 битов. 6.3.5. Правила проектирования отображения портов для примитивов RAMB18E1 и RAMB36E1 Блоки RAM FPGA 7-й серии могут конфигурироваться с переменными размерами и шириной портов. В зависимости от конфигурации, некоторые выводы данных и ад- реса могут не использоваться (см. описание примитивов блока RAM в приложении А). Здесь приведем некоторые правила при определении соединений портов блока RAM: • в модуле RAMB36E1, если размер шины DI[A/B] меньше 32, остальные входные выводы шины DI подсоединяются к логическому нулю; • если размер шины DIP[A/B] меньше 4, остальные входные выводы шины DIP [A/В] подсоединяются к логическому нулю; • если шина DIP не используется, она может оставаться неподсоединенной; • выводы DO[A/B] должны быть шириной 32 бита, однако действительные данные находятся на выводах от (DO_BIT_WIDTH — 1) до 0; • выводы DOP[A/B] должны быть шириной 4 бита, однако действительные дан- ные находятся на выводах от (DOP_BIT_WIDTH — 1) до 0; если шина DOP не используется, ее выводы могут оставаться неподсоединенными; • выводы ADDR[A/B] должны быть шириной 16 битов, однако действительные адреса для некаскадируемого блока RAM находятся от вывода 14 до 15 (шири- на адреса); оставшиеся выводы, включая вывод 15, должны подсоединяться к высокому уровню. 6.3.6. Каскадирование блоков RAM Для использования функции каскадирование блока RAM должны быть инстанци- рованы два примитива RAMB36E1, причем экземпляры примитива RAMB36E1 долж- ны быть соседними (рис. 6.6). Затем следуйте следующим правилам: • установите атрибуты RAM_EXTENSION_A и RAM_EXTENSION_B для одного при- митива RAMB36E1 в значение UPPER, а для другого — в LOWER; • подсоедините порты CASCADEINA и CASCADEINB верхнего RAMB36E1 к портам CASCADEOUTA и CASCADEOUTB нижнего RAMB36E;
112 Раздел 6 Upper RAMB36E1 CASCADEINA CASCADEINB CASCADEOUTA CASCADEOUTB Lower RAMB36E1 Рис. 6.6. Каскадирование двух модулей RAMB36E1 • порты CASCADEIN нижнего RAMB36E1 под- соедините к логическому нулю или единице; • порты выходных данных нижнего RAMB36E1 не используются; эти выводы остаются не- подсоединенными; • выводы ADDR[A/B] должны иметь ширину 16 битов; порты чтения и записи — ширину 1 бит; • может использоваться дополнительный вы- ходной регистр путем установки значения ат- рибута DO.REG = 1. 6.3.7. Возможность побайтной записи Правила при использовании побайтной записи: • в режиме хЗб выводы WE[3:0] подсоединяются к четырем входам пользовате- ля UWE; • в режиме х18 выводы WE[0] и WE[2] подсоединяются к пользовательскому сиг- налу UWE[0], а выводы WE[1] и WE[3] — к UWE[1]; • в режимах х9, х4, х2, xl все выводы WE[3:0] подсоединяются к пользователь- скому UWE; • в простом двухпортовом режиме х72 выводы WE[7:0] подсоединяются к восьми пользовательским входам. 6.3.8. Создание больших структур RAM Столбцы блоков RAM имеют специальную трассировку (в дополнение к каска- дированию 64Кх1) для создания более широкой или более глубокой памяти с мини- мальной задержкой трассировки. Для создания большой памяти из блоков меньшего размера используется про- грамма CORE Generator фирмы Xilinx, которая предоставляет удобный пользователь- ский интерфейс. Результаты работы программы могут использоваться в языках VHDL или Verilog. 6.3.9. Блок RAM в регистровом режиме RSTREG Сигнал RSTREG в регистровом режиме может использоваться для управления выходным регистром как действительно конвейерным регистром независимо от бло- ка RAM (рис. 6.7). В этом режиме блок RAM может читаться и записываться независимо от сигна- лов управления регистра (разрешения синхронизации REGCE и синхронной установ- ки/сброса RSTREG). В регистровом режиме сигнал RSTREG устанавливает выход DO Block RAM RAMEN RSTRAM DBRAM Output Register n nn -т UI .ттп-п.гег РМ - г DQTRAM ПО 1 П/лМ ► REGCE RSTREG Рис. 6.7. Блок RAM RSTREG в регистровом режиме
Блоки памяти RAM 113 CLK REGCLK RAMEN RSTRAM DBRAM REGCE RSTREG DO Рис. 6.8. Операция сброса блока RAM в режиме RSTREG Рис. 6.9. Операция сброса блока RAM в режиме RSTCE Рис. 6.10. Операция сброса блока RAM в режиме защелки в значение SRVAL и данные могут читаться из блока RAM на шину DBRAM. Данные на шине DBRAM могут синхронизироваться с помощью сигналов управления регистра для синхронного формирования данных на выходной шине DO. Временные диаграммы на рис. 6.8-6.10 показывают различные случаи функционирования в режиме RSTREG. Временные параметры блока RAM и временная модель представлены в прило- жении Б. 6.4. Выводы Блоки памяти RAM в FPGA 7-й серии, кроме выполнения функций запомина- ния, хранения и буферизации данных, могут использоваться в качестве памяти типа FIFO, высокопроизводительных конечных автоматов, больших функциональных гене- раторов LUT, памяти типа ROM, а также больших сдвиговых регистров. Важным свойством блоков RAM FPGA 7-й серии является поддержка кода с исправлением ошибок ЕСС. На блоках RAM FPGA 7-й серии легко реализуются двух и однопортовые моду- ли RAM, модули ROM, синхронная память FIFO, а также преобразователи широких слов данных.
114 Раздел 6 Один блок RAM FPGA 7-серии запоминает до 36 килобит (Кбит) данных и мо- жет конфигурироваться либо как два независимых блока памяти RAMB18 размером 18 Кбит, либо как один блок памяти RAMB36 размером 36 Кбит. Блоки памяти RAM имеют три основных режима функционирования: действительно двухпортовый режим TDP, простой двухпортовый режим SDP и однопортовый режим. Каждый блок RAMB36 в простом двухпортовом режиме SDP может иметь сле- дующую конфигурацию: 64Кх1 (когда каскадируется с соседним блоком RAMB36), 32Кх1, 16Кх2, 8Кх4, 4Кх9, 2Кх18, 1Кх36 или 512x72. Каждый блок RAMB18 может иметь следующую конфигурацию: 16Кх1, 8Кх2, 4Кх4, 2Кх9, 1Кх18 или 512x36. Два порта являются симметричными и полностью независимыми, совместно ис- пользуя только записанные в память данные. Каждый порт может иметь одну из до- пустимых конфигураций, независимую от конфигурации другого порта. Кроме того, для каждого порта ширина порта чтения может отличаться от ширины порта записи. Содержимое памяти может инициализироваться или создаваться битовым пото- ком при конфигурации FPGA. Основу архитектуры блока RAM FPGA 7-й серии составляет матрица памяти (Memory Array), которая является общей для обоих портов. Операции записи и чтения всегда являются синхронными, входные данные и адрес буферизируются в регистрах, а выходные данные могут буферизироваться как в защелках, так и в дополнительном конвейерном регистре. Каждый блок RAMB36 имеет одну общую матрицу памяти на 36 Кбит и два неза- висимых порта А и В. Аналогично, блок RAMB18 имеет матрицу памяти на 18 Кбит и два независимых порта А и В. Каждый порт имеет свои собственные выводы для адреса (ADDR), входных (DI) и выходных (DO) данных, синхросигнала (CLK), разре- шения функционирования (EN) и разрешения записи (WE). Кроме того, каждый порт имеет независимые сигналы управления регистрами и защелками: синхронной уста- новки/сброса выходных защелок (RSTRAM), синхронной установки/сброса выходно- го регистра (RSTREG) и разрешения синхронизации выходного регистра (REGCE). Кроме того, каждый порт имеет 4 бита четности, которые могут совмещаться с основными битами, образуя слова шириной в 36 битов. Биты четности имеют отдельные входные (DIP) и выходные (DOP) шины. Для возможности объединения соседних блоков памяти RAM с целью построения блока размером 64Кх1 бит служат входы (CASCADEIN) и выходы (CASCADEOUT) каскадирования. Особенности режимов функционирования памяти RAM: • TDP имеет отдельные синхросигналы CLKA и CLKB для каждого порта А и В; • SDP имеет отдельные синхросигналы WRCLK и RDCLK для операций записи и чтения; • TDP имеет отдельные адресные шины ADDRA и ADDRB для портов А и В, которые являются общими для операций записи и чтения; • SDP имеет отдельные адресные шины WRADDR и RDADDR для операций за- писи и чтения; • SDP имеет большую ширину порта данных: 64 и 72 бита; • режимы записи WRITE-FIRST, READ-FIRST и NO-CHANGE возможны только для однопортовой памяти. Однопортовый режим блока RAM вводится с помощью макроса BRAM_SINGLE_ MACRO.
Блоки памяти RAM 115 Имеется три режима записи, определяющие поведение данных на выходной шине после прихода фронта синхроимпульса: WRITE-FIRST, READ-FIRST и NO-CHANGE. Режим записи определяется во время конфигурации с помощью атрибута WRITE- MODE, который может устанавливаться индивидуально для каждого порта. Режим WRITE-FIRST (режим по умолчанию) выводит недавно записанные дан- ные на выходную шину. Режим READ-FIRST выводит на выходную шину ранее за- помненные в памяти данные, в то время как новые данные записываются в память. Режим NO.CHANGE поддерживает выход в состоянии, сгенерированном предыдущей операцией чтения. Режим NO.CHANGE является наиболее эффективным по энергопотреблению. Этот режим записи невозможен в режиме функционирования SDP. В асинхронных приложениях, когда оба порта тактируются различными синхро- сигналами, следует избегать режима READ-FIRST, рекомендуемым режимом явля- ется режим WRITE-FIRST. В синхронных приложениях оба входа синхронизации управляются одним и тем же синхросигналом. При этом нет временных ограничений на операции чтения обоих портов. Однако когда один порт выполняет операцию записи, другой порт не должен писать в ту же самую ячейку памяти, за исключением случая, когда оба порта пишут идентичные данные. Когда один порт в режиме READ-FIRST выполняет операцию записи, другой порт может надежно читать данные из той же самой ячейки памяти. Если записывающий порт имеет режим WRITE.FIRST или NO-CHANGE, то данные на порте чтения могут быть недостоверными; установки режимов на порте чтения не влияют на это функционирование. Дополнительные (конвейерные) выходные регистры улучшают производитель- ность проекта путем исключения задержек трассировки к триггерам логических бло- ков CLB для конвейерных операций. Каждый порт блока RAM может независимо управлять шириной данных и глуби- ной адреса. Это свойство расширяется на операции чтения и записи. Например, порт А может иметь 36-битовую ширину для чтения и 9-битовую ширину для записи, а порт В может иметь 18-битовую ширину для чтения и 36-битовую ширину для записи. Независимый выбор ширины портов чтения и записи увеличивает эффективность реализации в блоке RAM ассоциативной (адресуемой по содержимому) памяти типа САМ (content addressable memory). В простом двухпортовом режиме SDP ширина порта RAM удваивается до 36 би- тов для блока RAMB18 и до 72 битов для блока RAMB36. В режиме SDP независимые операции чтения и записи могут происходить одновременно, где порт А рассматрива- ется как порт чтения, а порт В — как порт записи. Когда порты чтения и записи одновременно обращаются к одной и той же ячейке памяти, такая ситуация трактуется как конфликт, аналогичный конфликту портов в действительно двухпортовом режиме TDP. В режиме SDP поддерживаются только два режима на выходной шине: READ-FIRST и WRITE.FIRST. В FPGA 7-й серии два соседних модуля RAMB36 можно каскадно объединять в один блок размером 64Кх1 без использования локальных соединений или дополни- тельных логических ресурсов. Свойство побайтовой записи данных позволяет записывать каждый байт вход- ных данных. Для этого примитив RAMB36E1 имеет 4 независимых входа разрешения побайтовой записи в режиме TDP и 8 — в режиме SDP. Каждый вход разрешения записи шириной в байт соответствует одному байту входных данных и одному би-
116 Раздел 6 ту четности. Это свойство является полезным, когда блок RAM используется для интерфейса с микропроцессором. В FPGA 7-й серии сигнал глобальной установки или сброса GSR является гло- бальным асинхронным сигналом, который активизируется в конце конфигурирования устройства. Сигнал GSR также может в любое время вернуть защелки устройства 7-й серии в начальное значение INIT. Сигнал GSR не воздействует на внутреннее содер- жимое памяти и отсутствует в примитивах памяти. Неиспользуемые входы данных блока RAM должны быть подсоединены к ниж- нему уровню. Неиспользуемые адресные входы должны быть подсоединены к вы- сокому уровню. Для использования блоков памяти RAM в FPGA 7-й серии имеется два примитива RAMB18E1 и RAMB36E1, другие библиотечные примитивы и макросы строятся на основе этих примитивов. Для создания большой памяти из блоков меньшего размера используется про- грамма CORE Generator фирмы Xilinx. Результаты работы программы могут исполь- зоваться в языках VHDL или Verilog. В регистровом режиме сигнал RSTREG может использоваться для управления выходным регистром как конвейерным регистром независимо от блока RAM. В этом режиме блок RAM может читаться и записываться независимо от сигналов управ- ления выходного регистра.
7 Память типа FIFO Вторым типом памяти, который поддерживают блоки RAM FPGA 7-й серии, яв- ляется память типа FIFO (first in, first out — первым вошел, первым вышел). Па- мять FIFO в блоках RAM реализуется без использования дополнительной логики блоков CLB. Подобно памяти RAM, память FIFO реализуется либо в виде блока FIFO36 объ- емом ЗбКбит, либо в виде блока FIFO18 объемом 18 Кбит. Для блоков FIFO18 поддер- живаются конфигурации 4Кх4, 2Кх9, 1Кх18 и 512x36, а для блоков FIFO36 поддер- живаются конфигурации 8Кх4, 4Кх9, 2Кх18,1Кх36 и 512x72. Порт А блока RAM используется как порт чтения памяти FIFO, а порт В — как порт записи памяти FIFO. Операции чтения и записи памяти FIFO являются синхронными и могут иметь общую или независимую синхронизацию. В первом случае память FIFO называет- ся синхронной, а во втором — с двойной синхронизацией или асинхронной. Данные читаются из памяти FIFO на возрастающем фронте синхросигнала чтения, а записы- ваются в память FIFO на возрастающем фронте синхросигнала записи. Возможные конфигурации блоков памяти FIFO приведены в табл. 7.1. В памяти FIFO допускается также различная ширина портов чтения и за- писи, однако при реализации этого ре- жима используется логика блоков CLB. Для памяти FIFO FPGA 7-й серии имеется два режима чтения первого Таблица 7.1 Конфигурация памяти FIFO FIFO18 FIFO36 4К записей по 4 бита 2К записей по 9 битов 1К записей по 18 битов 512 записей по 36 битов 8К записей по 4 бита 4К записей по 9 битов 2К записей по 18 битов 1К записей по 36 битов 512 записей по 72 бита слова, записанного в пустую память FIFO: стандартный и FWFT (first-word fall- through — первое слово выпадает). В режиме FWFT количество записей в табл. 7.1 увеличивается на 1. 7.1. Архитектура памяти FIFO Логическая структура памяти типа FIFO FPGA 7-й серии, показана на рис. 7.1. Основу памяти FIFO составляет блок памяти RAM (Block RAM). Записываемые данные на вход блока RAM поступают с входных шин DIN/DINP. Прочитанные данные из блока RAM выводятся на выходные шины DO/DOP. Адреса записи (waddr) и чте- ния (raddr) данных образуются с помощью блоков формирования указателя записи Write Pointer и указателя чтения Read Pointer. Эти блоки также формируют внешние сигналы WRCOUNT и RDCOUNT для указания значений счетчиков записи и чтения. Устройство управления (Status Flag Logic) на основании внешних (по отношении к памяти FIFO) сигналов синхронизации операций записи WRCLK и чтения RDCLK, разрешения чтения WREN и разрешения записи RDEN, а также сигнала сброса RST формирует три внутренних сигнала управления блоком RAM: разрешения записи в память mem_wen, разрешения чтения из памяти mem.ren, а также разрешение выхо- да ое. Кроме того, устройство управления формирует следующие флаги состояния: FULL — полный, EMPTY — пустой, ALMOSTFULL — почти полный, ALMOSTEMP- TY — почти пустой, RDERR — ошибка чтения и WRERR — ошибка записи.
118 Раздел 7 WRCOUNT DIN/DINP WRCLK WREN RST RDCOUNT DO/DOP RDCLK RDEN Рис. 7.1. Структура логики функционирования памяти FIFO 7.2. Функционирование памяти FIFO Как было указано ранее, в FPGA 7-й серии предусмотрено два режима функциони- рования памяти FIFO: синхронный и с двойной синхронизацией (асинхронный). Режи- мы функционирования памяти FIFO определяются атрибутом EN-SYN, который мо- жет быть установлении в значение TRUE для синхронного режима функционирования и в значение FALSE для режима функционирования с двойной синхронизацией. Отме- тим, что на функционирование памяти FIFO может влиять введение дополнительных (конвейерных) выходных регистров путем установки атрибута DO-REG в значение 1. Кроме того, имеется два режима чтения первого слова, записанного в пустую память FIFO: стандартный и FWFT. К особенностям функционирования памяти FIFO FPGA 7-й серии можно также отнести применение сигнала сброса RST. В данном разделе эти вопросы рассматриваются более подробно. 7.2.1. Режимы функционирования: стандартный и FWFT Имеется два режима чтения первого слова, записанного в пустую память FIFO: стандартный режим и режим FWFT. В стандартном режиме первое слово, записан- ное в пустую память FIFO, появляется на выходе DO после того, как пользователь активизировал сигнал RDEN; т. е. пользователь должен прочитать данные из FIFO. В режиме FWFT первое слово, записанное в пустую память FIFO, автоматически по- является на выходе DO без активизации пользователем сигнала RDEN; следующий активный сигнал RDEN затем прочитает очередное слово данных на выход DO. Стандартный режим и режим FWFT отличаются только чтением первого запи- санного слова в пустую память FIFO. В остальном функционирование памяти FIFO в обоих режимах совпадает. Отметим также, что режим FWFT поддерживается только для памяти FIFO с двойной синхронизацией. На рис. 7.2 показано различие между стандартным режимом и режимом FWFT.
Память типа FIFO 119 RDCLK ADEN EMPTY DO (Standard) DO (FWFT) Рис. 7.2. Временная диаграмма цикла чтения в стандартном режиме и режиме FWFT 7.2.2. Начало функционирования памяти FIFO (сигнал сброса RST) Для работы памяти FIFO в FPGA 7-й серии требуется сигнал сброса RST. После включения питания сигнал RST должен быть установлен в течение 5 циклов опера- ций чтения и записи для сброса всех счетчиков и инициализации флагов. Сигнал RST не очищает блок памяти RAM и выходной регистр. Когда сигнал RST устанав- ливается, сигналы EMPTY и ALMOSTEMPTY равны 1, a FULL и ALMOSTFULL — 0. Установка и удержание сигнала RST в течение 5 циклов синхросигналов чтения и записи необходима для уверенности в том, что все внутренние состояния сбрасы- ваются в корректные значения. В течение сброса сигналы RDEN и WREN должны иметь низкий уровень. 7.2.3. Режим двойной синхронизации памяти FIFO Память FIFO имеет отдельные сигналы синхронизации для операций чтения и записи. Синхросигналы могут быть одинаковыми в случае синхронной памяти FIFO или различными по частоте и фазе в случае асинхронной (с двойной синхронизацией) памяти FIFO. Такая гибкость синхронизации позволяет избегать проблемы неодно- значности, сбоев или метастабильности. Режим двойной синхронизации памяти FIFO устанавливается путем определения значения атрибута EN.SYN равным FALSE. При операции записи слово данных, доступное на входе DI, записывается в па- мять FIFO каждый раз, когда сигнал WREN удерживается в активном состоянии в течение времени установки до появления возрастающего фронта на выводе WRCLK. При операции чтения формирование следующего слова данных на выходе DO осу- ществляется всякий раз, когда сигнал RDEN удерживается в активном состоянии в течение времени установки до возрастающего фронта на выводе RDCLK. Поток данных управляется автоматически. Пользователю нет необходимости беспокоиться о формировании последовательности адресов для блока RAM. При этом также формируются сигналы WRCOUNT и RDCOUNT, которые могут использовать- ся в различных приложениях. Пользователь должен контролировать флаги FULL и EMPTY и останавливать запись, когда сигнал FULL находится в высоком состоянии, а также останавливать чтение, когда сигнал EMPTY находится в высоком состоянии. Если эти правила на- рушаются, активное значение сигнала WREN при высоком значении FULL устанавли- вает флаг ошибки WRERR, а активное значение сигнала RDEN при высоком значении EMPTY устанавливает флаг ошибки RDERR. Однако, несмотря на нарушения, содер- жимое памяти FIFO сохраняется и адресные счетчики остаются верными. Кроме того, во время функционирования памяти FIFO формируются программи- руемые флаги Almost Full (почти полный) и Almost Empty (почти пустой), чтобы дать пользователю возможность раннего обнаружения, когда память FIFO приближается
120 Раздел 7 к своим пределам. Значения этих флагов могут устанавливаться конфигурацией в любом диапазоне адресов памяти FIFO. 7.2.4. Синхронный режим функционирования памяти FIFO Данный режим устанавливается при значении атрибута EN_SYN равным TRUE. В этом режиме исключаются задержки цикла синхронизации при установке или сбро- се флагов. Отметим, что при асинхронном сбросе поведение флагов после первой записи является непредсказуемым. В этом случае Xilinx рекомендует синхронизиро- вать сброс или синхронизировать только отрицательный фронт сброса к сигналам RDCLK или WRCLK. Эта синхронизация не требуется, когда EN_SYN = FALSE. В зависимости от режима синхронизации (определяемого атрибутом EN.SYN) и установки дополнительного выходного регистра (определяемого атрибутом DO.REG) различают три способа реализации синхронной памяти FIFO (табл. 7.2). Таблица 7.2 Реализация синхронной памяти FIFO Реализация FIFO Преимущества Недостатки EN_SYN = TRUE, DO-REG = 0 EN.SYN = TRUE, DO_REG = 1 EN.SYN = FALSE, DO-REG = 1, RDCLK = WRCLK Нет неопределенных флагов Нет неопределенных флагов, наименьшая задержка выход- ных данных (clock-to-out) Наименьшая задержка выход- ных данных (clock-to-out) Наибольшая величина задержки выходных данных (clock-to-out) Время ожидания данных увеличивается на едини- цу. Поведение подобно синхронной FIFO с внеш- ним конвейерным регистром выходных данных Не определен падающий фронт синхросигнала. Возрастающий фронт гарантируется при установ- ке сигналов FULL и EMPTY rdclk rden DO ENSYN zz TRUE DO REG = 0 DO EN.SYN = TRUE DO„REG = 1 DO EN SYN - FALSE DO.REG = 1 Рис. 7.3. Временная диаграмма синхронной памяти FIFO На рис. 7.3 представлены временные диаграммы функционирования памяти FIFO, которые соответствуют различным способам реализации синхронного функциониро- вания. 7.2.5. Флаги состояний В табл. 7.3 для каждого флага показано требуемое число циклов синхронизации, чтобы установить или сбросить каждый флаг асинхронной памяти FIFO (с двойной синхронизацией). Сигналы установки или сброса флагов для синхронной памяти FIFO не имеют времени задержки (в циклах синхронизации).
Память типа FIFO 121 Таблица 7.3 Время задержки установки и сброса флагов асинхронной памяти FIFO Флаг состояния Время задержки в циклах синхронизации Установка Сброс Стандартный FWFT Стандартный FWFT Пустой 0 0 3 4 Полный 0 0 3 3 Почти пустой 1 1 4 4 Почти полный 1 1 4 4 Ошибка чтения 0 0 0 0 Ошибка записи 0 0 0 0 Для реализации в блоках RAM памяти типа FIFO имеется два примитива: FIFO36E1 и FIFO18E1, описание которых приводится в приложении А. 7.2.6. Диапазоны смещения флагов «почти полный» и «почти пустой» Смещения «почти полный» и «почти пустой» обычно устанавливается в малое значение, меньше 10. Большинство приложений используют флаг «почти полный» для прекращения записи в память FIFO. Однако чтобы прочитать все записи из па- мяти FIFO, следует пользоваться флагом EMPTY. Установки «почти полный» и «почти пустой» могут также использоваться в неостанавливаемых приложениях передачи пакетов данных для указания, что весь пакет данных может записываться или читаться. При установке диапазонов смещения в средствах проектирования используется 16- ричная нотация. Когда частота RDCLK отличается от частоты WRCLK, необходи- мо определить значение дополнительного ограничения ALMOST_FULL_OFFSET. Ког- да частоты RDCLK и WRCLK значительно отличаются друг от друга, то для приме- нения параметра ALMOST_FULL_OFFSET следует устанавливать максимальные зна- чения. В этом случае для вычисления максимального значения ALMOST-FULL-OFF- SET используется следующее выражение: max ALMOST_FULL_OFFSET = = FIFO.DEPTM - int(4 xWRCLK_FREQ/RDCLK_FREQ) + 6, где FIFO.DEPTM — глубина памяти FIFO; WRCLK.FREQ и RDCLK-FREQ — частота записи и чтения памяти FIFO. Например, пусть используется память FIFO с глубиной 4К; WRCK = 500 МГц и RDCLK = 8 МГц, тогда ALMOST_FULL_OFFSET = 4096 - - int (4x500/8) + 6 = 3840. В приложении Б рассматриваются временные параметры памяти FIFO, а также типичные примеры функционирования памяти FIFO во времени. Последнее необхо- димо для лучшего понимания деталей функционирования памяти FIFO и корректного ее использования. 7.3. Применение памяти FIFO В данном разделе рассматриваются возможности построения больших блоков памяти FIFO, которые могут строиться путем: • каскадирования для образования большей глубины памяти; • параллельного соединения для образования большей ширины слова. 7.3.1. Каскадирование памяти FIFO для увеличения глубины На рис. 7.4 показано каскадное соединение нескольких модулей памяти FIFO для увеличения глубины памяти. Первые N — 1 модулей FIFO следует установить в режи-
122 Раздел 7 Рис. 7.4. Каскадное соединение нескольких модулей FIFO для увеличения глубины ме FWFT и использовать дополнительную логику для соединения их вместе. Защел- ка данных этого проекта является суммой индивидуальных защелок модулей FIFO. Максимальная частота ограничивается длиной пути обратной связи. Вентили NOR реализуются логикой блоков CLB. При этом: • если WRCLK > RDCLK, то INTCLK = WRCLK; • если WRCLK RDCLK, то INTCLK - RDCLK; • сигнал почни пустой ALMOSTEMPTY устанавливается в последнем модуле FIFO; • сигнал почти полный ALMOSTFULL устанавливается в первом модуле FIFO. 7.3.2. Параллельное соединение модулей FIFO для увеличения ширины слова данных На рис. 7.5 показано параллельное соединение модулей FIFO. Для реализации вен- тилей AND и OR используется логика блоков CLB. Все сигналы FULL должны быть соединены вместе с помощью вентилей OR для формирования общего сигнала FULL, аналогично все сигналы EMPTY должны быть соединены вместе с помощью вентилей OR для формирования общего сигнала EMPTY. Максимальная частота ограничива- ется логикой вентилей в цепи обратной связи. 512 х 144 FIFO Рис. 7.5. Пример параллельного соединения FIFO для увеличения ширины слова данных
Память типа FIFO 123 7.3.3. Допустимые комбинации блоков памяти RAM и FIFO В одном примитиве RAMB36 могут быть одновременно реализованы модули RAM и FIFO (рис. 7.6). RAMB18E1 TDP or SDP Mode RAMB18E1 TDP or SDP Mode RAMB18E1 TDP or SDP Mode FIFO18E1 FIFO18 Mode RAMB18E1 TDP or SDP Mode FIFO18E1 FIFO18J36 Mode Рис. 7.6. Допустимые комбинации блоков памяти RAM и FIFO 7.4. Выводы Память FIFO в блоках RAM реализуется без использования дополнительной ло- гики блоков CLB. Память FIFO реализуется либо в виде блока FIFO36 объемом 36 Кбит, либо в виде блока FIFO18 объемом 18 Кбит. Для блоков FIFO18 поддерживаются конфигурации 4Кх4, 2Кх9, 1Кх18 и 512 х36, а для блоков FIFO36 поддерживаются конфигурации 8Кх4, 4Кх9, 2Кх18, 1Кх36 и 512x72. Порт А блока RAM используется как порт чтения, а порт В — как порт записи памяти FIFO. Операции чтения и записи памяти FIFO являются синхронными и могут иметь общую или независимую синхронизацию. В первом случае память FIFO называется синхронной, а во втором — с двойной синхронизацией или асинхронной. Режимы функционирования памяти FIFO определяются атрибутом EN_SYN (TRUE для синх- ронного, FALSE для асинхронного режима функционирования). Данные читаются из памяти FIFO на возрастающем фронте синхросигнала чте- ния, а записываются в память FIFO на возрастающем фронте синхросигнала записи. В памяти FIFO допускается различная ширина портов чтения и записи, однако при реализации этого режима используется логика блоков CLB. Для памяти FIFO FPGA 7-й серии имеется два режима чтения первого слова, записанного в пустую память FIFO: стандартный и FWFT (первое слово выпадает). В режиме FWFT количество записей увеличивается на 1. Основу памяти FIFO составляет блок памяти RAM. Адреса записи и чтения дан- ных образуются с помощью блоков формирования указателя записи и указателя чте- ния. Эти блоки также формируют внешние сигналы WRCOUNT и RDCOUNT для указания значений счетчиков записи и чтения. Устройство управления на основании внешних сигналов синхронизации операций записи WRCLK и чтения RDCLK, разрешения чтения WREN и разрешения записи RDEN формирует три внутренних сигнала управления блоком RAM: разрешения за- писи в память mem.wen, разрешения чтения из памяти mem_ren, а также разрешение выхода ое. Кроме того, устройство управления формирует флаги состояния: FULL — полный, EMPTY — пустой, ALMOSTFULL — почти полный, ALMOSTEMPTY — поч- ти пустой, RDERR — ошибка чтения и WRERR — ошибка записи. На функционирование памяти FIFO может влиять введение дополнительных кон- вейерных выходных регистров путем установки атрибута DO.REG = 1.
124 Раздел 7 В стандартном режиме первое слово, записанное в пустую память FIFO, появля- ется на выходе DO после того, как пользователь активизировал сигнал RDEN; т. е. пользователь должен прочитать данные из FIFO. В режиме FWFT первое слово, за- писанное в пустую память FIFO, автоматически появляется на выходе DO без ак- тивизации пользователем сигнала RDEN; следующий активный сигнал RDEN затем прочитает очередное слово данных на выход DO. Стандартный режим и режим FWFT отличаются только чтением первого запи- санного слова в пустую память FIFO. В остальном функционирование памяти FIFO в обоих режимах совпадает. Режим FWFT поддерживается только для памяти FIFO с двойной синхрони- зацией. Для корректного функционирования памяти FIFO требуется после включения пи- тания установить сигнал сброса RST в течение 5 циклов операций чтения и записи для сброса всех счетчиков и инициализации флагов. Сигнал RST не очищает блок памяти RAM и выходной регистр. В течение сброса сигналы RDEN и WREN должны иметь низкий уровень. В асинхронном режиме входное слово данных записывается в память FIFO каж- дый раз, когда сигнал WREN удерживается в активном состоянии в течение времени установки до возрастающего фронта синхросигнала WRCLK. Формирование следую- щего выходного слова данных осуществляется всякий раз, когда сигнал RDEN удержи- вается в активном состоянии в течение времени установки до возрастающего фронта синхросигнала RDCLK. Значения указателей записи и чтения формируются автоматически. При этом также образуются сигналы WRCOUNT и RDCOUNT, которые могут использоваться в различных приложениях. Пользователь должен контролировать флаги FULL и EMPTY и останавливать за- пись, когда сигнал FULL находится в высоком состоянии, или останавливать чтение, когда сигнал EMPTY находится в высоком состоянии. Если эти правила нарушаются, устанавливается флаг ошибки записи WRERR или чтения RDERR. Однако содержи- мое памяти FIFO сохраняется и адресные счетчики остаются верными. Во время функционирования памяти FIFO также формируются программируемые флаги почти полный Almost Full и почти пустой Almost Empty. Значения этих флагов могут устанавливаться конфигурированием в любом диапазоне адресов памяти FIFO. В синхронном режиме (EN.SYN = TRUE) исключаются задержки цикла синхро- низации при установке или сбросе флагов (при асинхронном сбросе поведение флагов после первой записи является непредсказуемым). В зависимости от режима синхронизации (определяемого атрибутом EN.SYN) и установки дополнительного выходного регистра (определяемого атрибутом DO.REG), различают три способа реализации синхронной памяти FIFO (табл. 7.2). Для реализации в блоках RAM памяти типа FIFO имеется два примитива: FIFO36E1 и FIFO18E1. Большие блоки памяти FIFO могут строиться путем каскадирования для образо- вания большей глубины памяти или путем параллельного соединения для образования большей ширины слова. При этом используется логика блоков CLB.
8 Встроенная коррекция ошибок блоков памяти Блоки памяти RAM FPGA 7-й серии при записи и чтении данных поддерживают встроенную коррекцию ошибок с помощью кода Хэмминга. Реализация встроенной коррекции ошибок осуществляется в блоке коррекции ошибок ЕСС (Error Correction Coding), который имеется в каждом блоке RAM FPGA 7-й серии. Опция конфигурации блока ЕСС доступна в блоках памяти ЗбКбит для типов памяти RAM и FIFO. Для использования коррекции ошибок примитив RAMB36E1 должен конфигури- роваться как память RAM 512x64 в простом двухпортовом режиме SDP, при этом для кодирования используется 8 битов в 72-битовом слове данных. Коррекция ошибок выполняется с помощью восьми битов защиты (ECCPARITY), которые генерируются во время каждой операции записи и запоминаются в памяти вместе с 64-битовыми данными. Эти биты ECCPARITY используются во время каждой операции чтения для коррекции любой единичной ошибки или обнаружения любой двойной ошибки (без коррекции). Во время каждой операции чтения 72 бита (64 бита данных и 8 битов четности) читаются из памяти и поступают в дешифратор ЕСС. Дешифратор ЕСС формирует два выхода состояний (SBITERR и DBITERR), которые используются для определе- ния трех возможных результатов чтения: • нет ошибок (SBITERR = DBITERR = 0); • скорректирована единичная ошибка (SBITERR = 1); • обнаружена двойная ошибка (DBITERR = 1). В стандартном режиме функционирования блока ЕСС операция чтения не кор- ректирует ошибку в матрице памяти, она только представляет скорректированные данные на выходе DO. Для увеличения частоты Fmax возможна установка дополнительных регистров, управляемых атрибутом DO.REG, на выходах данных DO, а также на выходах сиг- налов SBITERR и DBITERR. Кроме того, примитив RAMB36E1 имеет свойство вводить ошибки для проверки функционирования блока ЕСС. При этом примитив RAMB36E1 имеет возможность прочитать обратно адрес, где были запомнены текущие данные выхода чтения. Это свойство позволяет поддерживать восстановление битовой ошибки или аннулировать адрес слова памяти с ошибочной записью для будущего доступа. Примитив FIFO36E1 поддерживает стандартный режим ЕСС и также имеет свой- ство введения ошибки. Память FIFO36E1 не поддерживает режим ЕСС «только шиф- ратор» и не выводит адрес прочитанных данных. Блок RAM ЕСС поддерживает режимы READ-FIRST и WRITE-FIRST в идентич- ном виде для режима SDP. 8.1. Архитектура блока ЕСС Логическая структура блока внутренней коррекции ошибок ЕСС показана на рис. 8.1. Основу блока ЕСС составляют 64-битовые шифратор ЕСС (ЕСС Encoder) и дешифратор ЕСС (Decoder end Correct). Блок ЕСС выполняет свои функции по
126 Раздел 8 WRADDR[8:0] wraddr 9 RDADDR[8:0] rdaddr 9, DIP[7:0]- ECCPARITYp:O] 8, 8 INJECTSBITERR. INJECTDBITERR- DI[63:0} 64, --- DO.REG EN.„ECC.„ WRITE DO[63:0]-< DO_REG DBITERR-* DO.REG SBITERR<<< DO_REG DOP[7:0] Q D DO-REG RDADDRECC[8:0] QI — Q D 64-bit ECC Encode Data In 64 Block RAM 512 x 72 EN_ECC_READ 64 64; 8 8. EN-ECC-READ Decode and Correct Out Parity *Out 64; ...Л 8 1 , 1 0 1 0 Q D J — Q D Q D 4 9; Рис. 8.1. Логическая структура блока ЕСС шифрации и дешифрации данных только для памяти в конфигурации 512x72 (512 слов по 72 бита), которая возможна в простом двухпортовом режиме SDP для па- мяти типа RAM и в режиме FIFO36.72 для памяти типа FIFO. Поскольку глубина памяти равна 512 слов, ширина адресных шин записи WRADDR и чтения RDADDR составляет 9 битов. Шифратор ЕСС принимает с входной шины DI 64 бита данных, кодирует их и формирует 8 битов защиты (называемых также битами четности или контрольными битами) ECCPARITY, которые вместе с битами данных записываются в память, об- разуя слово размером 72 бита. Биты четности могут также поступать извне по шине DIP. Источником битов защиты управляет атрибут EN_ECC_WRITE. Кроме того, шифратор ЕСС имеет два дополнительных входа INJECTSBITERR и INJECTDBITERR для введения одиночной и двойной (двухбитовой) ошибки со- ответственно. Эти входы могут использоваться для проверки работоспособности блока ЕСС. Дешифратор ЕСС принимает из блока памяти RAM 64 бита закодированных дан-
Встроенная коррекция ошибок блоков памяти 127 ных и 8 битов защиты (четности), на основании которых формирует и выводит на выходную шину DO корректные данные, а на шину DOP — биты четности. Если при записи в блок памяти RAM произошла одиночная ошибка, то дешифратор ее испра- вит и установит флаг SBITERR. В случае двойной ошибки устанавливается только флаг DBITERR. Адрес ячейки памяти, считываемой в настоящее время, выводится на выход RDADDRECC. С помощью этих данных можно узнать адрес ячейки памя- ти, где произошла ошибка, и принять соответствующие меры: либо аннулировать считанные данные, либо адрес ячейки с ошибочными данными исключить из даль- нейшего использования. На всех выводах блока RAM, работающего в режиме встроенной коррекции оши- бок, могут устанавливаться дополнительные (конвейерные) регистры. При этом до- полнительные регистры устанавливаются на выходные шины данных DO и DOP, на шину адреса RDADDRECC, а также на выходы сигналов SBITERR и DBITERR. Уста- новкой дополнительных регистров управляет атрибут DO-REG. Путь выходных данных DO и битов четности DOP может обходить дешифра- тор ЕСС. Для этого служат соответствующие мультиплексоры, которые управляются атрибутом EN_ECC_READ. 8.2. Функционирование блока ЕСС Имеются три основных режима функционирования блока коррекции ошибок ЕСС: • стандартный, когда одновременно используются шифратор и дешифратор ЕСС; • «только шифратор», когда используется только шифратор ЕСС; • «только дешифратор», когда используется только дешифратор ЕСС В стандартном режиме функционирования блока ЕСС (EN_ECC_READ = TRUE и EN_ECC_WRITE = TRUE) доступны как шифратор, так и дешифратор. Во время записи в память запоминаются 64-битовые данные и сгенерированные блоком ЕСС 8 битов четности. Внешние биты четности игнорируются. Во время чтения на выход выводятся 72-битовые дешифрованные данные. Чтобы использовать блок ЕСС в режиме «только дешифратор», следует устано- вить EN_ECC_WRITE = FALSE и EN_ECC_READ = TRUE. Шифратор может использоваться двумя путями: • в стандартном режиме ЕСС при установке EN_ECC_WRITE = TRUE и EN_ECC_ READ = TRUE; в этом режиме контроль по четности блоком ЕСС не поддер- живается; • в режиме только шифратор при установке EN_ECC_WRITE = TRUE и EN_ECC_ READ = FALSE; в этом режиме контроль по четности поддерживается блоком ЕСС. Отметим некоторые особенности функционирования блока RAM при использо- вании режима коррекции ошибок: • в простом двухпортовом режиме SDP порты блока RAM имеют независимые ад- реса, синхросигналы и входы разрешения, один порт является выделенным пор- том записи, а другой — выделенным портом чтения; • выход DO представляет прочитанные данные после коррекции; • выход DO остается доступным до следующей активной операции чтения; • допускается одновременная шифрация и дешифрация данных для различных ад- ресов записи/чтения; однако запрещается одновременная дешифрация и шифра- ция данных по одному и тому же адресу записи/чтения; • в конфигурации ЕСС блок RAM может иметь режимы READ_FIRST и WRITE- FIRST.
128 Раздел 8 Кроме того, в простом двухпортовом режиме SDP примитива RAMB36E1 шиф- ратор и дешифратор могут быть отдельно доступны для внешнего использования. Чтобы использовать шифратор отдельно, данные должны быть направлены через порт DI, и должен выбираться выходной порт ECCPARITY. Чтобы использовать от- дельно дешифратор, шифратор запрещается, данные записываются в блок RAM, а скорректированные данные и биты состояния считываются на выход блока RAM (см. атрибуты блока RAMB36E1 в приложении А). Для использования блока коррекции ошибок ЕСС в случае памяти RAM приме- няется примитив RAMB36E1 в режиме SDP (поскольку блок коррекции ошибок ЕСС применим только в этом режиме). Аналогично, для использования блока коррекции ошибок ЕСС в случае памяти FIFO применяется примитив FIFO36E1 (поскольку блок коррекции ошибок ЕСС применим только в режиме FIFO36-72). Описание указан- ных примитивов в случае использования блока коррекции ошибок ЕСС приведено в приложении А. 8.3. Применение блока ЕСС Как было сказано ранее, имеется 3 режима функционирования блока ЕСС: • стандартный; • «только шифратор»; • «только дешифратор». 8.3.1. Стандартный режим ЕСС В стандартном режиме в блоке ЕСС используются как шифратор, так и дешиф- ратор. Различные режимы функционирования блока ЕСС доступны как в памяти RAM, так и в памяти FIFO. Адресные входы WRADDR и RDADDR блока RAM ус- танавливаются пользователем. Адресные входы WRADDR и RDADDR блока FIFO генерируются внутренне от счетчиков записи и чтения. Для функционирования блока ЕСС в стандартном режиме, необходимо устано- вить следующие значения атрибутов: EN_ECC_READ - TRUE; EN_ECC_WRITE = TRUE. Запись в стандартном режиме ЕСС. Как показано на рис. 8.2, в момент времени T1W значение шины DI[63:0] = А записывается в ячейку памяти а. Соответствую- щие 8 битов контрольных разрядов (четности) РА внутренне генерируются в ЕСС, добавляются к 64 битам данных и записываются в память. Сразу после записи зна- чения контрольных разрядов РА появляются на выходе ECCPARITY[7:0]. Поскольку контрольные биты ЕСС генерируются внутренне, выводы DIP[7:0] не используются. В стандартном режиме ЕСС четность (parity) ЕСС не поддерживается. Аналогично, в моменты времени T2W и T3W на шине DI[63:0] устанавливаются значения В и С, которые вместе с соответствующими контрольными битами РВ и PC записываются в ячейки памяти b и с. Значения РВ и PC появляются на выходе ECCPARITY[7:0] вскоре после моментов времени T2W и T3W. Чтение в режиме стандартного ЕСС. Как показано на рис. 8.3, в момент времени T1R 72-битовое содержимое памяти, состоящее из 64 битов данных слова А и 8 битов четности РА читается из ячейки памяти а и внутренне дешифруется. Если нет ошибки, оригинальные данные и значение контрольных битов выводятся на шины DO[63:0] и DOP[7:0]. Если произошла ошибка либо в данных, либо в битах четности, сигнал SBITERR устанавливается в 1. Если имеется двойная ошибка в данных и в битах четности, ошибка не корректируется. Выводятся оригинальные данные и биты
Встроенная коррекция ошибок блоков памяти 129 WRCLK WREN WRADDR(8:01 DI[63:0J DIP(7;0] (Decode Only Mode) ECCPARITY(7;O) Рис. 8.2. Операция записи блока ЕСС четности, а сигнал DBITERR устанавливается в 1. Если атрибут DO.REG = 0, то DO[63:0] = А и DOP[7:0] = РА сразу после момент времени T1R. Аналогично, в моменты времени T2R и T3R содержимое памяти из адресуемых ячеек b и с читается, дешифруется и выводится на шины DO[63:0] и DOP[7:0]. Если обнаруживается одиночная или двойная ошибка в слове А, выводы SBITERR/DBIT- ERR могут переключаться после момента времени T1R. На рис. 8.4 показана одиночная ошибка (SBITERR), обнаруженная в наборе дан- ных А в режиме защелки после фронта синхросигнала T1R, а двойная ошибка (DBIT- ERR) обнаружена в данных В в режиме защелки после фронта синхросигнала T2R. Если атрибут DO.REG = 1, то DO[63:0] = А и DOP[7:0] = РА сразу после T2R. RDCLK RDEN RDADDR[8:0] DO[63:01 (Latch Mode) DOP[7:0] (Latch Mode) SBITERR (Latch Mode) DBITERR (Latch Mode) ECCRDADDR (Latch Mode) DO[63:OJ (Register Mode) DOP(7:0] (Register Mode) SBITERR (Register Mode) DBITERR (Register Mode) ECCRDADDR (Register Mode) T1R T2R T3R T4R 1 у Single Bft|Error ’ \ —*4 1 1 TRCKOmEdc„SBITERR (Latch Mode il 1 j J Double Bit ^rror \ j 1 1 TRCKO_ECp„DBITERR (Latch Mode) | n ' XX h i XX ~ • a । A. b A c A w т l-*~ TRCKO RokoOR ECC I i у;... j ™ i _ 1, XX ЖШ A iX В IX c H-TRCKO__DO (Register Mode) I ; _2_—К 1 I | Single Bit Error ] К 1 1 trcko.„ECC„SbIterr (Register Mode) j । | । J" Double BlF Error” p \ c -*-TRCKO„ECC„ DBlTfeRR (Register Mode) a | b*-TRCKO_RD^DDRECC..REG Рис. 8.3. Операция чтения блока ЕСС
130 Раздел 8 Write Cycle Read Cycle Write Cycle Read Cycle WRCLK DIN WREN WRADDR INJSBITERR INJDBITERR RDCLK RDADDR RDEN DOUT SBITERR DBITERR •hock di ecc TRCKO_DO_REG ^«CKO..SB!T..ECC TRCKO Э6Г.ЕСС SBITERR Corrected Data - DBITERR Not Corrected Data Рис. 8.5. Введение одной двухбитовой ошибки в регистровом режиме 'ROCK INJERR ECC TRCKO RDADDR E€C. REG Аналогично, в моменты времени T3R и T4R содержимое памяти из адресуемых ячеек Ьис читается, дешифруется и выводится на шины DO[63:0] и DOP[7:0]. Могут также переключаться выводы SBITERR/DBITERR после момента времени T2R, если одиночная или двойная ошибка обнаруживается в наборе А. На рис. 8.5 показана одиночная ошибка (SBITERR), обнаруженная в наборе дан- ных А в регистровом режиме после фронта синхросигнала T2R, а двойная ошибка (DBITERR) обнаружена в данных В в регистровом режиме защелки после фронта синхросигнала T3R. 8.3.2. Режим ЕСС «только шифратор» Для функционирования блока ЕСС в режиме «только шифратор», необходимо установить следующие значения атрибутов: EN_ECC_READ = FALSE;
Встроенная коррекция ошибок блоков памяти 131 EN_ECC_WRITE = TRUE. Запись в режиме ЕСС «только шифратор». В момент времени T1W (см. рис. 8.2) значение А шины DI[63:0] записывается в ячейку памяти а; блоком ЕСС внутренне ге- нерируются соответствующие 8 битам четности РА, добавляются к 64 битам данных и записываются в память. Сразу после записи значения битов четности РА появляют- ся на выходе ECCPARITY[7:0]. Поскольку четность генерируются внутренне, выводы DIP[7:0] не используются. Аналогично, в моменты времени T2W и T3W значения шины В и С DI[63:0] вместе с соответствующими им битами четности РВ и PC записываются в ячей- ки памяти b и с. Значения РВ и PC появляются на выходе ECCPARITY[7:0] сразу после T2W и T3W. Чтение в режиме ЕСС «только шифратор». Чтение в режиме ЕСС «только шифратор» совпадает с нормальным чтением блока RAM: 64-битовые данные по- являются на выходе DO[63:0] и 8 битов четности появляются на выходе DOP[7:0]. Коррекция одиночных ошибок никогда не происходит и флаги ошибок SBITERR и DBITERR никогда не устанавливаются. 8.3.3. Режим ЕСС «только дешифратор» Для функционирования блока ЕСС в режиме «только дешифратор», необходимо установить следующие значения атрибутов: EN_ECC_READ = TRUE; EN_ECC_WRITE = FALSE. В этом режиме доступен только дешифратор ЕСС, а шифратор запрещен. Режим «только дешифратор» используется для введения одиночной или двойной ошибки для тестирования функциональности дешифратора ЕСС. При этом биты четности должны питаться извне, используя выводы DIP[7:0]. 8.3.4. Использование режима «только дешифратор» для введения одиночной ошибки В моменты времени T1W, T2W и T3W (см. рис. 8.2) на шине DI[63:0] устанав- ливаются значения А, В и С с одиночной ошибкой, а шина DIP[7:0] имеет значения РА, РВ и PC, соответствующие битам четности, сгенерированных ЕСС, для значений А, В и С, записанных в ячейки памяти а, b и с. В моменты времени T1R, T2R и T3R (см. рис. 8.3) содержимое ячеек памяти а, b и с читается на выход и корректируется, как необходимо. Режим защелки: DO[63:0] = А, В, С; DOP[7:0] = РА, РВ, PC сразу после мо- ментов времени T1R, T2R и T3R. Регистровый режим: DO[63:0] = А, В, С; DOP[7:0] = РА, РВ, PC сразу после моментов времени T2R, T3R и T4R. Линии SBITERR устанавливаются в 1 с соответствующими данными на шинах DO/DOP. Дешифратор ЕСС также корректирует одиночную ошибку в битах четности. 8.3.5. Использование режима «только дешифратор» для введения двойной ошибки В моменты времени T1W, T2W и T3W (см. рис. 8.2) значения на шине DI[63:0] равны А, В и С с двойной ошибкой, а на шине DIP[7:0] устанавливаются значения РА, РВ и PC, соответствующие битам четности блока ЕСС для значений А, В и С, записанных в ячейки памяти а, b и с.
132 Раздел 8 В моменты времени T1R, T2R и T3R оригинальное содержимое ячеек памяти а, b и с читается на выход и обнаруживается двойная ошибка. Режим защелки: DO[63:0] = А, В, С с двойной ошибкой; DOP[7:0] = РА, РВ, PC сразу после моментов времени T1R, T2R и T3R. Регистровый режим: DO[63:0] = А, В, С с двойной ошибкой; DOP[7:0] = РА, РВ, PC сразу после моментов времени T2R, T3R и T4R. Линии SBITERR устанавливаются в 1 с соответствующими данными на шинах DO/DOP. Дешифратор ЕСС обнаруживает двойную ошибку в битах четности, а также оди- ночную ошибку в битах данных и одиночную ошибку в соответствующих битах чет- ности. (Информацию о временных параметрах функционирования блока ЕСС см. в до- кументе UG 473 7 Series FPGAs Memory Resources. User Guide.) 8.4. Выводы Реализация встроенной коррекции ошибок при записи и чтении данных осущест- вляется в блоке коррекции ошибок ЕСС. Опция конфигурации блока ЕСС доступна в блоках памяти ЗбКбит для типов памяти RAM и FIFO. Для использования коррекции ошибок примитив RAMB36E1 должен конфигури- роваться как память RAM 512x64 в простом двухпортовом режиме SDP, при этом для кодирования используется 8 битов в 72-битовом слове данных. Коррекция ошибок выполняется с помощью восьми битов защиты ECCPARITY, которые генерируются во время каждой операции записи и запоминаются в памяти вместе с 64-битовыми данными. Биты ECCPARITY используются во время каждой операции чтения для коррекции любой единичной ошибки или обнаружения любой двойной ошибки. Во время каждой операции чтения 64 бита данных и 8 битов четности читаются из памяти и поступают в дешифратор ЕСС. Дешифратор ЕСС формирует два вы- хода состояний SBITERR и DBITERR, которые используются для определения трех возможных результатов чтения: • нет ошибок (SBITERR = DBITERR = 0); • скорректирована единичная ошибка (SBITERR = 1); • обнаружена двойная ошибка (DBITERR = 1). Примитив RAMB36E1 позволяет вводить ошибки для проверки функционирова- ния блока ЕСС, а также прочитать обратно адрес, где были запомнены данные. Это свойство позволяет аннулировать адрес слова памяти с ошибочной записью для бу- дущего доступа. Примитив FIFO36E1 поддерживает стандартный режим ЕСС и также имеет свой- ство введения ошибки. Память FIFO36E1 не поддерживает режим ЕСС «только шиф- ратор» и не выводит адрес прочитанных данных. Основу блока ЕСС составляют 64-битовые шифратор ЕСС и дешифратор ЕСС Блок ЕСС выполняет функции по шифрации и дешифрации данных только для памяти в конфигурации 512x72 в простом двухпортовом режиме SDP для памяти RAM и в режиме FIFO36.72 для памяти FIFO. Ширина адресных шин записи WRADDR и чтения RDADDR составляет 9 битов. Шифратор ЕСС принимает с входной шины DI 64 бита данных, кодирует их и формирует 8 битов защиты (четности) ECCPARITY, которые вместе с битами дан- ных записываются в память, образуя слово размером 72 бита. Биты четности могут
Встроенная коррекция ошибок блоков памяти 133 также поступать извне по шине DIP. Источником битов защиты управляет атрибут EN_ECC_WRITE. Для проверки работоспособности блока ЕСС шифратор имеет два дополнитель- ных входа INJECTSBITERR и INJECTDBITERR для введения одиночной и двойной ошибки соответственно. Дешифратор ЕСС принимает из блока памяти RAM 64 бита закодированных дан- ных и 8 битов защиты (четности), на основании которых формирует и выводит на выходную шину DO корректные данные, а на шину DOP — биты четности. Если при записи в блок памяти RAM произошла одиночная ошибка, то дешиф- ратор ее исправит и установит флаг SBITERR. В случае двойной ошибки устанавли- вается только флаг DBITERR. Адрес ячейки памяти, считываемой в настоящее время, выводится на выход RDADDRECC. Имеется три основных режима функционирования блока коррекции ошибок ЕСС: • стандартный, когда одновременно используются шифратор и дешифратор ЕСС; • «только шифратор», когда используется только шифратор ЕСС; • «только дешифратор», когда используется только дешифратор ЕСС. В простом двухпортовом режиме SDP примитива RAMB36E1 шифратор и де- шифратор могут быть отдельно доступны для внешнего использования.
9 Система ввода-вывода SelectIO Система ввода-вывода в FPGA 7-й серии носит название система SelectIO. Ре- сурсы системы SelectIO разделяют на три части: • ресурсы ввода-вывода общего назначения; • логические ресурсы ввода-вывода; • расширенные логические ресурсы ввода-вывода. Ресурсы ввода-вывода общего назначения реализуются с помощью широкого на- бора примитивов, которые поддерживают большинство ассиметричных (single-ended) и дифференциальных differential) стандартов. Важную роль в ресурсах ввода-вывода общего назначения играет цифровое управление импедансом (Digitally-Controlled Im- pedance — DCI). Логические ресурсы системы SelectIO представлены модулями I LOGIC и OLOGIC, а также модулями IDELAY и ODELAY. Модули ILOGIC и OLOGIC обеспечивают пе- редачу данных с удвоенной скоростью (double-date-rate — DDR) по отношению к син- хросигналу. Модули IDELAY и ODELAY обеспечивают введение программируемой задержки в пути сигналов данных и синхронизации. Расширенные логические ресурсы системы SelectIO обеспечиваются модулями ISERDES и OSERDES, которые представляют собой соответственно последователь- но-параллельный и параллельно-последовательный преобразователи. Модули ISER- DES и OSERDES поддерживают широкий набор сетевых интерфейсов. В данной главе рассматриваются ресурсы ввода-вывода общего назначения. Ло- гические ресурсы системы SelectIO описываются в главе 10, а расширенные логичес- кие ресурсы — в главе 11. 9.1. Банки ввода-вывода Ресурсы системы ввода-вывода SelectIO представлены в виде банков. В архитек- туре FPGA 7-й серии банки организуются в виде столбцов, которые могут распола- гаться как по краям кристалла, так и внутри него, что обеспечивает кратчайшие пути трассировки сигналов из внутренней логики FPGA к внешним выводам. FPGA 7-й серии предлагают банки ввода-вывода двух типов: высокопроизводи- тельные (high-performance — HP) и широкого диапазона (high-range — HR). Банки HP разработаны с целью удовлетворения требований производительности быстродейст- вующей памяти и других интерфейсов между микросхемами с напряжением до 1,8 В. Банки HR разработаны для поддержки широкого диапазона стандартов ввода-вывода с напряжением до 3,3 В. Свойства банков типа HP и HR приведены в табл. 9.1. Каждый банк ввода-вы вода содержит 50 выводов. Число банков зависит от раз- мера устройства и корпуса устройства. На рис. 9.1 показан пример расположения банков ввода-вывода для микросхемы ХС7К325Т. (Информацию о банках ввода-вывода каждого устройства можно найти в до- кументе UG475 7 Series FPGAs Packaging and Pinout Product Specifications. User Guide.)
Система ввода-вывода SelectIO 135 — Bank 18 HR 50 I/O Bank 17 HR 50 I/O Bank 16 HR 50 I/O Bank 15 HR 50 I/O Bank 14 HR 50 I/O Bank 34 HP 501/0 Bank 13 HR 501/0 Bank 33 HP 50 I/O Bank 12 1 ю Г1Г1 501/0 Bank 32 HP 501/0 Рис. 9.1. Банки микросхемы ХС7К325Т Таблица 9 1 Поддержка свойств ввода-вывода банками HP и HR Свойство HP HR Стандарты ввода-вывода 3,3 В1 — 4- Стандарты ввода-вывода 2,5 В1 — 4- Стандарты ввода-вывода 1,8 В1 + 4- Стандарты ввода-вывода 1,5 В1 4- 4- Стандарты ввода-вы вода 1.35V1 4- 4- Стандарты ввода-вывода 12 В1 4- 4- Стандарты LVDS2 + 4- Выходной ток 24 мА для LVCMOS18 и LVTTL — 4- Цепь питания Vccauxjo 4- — Цифровое управление импедансом (DCI) и каска- дирование DCI (Digitally-controlled impedance) 4- — Внутреннее напряжение VREF 4- 4- Внутренняя дифференциальная нагрузка (DIFF.TERM) 4- 4- IDELAY 4- 4- ODELAY 4- — IDELAYCTRL 4- 4- ISERDES 4- 4- OSERDES 4- 4- ZHOLD-DELAY — 4- 1 He все стандарты ввода-вывода поддерживаются в обоих банках (см. документ UG471). 2. Хотя LVDS рассматривается как 2.5-вольтный стандарт, он под- держивается в обоих банках. 9.2. Ресурсы системы ввода-вывода в семействах FPGA 7-й серии Ресурсы ввода-вывода в семействах FPGA 7-й серии распределены достаточно неравномерно. Так, устройства семейства Artix-7 имеют только банки ввода-вывода широкого диапазона типа HR (табл. 9.2). В семействе Kintex-7 большинство устройств включают как банки широкого диа- пазона типа HR, так и высокопроизводительные банки типа HP (табл. 9.3). Большинство устройств семейства Virtex-7 имеют только высокопроизводитель- ные банки типа HP, за исключением двух устройств XC7V585T и XC7VX330T в кор- пусе FFG1761 (табл. 9.4 и табл. 9.5). Таблица 9.2 Максимальное число двунаправленных выводов для устройств Artix-7 Тип корпуса Тип банка XC7A 35T XC7A 50T XC7A 75T XC7A 100T XC7A 200T CPG236 HR 106 106 CSG324 HR 210 210 210 210 CSG325 HR 150 150 FTG256 HR 170 170 170 170 SBG484 HR 285 FGG484 HR 250 250 285 285 FBG484 HR 285 FGG676 HR 300 300 FBG676 HR 400 FFG1156 HR 500
136 Раздел 9 Таблица 9.3 Максимальное число двунаправленных выводов для устройств Kintex-7 Тип Тип XC7K XC7K XC7K XC7K XC7K XC7K XC7K корпуса банка 70T 160T 325T 355T 410T 420T 480T FBG484 HR 185 185 HP 100 100 FBG676 HR 200 250 250 250 HP 100 150 150 150 FFG676 HR 250 250 250 HP 150 150 150 FBG900 HR 350 350 HP 150 150 FFG900 HR 350 350 HP 150 150 FFG901 HR 300 380 380 HP 0 0 0 FFG1156 HR 400 400 HP 0 0 Таблица 9.4 Максимальное число двунаправленных выводов для устройств Virtex-7 Тип Тип XC7V XC7V XC7V XC7V XC7V XC7V XC7V XC7V XC7V корпуса банка 585T 200T X330T X415T X485T X550T X690T X980T X1140T FFG1157 HP 600 600 600 600 600 FFG1761 HR 100 50 0 0 HP 750 650 700 850 FHG1761 HP 850 FLG1925 HP 1200 FFG1158 HP 350 350 350 350 FFG1926 HP 720 720 FLG1926 HP 720 FFG1927 HP 600 600 600 600 FFG1928 HP 480 FLG1028 HP 480 FFG1930 HP 700 1000 900 FLG1930 HP 1100 Таблица 9.5 Максимальное число двунаправленных выводов семейства Virtex-7 для подсемейства НТ Тип корпуса Тип банка XC7VH580T XC7VH870T FLG1155 HP 400 HCG1155 HP 400 FLG1931 HP 600 HCL1931 HP 600 FLG1932 HP 300 HCL1932 HP 300 На основании наличия ресурсов ввода-вывода, которое выражается в типах име- ющихся банков ввода-вывода, можно сделать следующие выводы: семейство Artix-7 предназначено для использования в приложениях общего назначения; Kintex-7 — как в приложениях общего назначения, так и в системах высокопроизводительной передачи данных; Virtex-7 — в системах высокопроизводительной передачи данных. 9.3. Основные свойства ресурсов ввода-вывода общего назначения Все FPGA 7-й серии имеют конфигурируемые драйверы SelectIO и приемники (ресиверы), поддерживающие широкое разнообразие стандартных интерфейсов. Ро- бастный (устойчивый к грубым внешним воздействиям) набор свойств включает:
Система ввода-вывода SelectIO 137 • программируемое управление выходной мощностью; • управление скоростью возрастания сигнала на выходах микросхемы; • цифровое управление импедансом DCI; • возможность генерирования внутреннего опорного напряжения (INTERNAL. VREF). Замечание. Банки HR не поддерживают свойство DCL За некоторыми исключениями, каждый банк ввода-вывода содержит 50 выводов SelectIO. Только два вывода с каждого конца каждого банка могут использоваться с ассиметричными (single-ended) стандартами ввода-вывода. Оставшиеся 48 выводов могут использоваться либо с ассиметричными, либо с дифференциальными стандар- тами, используя два вывода, сгруппированные вместе как пара P/N (positive/negati- ve — положительный/отрицательный). Ресурс каждого вывода SelectIO содержит вход, выход и драйверы (буферы) с тремя состояниями. Выводы SelectIO могут конфигурироваться для: • ассиметричных стандартов (LVCMOS, LVTTL, HSTL, PCI и SSTL); • дифференциальных стандартов (LVDS, Mini.LVDS, RSDS, PPDS, BLVDS, диф- ференциальные HSTL и SSTL). Отметим некоторые новые свойства системы ввода-вывода, которые отсутство- вали в предыдущих семействах FPGA фирмы Xilinx: • два типа банков ввода-вывода HR и HP, причем каждый тип поддерживает неко- торые уникальные свойства и стандарты ввода-вывода; • новый интерфейс памяти связал стандарты ввода-вывода SSTL и HSTL, которые теперь поддерживают атрибут SLEW и можно выбирать между граничными ско- ростями FAST и SLOW (по умолчанию значение атрибута SLEW равно SLOW); чтобы сохранить скорости возрастания, как в предыдущих семействах, новые про- екты требуют установку атрибута SLEW в значении FAST (в табл. 1-56 документа UG471 указано какие стандарты поддерживают атрибут SLEW); • схема калибровки DCI в FPGA 7-й серии улучшает точность внутреннего сопро- тивления нагрузки, однако значения резисторов внешней точности отличаются для стандартов DCI, сейчас внешние резисторы выбираются для удвоенного со- противления Thevenin, тогда как в Virtex-б и предыдущих семействах они равня- лись сопротивлению Thevenin; • предлагаются дополнительные проектные примитивы логики ввода-вывода с но- выми свойствами и функциями. 9.4. Напряжения питания элементов ввода-вывода Различные элементы системы SelectIO могут требовать четыре типа напряжений: Vcco. Vref. Vccaux и Vccaux_io- Напряжение Vcco- Напряжение Vcco является первичным напряжением пита- ния схемы ввода-вывода. В табл. 1-55 документа UG471 представлены требования к Vcco для каждого поддерживаемого стандарта ввода-вывода: входных, выходных, а также дополнительных внутренних схем дифференциальной нагрузки. Все выводы Vcco Для данного банка ввода-вывода должны подсоединяться к одному и тому же внешнему напряжению питания на плате и все выводы данного банка должны исполь- зовать один и тот же уровень Vcco- Напряжение Vcco. которое должно назначаться данному банку ввода-вывода, должно быть согласовано с требованиями стандартов ввода-вывода. Неправильно выбранное напряжение Vcco может привести к потере функциональности или повреждению устройства.
138 Раздел 9 Напряжение Vref Ассиметричные (single-ended) стандарты ввода-вывода с диф- ференциальным входным буфером требуют входное опорное напряжение Vref- Ког- да банку ввода-вывода требуется опорное напряжение Vref. должны использоваться два многофункциональных вывода банка как входы напряжения Vref- Отметим, что FPGA 7-серии с помощью ограничения INTERNAL.VREF дополнительно могут ис- пользовать внутренне опорное напряжение. Напряжение Vccaux- Глобальная вспомогательная цепь питания Vccaux пре- имущественно используется для обеспечения питанием свойств логики межсоедине- ний различных блоков внутри FPGA 7-серии. В банках ввода-вывода напряжение Vccaux используется для питания схем входных буферов для некоторых стандар- тов ввода-вывода. Это включает все ассиметричные стандарты ввода-вывода ниже 1,8 В, а также некоторые стандарты 2,5 В (только для банков HR). Дополнительно цепь Vccaux обеспечивает питание к схемам дифференциальных входных буферов. Требования напряжений питания, включая последовательность включения и выклю- чения, смотри в документе UG475 «7 Series FPGA Data Sheets». Напряжение Vccaux_io- Вспомогательная цепь питания Vccaux_io представле- на только в банках HP и обеспечивает питанием схемы ввода-вывода. Документация FPGA семейств Kintex-7 и Virtex-7 содержит таблицу с заголовком «Maximum Physical Interface (PHY) Rate for Memory Interfaces» (максимальная скорость физического ин- терфейса для интерфейсов памяти), которая дает рекомендации для Vccaux_io- Эта таблица указывает, какие выводы Vccaux_io могут питаться напряжением 1,8 В (по умолчанию) или дополнительно 2,0 В для наивысшей производительности определен- ных типов интерфейсов памяти (см. документ UG471). Имеется проектное ограниче- ние для цепей ввода-вывода и примитивов, называемое VCCAUXJO, которое должно определяться в проекте, если выводы Vccaux_io Для любых банков установлены в 2,0 В. 9.5. Стандарты ввода-вывода, поддерживаемые FPGA 7-серии Стандарты ввода-вывода, поддерживаемые FPGA 7-й серии, приведены в табл. 9.6. Таблица 9.6 Стандарты ввода-вывода FPGA 7-й серии Стандарт Тип банка Описание LVTTL (Low Voltage TTL) HR Стандарт EIA/JESD общего назначения для 3,3-вольтных приложений, который использует ассиметричный входной буфер CMOS и двухтакт- ный (push-pull) выходной буфер; доступен в банках HR LVCMOS (Low Voltage CMOS) HR. HP Широко используемый переключательный стандарт, реализованный в CMOS-транзисторах. В FPGA 7-й серии поддерживаются стандарты LVCMOS12, LVCMOS15, LVCMOS18, LVCMOS25 и LVCMOS33 LVDCI (Low Voltage Digi- tally Controlled Impedance) HP Низковольтный стандарт с цифровым управлением импедансом. Под- держиваются стандарты LVDCL15 и LVDCL18 LVDCLDV2 HP Низковольтный стандарт с цифровым управлением импедансом и с по- ловинным импедансом нагрузки источника. Поддерживаются стандар- ты LVDCLDV2JL5 и LVDCLDV2JL8 HSLVDCI (High- Speed LVDCI) HP Высокоскоростной стандарт LVDCI, предназначен для использования в двунаправленных каналах. Выходной драйвер идентичен LVDCI, в то время как вход идентичен HSTL и SSTL Используя вход с опорным напряжением Vref. этот стандарт позволяет увеличить чувствитель- ность входа приемника, который затем использует ассиметричный при- емник типа LVCMOS
Система ввода-вывода SelectIO 139 Окончание табл. 9.6 Стандарт Тип банка Описание HSTL (High- Speed Transceiver Logic) SSTL (Stub- Series Terminated Logic) HSUL-12 (High- Speed Untermi- nated Logic) MOBILE-DDR (Low Power DDR) LVDS и LVDS.25 (Low Voltage Differential Sig- naling) RSDS (Reduced Swing Differential Signaling) Mini-LVDS PPDS (Point-to- Point Differential Signaling) TMDS (Transi- tion Minimized Differential Sig- naling) HR, HP HR, HP HR, HP HR HR, HP HR HR HR HR Стандарт высокоскоростной трансиверной логики. HSTL является об- щецелевым стандартом высокоскоростной шины; имеет 4 варианта (класса). Для поддержки синхронизации высокоскоростных интерфей- сов памяти также доступны дифференциальные версии. FPGA 7-й се- рии поддерживают class-1 для 1,2-вольтной версии HSTL в банках HP, class-1 и class-11 для 1,5- и 1,8-вольтных версий, включая дифференци- альные версии. Дифференциальные версии стандарта требуют входной буфер дифференциального усилителя и двухтактный выходной буфер. Банки HP также поддерживают версии DCI (детали смотри в докумен- те UG471) SSTL для 1,8, 1,5 и 1,35 В являются стандартом ввода-вывода для общецелевых шин памяти. FPGA 7-й серии поддерживают стандарты SSTL как для ассиметричных, так и для дифференциальных сигналов Дифференциальные версии используют истинно дифференциальный усилитель входного буфера и комплементарные двухтактные выход- ные буферы. T_DCI (DCI с 3-м состоянием) версии этого стандарта предпочтительны для реализации интерфейсов памяти в банках HP, а использование атрибута IN-TERM (некалибрируемая внутренняя на- грузка) рекомендуется для банков HR Стандарт HSUL-12 предназначен для шин памяти LPDDR2. FPGA 7-й серии поддерживают этот стандарт для ассиметричной и дифферен- циальной версий. Данный стандарт требует дифференциальный усили- тель во входном буфере и двухтактный выходной буфер Предназначен для шин памяти LPDDR и MOBILE-DDR. Стандарт MOBILE-DDR является 1,8-вольтным ассиметричным стандартом ввода-вывода, который исключает необходимость в напряжениях Vref и Vtt- FPGA 7-й серии поддерживает этот стандарт для ассиметрич- ных сигналов и дифференциальных выходов. Дифференциальные выхо- ды управляют выводами CK/CK# Низковольтная дифференциальная сигнализация (L.VDS) является важ- ным высокоскоростным интерфейсом во многих системных приложе- ниях. L.VDS доступен в банках HP, требует напряжения Vcco = 1,8 В. LVDS.25 доступен только в банках HR, требует напряжения Vcco = 2,5 В Этот стандарт подобен LVDS, который использует дифференциальные сигналы. Он имеет реализацию подобную LVDS-25 и предназначен для приложений «от точки к точке» (point-to-point) Mini-LVDS является дифференциальным стандартом ввода-вывода, ко- торый служит интерфейсом между функцией управления синхронизаци- ей и исходным драйвером LCD. Входы Mini-LVDS требуют параллель- ных нагрузочных резисторов либо используя резистор на печатной пла- те, либо используя атрибут DIFF.TERM FPGA 7-й серии. Требуется напряжение Vcco = 2,5 В PPDS является дифференциальным стандартом ввода-вывода для драйверов строк и столбцов интерфейса LCD следующего поколе- ния. Входы PPDS требуют параллельных нагрузочных резисторов либо используя резистор на печатной плате, либо используя атрибут DIFF.TERM FPGA 7-й серии. Требуется напряжение Vcco = 2,5 В TMDS является дифференциальным стандартом ввода-вывода для пе- редачи высокоскоростных последовательных данных, используя видео- интерфейсы DVI и HDML TMDS требует на выходах внешних подтяги- вающих резисторов на 50 Ом, Vcco - 8,3 В 9.6. Архитектура блоков ввода-вывода 9.6.1. Обобщенная структура ввода-вывода Структура ввода-вывода для банка HP показана на рис. 9.2, а для банка HR — на рис. 9.3.
140 Раздел 9 Рис. 9.2. Структура ввода-вы вода банка HP Рис. 9.3. Структура ввода-вывода банка HR Структура ввода-вывода банка HP на рис. 9.2 включает контактные площад- ки выводов (PAD), буфер ввода-вывода (IOB — input-output buffer), блоки входной (IDELAY) и выходной (ODELAY) задержки, а также входной (ILOGIC) и выходной (OLOGIC) логические блоки. В структурах ввода-вывода банков HP используются логические блоки ILOGICE2, а в банках HR — ILOGICE3 (отличие блоков ILOGICE2 и ILOGICE3 будет отмечено в разделе 9.2.3). Отметим, что в структуре ввода-вывода банка HR (рис. 9.3) отсутствует блок вы- ходной задержки. Схемы логических блоков ILOGIC и OLOGIC могут также конфигу- рироваться как последовательно-параллельные преобразователи ISERDES и OSER- DES соответственно. 9.6.2. Архитектура буферов ввода-вывода На рис. 9.4 показана архитектура буфера ввода-вывода и его подсоединение к контактной площадке для банка HP в случае ассиметричного вывода, а на рис. 9.5 — в случае дифференциального (обычного) вывода. В архитектуре ассиметричного буфера (рис. 9.4) отсутствуют соединения для создания дифференциальных выходных сигналов DIFFO-OUT и CLOUT. Поэтому ас- симетричные буферы не могут использоваться для реализации дифференциальных стандартов. В то время как обычные (не ассиметричные или дифференциальные) т о DCITERMDISABLE DIFFIJN IBUFDISABLE Рис. 9.4. Структура ассиметричного буфера ввода-вывода банка HP
Система ввода-вывода SelectIO 141 DCITERMDISABLE IBUFDISABLE Рис. 9.5. Структура обычного (дифференциального) буфера ввода-вывода ЮВ банка HP буферы ввода-вывода могут использоваться для реализации как ассиметричных, так и дифференциальных стандартов. Каждая архитектура буферов ввода-вывода (ассиметричных и обычных) вклю- чает входной и выходной буферы, соединенные с контактной площадкой внешнего вывода PAD, пути входных и выходных данных, а также сигналы управления буфе- рами. Сигнал IBUFDISABLE позволяет запрещать входной буфер для уменьшения потребляемой мощности в момент времени, когда буфер не используется. Сигнал DCITERMDISABLE может использоваться для запрещения дополнительного свойст- ва DCI расщепления нагрузки. Архитектуры буферов ввода-вы вода для банков HR отличается только тем, что в них отсутствует управляющий сигнал DCITERMDISABLE, поскольку банки HR не обладают свойством цифрового управления импедансом DCL При реализации примитивов для дифференциальных стандартов архитектуры бу- феров ввода-вывода объединяются в пары. 9.6.3. Архитектура блока ILOGIC Блок входной логики ILOGIC содержит синхронные элементы памяти для захва- та данных, которые приходят в FPGA через буфер IOB. Блоки ILOGICE2 (рис. 9.6) используются в банках HP, а блоки ILOGICE3 (рис. 9.7) — в банках HR. Эти бло- ки функционируют идентично, за исключением следующего: блок ILOGICE3 имеет элемент нулевой задержки удержания (zero hold delay — ZHOLD), а блок ILOGICE2 не имеет элемента ZHOLD. Мультиплексоры блока ILOGIC позволяют: • инвертировать сигналы: D, DDLY, CLK, CLKB; • направлять каждый из сигналов D, DDLY и UFB либо на комбинационный выход О, либо на вход триггера D. Элемент задержки ZHOLD на D-входе запоминающего элемента устраняет любое время удержания от контакта к контакту. Задержка ZHOLD автоматически согласует- ся с внутренней задержкой распространения синхросигнала и гарантирует, что время задержки от контакта к контакту равно нулю. Элементы ILOGICE2 и ILOGICE3 не являются примитивами в том смысле, что они не могут быть инстанцированы. Они содержат создаваемые пользователем эле-
142 Раздел 9 Рис. 9.6. Архитектура блока ILOGICE2 менты, такие как входной триггер (IFD) или входной элемент DDR (IDDR) после размещения и трассировки. Элемент ILOGIC может конфигурироваться для реализации: • переключающегося по фронту D-триггера; • входного элемента IDDR (в режимах OPPOSITE-EDGE, SAME-EDGE или SAME- EDGE-PIPELINED); • чувствительной к уровню сигнала защелки; • асинхронного (комбинационного) входа. Регистры блоков ILOGIC имеют общий сигнал разрешения синхронизации СЕ1 с активным высоким уровнем. Если сигнал СЕ1 не используется, то считается, что син- хронизация разрешена. Регистры блоков ILOGIC также имеют сигнал SR синхронной или асинхронной установки или сброса. Вход установки/сброса SR заставляет запо- минающий элемент перейти в определенное состояние, которое указывается атрибу- том SRVAL. Условие сброса имеет преимущество над условием установки. Значение атрибута SRVAL может индивидуально задаваться для каждого запоминающего эле- мента в блоке ILOGIC, но выбор типа установки (синхронная или асинхронная) не может выполняться индивидуально. Комбинационный вход используется для создания прямого соединения от входно-
Система ввода-вывода SelectIO 143 Рис. 9.7. Архитектура блока ILOGICE3 го драйвера к внутренней логике FPGA. Этот путь используется программным обес- печением автоматически, когда: • имеется прямое (не регистровое) соединение от входных данных к логическим ресурсам FPGA; • директива программного обеспечения «pack I/O register/latches into lOBs» уста- новлена в OFF. 9.6.4. Архитектура блока О LOGIC Блок выходной логики ввода-вывода OLOGIC является специализированным бло- ком синхронизации, посылающим данные на выход FPGA через блок ЮВ. Ресурсы OLOGIC могут быть двух типов: OLOGICE2 (для банков HP) и OLOGICE3 (для бан- ков HR). Оба этих типа функционируют одинаково. Блоки OLOGICE2 и OLOGICE3 не
144 Раздел 9 являются примитивами, т. е. они не могут быть инстанцированы (созданы их экзем- пляры). Однако после размещения и трассировки они содержат инстанцированные пользователем выходной триггер (OFD) или выходной элемент DDR (ODDR). Блок OLOGIC (рис. 9.8) содержит два главных блока: один для конфигурации пути выходных данных, а другой для конфигурации пути сигнала управления 3-м со- стоянием. Эти два блока имеют общий синхросигнал CLK, но разные сигналы разре- шения синхронизации: ОСЕ и ТСЕ. Оба блока имеют асинхронную или синхронную установку или сброс (сигнал SR) управляемую атрибутом SRVAL. Путь выходных данных и путь сигнала управления 3-м состоянием могут незави- симо конфигурироваться для реализации: • переключающегося по фронту D-триггера; • выходного элемента ODDR (в режимах OPPOSITE-EDGE или SAME-EDGE); • чувствительной к уровню сигнала защелки; • асинхронного (комбинационного) выхода. Комбинационные выходные пути создают прямое соединение от логики FPGA к выходному драйверу или управлению выходным драйвером. Эти пути программным обеспечением используются автоматически, когда: • имеется прямое (не регистровое) соединение от логических ресурсов к выходным данным или управлению 3-м состоянием; • директива программного обеспечения «pack I/O register/latches into lOBs» уста- новлена в OFF. 9.7. Цифровое управление импедансом (DCI) С увеличением размеров и быстродействия FPGA разработка и изготовление пе- чатных плат становится все более трудным процессом. С приближением к граничным условиям быстродействия проблемой становится поддержка целостности сигналов (signal integrity). Во избежание отражений (reflections) или звона (ringing) сигналов печатная плата должна иметь согласованные значения сопротивления нагрузки. Для согласования импедансов приемников и передатчиков (драйверов) сигналов с импедансом трассировки традиционно в линии трасс добавляются резисторы. Од-
Система ввода-вывода SelectIO 145 нако, с увеличением количества выводов устройства, добавление резисторов близко к выводам устройства увеличивает площадь платы и количество компонентов, а в некоторых случаях может быть физически невозможно. Для решения этих проблем и достижения лучшей целостности сигналов фирма Xilinx разработала технологию циф- рового управления импедансом (digitally controlled impedance — DCI). Отметим, что цифровое управление импедансом возможно только в банках ввода-вывода типа HP. В зависимости от стандартов ввода-вы вода DCI может управлять либо выход- ным импедансом драйвера, либо добавлять параллельное оконечное сопротивление (концевик) в драйвер и/или приемник с целью точного соответствия характеристик импеданса линии передачи. DCI активно корректирует эти импедансы внутри блока ввода-вывода для калибровки к значению внешних резисторов, размещенных на вы- водах VRN и VRP. Это компенсирует изменения в импедансе ввода-вывода, а также позволяет постоянно корректировать импедансы для компенсации изменений колеба- ний температуры и напряжения питания. В стандартах ввода-вывода с управляющими импедансом драйверами DCI управ- ляет импедансом драйвера либо для согласования двух опорных резисторов, либо (в некоторых стандартах) для согласования половины значения опорных резисторов. В стандартах ввода-вы вода с управляемой параллельной оконечной нагрузкой DCI обеспечивает параллельную оконечную нагрузку как для передатчиков, так и для приемников. Это избавляет от необходимости установки нагрузочных резисторов на плате, кроме того, упрощается трассировка платы, уменьшается количество компо- нент и улучшается целостность сигнала благодаря устранению тупикового отражения. Тупиковое отражение (stub reflection) происходит тогда, когда нагрузочные резисторы расположены слишком далеко от конца линии передачи. С использованием DCI на- грузочные резисторы максимально приближены к выходному драйверу или входному буферу, устраняя таким образом тупиковые отражения. 9.7.1. Реализация DCI в FPGA 7-й серии DCI в каждом банке ввода-вывода использует два многоцелевых опорных (эта- лонных) вывода для управления импедансом драйверов или значением параллельной нагрузки для всех двунаправленных выводов этого банка. Опорный вывод N (VRN) должен подтягиваться к напряжению Vcco с помощью опорного резистора, а опор- ный вывод Р (VRP) должен подтягиваться к земле с помощью другого опорного ре- зистора. Значение каждого опорного резистора должно быть равно либо волновому импедансу трасс печатной платы, либо удвоенному этому значению. Для того чтобы реализовать DCI в проекте, необходимо: • назначить один из DCI-стандартов ввода-вывода банку ввода-вывода типа HP (см. табл. 9.7 и 9.8); • соединить многофункциональный вывод VRN с уточняющим резистором, подсо- единенным к цепи питания Vcco данного банка; • соединить многофункциональный вывод VRP с уточняющим резистором, подсо- единенным к земле. В каждом банке используется только одно множество резисторов VRN и VRP, поэтому все DCI-стандарты в пределах каждого банка имеют возможность совмест- но использовать одинаковые внешние эталонные значения. Если несколько банков ввода-вывода в данном столбце банков ввода-вывода используют DCI и эти банки ис- пользуют одинаковые значения резисторов VRN/VRP, то внутренние узлы VRN и VRP могут каскадироваться. Эта опция называется каскадированием DCI. Если стандарты ввода-вывода DCI не используются в банке, выводы VRN и VRP доступны как обычные
146 Раздел 9 выводы. Детальное описание выводов VRN и VRP для устройств FPGA 7-й серии при- ведено в документе UG475 7 Series FPGAs Packaging and Pinout. Product Specification. DCI корректирует импеданс ввода-вывода путем выборочного переключения тран- зисторов в схеме ввода-вывода. Импеданс корректируется для соответствия внешним опорным резисторам. Корректировка (калибровка) запускается во время включения устройства. По умолчанию вывод DONE не переходит в высокое состояние до тех пор, пока не завершится первая часть процесса корректировки импеданса. Калибровка DCI может сбрасываться путем инстанцирования (создания экзем- пляра) примитива DCIRESET. Переключение входа RST в примитиве DCIRESET во время функционирования устройства сбрасывает состояние конечного автомата DCI и перезапускает калибровочный процесс. Все выводы, использующие DCI, будут недо- ступны до тех пор, пока установлен выход LOCKED примитива DCIRESET. Эта функ- ция является полезной в приложениях, где значительны изменения температуры или напряжения питания при включении питания устройства и при нормальном функци- онировании устройства. В управляемых импедансом выходных драйверах импеданс может корректиро- ваться либо для соответствия опорным резисторам, либо половине значения опор- ных резисторов. Для нагрузки на микросхеме нагрузка всегда корректируется для соответствия опорным резисторам. В стандартах ввода-вывода, которые поддерживают DCI-управляемый импедан- сом драйвер, DCI может конфигурировать выходы драйверов следующих типов: • управляемый драйвер импеданса; • управляемый драйвер импеданса с половиной импеданса. Для стандартов ввода-вывода, которые поддерживают параллельную нагрузку, DCI создает эквивалент Thevenin или сопротивление расщепленной нагрузки для по- ловины уровня напряжения Vcco/2. Соглашение о наименовании стандартов ввода-вывода добавляет: • DCI в название стандарта ввода-вывода, если резисторы расщепления нагрузки могут быть представлены в схеме ввода-вывода; • T.DCI в название стандарта ввода-вывода, если резисторы расщепления нагрузки присутствуют только тогда, когда выходной буфер находится в 3-м состоянии. Для управления функционированием DCI служат опции Match-cycle и DCIUpdate- Mode, а также примитив DCIRESET (детали см. в документах UG470 7 Series FPGAs Configuration. User Guide, UG628 Command Line Tools. User Guide, UG768 Xilinx 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide for HDL Designs и UG471 7 Series FPGAs SelectIO Resources. User Guide). 9.7.2. Каскадирование DCI FPGA 7-й серии имеют опцию, которая позволяет банкам ввода-вывода HP, ис- пользующих стандарты ввода-вывода DCI, получать значение импеданса DCI от дру- гих банков HP. Управление импедансом DCI в каскадируемых банках приходит от главного банка ввода-вывода. Для каскадирования DCI один (главный) банк ввода-вывода должен иметь свои выводы VRN/VRP подсоединенными к внешним опорным резисторам. Другие банки ввода-вывода в том же самом столбце банков ввода-вывода (подчиненные банки) могут использовать стандарты DCI с тем же самым импедансом как главной банк, не подсоединяя выводы VRN/VRP подчиненных банков к внешним резисторам (рис. 9.9) (детали см. в документе UG471 7 Series FPGAs SelectIO Resources. User Guide). На рис. 9.9 показана каскадная поддержка нескольких банков. Здесь банк В яв- ляется главным банком, а банки А и С рассматриваются как подчиненные банки.
Система ввода-вывода SelectIO 147 То Banks Above (When Cascaded) (When Cascaded) Рис. 9.9. Каскадная поддержка DCI нескольких банков ввода-вывода 9.7.3. Драйвер управляемого импеданса Драйвер управляемого импеданса показан на рис. Чтобы оптимизировать целостность сигнала в вы- сокоскоростных или высокопроизводительных прило- жениях, требуются дополнительные меры для согла- сования выходных импедансов драйверов и импедансов линий передачи и приемников. Оптимально драйверы должны иметь выходной импеданс, согласующийся с волновым импедансом управляемой линии, в против- ном случае могут случиться отражения из-за разры- вов сигнала. Чтобы решить эту проблему, разработчики иногда него источника последовательные нагрузочные резисторы, расположенные близко к выводам драйверов высокой мощности и низкого импеданса. Значения сопротивле- ний выбираются так, чтобы сумма импеданса выхода драйвера плюс сопротивление источника R приблизительно равнялась импедансу линии передачи Zq. DCI может обеспечить выходы драйверов управляемым импедансом для уменьше- ния отражений без использования внешних резисторов. Импеданс устанавливается с помощью внешних опорных резисторов с сопротивлением, равным импедансу трассы. 9.10. Рис. 9.10. Драйвер управляемого импеданса используют в качестве внеш-
148 Раздел 9 Драйвером управляемого импеданса поддерживаются следующие стандарты: LVDCL15, LVDCL18, HSLVDCL15, HSLVDCL18, HSUL_12_DCI и DIFF_HSUL_12_DCL 9.7.4. Драйвер управляемого импеданса с половинным импедансом Рис. 9.11. Драйвер управляемого импеданса с половинным импедансом Драйвер управляемого импеданса с половинным импедансом (рис. 9.11) поддерживается стандарта- ми LVDCLDV2-15 и LVDCLDV2.18. Это свойство позволяет уменьшить энергопотребление. Для того чтобы соответствовать импедансу Zo, сопротивление резистора R должно быть равным 2Z0. 9.7.5. Расщепление нагрузки DCI Некоторые стандарты ввода-вывода (HSTL и SSTL) требуют входной нагрузочный регистр, подсоединенный к напряжению Vtt. равному Vcco/2 (рис. 9.12). Схемы разделяемой нагрузки DCI создают эквивалентную схему Thevenin, ис- пользуя два резистора с двойной величиной сопротивления (2R): один подсоединяет- ся к Vcco. з другой — к земле (рис. 9.13). Стандарты ввода-вывода, поддерживающие разделяемую нагрузку DCI, приве- дены в табл. 9.7. Рис. 9.12. Входная нагрузка к Vcco/2 без DCI Рис. 9.13. Входная нагрузка к Vcco/2. использу- ющая расщепление нагрузки DCI Таблица 9.7 Стандарты ввода-вывода, поддерживающие разделяемую нагрузку DCI HSTL DIFF.HSTL SSTL DIFFJSSTL HSTL-LDCI HSTLJ-DCL18 HSTLJLDCI HSTLJLDCL18 HSTLJLT.DCI HSTLJLT.DCL18 DIFF_HSTLJ_DCI DIFF_HSTLJ_DCL18 DIFF_HSTL_ILDCI DIFF-HSTLJLDCL18 DIFF_HSTLJI_T_DCI DIFF_HSTLJI_T_DCL18 SSTL18J-DCI SSTL18JLDCI SSTL18_ILT_DCI SSTL15-DCI SSTL15_T_DCI SSTL135-DCI SSTL135_T_DCI SSTL12-DCI SSTL12_T_DCI DIFRSSTL18J-DCI DIFF_SSTL18_II_DCI DIFF_SSTL18JLT_DCI DIFF_SSTL15_DCI DIFF_SSTL15_T_DCI DIFF_SSTL135_DCI DIFF_SSTL135_T_DCI DIFF_SSTL12_DCI DIFRSSTL12_T_DCI
Система ввода-вывода SelectIO 149 7 Serie5FPCiAHP Bank pci i Рис. 9.14. Драйвер с нагруз- 9.7.6. DCI и третье состояние (T.DCI) Версии драйверов класса I (class-1) стандартов SSTL и HSTL поддерживаются только для однонаправленной сигнализации. Они могут назначаться либо к входам, либо к выходам (но не к двунаправленным выводам). Версии DCI стандартов SSTL и HSTL класса I имеют внутренние расщепляющие нагрузочные регистры, представ- ленные на входах. Версии драйверов класса II (class-ll) стандартов SSTL и HSTL поддерживаются для двунаправленной и однонаправленной сигнализации. В проекте они могут назначаться входам, выходам или двунаправ- ленным выводам. Версии DCI стандартов SSTL и HSTL класса II позволяют иметь внутренние расщеп- ляющие нагрузочные резисторы (рис. 9.14). Когда расщепляющая нагрузка присутствует при управлении, DCI управляет только импедансом на- грузки, но не драйвером. Однако многие приложения могут извлечь выгоду от отключения расщепляющих нагрузочных резисторов. Стандарты T.DCI могут назначаться только дву- направленным выводам. Для однонаправленных входных выводов может назначаться версия DCI стандарта. Для однонаправленных выходных выводов может назначаться либо версия с DCI, либо версия без DCI. В табл. 9.8 представлены стандарты, в которых всегда присутствуют резисторы DCI расщепления нагрузки. Стандарты DCI с третьим состоянием (TJDCI) были разработаны, чтобы удов- летворить следующим требованиям: выходные нагрузочные резисторы расщепления выключаются, когда вывод функционирует в качестве выхода, и включаются, когда вывод функционирует в качестве входа, находится в 3-м состоянии или в состоя- нии ожидания. кой к Vcco/2, использую- щий расщепляющую нагрузку Таблица 9.8 Стандарты ввода-вывода с всегда присутствующим расщеплением нагрузки DCI HSTL DIFF.HSTL SSTL DIFF_SSTL HSTL.I.DCI1 HSTL.LDCI.181 HSTL.ILDCI HSTLJLDCI.18 DIFF.HSTLJ.DCI1 DIFF_HSTLJ.DCI.181 DIFF_HSTL.II.DCI DIFF_HSTL.II_DCI.18 SSTL18.I.DCI1 SSTL18JI.DCI SSTL15.DCI1 SSTL135.DCI1 SSTL12.DCI1 DIFF.SSTL18J-DCI1 DIFF.SSTL18JLDCI DIFF.SSTL15.DCI1 DIFF.SSTL135.DCI1 DIFF_SSTL12.DC!1 1. Версии стандартов HSTL и SSTL не класса II имеют только резисторы DCI расщепления нагрузки, представленные на входах, но не на выходах. Для этих стандартов запрещены назначения двунаправ- ленных выводов. Таблица 9.9 Стандарты ввода-вывода с расщепляемой нагрузкой DCI только для 3-го состояния HSTL & DIFF.HSTL SSTL DIFF.SSTL HSTLJLT-DCI SSTL18JLT-DCI DIFF_SSTL18JLT_DCI HSTLJLT-DCL18 SSTL15_T_DCI DIFF_SSTL15_T_DCI DIFF.HSTL_ILT_DCI SSTL135_T_DCI DIFF_SSTL135_T_DCI DIFF_HSTLJLT_DCL18 SSTL12_T_DCI DIFF_SSTL12_T_DCI Стандарты T_DCI могут назначаться только двунаправленным выводам.
150 Раздел 9 Стандарты ввода-вывода с расщепляющей нагрузкой T.DCI, которая расщеплена только в 3-м состоянии, приведены в табл. 9.9. 9.7.7. DCI в стандартах ввода-вывода, поддерживаемых FPGA 7-й серии В табл. 9.10 приведены стандарты, в которых FPGA 7-й серии поддерживают цифровое управление импедансом. Таблица 9.10 Стандарты DCI, поддерживаемые FPGA 7-й серии LVDCI HSTL DIFF.HSTL SSTL DIFF-SSTL LVDCL18 LVDCL15 LVDCLDV2-18 LVDCLDV2JL5 HSLVDCL18 HSLVDCL15 HSTLJ.DCI HSTLJ-DCL18 HSTLJLDCI HSTLJLDCL18 HSTLJLT-DCI HSTLJLTJDCL18 DIFF_HSTL_LDCI DIFF_HSTLJ_DCL18 DIFF_HSTL_ILDCI DIFF_HSTL_ILDCL18 DIFF_HSTL_ILT_DCI DIFF_HSTL_ILT_DCL18 SSTL18J-DCI SSTL18JLDCI SSTL18JLT-DCI SSTL15.DCI SSTL15_T_DCI SSTL135JDCI SSTL135_T_DCI SSTL12JDCI SSTL12_T_DCI HSUL12JDCI DIFF_SSTL18J_DCI DIFF_SSTL18JI_DCI DIFF_SSTL18_ILT_DCI DIFF_SSTL15_DCI DIFF_SSTL15_T_DCI DIFF_SSTL135_DCI DIFF_SSTL135_T_DCI DIFF_SSTL12_DCI DIFF_SSTL12_T_DCI DIFF_HSUL12_DCI 9.7.8. Некалибрируемая расщепляющая нагрузка в банках ввода-вывода HR (ограничение IN.TERM) В банках ввода-вывода типа HR имеется опция расщепляющая нагрузка на мик- росхеме (on-chip split-termination), очень похожая на расщепляющую нагрузку 3-го со- стояния для банков HP. Эта опция банков HR создает эквивалентную схему Thevenin, используя два внутренних резистора с удвоенным сопротивлением 2R. Одна резис- торная нагрузка подсоединяется к Vcco. а другая — к земле. Нагрузка подключается постоянно на входах и двунаправленных выводах, когда выходной буфер находится в 3-м состоянии. Однако важным отличием между этой опцией некалибрируемой расщепляющей нагрузкой и расщепляющей нагрузкой 3-го состояния DCI является то, что вместо калибровки внешних опорных резисторов на выходах VRN и VRP, когда используется DCI, это свойство устанавливает внутренние резисторы, которые не имеют калиб- ровочного режима для компенсации колебаний температуры, напряжения или про- изводительности. Эта опция имеет целевое эквивалентное сопротивление Thevenin, равное 40, 50 и 60 Ом. Другое отличие этой опции от DCI: каким образом некалибрируемая нагрузка вызывается в проекте. В то время как опция DCI вызывается назначением опции Т-DCI стандартам ввода-вывода в банках HP, опция некалибрируемой расщепляющей нагрузки вызывается назначением ограничения IN.TERM сети выводов в банках HR. Это может быть сделано несколькими способами: включая опцию в код проекта на языке HDL, включая опцию в файлы UCF, NCF или XCF, а также с помощью про- граммы Plan Ahead (детали см. в документе UG625 Constraints Guide). В банках HR ограничение IN.TERM может быть установлено в значение NONE (по умолчанию), UNTUNED.SPLIT.40, UNTUNED.SPLIT.50 или UNTUNED.SPLIT. 60. Пример синтаксиса для файла UCF: NET «pad.net.name» IN.TERM = «UNTUNED.SPLIT.50»; В табл. 9.11 приведены стандарты ввода-вывода, которые поддерживают ограни- чение IN.TERM в банках HR (в банках HP ограничение IN.TERM не поддерживается).
Система ввода-вывода SelectIO 151 Таблица 9.11 Стандарты, поддерживающие ограничение IN.TERM HSTL & SSTL DIFF-HSTL SSTL SSTL DIFF_SSTL HSTLJ HSTLJI HSTLJ-18 HSTLJL18 SSTL18J SSTL18JI DIFF-HSTLJ DIFF-HSTLJI DIFF_HSTLJ_18 DIFF-HSTLJL18 DIFF_SSTL18J DIFF-SSTL18JI SSTL15.R SSTL15 SSTL135.R SSTL135 DIFF_SSTL15_R DIFF.SSTL15 DIFF_SSTL135_R DIFF.SSTL135 Библиотека фирмы Xilinx включает широкий набор примитивов ввода-вывода, поддерживающих различные стандарты ввода-вывода. Описание примитивов ввода- вывода приведено в приложении А. Доступ к свойствам ресурсов ввода-вывода в FPGA 7-й серии осуществляется с помощью механизма атрибутов. Атрибуты могут определяться в языках HDL (Verilog или VHDL) при создании экземпляра примитива ввода-вывода. Кроме атрибутов, блоки ввода-вывода могут также управляться с помощью ограничений, которые опре- деляются в файле ограничений UCF. Описание атрибутов и ограничений примитивов ввода-вывода также приведено в приложении А. 9.8. Применение ресурсов системы ввода-вывода 9.8.1. Правила совмещения стандартов в одном банке ввода-вывода Необходимо придерживаться следующих правил при объединении (совмещении) различных входных, выходных и двунаправленных стандартов в одном и том же банке: • в одном банке ввода-вывода можно совмещать выходные стандарты только с одним и тем же выходным напряжением выходов Vcco; • в одном банке ввода-вывода можно совмещать входные стандарты только с оди- наковыми напряжениями Vcco и Vref; • в одном банке ввода-вывода можно совмещать входные и выходные стандарты с одинаковым напряжением Vcco; • двунаправленные стандарты можно совмещать с входными и выходными стан- дартами, если они удовлетворяют первым трем правилам; • в стандартах с DCI только одно значение сопротивления нагрузки (управляемое импедансом выходного драйвера или расщепляемой нагрузкой) может использо- ваться в одном НР-банке. Значения напряжений Vcco и Vref для каждого из поддерживаемых стандартов ввода-вывода приведены в табл. 1-55 документа UG471. Значения атрибутов DRIVE, SLEW, доступности двунаправленных буферов, ти- пов нагрузки DCI для всех поддерживаемых стандартов ввода-вывода приведены в табл. 1-56 документа UG471. 9.8.2. Одновременно переключающиеся выходы (SSO) Из-за явления индуктивности каждый корпус (часть корпуса) поддерживает толь- ко ограниченное количество одновременно переключающихся выходов (simultaneous switching outputs — SSOs). Программа прогнозирования SSN в пакете Plan Ahead обеспечивает анализ уровня шума на каждом выходе проекта на основе информации о контакте (жертве), а также информации о других контактах (агрессорах). Програм- ма SSN принимает во внимание расположение контактов, стандарты ввода-вывода, скорости нарастания сигналов, используемые нагрузки и предоставляет значение за- паса помехоустойчивости (noise margin) для каждого вывода на основе его характе- ристик. Запас помехоустойчивости не включает характеристики системного уровня,
152 Раздел 9 такие как перекрестные помехи трассировки платы или отражение из-за разрыва им- педанса платы. Дребезг (bounce) земли или питания происходит тогда, когда большое количест- во вводов одновременно переключаются в том же направлении. Все транзисторы вы- ходных драйверов проводят ток к общей цепи питания. В результате кумулятивный ток переходного процесса вызывает разность потенциалов по индуктивности, кото- рая существует между внутренними и внешними уровнями земли или внутренними и внешними уровнями Vcco- Индуктивность связывается с соединительными про- водами, выводной рамкой корпуса, трассировкой кристалла, трассировкой корпуса и индуктивностью шаровых контактов. Любое вызванное SSO напряжение воздейст- вует на допустимые пределы внутреннего шума переключения и, в конечном счете, на качество сигнала. Результаты работы программы SSN предполагают, что FPGA распаивается на пе- чатной плате и плата использует методы надежного проектирования (sound design). Значение допустимых пределов шума не применяется к FPGA, смонтированных в гнез- дах (сонетах — socket) из-за дополнительной индуктивности шаров BGA, вводимой сонетом. 9.8.3. Планирование выводов для уменьшения влияния SSO Следует отделять мощные и/или одновременно переключающиеся выводы (SSO- выводы) от чувствительных входов и выходов, особенно асинхронных входов. Мощ- ные выводы имеются в стандартах HSTL и SSTL класса II, вариантах PCI, LVCMOS или LVTTL с мощностью выше 8 мА. Чувствительные входы и выходы могут иметь малые пределы шума и являются высокоскоростными сигналами или сигналами, где амплитуда уменьшается параллельно нагрузке приемника. Поскольку локализованный шум SSO в FPGA 7-й серии основывается на близости сигналов друг к другу, важно попытаться разделить сигналы на основе позиции ша- ров припоя корпуса. Дальнейшее снижение шума, вызванного SSO, возможно путем равномерного распределения выводов вместо концентрации в одном месте. В пре- делах одного банка выводы SSO должны быть равномерно распределены по всему банку. Если можно использовать многократные банки, то выводы SSO должны быть равномерно распределены по нескольким банкам. Программа Plan Ahead в пакете ISE может помочь в планировании расположения чувствительных контактов и контактов SSO (детали см. в документе UG471 7 Series FPGAs SelectIO Resources). 9.8.4. Рекомендации для корректного использования DCI в FPGA 7-й серии Ниже приводятся некоторые рекомендации, позволяющие упростить практичес- кое использование цифрового управления импедансом DCL Выводы Vcco должны соединяться с надлежащим напряжением Vcco. основан- ном на атрибутах IOSTANDARD в этом же банке ввода-вывода. Должны использоваться корректные (правильные) буферы ввода-вывода DCI ли- бо с помощью атрибутов IOSTANDARD, либо с помощью инстанций (создания эк- земпляров) в коде языка HDL. Стандарты DCI требуют подсоединения внешних опорных резисторов для много- целевых выводов VRN и VRP. Эти выводы не могут использоваться как общецелевые двунаправленные выводы в банке ввода-вывода, использующем DCI, или в главном банке ввода-вывода, когда каскадируется DCL Вывод VRN должен подтягиваться к напряжению Vcco с помощью своего опорного резистора, аналогично вывод VRP
Система ввода-вывода SelectIO 153 Таблица 9.12 Стандарты ввода-вывода с входами DCI, которые не требуют опорных резисторов LVDCI LVDCLDV2 HSLVDCI HSUL LVDCL18 LVDCLDV2-18 HSLVDCL18 HSUL.12-DCI LVDCL15 LVDCLDV2.15 HSLVDCL15 DCI_HSUL_12_DCI должен подтягиваться к земле с помощью своего опорного резистора. Исключе- ние составляет случай, когда DCI каскадируется в подчиненные банки ввода-вывода. Стандарты ввода-вывода, DCI-входы которых не требуют опорных резисторов, пред- ставлены в табл. 9.12. Значение внешних опорных резисторов должно выбираться так, чтобы дать тре- буемый импеданс выходному драйверу или импеданс расщепляемой нагрузке. На- пример, когда используется стандарт LVDCL15 для достижения импеданса выход- ного драйвера 50 Ом, значение внешних опорных резисторов, используемых на вы- водах VRN и VRP, должно быть 50 Ом (каждый). Когда используется стандарт SSTL15_T_DCI для достижения 50 Ом эквивалентной нагрузки Thevenin (R) к Vcco/2, каждый внешний опорный резистор должен иметь значение 100 Ом (2R). Правила DCI для банков ввода-вывода: • напряжение Vref должно быть совместимым для всех входов в одном и том же банке ввода-вывода, когда используется каскадирование DCI; • напряжение Vcco должно быть совместимым для всех входов и выходов в одном и том же банке ввода-вывода; • разделяемая нагрузка, управляемая драйвером импеданса и нагрузка, управля- емая драйвером импеданса с половинным импедансом, могут сосуществовать в одном и том же банке. Примеры практического использования DCI можно найти в документе UG471 7 Series FPGAs SelectIO Resources. 9.8.5. Руководство для выводов VRN и VRP при перемещении проектов с FPGA предыдущих семейств на FPGA 7-й серии Предыдущие семейства FPGA фирмы Xilinx, обладающие свойством DCI, исполь- зовали схему для калибровки импеданса разделяемой нагрузки, немного отличающу- юся от внешних опорных резисторов, размещаемых на выводах VRN и VRP. Значе- ния резисторов соответствовали целевому Thevenin-эквивалентному импедансу R. DCI семейства Virtex-б калибрует каждый участок схемы расщепленной нагрузки к удво- енным значениям внешних резисторов. Например, в устройствах Virtex-б с целью параллельной нагрузки в 50 Ом к VCC/2 требуются внешние резисторы на 50 Ом для выходов VRN и VRP. В FPGA 7-й серии значения резисторов соответствуют каждому участку схемы расщепленной нагрузки 2R. DCI FPGA 7-й серии калибрует каждый участок схемы расщепленной нагрузки, чтобы быть непосредственно равным значениям внешних ре- зисторов. Например, в FPGA 7-й серии с целью параллельной нагрузки в 50 Ом к Vcco/2 требуются внешние резисторы на 100 ом для выходов VRN и VRP. Это особен- но важно для рассмотрения, когда выбираются значения VRN и VRP, которые будут использоваться в том же самом банке ввода-вывода (или в нескольких каскадируемых банках DCI) как для стандартов DCI управляющих импедансом, так и для стандартов DCI с расщепляемой нагрузкой. Например, при переносе проекта с устройств Virtex- 6 на FPGA 7-й серии для стандарта HSTLJ_DCI_18 необходимо величину внешних резисторов изменить с 50 Ом на 100 Ом.
154 Раздел 9 9.8.6. Рекомендации по использованию каскадирования DCI В заключение приведем некоторые рекомендации по использованию каскадиро- вания DCI: • каскадирование DCI возможно только через столбец банков ввода-вывода ти- па HP; • главный и подчиненный банки должны находиться в одном и том же столбце банков ввода-вывода HP и могут охватывать весь столбец; • каскадирование не может пересекать границы вставок больших устройств се- мейства Virtex-7, соответствующих технологии SSI (детали смотри в документе UG475 7 Series FPGAs Packaging and Pinout. Product Specification); • главный и подчиненный банки должны иметь одинаковое напряжение Vcco и Vref (если используются); • банки ввода-вы вода в одном и том же столбце банков HP, которые не используют DCI (проходящий через банк), не должны согласовываться с правилами напря- жений Vcco и Vref Для объединения установок DCI; • правила банковской совместимости DCI должны удовлетворяться через все глав- ные и подчиненные банки (например, только один стандарт ввода-вывода DCI, использующий единственный тип нагрузки, разрешается через все главные и подчиненные банки); • для того чтобы расположить банки ввода-вы вода, которые находятся в одном и том же столбце, обратитесь к рисункам «Die Level Bank Numbering Overview» документа UG475 7 Series FPGAs Packaging and Pinout. Product Specification. 9.9. Выводы Система ввода-вывода FPGA 7-й серии носит название система SelectIO. Ресурсы системы SelectIO делятся на три части: • ресурсы ввода-вывода общего назначения; • логические ресурсы ввода-вывода; • расширенные логические ресурсы ввода-вывода. Ресурсы ввода-вывода общего назначения реализуются с помощью широкого на- бора примитивов, которые поддерживают большинство ассиметричных и дифферен- циальных стандартов. Важную роль в ресурсах ввода-вывода общего назначения иг- рает цифровое управление импедансом DCL Логические ресурсы представлены модулями ILOGIC и OLOGIC, а также моду- лями IDELAY и ODELAY. Модули ILOGIC и OLOGIC обеспечивают передачу дан- ных с удвоенной скоростью DDR по отношению к синхросигналу. Модули IDELAY и ODELAY обеспечивают введение программируемой задержки в пути сигналов дан- ных и синхронизации. Расширенные логические ресурсы представлены модулями ISERDES и OSERDES, которые представляют собой соответственно последовательно-параллельный и парал- лельно-последовательный преобразователи. Модули ISERDES и OSERDES поддер- живают широкий набор сетевых интерфейсов. Ресурсы системы ввода-вывода SelectIO представлены в виде банков. Каждый банк ввода-вывода содержит 50 выводов. Число банков зависит от размера устройст- ва и корпуса устройства. В архитектуре FPGA 7-й серии банки организуются в виде столбцов, которые могут располагаться как по краям кристалла, так и внутри него. FPGA 7-й серии предлагают банки ввода-вывода двух типов: высокопроизводи- тельные HP и широкого диапазона HR. Банки HP разработаны с целью удовлетво-
Система ввода-вывода SelectIO 155 рения требований производительности быстродействующей памяти и других интер- фейсов между микросхемами с напряжением до 1,8 В. Банки HR разработаны для поддержки широкого диапазона стандартов ввода-вывода с напряжением до 3,3 В. На основании наличия ресурсов ввода-вывода, которое выражается в типах име- ющихся банков ввода-вывода, можно сделать следующие выводы: семейство Artix-7 предназначено для использования в приложениях общего назначения; Kintex-7 — как в приложениях общего назначения, так и в системах высокопроизводительной передачи данных; Virtex-7 — в системах высокопроизводительной передачи данных. Основные свойства ресурсов ввода-вывода общего назначения: • программируемое управление выходной мощностью; • управление скоростью возрастания сигнала на выходах микросхемы; • цифровое управление импедансом DCI; • возможность генерирования внутреннего опорного напряжения. Банки HR не поддерживают свойство DCL Два вывода с каждого конца банка могут использоваться с ассиметричными (single-ended) стандартами ввода-вывода. Оставшиеся 48 выводов могут использо- ваться либо с ассиметричными, либо с дифференциальными стандартами. В послед- нем случае два вывода группируются вместе как пара Р/N. Ресурс каждого вывода содержит вход, выход и драйверы (буферы) с тремя состояниями. Выводы FPGA 7-й серии могут конфигурироваться для: • ассиметричных стандартов (LVCMOS, LVTTL, HSTL, PCI и SSTL); • дифференциальных стандартов (LVDS, Mini_LVDS, RSDS, PPDS, BLVDS, диф- ференциальные HSTL и SSTL). Различные элементы системы SelectIO могут требовать четыре типа напряжений: Vcco- Vref- Vccaux и Vccaux_io- Напряжение Vcco является первичным напряжением питания схемы ввода-выво- да. Все выводы Vcco для данного банка ввода-вывода должны подсоединяться к одному и тому же источнику напряжения питания, и все выводы данного банка долж- ны использовать один и тот же уровень Vcco- Напряжение Vcco- которое должно назначаться данному банку ввода-вывода, должно быть согласовано с требованиями стандартов ввода-вывода. Неправильно выбранное напряжение Vcco может привести к потере функциональности или повреждению устройства. Опорное напряжение Vref требуется для ассиметричных (single-ended) стандар- тов ввода-вывода с дифференциальным входным буфером. Для этого используются два многофункциональных вывода банка как входы напряжения Vref- Отметим, что FPGA 7-серии с помощью ограничения INTERNAL.VREF могут использовать внут- ренне опорное напряжение. Напряжение Vccaux используется для питания схем входных буферов для неко- торых стандартов ввода-вывода. Это включает все ассиметричные стандарты ввода- вывода ниже 1,8 В, а также некоторые стандарты 2,5 В (только для банков HR). До- полнительно цепь Vccaux обеспечивает питание к схемам дифференциальных вход- ных буферов. Вспомогательная цепь питания Vccaux_io представлена только в банках HP и обеспечивает питанием схемы ввода-вывода. Структура ввода-вывода включает контактные площадки выводов PAD, буфер ввода-вывода ЮВ, блоки входной IDELAY и выходной ODELAY задержки, а также входной ILOGIC и выходной OLOGIC логические блоки. В структурах ввода-вывода банков HP используются логические блоки ILOGICE2, а в банках HR — ILOGICE3. В структуре ввода-вывода банка HR отсутствует блок выходной задержки.
156 Раздел 9 Схемы логических блоков ILOGIC и OLOGIC могут конфигурироваться как после- довательно-параллельные преобразователи ISERDES и OSERDES соответственно. Архитектура буферов ввода-вывода ЮВ включает входной и выходной буферы, соединенные с контактной площадкой внешнего вывода PAD, пути входных и выход- ных данных, а также сигналы управления буферами. Сигнал IBUFDISABLE позволяет запрещать входной буфер для уменьшения потребляемой мощности в момент време- ни, когда буфер не используется. Сигнал DCITERMDISABLE может использоваться для запрещения дополнительного свойства DCI расщепления нагрузки. В архитектуре буферов ввода-вывода банков HR отсутствует управляющий сигнал DCITERMDISABLE, поскольку банки HR не обладают свойством цифрового управ- ления импедансом DCL Блок ILOGIC содержит синхронные элементы памяти для захвата входных дан- ных. Блоки ILOGICE2 используются в банках HP, а блоки ILOGICE3 — в банках HR. Блок ILOGICE2 не имеет элемента нулевой задержки удержания ZHOLD. Элемент задержки ZHOLD на D-входе запоминающего элемента устраняет любое время удержания от контакта к контакту. Задержка ZHOLD автоматически согласует- ся с внутренней задержкой распространения синхросигнала и гарантирует, что время задержки от контакта к контакту равно нулю. Элемент ILOGIC может конфигурироваться для реализации: • D-триггера; • входного элемента IDDR; • защелки; • асинхронного (комбинационного) входа. Блок OLOGIC содержит два главных блока: один для конфигурации пути выход- ных данных, а другой для конфигурации пути сигнала управления 3-м состоянием. Эти два блока имеют общий синхросигнал CLK, но разные сигналы разрешения син- хронизации: ОСЕ и ТСЕ. Оба блока имеют асинхронную или синхронную установку или сброс (сигнал SR) управляемую атрибутом SRVAL. Путь выходных данных и путь сигнала управления 3-м состоянием могут незави- симо конфигурироваться для реализации: • D-триггера; • выходного элемента ODDR; • защелки; • асинхронного (комбинационного) выхода. Цифровое управление импедансом DCI возможно только в банках ввода-вывода типа HP. DCI может управлять либо выходным импедансом драйвера, либо добавлять параллельное оконечное сопротивление (концевик) в драйвер и/или приемник с целью точного соответствия значения импеданса линии передачи. DCI активно корректиру- ет эти импедансы внутри блока ввода-вывода для калибровки к значению внешних резисторов на выводах VRN и VRP. Это компенсирует изменения в импедансе ввода- вывода, а также позволяет постоянно корректировать импедансы для компенсации изменений колебаний температуры и напряжения питания. В стандартах ввода-вывода с управляющими импедансом драйверами DCI управ- ляет импедансом драйвера либо для согласования двух опорных резисторов, либо для согласования половины значения опорных резисторов. В стандартах ввода-вывода с управляемой параллельной оконечной нагрузкой DCI обеспечивает параллельную оконечную нагрузку как для передатчиков, так и для при- емников. Это избавляет от необходимости установки нагрузочных резисторов на пла- те и улучшается целостность сигналов благодаря устранению тупикового отражения.
Система ввода-вывода SelectIO 157 DCI в каждом банке ввода-вывода использует два многоцелевых опорных вывода. Вывод N (VRN) должен подтягиваться к напряжению Vcco с помощью одного опор- ного резистора, а вывод Р (VRP) должен подтягиваться к земле с помощью другого опорного резистора. Значение каждого опорного резистора должно быть равно либо характеристике импеданса трасс печатной платы, либо удвоенному этому значению. Если несколько банков ввода-вывода в данном столбце банков ввода-вывода ис- пользуют DCI и эти банки используют одинаковые значения резисторов VRN/VRP, то внутренние узлы VRN и VRP могут каскадироваться. Эта опция называется кас- кадированием DCI. DCI корректирует импеданс для соответствия внешним опорным резисторам. Корректировка (калибровка) запускается автоматически во время включения устрой- ства. По умолчанию вывод DONE не переходит в высокое состояние до тех пор, пока не завершится первая часть процесса корректировки импеданса. Версии DCI стандартов SSTL и HSTL позволяют иметь внутренние расщепля- ющие нагрузочные резисторы. Стандарты DCI с третьим состоянием (T.DCI) были разработаны, чтобы удовлетворить следующим требованиям: выходные нагрузочные резисторы расщепления выключаются, когда вывод функционирует в качестве вы- хода, и включаются, когда вывод функционирует в качестве входа, находится в 3-м состоянии или в состоянии ожидания. В банках ввода-вывода типа HR имеется опция некалибрируемой расщепляющей нагрузки, очень похожая на расщепляющую нагрузку 3-го состояния для банков HP. Эта опция банков HR создает эквивалентную схему Thevenin, используя два внутрен- них резистора с удвоенным сопротивлением 2R. Одна резисторная нагрузка к Vcco. а другая — к земле. При разработке проекта необходимо придерживаться правил совмещения стан- дартов в одном банке ввода-вы вода. Из-за явления индуктивности каждый корпус FPGA поддерживает только ограни- ченное количество одновременно переключающихся выходов. Программа прогнози- рования SSN пакета Plan Ahead обеспечивает анализ уровня шума на каждом выходе проекта на основе информации о контакте (жертве), а также информации о других контактах (агрессорах). Программа SSN принимает во внимание расположение кон- тактов, стандарты ввода-вывода, скорости нарастания сигналов, используемые на- грузки и предоставляет значение запаса помехоустойчивости для каждого вывода.
10 Логические ресурсы ввода-вывода К логическим ресурсам блоков ввода-вывода FPGA 7-й серии относятся: • элементы входной (IDELAY) и выходной (ODELAY) задержки; • блоки входной (ILOGIC) и выходной (OLOGIC) логики; • расширенные ресурсы ввода-вывода: блоки последовательно-параллельных пере- датчиков (ISERDES) и приемников (OSERDES). Элементы I DELAY и ODELAY обеспечивают управляемую задержку для входных и выходных данных. Основной функцией блоков входной ILOGIC и выходной OLOGIC логики является поддержка регистров передачи данных с удвоенной скоростью (double data rate — DDR). В данной главе рассматриваются элементы входной и выходной за- держки, а также ресурсы блоков входной и выходной логики для передачи данных с удвоенной скоростью. Возможности расширенных ресурсов ввода-вывода рассмат- риваются в главе 11. К основным свойствам логических ресурсов ввода-вывода FPGA 7-й серии от- носятся: • поддержка комбинационных и регистровых входов и выходов; • управление 3-м состоянием комбинационного регистрового выхода; • поддержка входов и выходов с двойной скоростью передачи данных DDR; • управление 3-м состоянием выхода DDR; • поддержка регулируемой (управляемой) входной I DELAY и выходной ODELAY задержки; • поддержка режима DDR-выхода SAME-EDGE; • поддержка режимов DDR-входа SAME-EDGE и SAME-EDGE -PIPELINED. 10.1. Входная задержка I DELAY Рис. 10.1. Структура модуля задержки IDELAY/ODELAY В общем случае структуру модуля задерж- ки IDELAY (ODELAY) можно представить в виде последовательной цепочки элементов задержки с отводами ТарО, Tapi...Тар31 (рис. 10.1). Каждый элемент задержки вносит в переда- ваемый сигнал задержку величиной Т = = Tidelayresolution- Отводы ТарО, Tapi,..., Тар31 являются входами мультиплексора MUX 32:1. Управляющие входы мультиплексора соеди- нены с 5-битовым регистром CNTVALUE. В за- висимости от значения, записанного в регистре CNTVALUE, соответствующий отвод в цепочке элементов задержки будет соединен с выходом модуля задержки. Таким образом, величина за- держки определяется 5-битовым целым числом от 0 до 31, записанным в регистре CNTVALUE Значение регистра CNTVALUE может оставаться
Логические ресурсы ввода-вывода 159 неизменным, инкрементироваться, декрементироваться, загружаться с входов CNTVALUEIN или загружаться значением конвейерного регистра. Отметим, что под- ключение выхода мультиплексора к соответствующему отводу в цепочке элементов задержки не вносит искажений в передаваемый сигнал. 10.1.1. Примитив IDELAYE2 Входная задержка в проектах на FPGA 7-й серии реализуется с помощью прими- тива IDELAYE2. Этот примитив может подсоединяться к блокам ILOGICE2/ISERD- ESE2 или ILOGICE3/ISERDESE2 (см. рис. 9.2 и рис. 9.3 главы 9). Описание прими- тива IDELAYE2 приведено в приложении А. Здесь рассматриваются только основные свойства примитива IDELAYE2. Как было указано выше, примитив IDELAYE2 представляет собой 31-отводный циклический примитив задержки с калибровочными отводами для уточнения разре- шающей способности. Он может применяться к комбинационному или регистровому входному пути, а также может быть доступен из логики FPGA. Примитив IDELAYE2 позволяет входным сигналам задерживаться на шинах вход- ных выводов, при этом разрешающая способность величины задержки непрерывно калибруется путем использования опорного синхросигнала примитива IDELAYCTRL. Примитив IDELAYE2 имеет два отдельных входа данных: IDATAIN (от входно- го буфера IBUF) и DATAIN (от внутренней логики FPGA). Отличие между входами IDATAIN и DATAIN заключается в том, что данные с входа IDATAIN могут поступать как в блок ILOGIC, так и во внутреннюю логику FPGA, а данные с входа DATAIN могут поступать только во внутреннюю логику FPGA. Примитив IDELAYE2 имеет также два выхода: однобитовый DATAOUT (задер- жанные данные) и CNTVALUEOUT[4:0] (5-битовое значение задержки для монито- ринга величины задержки). Кроме того, примитив IDELAYE2 имеет конвейерный регистр, который управляется сигналами С, REGRST, LD и LDPIPEEN. Примитив IDELAYE2 имеет 4 режима работы FIXED, VARIABLE, VAR.LOAD и VAR_LOAD_PIPE, которые определяются атрибутом IDELAY_TYPE. В режиме FIXED задержка имеет фиксированное значение (определяется атрибутом IDELAY-VALUE) и не может быть изменена. В режиме VARIABLE задержка может увеличиваться или уменьшаться в каждом цикле синхросигнала С на величину Tidelayresolution- Ре- жим VAR.LOAD подобен режиму VARIABLE, но значение задержки дополнительно может динамически загружаться с выводов CNTVALUEIN. Режим VAR_LOAD_PIPE аналогичен режиму VAR.LOAD, только задержка динамически загружается не с вы- водов CNTVALUEIN, а с выходов конвейерного регистра. Величина задержки определяется целым числом от 0 до 31 условных единиц (taps). В свою очередь, величина условной единицы задержки (tap) определяется атрибутом REFCLK.FREQUENCY. Программируемая задержка повторяет в примитиве IDELAYE2 полный цикл. Ког- да достигается последнее значение задержки (что соответствует отводу Тар31), функ- ция последовательной инкрементации будет возвращена к значению 0. Аналогичные правила применяются к функциям декрементации: декрементация нуля возвращает величину задержки к 31. Функционирование конвейерного регистра в режиме VAR.LOAD.PIPE особенно полезно в проектах с шинной структурой. Индивидуальные задержки могут загру- жаться конвейерно, одно значение задержки в один момент времени, используя вход LDPIPEEN, а затем все задержки корректируются к их новым значениям в один и тот же момент времени, используя вход LD.
160 Раздел 10 Временные параметры и функционирование во времени примитива IDELAYE2 приведено в приложении Б. 10.1.2. Элемент IDELAYCTRL Когда создаются экземпляры примитивов IDELAYE2 или ODELAYE2, также со- здается экземпляр примитива IDELAYCTRL. Модуль IDELAYCTRL непрерывно ка- либрует индивидуальные значения задержки (IDELAY/ODELAY) в данном регионе для уменьшения воздействия изменений температуры, напряжения и функционирова- ния. Модуль IDELAYCTRL для калибровки использует определяемый пользователем опорный синхросигнал REFCLK. Модули IDELAYCTRL имеются в каждом столбце блоков ввода-вывода, в каж- дом регионе синхросигнала. Модуль IDELAYCTRL калибрует все модули IDELAYE2 и ODELAYE2 в пределах своего региона синхронизации (более подробную информацию см. в документе UG472 7 Series FPGAs Clocking Resources. User Guide). Больше информации по размещению и блокированию модулей IDELAYCTRL можно найти в руководстве по ограничениям (документ UG625 Constraints Guide). Описание примитива IDELAYCTRL приводится в приложении А, а временная мо- дель — в приложении Б. 10.2. Выходная задержка ODELAY Каждый банк ввода-вывода типа HP содержит элемент программируемой вы- ходной задержки, называемой ODELAY. Напомним, что элемент ODELAY отсутст- вует в банках ввода-вывода типа HR. В проектах элемент ODELAY создается с по- мощью примитива ODELAYE2. Примитив ODELAYE2 может подсоединяться к бло- кам OLOGICE2/OSERDESE2. Аналогично примитиву IDELAYE2, примитив ODE- LAYE2 является 31-отводным циклическим примитивом задержки с калибрируемой разрешающей способностью задержки сигнала. Примитив ODELAYE2 может при- меняться в комбинационных или регистровых выходных путях, а также может быть доступен непосредственно из логики FPGA. Разрешающая способность задержки сиг- нала изменяется путем выбора опорного синхросигнала IDELAYCTRL из области, определенной в документе «7 Series FPGA Date Sheets». Примитив ODELAYE2 во многом подобен примитиву IDELAYE2. Отличие заклю- чается в том, что примитив ODELAYE2 имеет только один вход данных ODATAIN, на который данные поступают от блока OLOGICE2/OSERDESE2. Однако примитив ODELAYE2 имеет дополнительный вход синхросигнала CLKIN от буферов синхрони- зации BUFIO, BUFG или BUFR. Синхросигнал поступает обратно в логику FPGA через порт DATAOUT с задержкой, устанавливаемой атрибутом ODELAY-VALUE. Описа- ние примитива приведено в приложении А. Режимы функционирования примитива ODELAYE2 полностью совпадают с ре- жимами функционирования примитива IDELAYE2. Временные параметры и функци- онирование во времени примитива ODELAYE2 также полностью совпадают с при- митивом IDELAYE2. 10.3. Вход IDDR блока ILOGIC Архитектура и основные функции блока ILOGIC были рассмотрены в подразделе 9.2.3. В данном разделе рассматриваются ресурсы блока ILOGIC при реализации входа с удвоенной скоростью передачи данных IDDR (input double data rate). FPGA 7-й серии имеют специальные регистры в блоках ILOGIC для реализации входных регистров DDR (double-data-rate). Это свойство используется путем созда-
Логические ресурсы ввода-вывода 161 ния экземпляра примитива IDDR. Все синхросигналы, питающие структуру ввода- вывода, полностью мультиплексируются, т. е. синхросигнал не разделяется между блоками ILOGIC и OLOGIC. Примитив IDDR имеет один вход данных D и два выхода данных Q1 и Q2. Данные тактируются синхросигналом С, который разрешается управляющим сигналом СЕ. Примитив IDDR поддерживает три режима функционирования: OPPOSITE-EDGE, SAME-EDGE и SAME_EDGE_PIPELINED. Описание примитива IDDR приведено в при- ложении А. Режим функционирования OPPOSITE-EDGE. Режим функционирования OPPO- SITE-EDGE — это традиционное решение DDR, когда на вход D данные поступают с удвоенной скоростью; во внутреннюю логику FPGA данные поступают через выход Q1 по возрастающему фронту синхросигнала, а через выход Q2 — по падающему фронту синхросигнала (рис. 10.2). Режим функционирования SAME-EDGE. В режиме функционирования SAME- EDGE данные во внутреннюю логику FPGA поступают через два выхода Q1 и Q2 по одному и тому же возрастающему фронту синхросигнала (рис. 10.3). С СЕ D Q1 । । । । । Рис. 10.3. Временная диаграмма примитива IDDR в режиме SAME-EDGE РОА D1A D2A D3A Р4А Р5А D6A Р7А Р8А Р9А Р10А D11A Р12А Р13А РОА । | D2A | | ОДА | | D6A | | D8A } | D10A Рис. 10.4. Временная диаграмма примитива IDDR в режиме SAME_EDGE_PIPELINED
162 Раздел 10 Режим функционирования SAME_EDGE_PIPELINED. В режиме функционирова- ния SAME_EDGE_PIPELINED, в отличие от SAME-EDGE, пара данных не отделяется одним циклом синхросигнала; однако требуется дополнительный цикл задержки на выходе Q1 (рис. 10.4). Временные параметры и функционирование во времени блока ILOGIC приведены в приложении Б. 10.4. Выход ODDR блока OLOGIC Архитектура и основные функции блока OLOGIC были рассмотрены в подразде- ле 9.2.4. В данном разделе рассматриваются логические ресурсы блока OLOGIC при реализации выхода с удвоенной скоростью передачи данных ODDR (output double data rate). FPGA 7-й серии в блоке OLOGIC имеют специальные регистры для реализации регистров выхода DDR. Это свойство становится доступным после инстанции при- митива ODDR. Когда используется блок OLOGIC, выход DDR мультиплексируется автоматически. Отметим, что отсутствует ручное (пользовательское) управление выбором мультиплексора. Примитив ODDR имеет два входа данных D1 и D2, один выход данных Q и один вход синхросигнала С, который разрешается управляющим сигналом СЕ. Дан- ные падающего фронта локально синхронизируются инвертированной версией вход- ного синхросигнала. Все синхросигналы, питаемые в структуре ввода-вывода, пол- ностью мультиплексируются, т. е. нет синхросигналов, совместно используемых бло- ками ILOGIC и OLOGIC. Примитив ODDR поддерживает режимы функционирования OPPOSITE-EDGE и SAME-EDGE. Режим SAME-EDGE позволяет разработчикам представлять оба входа данных в примитив ODDR на возрастающем фронте синхросигнала ODDR, сохраняя ресурсы блоков CLB и синхронизации и увеличивая производительность. Этот режим реализуется путем использования атрибута DDR_CLK_EDGE. Он также поддержива- ется для управления 3-м состоянием. Режим OPPOSITE-EDGE. В этом режиме (рис. 10.5) оба фронта синхросигнала CLK используются для захвата данных от логики FPGA с двойной пропускной спо- собностью. Оба выхода подключаются к входу данных или к входу управления 3-м состоянием блока ЮВ. Режим SAME-EDGE. В этом режиме (рис. 10.6) данные могут представлять- ся в блок ЮВ на том же самом фронте синхросигнала. Представление данных в блок ЮВ на одном и том же фронте синхросигнала позволяет избежать нарушений времени установки и позволяет пользователю реализовать высокую частоту DDR с CLK—1 I—I I—I I—I I— °СЕ-П I i \ D1 I ! D1A I ;Р1В I ]Р1С I 1 D1D |~ ----1—।------ -; -г_—г-1-——'} । уу I---------------------------I-I-I_____ OQ I |Р1А|Р2А|В1В|Р2В|Р1С|Р2С|Р1Р| Рис. 10.5. Временная диаграмма функционирования ODDR в режиме OPPOSITE_EDGE
Логические ресурсы ввода-вывода 163 CLK 1 I I ОСЕ | с>1 2] D1A | D1B | D1C I D1D D2 | D2A | Р2В | D2C | {D2D | 1111 OQ D1A D2A D1B D2B D1C D2C D1D Рис. 10.6. Временная диаграмма функционирования ODDR в режиме SAME-EDGE минимальной задержкой от регистра к регистру, по сравнению с использованием ре- гистров блока CLB. Передача синхросигнала. ODDR может передавать копию синхросигнала на вы- ход. Это является полезным для распространения синхросигнала и данных DDR с одинаковыми задержками, а также для генерации множественных синхросигналов, где каждое множество синхросигналов имеет уникальный драйвер синхронизации. Это выполняется путем подключения входа D1 примитива ODDR к высокому уровню, а D2 — к низкому. Xilinx рекомендует использовать эту схему для передачи синхросиг- налов от логики FPGA к выходным контактам. Описание примитива ODDR приведено в приложении А, а временные параметры и функционирование во времени приведены в приложении Б. 10.5. Выводы К логическим ресурсам блоков ввода-вывода FPGA 7-й серии относятся: элемен- ты входной IDELAY и выходной ODELAY задержки, а также блоки входной ILOGIC и выходной OLOGIC логики, Элементы IDELAY и ODELAY обеспечивают управляемую задержку для входных и выходных данных. Основной функцией блоков входной ILOGIC и выходной OLOGIC логики является поддержка регистров передачи данных с удвоенной скоростью (double data rate — DDR). Структуру модуля задержки IDELAY (ODELAY) можно представить в виде после- довательной цепочки элементов задержки с отводами ТарО, Tapi.Тар31. Величина задержки определяется 5-битовым целым числом от 0 до 31, записан- ным в регистре CNTVALUE. Значение регистра CNTVALUE может оставаться неиз- менным, инкрементироваться, декрементироваться, загружаться с входов CNTVA- LUEIN или загружаться значением конвейерного регистра. Задержка не вносит искажений в передаваемый сигнал. Примитив IDELAYE2 представляет собой 31-отводный циклический примитив за- держки с калибровочными отводами для уточнения разрешающей способности. Он может применяться к комбинационному или регистровому входному пути, а также может быть доступен из логики FPGA. Разрешающая способность величины задержки непрерывно калибруется путем использования опорного синхросигнала примитива IDELAYCTRL. Примитив IDELAYE2 имеет 4 режима работы: FIXED, VARIABLE, VAR.LOAD и VAR-LOAD.PIPE, которые определяются атрибутом IDELAY.TYPE.
164 Раздел 10 Величина задержки определяется целым числом от 0 до 31 условных единиц (taps). В свою очередь, величина условной единицы задержки (tap) определяется атрибутом REFCLK-FREQUENCY. Когда создаются экземпляры примитивов IDELAYE2 или ODELAYE2, также со- здается экземпляр примитива IDELAYCTRL. Модуль IDELAYCTRL непрерывно калиб- рует индивидуальные значения задержки (IDELAY/ODELAY) в данном регионе для уменьшения воздействия изменений температуры, напряжения и функционирования, при этом используется определяемый пользователем опорный синхросигнал REFCLK. Каждый банк ввода-вывода типа HP содержит элемент программируемой выход- ной задержки, называемой ODELAY (элемент ODELAY отсутствует в банках ввода- вывода типа HR). Примитив ODELAYE2 во многом подобен примитиву IDELAYE2. Отличие заклю- чается в том, что примитив ODELAYE2 имеет только один вход данных ODATAIN, на который данные поступают от блока OLOGICE2/OSERDESE2. Однако примитив ODELAYE2 имеет дополнительный вход синхросигнала CLKIN. Синхросигнал поступает обратно в логику FPGA через порт DATAOUT с задержкой, устанавливаемой атрибутом ODELAY_VALUE. Режимы функционирования примитива ODELAYE2 полностью совпадают с ре- жимами функционирования примитива IDELAYE2. FPGA 7-й серии имеют специальные регистры в блоках ILOGIC для реализации входных регистров DDR (double-data-rate). Это свойство используется путем созда- ния экземпляра примитива IDDR. Примитив IDDR имеет один вход данных D и два выхода данных Q1 и Q2. Данные тактируются синхросигналом С, который разрешается управляющим сигналом СЕ. Примитив IDDR поддерживает 3 режима функционирования: OPPOSITE-EDGE, SAME-EDGE и SAME_EDGE_PIPELINED. Режим функционирования OPPOSITE-EDGE — это традиционное решение DDR, когда на вход D данные поступают с удвоенной скоростью; во внутреннюю логику FPGA данные поступают через выход Q1 по возрастающему фронту синхросигнала, а через выход Q2 — по падающему фронту синхросигнала. В режиме функционирования SAME-EDGE данные во внутреннюю логику FPGA поступают через два выхода Q1 и Q2 по одному и тому же возрастающему фрон- ту синхросигнала. В режиме функционирования SAME_EDGE_PIPELINED, в отличие от SAME- EDGE, пара данных не отделяется одним циклом синхросигнала; однако требуется дополнительный цикл задержки на выходе Q1. FPGA 7-й серии в блоке OLOGIC имеют специальные регистры для реализации регистров выхода DDR. Это свойство становится доступным после инстанции при- митива ODDR. Примитив ODDR имеет два входа данных D1 и D2, один выход данных Q и один вход синхросигнала С, который разрешается управляющим сигналом СЕ. Примитив ODDR поддерживает режимы функционирования OPPOSITE-EDGE и SAME-EDGE. В режиме OPPOSITE-EDGE оба фронта синхросигнала CLK исполь- зуются для захвата данных от логики FPGA с двойной пропускной способностью. В режиме SAME-EDGE данные могут представляться в блок IOB на том же самом фронте синхросигнала. ODDR может также передавать на выход копию синхросигнала.
11 Расширенные логические ресурсы ввода-вывода В данной главе рассматриваются входные последовательно-параллельные преоб- разователи ISERDESE2 и выходные параллельно-последовательные преобразователи OSERDESE2 FPGA 7-й серии, которые поддерживают очень быстрые скорости пе- редачи данных, позволяя внутренней логике работать в 8 раз медленнее, чем ввод- вывод. Подмодуль Bitslip блока позволяет переупорядочивать данные с помощью обучающего шаблона (training pattern). Одной из областей применения блоков ISERDESE2 и OSERDESE2 является пере- дача данных между двумя FPGA, расположенными на одной плате. При этом можно не использовать никаких стандартов последовательной передачи данных и сэкономить ресурсы FPGA. Кроме того, на основе блоков ISERDESE2 и OSERDESE2 пользова- тель может разрабатывать собственные протоколы высокоскоростной последователь- ной передачи данных, например, для повышения уровня безопасности проекта. В данной главе также рассматривается память FIFO ввода-вывода. 11.1. Последовательно-параллельный преобразователь ISERDRSE2 11.1.1. Основные свойства Блок ISERDESE2 в FPGA 7-й серии представляет собой последовательно-парал- лельный преобразователь с определенными логическими свойствами и специфичес- кой синхронизацией, спроектированный для упрощения реализации высокоскоростных приложений с синхронным источником данных. Блок ISERDESE2 позволяет упрос- тить синхронизацию при проектировании в структуре FPGA преобразователей из по- следовательной формы в какую-либо другую форму (deserializers), в данном случае — в параллельную. Основные свойства блока ISERDESE2: • блок ISERDESE2 представляет собой последовательно-параллельный преобразо- ватель, который реализует высокоскоростную передачу данных без требования к структуре FPGA соответствовать частоте входных данных; • поддерживает режим передачи данных как с базовой скоростью (single date rate — SDR), так и с удвоенной скоростью (double date rate — DDR); • в режиме SDR последовательно-параллельный преобразователь создает слово шириной 2, 3, 4, 5, 6, 7 или 8 битов; • в режиме DDR последовательно-параллельный преобразователь создает слово шириной 4, б или 8 битов, когда используется один блок ISERDESE2, и 10 или 14 битов, когда используются два каскадированных блока ISERDESE2; • имеет специализированную поддержку интерфейсов памяти, основанных на стро- бировании, в виде специальной схемы (включая входной вывод OCLK) для управ- ления пересекающихся областей синхронизации строба в FPGA, что способствует высокой производительности и упрощает реализацию; • имеет специализированную поддержку сетевых интерфейсов, в том числе DDR3, QDR и асинхронных интерфейсов;
166 Раздел 11 • подмодуль Bitslip позволяет переупорядочить последовательность потока парал- лельных данных, приходящих в структуру FPGA; • подмодуль Bitslip может использоваться для обучения (подготовки) интерфейсов с синхронным источником, которые включают обучающий шаблон. Блок ISERDESE2 может быть настроен для реализации различных типов интер- фейсов (режимов работы). Допустимыми для блока ISERDESE2 являются следу- ющие интерфейсы; MEMORY, MEMORY.DDR3, MEMORY.QDR, OVERSAMPLE и NETWORKING. 11.1.2. Архитектура блока ISERDESE2 Обобщенная структура блока ISERDESE2 показана на рис. 11.1. Блок ISERDESE2 состоит из модуля собственно последовательно-параллельного преобразователя (Serial-to-Parallel Converter), мультиплексоров выбора источника по- следовательных данных (ЮВ Multiplexers), модуля сигнала разрешения синхронизации входа (СЕ Module), а также подмодуля Bitslip для переупорядочивания потока прихо- дящих данных. Функционирование модуля Bitslip вызывается сигналом BITSLIP. OFB DDLY D СЕ1 СЕ2 DYNCLKSEL CLKB CLK OCLK DYNCLKDIVSEL CLKDIV CLKDIVP RST BITSLIP Рис. 11.1. Структурная схема блока ISERDESE2
Расширенные логические ресурсы ввода-вывода 167 СЕ1 RST CLKDIV СЕ2 RST CLKDIV Рис. 11.2. Модуль разрешения синхронизации входа Модуль сигнала разрешения синхронизации входа. Структура модуля сигнала разрешения синхронизации входа показана на рис. 11.2. Данный модуль состоит из двух входных триггеров и мультиплексора для выбо- ра сигнала разрешения входа ICE. На вход одного триггера поступает сигнал разре- шения СЕ1, а на вход другого — СЕ2. В качестве сигнала разрешения входа ICE мультиплексор позволяет выбрать сигнал СЕ1, а также один из выходных сигналов триггеров CE1R или CE2R. Управляется мультиплексор атрибутом NUM_CE и разде- ленным сигналом синхронизации CLKDIV. Сигнал ICE управляет входами разрешения синхронизации регистров FFO, FF1, FF2 и FF3, как показано на рис. 11.3. Остальные регистры на рис. 11.3 не имеют входов разрешения синхронизации. Модуль разрешения синхронизации функционирует как последовательно-парал- лельный преобразователь 2:1, синхронизируется сигналом CLKDIV. Модуль разре- шения синхронизации является особенно необходимым для двунаправленных интер- Рис. 11.3. к OCLK) от CLK
168 Раздел 11 Таблица 11.1 Рис. 11.4. Соединение модулей OSERDESE2 и разрешения синхронизации активизирует- ISERDESE2 через порт OFB ся и Qga сигнала и СЕ2 ЯВЛЯЮТСЯ доступными. Когда NUM_CE = 1, доступен только сигнал СЕ1, который функциони- рует как обычный сигнал разрешения синхронизации. Выходы О и Q[l:8]. Блок ISERDESE2 имеет два выхода: комбинационный О и регистровый 8-битовый Q[l:8]. Входы D и DDLY. Выводы D и DDLY являются специализированными входа- ми в блок ISERDESE2. Вход D является прямым соединением с буфером IOB. Вход DDLY является прямым соединением с элементом задержки IDELAYE2. Это позволя- ет пользователю иметь либо задержанную, либо незадержанную версию входных дан- ных к регистровому (Q1-Q8) или комбинационному (О) выходу. Атрибут IOBDELAY определяет соединения с модулем ISERDESE2. В табл. 11.1 показаны результаты каждой установки атрибута IOBDELAY, когда подсоединяются оба входа: D и DDLY. Порт обратной связи OFB. Порт OFB в модулях ISERDESE2 и OSERDESE2 мо- жет использоваться для передачи данных, передаваемых на OSERDESE2, обратно к ISERDESE2 (рис. 11.4). Это свойство разрешено, когда атрибут OFBJJSED = TRUE. Для того чтобы обратная связь давала корректные данные, модули OSERDESE2 и ISERDESE2 должны иметь одинаковые установки атрибутов скорости данных DATA. RATE и ширины данных DATA.WIDTH. Динамическая инверсия синхросигналов. Входы DYNCLKSEL и DYNCLKDIVSEL позволяют динамически инвертировать синхросигналы блока ISERDESE2. Они ис- пользуется совместно с атрибутами DYN_CLK_SEL_EN и DYN_CLKDIV_SEL_E. Дан- ная операция поддерживается в режимах MEMORY-QDR и MEMORY-DDR3. Однако динамическая инверсия синхросигналов является асинхронной операцией, поэтому ее применение может привести к неверному функционированию блока ISERDESE2. Для правильной работы блока ISERDESE2 после динамической инверсии синхросигналов он должен быть сброшен. Синхросигнал OCLK. Синхросигнал OCLK используется только тогда, когда ат- рибут INTERFACE-TYPE установлен в значение MEMORY. Синхросигнал OCLK ис- пользуется для передачи данных (основанных на стробе данных памяти) на область (домен) синхронизации свободного доступа. OCLK является синхросигналом FPGA свободного доступа, функционирует на той же самой частоте, как строб на входе CLK. Доменная передача от CLK к OCLK показана в схеме на рис. 11.3. Синхрониза- ция доменной передачи устанавливается пользователем путем корректировки задерж- ки стробирующего сигнала к входу CLK (т. е. используя элемент IDELAY). Примеры установки синхронизации этих доменных передач приводятся в генераторе интерфейса
Расширенные логические ресурсы ввода-вывода 169 Рис. 11.5. Ориентация битов на выходах Q1-Q8 портов примитива ISERDESE2 памяти MIG (Memory Interface Generator). При установке атрибута INTERFACE-TYPE в значение NETWORKING этот порт не используется. Задержки примитива ISERDESE2. При интерфейсе типа MEMORY задержка че- рез стадию OCLK составляет один цикл синхросигнала CLKDIV. Общая задержка через блок ISERDESE2 зависит от состояния фазы между син- хросигналом CLK и синхросигналом OCLK. Когда типом интерфейса является NETWORKING, задержка равна двум циклам синхросигнала CLKDIV. Дополнительный цикл задержки синхросигнала CLKDIV в се- тевом режиме (по сравнению с режимом памяти) происходит из-за подмодуля Bitslip. Задержка в режимах MEMORY-QDR и MEMORY-DDR3 составляет два цикла синхросигнала CLKDIV. Порядок битов при передаче данных между блоками OSERDESE2 и ISERDESE2. Обычно при передаче данных между различными FPGA блоки OSERDESE2 и ISERD- ESE2 взаимодействуют между собой. Биты на входах OSERDESE2 имеют обратный порядок на выходах блока ISERDESE2 (рис. 11.5). Выводы SHIFTIN1/2 и SHIFTOUT1/2. Входы SHIFTIN1/2 и выходы SHIFTOUT 1/2 являются входами и выходами переноса для расширения блока ISERDESE2 до размера 1:10 или 1:14. Примитив блока ISERDESE2 описан в приложении А. 11.1.3. Методы синхронизации блока ISERDESE2 Методы синхронизации или типы интерфейсов блока ISERDESE2, фактически, являются режимами его работы, которые определяют не только способ синхрониза- ции, но и внутреннюю структуру блока ISERDESE2. Методы синхронизации блока ISERDESE2 строго определяются типом интерфейса. В связи с этим для каждого синхросигнала (CLK, CLKDIV и OCLK) в каждом типе интерфейса строго определе- ны источники сигналов. Тип интерфейса NETWORKING. В процессе последовательно-параллельного пре- образования важным пунктом является соотношение сигналов CLK и CLKDIV. В иде- але сигналы CLK и CLKDIV должны быть выровнены по фазе в пределах некоторого допуска. В FPGA имеется несколько способов расположения синхронизации для удов- летворения требованиям фазового соотношения сигналов CLK и CLKDIV.
170 Раздел 11 ISERDESE2 Clock Input BUFIO CLK Рис. 11.6. Выравнивание синхрониза- ции, используя буферы BUFIO и BUFR BUFR (-Х) CLKDIV Номинально входы CLK и CLKDIV долж- ны быть выровнены по фазе. Например, если сигналы CLK и CLKDIV были инвертированы разработчиком на входах блока ISERDESE2 (рис. 11.6), то хотя расположение синхрониза- ции является допустимой конфигурацией бу- феров BUFIO/BUFR, синхросигналы все еще не совпадают по фазе. Это также запрещает использование динамического выбора инверсии с помощью сигналов DYNCLKINVSEL и DYNCLKDIVINVSEL. Допустимыми способами выравнивания синхронизации для блока ISERDESE2, использующего сетевой тип интерфейса NETWORKING, являются следующие: • CLK управляется BUFIO, CLKDIV управляется BUFR (см. рис. 11.6); • CLK управляется ММСМ или PLL, CLKDIV управляется CLKOUT[0:6] того же самого ММСМ или PLL; • CLK управляется BUFG, CLKDIV управляется другим BUFG. Когда используется блок ММСМ для управления сигналами CLK и CLKDIV, ти- пы буферов, снабжающие ISERDESE2, не могут смешиваться. Например, если CLK управляется буфером BUFG, то CLKDIV тоже должен управляться буфером BUFG. В то же время блок ММСМ может управляться блоком ISERDESE2 через буферы BUFIO и BUFR. Тип интерфейса MEMORY. Значением типа интерфейса по умолчанию является MEMORY. Внутренние соединения блока ISERDESE2 в режиме MEMORY показа- ны на рис. 11.3. Допустимыми способами выравнивания синхронизации для блока ISERDESE2, использующего интерфейс MEMORY, являются следующие: • CLK управляется BUFIO, OCLK управляется BUFIO, CLKDIV управляется BUFR; • CLK управляется ММСМ или PLL, OCLK управляется ММСМ, CLKDIV управля- ется CLKOUT[0:6] того же самого ММСМ или PLL; • CLK управляется BUFG, CLKDIV управляется другим BUFG. Входы OCLK и CLKDIV должны быть номинально выровнены по фазе. Никакое фазовое соотношение между CLK и OCLK не допускается. Калибровка должна быть выполнена для надежной передачи данных от CLK к домену OCLK. Тип интерфейса MEMORY-QDR. Режим MEMORY.QDR имеет сложную струк- туру синхронизации, как результат требований памяти QDR. Эта установка атри- бута INTERFACE-TYPE поддерживается только когда используется программа MIG (Memory Interface Generator — генератор интерфейса памяти). Тип интерфейса OVERSAMPLE. Режим OVERSAMPLE используется для захвата двух фаз данных DDR. На рис. 11.7 более детально показано логическое представ- ление примитива ISERDESE2 и то, как данные захватываются на возрастающем и падающем фронтах CLK и OCLK. Между сигналами CLK и OCLK должен быть фазовый сдвиг на 90°, поскольку данные захватываются как синхросигналом CLK, так и OCLK, но выход ISERDESE2 синхронизируется на домен CLK. В этом режиме синхросигнал CLKDIV не исполь- зуется. Допустимыми способами выравнивания синхронизации для типа интерфейса OVERSAMPLE являются:
Расширенные логические ресурсы ввода-вывода 171 Sample 1 Sample 2 Sample 3 Sample 4 SHIFTOUT1 SHIFTOUT2 О Рис. 11.7. Логический вид примитива ISERDESE2 в режиме OVERSAMPLE • CLK и CLKB управляются BUFIO; OCLKB управляется BUFIO, который являет- ся фазой, сдвинутой на 90°; два буфера BUFIO управляются от одного блока ММСМ; • CLK и CLKB управляются BUFG; OCLKB управляется BUFG, который является фазой, сдвинутой на 90°; буферы BUFG управляются от одного блока ММСМ. Тип интерфейса MEMORY.DDR3. Режим MEMORY-DDR3 имеет сложную структуру синхронизации, как результат требований пакета DDR3. Эта установка атрибута INTERFACE-TYPE поддерживается только когда используется генератор интерфейса памяти MIG. 11.1.4. Расширение ширины слова блока ISERDESE2 Два модуля ISERDESE2 могут использоваться для построения последовательно- параллельного преобразователя размером больше, чем 1:8. Соединяя порты SHIFT- OUT главного (master) модуля ISERDESE2 с портами подчиненного (slave) модуля ISERDESE2 (рис. 11.8), последовательно-параллельный преобразователь может быть расширен до размера 1:10 или 1:14 (только в режиме DDR). Для дифференциального входа главный модуль ISERDESE2 должен быть на по- ложительной стороне (вывод _Р) дифференциальной входной пары. Когда вход не
172 Раздел 11 Рис. 11.8. Структурная схема расширения ширины слова последовательно-параллельного преобразователя для конфигурации 1:14 является дифференциальным, то входной буфер, ассоциирующийся с подчиненным модулем ISERDESE2, является недоступным и каскадирование не используется. При использовании расширения ширины слова последовательно-параллельного преобразователя следует пользоваться следующими рекомендациями: • главный и подчиненный модули ISERDESE2 должны быть соседними блоками; оба модуля должны конфигурироваться в режиме NETWORKING, поскольку в режиме MEMORY каскадирование невозможно; • установите атрибут SERDES.MODE в значение MASTER для главного модуля ISERDESE2 и в значение SLAVE для подчиненного модуля; • подсоедините порты SHIFTIN подчиненного модуля к портам SHIFTOUT глав- ного модуля; • в подчиненном модуле в качестве выходов используйте порты Q3-Q8; • применяйте атрибут DATA.WIDTH к обоим модулям: главному и подчиненному. Временные параметры и функционирование во времени блока ISERDESE2 при- ведены в приложении Б. 11.2. Подмодуль BITSLIP Все блоки ISERDESE2 в FPGA 7-й серии содержат подмодуль Bitslip. Этот под- модуль используется с целью выравнивания слов в приложениях сетевого типа с синх- ронным источником. Подмодуль Bitslip в блоке ISERDESE2 переупорядочивает парал- лельные данные, позволяя каждой комбинации повторяющегося последовательного шаблона, полученного преобразователем, быть представленным в структуру FPGA. Этот повторяющейся последовательный шаблон традиционно называется обуча- ющим шаблоном (training pattern) или преамбулой (преамбулы поддерживаются мно- гими сетевыми и телекоммуникационными стандартами). В некоторых интерфейсах это может быть медленный предшествующий синхросигнал, который может рассмат- риваться как повторяющаяся комбинация двоичных разрядов.
Расширенные логические ресурсы ввода-вывода 173 Bitslip Operation in SDR Mode Bitslip Operations Executed Output Pattern (8:1) Initial 10010011 1 00100111 2 01001110 3 10011100 4 00111001 5 01110010 6 11100100 у 11001001 Bitslip Operation in DDR Mode Bitslip Operations Executed Output Pattern (8:1) Initial 00100111 1 10010011 2 10011100 3 01001110 4 01110010 5 00111001 6 11001001 7 11100100 Рис. 11.9. Примеры функционирования Bitslip При установке входа BITSLIP блока ISERDESE2, последовательный поток прихо- дящих данных на параллельной стороне переупорядочивается. Эта операция повто- ряется до тех пор, пока требуемая преамбула не появится на выходах ISERDESE2. Таблицы на рис. 11.9 показывают эффекты функционирования Bitslip в режимах SDR и DDR. Бит 8 входа ISERDESE2 является первым принятым битом. В данном примере ширина данных равна 8. Функционирование подмодуля Bitslip является син- хронным по отношению к синхросигналу CLKDIV. В режиме SDR каждая операция Bitslip заставляет выходной шаблон сдвигаться влево на единицу. В режиме DDR каждая операция Bitslip заставляет выходной шаблон чередоваться между сдвигом вправо на 1 и сдвигом влево на 3. В этом примере на восьмой операции подмодуля Bitslip выходной шаблон возвращается к начальному шаблону. Это предполагает, что последовательные данные являются восьмью битами повторяющегося образца. Может показаться, что bitslip является операцией циклического сдвига, одна- ко это не так. Функционирование bitslip добавляет один бит к потоку входных дан- ных и теряет n-й бит во входном потоке данных. Это заставляет функционирование на повторяющихся шаблонах проявляться подобно функционированию циклическо- го сдвига. Подмодуль Bitslip доступен только в режиме NETWORKING, во всех других режи- мах он запрещен. Для того чтобы вызвать функционирование Bitslip, порт BITSLIP должен быть установлен в высокое значение на один цикл синхросигнала CLKDIV. Bitslip не может устанавливаться для двух последовательных циклов CLKDIV. Bitslip должен быть аннулирован по крайней мере на один цикл CLKDIV между двумя уста- новками Bitslip. В обоих режимах SDR и DDR общая задержка от момента, когда модуль ISER- DESE2 захватывает установленный вход Bitslip, до момента, когда выходы Q1-Q8 модуля ISERDESE2 «битового проскальзывания» выбираются в логику FPGA синх- росигналом CLKDIV, равна двум циклам CLKDIV. С точки зрения приложений одна команда Bitslip должна быть дана только для одного цикла CLKDIV. Логика пользователя должна ждать, по крайней мере, два цикла в режиме SDR или три цикла в режиме DDR, прежде чем проанализировать полученный шаблон данных и потенциально выдать другую команду Bitslip. Временная модель подмодуля Bitslip приведена в приложении Б.
174 Раздел 11 11.3. Параллельно-последовательный преобразователь OSERDESE2 Блок OSERDESE2 является специализированным параллельно-последователь- ным преобразователем со специфической синхронизацией и логическими ресурса- ми, спроектированными для упрощения реализации высокоскоростных интерфейсов с синхронным источником. Каждый модуль OSERDESE2 включает специализирован- ный преобразователь для данных и преобразователь для сигналов управления треть- им состоянием. Как преобразователи данных, так и преобразователь 3-го состояния могут конфигурироваться в режимах SDR и DDR. Преобразование данных может вы- полняться в соотношении до 8:1, а также 10:1 и 14:1 (если используется расширение ширины слова блока OSERDESE2). Преобразование 3-го состояния может быть вы- полнено в соотношении до 4:1. Последнее является спецификой режима DDR3 для поддержки высокоскоростных интерфейсов памяти. 11.3.1. Архитектура блока 0SERDESE2 Структурная схема блока OSERDESE2 показана на рис. 11.10. Блок OSERDESE2 состоит из двух модулей: параллельно-последовательного пре- образователя данных (Data Parallel-to-Serial Convert) и параллельно- последователь- ного преобразователя третьего состояния (3-State Parallel-to- Serial Convert). Оба модуля имеют одни и те же сигналы управления (CLK, CLKDIV, RST), однако разные входные и выходные порты. Параллельно-последовательный преобразователь данных. Параллельно-последо- вательный преобразователь данных блока OSERDESE2 принимает от двух до восьми параллельных данных от структуры FPGA (до 14 битов при использовании расшире- ния ширины слова), преобразует данные и передает их в блок ЮВ через выход OQ. Параллельные данные преобразуются от наименьшего номера вывода к наибольше- Рис. 11.10. Структурная схема блока OSERDESE2
Расширенные логические ресурсы ввода-вывода 175 му (т. е. данные на входе D1 являются первым битом, переданным на выход OQ). Параллельно-последовательный преобразователь данных функционирует в двух ре- жимах: с базовой (SDR) и удвоенной (DDR) скоростью передачи данных. Для преобразования данных блок OSERDESE2 использует два синхросигнала: CLK и CLKDIV. CLK является высокоскоростным последовательным синхросигналом, CLKDIV является разделенным параллельным синхросигналом. Синхросигналы CLK и CLKDIV должны быть выровнены по фазе (детали см. в подразделе 11.4.3 «Методы синхронизации блока OSERDESE2»). Перед использованием к блоку OSERDESE2 должен быть применен сброс. Блок OSERDESE2 содержит внутренний счетчик, который управляет потоком данных. От- казанное в синхронизации с CLKDIV аннулирование сброса приведет к неопределен- ному значению выхода. Параллельно-последовательное преобразование третьего состояния. В дополне- ние к параллельно-последовательному преобразователю данных, модуль OSERDESE2 содержит параллельно-последовательный преобразователь для управления 3-м состо- янием блока ЮВ. В отличие от преобразования данных, преобразователь третьего состояния может преобразовывать только до четырех бит параллельных сигналов третьего состояния. Преобразователь третьего состояния не может каскадироваться. Обратная связь выхода. Вывод OFB модуля OSERDESE2 имеет две функции: • как путь обратной связи к выводу OFB модуля ISERDESE2; • как соединение с блоком ODELAYE2 для реализации задержки выходного сигнала модуля OSERDESE2 в блоке ODELAYE2. Описание примитива OSERDESE2 приведено в приложении А. 11.3.2. Методы синхронизации блока OSERDESE2 Фазовое соотношение сигналов CLK и CLKDIV является важным в процессе параллельно-последовательного преобразования. В идеале CLK и CLKDIV являются выровненными по фазе в пределах определенного допуска. Допустимыми способами выравнивания синхронизации для модуля OSERDESE2 являются: • CLK управляется буфером BUFIO, CLKDIV управляется буфером BUFR; • CLK и CLKDIV управляются шиной CLKOUT[0:6] того же самого блока ММСМ или PLL; • CLK и CLKDIV управляются двумя буферами BUFG. Когда для управления сигналов CLK и CLKDIV модуля OSERDESE2 использует- ся блок ММСМ, типы буферов, снабжающие модуль OSERDESE2, не могут смеши- ваться. Например, если CLK управляется буфером BUFG, то CLKDIV также должен управляться буфером BUFG. 11.3.3. Расширение ширины слова блока OSERDESE2 В каждой плитке (tile) ввода-вывода имеется два модуля OSERDESE2: один глав- ный, другой подчиненный. Соединяя порты SHIFTIN главного модуля OSERDESE2 с портами SHIFTOUT подчиненного модуля OSERDESE2, параллельно-последователь- ный преобразователь может расширяться до соотношений 10:1 и 14:1 (только для режима DDR). Для дифференциального выхода главный модуль OSERDESE2 дол- жен быть на положительной стороне (вывод _Р) дифференциальной выходной пары. Когда выход не является дифференциальным, выходной буфер, ассоциирующийся с подчиненным OSERDESE2, недоступен и увеличение ширины невозможно. Расширение ширины также не может использоваться, когда применяются компле- ментарные ассиметричные стандарты (т. е. DIFF.HSTL и DIFF-SSTL). В этом случае
176 Раздел 11 оба блока OLOGICE2/3 в плитке ввода-вывода используются комплементарными ас- симетричными стандартами для передачи двух комплементарных сигналов, приводя к недоступности блоков OLOGICE2/3 для целей расширения ширины. На рис. 11.11 показана структура параллельно-последовательного преобразова- теля 10:1. Порты D3-D4 используются для последних двух битов параллельного ин- терфейса на подчиненном модуле OSERDESE2. Правила для увеличения ширины битов параллельно-последовательного преоб- разователя: • оба модуля должны быть соседними в паре главный-подчиненный; • установите атрибут SERDES.MODE в значение MASTER для главного модуля и в значение SLAVE для подчиненного модуля; • подсоедините порты SHIFTIN главного модуля к портам SHIFTOUT подчинен- ного модуля; • в подчиненном модуле можно использовать только входные порты с D3-D4 для ширины 10 и D3-D8 для ширины 14; • атрибут DATA-WIDTH для обоих модулей должен иметь одинаковое значение; • установите атрибут INTERFACE-TYPE в значение DEFAULT. 11.3.4. Задержки блока OSERDESE2 Задержки сигналов от входа до выхода блоков OSERDESE2 зависят от атрибу- тов DATA-RATE и DATA-WIDTH. Задержка определяется как период времени между следующими двумя событиями: 1) когда данные на возрастающем фронте синхросигналов CLKDIV поступят на входы D1-D8 блока OSERDESE2; 2) когда первый бит последовательного потока появится на выходе OQ. В табл. 11.2 приведены различные значения задержек блока OSERDESE2. Временные параметры и функционирование во времени блока OSERDESE2 при- ведены в приложении Б.
Расширенные логические ресурсы ввода-вывода 177 Таблица 11.2 Задержки блока OSERDESE2 DATA.RATE DATA-WIDTH Задержка SDR 2:1 1 цикл CLK 3:1 2 цикла CLK 4:1 3 цикла CLK 5:1 4 цикла CLK 6:1 5 циклов CLK 7:1 6 циклов CLK 8:1 7 циклов CLK DATA.RATE DATA.WIDTH Задержка DDR 4.1 2 цикла CLK 6:1 3 цикла CLK 8:1 4 цикла CLK 10:1 5 циклов CLK 14:1 7 циклов CLK 11.4. Память FIFO ввода-вывода FPGA 7-й серии имеют небольшие элементы IN.FIFO и OUT.FIFO, называемые совместно IO.FIFO, которые расположены в каждом банке ввода-вывода. Хотя эти элементы специально спроектированы для приложений памяти, они являются доступ- ными как общие ресурсы. Для общего использования все входы и выходы трассируют- ся через межсоединения. Наиболее популярным способом использования элементов Ю-FIFO является интерфейс с внешними компонентами как расширение IOLOGIC (т.е. ISERDES или IDDR и OSERDES или ODDR). Поскольку это общие возмож- ности межсоединений, элементы IO.FIFO могут также служить как дополнительные ресурсы структуры FPGA. Каждый банк ввода-вывода содержит четыре элемента IO.FIFO, с одним элемен- том IO.FIFO на группу байта. Группа байта (byte group) определяется как группа из 12 двусторонних выводов банка. Элементы IO.FIFO физически выровнены к группе байта. Это выравнивание приводит к лучшей производительности, когда элементы IO.FIFO используются для интерфейса к таким компонентам межсоединений ввода- вывода, как входы и выходы элементов SERDES. Однако, несмотря на их расположе- ние, элементы IO.FIFO могут также являться интерфейсом к ресурсам в структуре FPGA и другим банкам ввода-вывода (см. документ UG475 7 Series FPGAs Packaging and Pinout. Product Specification). Этот раздел посвящен использованию элемента IO.FIFO как интерфейса с компонентами межсоединений ввода-вывода. Для внешних данных, приходящих в FPGA, элемент IN.FIFO может соединять- ся с ILOGIC (т.е. ISERDESE2, IDDR или IBUF) для получения входных данных и передачи их на структуру FPGA. Для данных, следующих на выход FPGA, элемент OUT.FIFO может соединяться с OLOGIC (т.е. OSERDESE2, ODDR или OBUF) для передачи данных от структуры FPGA и посылке их через элемент OUT.FIFO в бу- феры ввода-вы вода IOB. Элемент IN.FIFO получает 4-разрядные данные от блока ILOGIC, в то время как сторона структуры FPGA читает любые 4- или 8-битовые данные из массива. Элемент OUT.FIFO получает 4- или 8-битовые данные от структуры FPGA, в то время как блок OLOGIC считывает 4-разрядные данные из массива. Каждый элемент IO.FIFO имеет 768-битовую запоминающую матрицу и может быть расположен как двенадцать групп 4-разрядных данных или десять групп 8-раз- рядных данных. Элемент IO.FIFO имеет глубину на девять записей памяти FIFO, включая входные и выходные регистры. Типичное использование IO.FIFO: буфер для параллельного интерфейса ввода-вывода пересекающегося между двумя домена- ми частот (например, область буфера BUFR к или от области буферов BUFG или BUFH) или последовательно-параллельный/параллельно-последовательный преобра- зователь 2:1 для разъединения физического интерфейса (Physical Interface — PHY) от структуры FPGA, чтобы ослабить требования к производительности структуры.
178 Раздел 11 WREN WRCLK Write Clock Domain Read Clock Domain 8 Clock Cycles । 8 Clock Cycles ALMOSTFULL I ALMOSTEMPTY RDEN RDCLK Рис. 11.12. Архитектура верхнего уровня элемента IO.FIFO Элементы IO.FIFO являются более мелкими версиями регулярных блоков FIFO и имеют подобную функциональность. Основная цель элементов IO-FIFO состоит в том, чтобы поддерживать функции передачи данных ввода-вывода. Они не предназна- чены для замены встроенных блоков FIFO или FIFO, основанных на LUT. Элементы IO-FIFO поддерживают стандартную логику флагов, синхросигналы и управляющие сигналы. Элементы IO-FIFO могут работать в двух режимах: 4x4 режима (1:1) или 4 х 8/8 х 4 режима (1:2/2:1). Архитектура элемента IO.FIFO показана на рис. 11.12. Элемент IO.FIFO име- ет входной регистр, ядро FIFO с глубиной записи 7 и выходной регистр. Входной и выходной регистры являются неотъемлемой частью элемента IO.FIFO, которые обес- печивают восемь мест для хранения 8 записей элемента IO-FIFO. 11.4.1. Элемент IN.FIFO Элемент IN.FIFO физически выравнивается к группе байта ввода-вывода для оп- тимизации производительности. Глубина в 8 записей элемента IN.FIFO поддерживает передачу данных, используя два режима работы: 4x4 и 4x8. Оба режима поддержи- вают флаги FULL, EMPTY, ALMOSTFULL и ALMOSTEMPTY. Режим 4x4. Этот режим конфигурирует FIFO, чтобы иметь 12 входов данных (D) шириной 4 бита и 12 выходов данных (Q) шириной 4 бита. Порты D0[3:0]— D9[3:0] отображаются на порты Q0[3:0]—Q9[3:0]. Порты D5[7:4] и D6[7:4] являются двумя дополнительными входами данных портов D10[3:0] и Dll[3:0], которые ото- бражаются на выходы Q5[7:4] и Q6[7:4] дополнительных выходных портов Q10 [3:0] и Qll[3:0]. Другие порты Qn[7:4] не используются. В табл. 11.3 показаны детали функционирования режима 4x4. Режим 4x8. Этот режим конфигурирует FIFO, чтобы иметь 10 4-разрядных вхо- дов данных (D) и 10 8-разрядных выходов данных (Q). В режиме 4x8 4-разрядные входные данные демультиплексируются для формирования 8-разрядных выходных дан- ных. Режим 4x8 обычно используется, когда частота выходного синхросигнала боль- ше, чем половина входной тактовой частоты, и таким образом, выходные данные
Расширенные логические ресурсы ввода-вывода 179 Таблица 11.3 Отображение входов и выходов данных элемента IN.FIFO в режиме 4x4 Отображение He используется D10[3:0] D0[3:0] -> Q0[3:0] Dl[3:0] -> Ql[3:0] D2[3:0] -> Q2[3:0] D3[3:0] -> Q3[3:0] D4[3:0] Q4[3:0] D5[3:0] Q5[3:0] D6[3:0] Q6[3:0] D7[3:0] -> Q7[3:0] D8[3:0] Q8[3:0] D9[3:0] -> Q9[3:0] является D5[7:4] —> Q5[7:4) Q0[7:4] Ql[7:4] Q2[7:4] Q3[7:4] Q4[7:4] Q5[7:4] Q6[7:4] Q7[7:4] Q8[7:4] Q9[7:4] Dll [3:0] является D6[7:4] —> Q6[7:4] Таблица 114 Отображение входов и выходов данных элемента IN.FIFO в режиме 4x8 Отображение D0[3:0] Q0[7:0] Dl[3:0] -»• Ql[7:0] D2[3:0] -> Q2[7:0] D3[3:0] -> Q3[7:0] D4[3:0] -» Q4[7:0] D5[3:0] -» Q5[7:0] D6[3:0] -» Q6[7:0] D7[3:0] -» Q7[7:0] D8[3:0] -> Q8[7:0] D9[3:0] -> Q9[7:0] имеют удвоенную ширину входных данных. Отображения входов и выходов в режиме 4x8 приведены в табл. 11.4. Примитив элемента IN-FIFO приведен в приложении А. 11.4.2. Элемент OUT-FIFO Элемент OUT.FIFO располагается рядом с соответствующим элементом IN-FIFO и физически выравнивается к байтовой группе ввода-вывода для оптимизации про- изводительности. Элемент OUT.FIFO имеет глубину 8 записей и поддерживает пе- редачу данных в двух форматах 4x4 и 8x4. Режим 4x4. Этот режим конфигурирует FIFO, чтобы иметь 12 4-битовых входов данных (D) и 12 4-битовых выходов данных (Q). Порты D0[3:0]—D9[3:0] отображают- ся на порты Q0[3:0]—Q9[3:0]. Порты D5[7:4] и D6[7:4] являются двумя дополнитель- ными входными портами, которые обслуживаются как порты D10[3:0] и Dll[3:0] и отображаются на выходные порты Q5[7:4] и Q6[7:4]. Другие порты В[7:4] не исполь- зуются. В табл. 11.5 показано детальное отображение портов в режиме 4x4. Оба режима поддерживают флаги FULL, EMPTY, ALMOSTFULL и ALMOSTEMPTY. Режим 8x4. Этот режим конфигурирует FIFO, чтобы иметь 10 8-битовых входов данных (D) и 10 4-битовых выходов данных (Q). В режиме 4x8 мультиплексор 2:1 в выходном пути данных преобразует 8-битовые входные данные в 4-битовые выходные данные. Режим 8x4 обычно используется, когда частота выходного синхросигнала в два раза больше частоты входного синхросигнала и, таким образом, выходные данные Таблица 11.5 Отображение входов и выходов данных элемента OUT_FIFO в режиме 4x4 Отображение He используется D10[3:0] D0[3:0] -» Q0[3:0] l[3:0] -> QI [3:0] D2[3:0] -» Q2[3:0] D3[3:0] -» Q3[3:0] D4[3:0] -> Q4[3:0] D5[3:0] -> Q5[3:0] D6[3:0] -> Q6[3:0] D7[3:0] -» Q7[3:0] D8[3:0] Q8[3:0] D9[3:0] -> Q9[3:0] является D5[7:4] —> Q5[7:4] Q0[7:4] QI [7:4] Q2[7:4] Q3[7:4] Q4[7:4] Q7[7:4] Q8[7:4] Q9[7:4] Dll[3:0] является D6[7:4] —> Q6[7:4] Таблица 11.6 Отображение входов и выходов данных элемента OUT_FIFO в режиме 4x4 Отображение D0[7:0] - -> Q0[3:0] Dl[7:0] - -> Ql[3:0] D2[7:0] - -> Q2[3:0] D3[7:0] - -> Q3[3:0] D4[7:0] - э Q4[3:0] D5[7:0] - -> Q5[3:0] D6[7:0] - -> Q6[3:0] D7[7:0] - э Q7[3:0] D8[7:0] - э Q8[3:0] D9[7:0] - э Q9[3:0]
180 Раздел 11 являются половинной ширины входных данных. В табл. 11.6 показано детальное отображение портов в режиме 8x4. Примитив элемента OUT-FIFO приведен в приложении А. 11.4.3. Перезагрузка элемента IN.FIFO Элемент IO.FIFO имеет единственный асинхронный сброс, который внутренне ре- синхронизируется областями синхронизации как для чтения, так и для записи. Чтобы гарантировать правильный сброс, RESET должен быть установлен в высокий уро- вень в течение, по крайней мере, четырех циклов, либо RDCLK, либо WRCLK (какой медленнее) до записи в IO.FIFO. Сигналы RDEN и WREN должны удерживаться на низком уровне, пока RESET устанавливается. Элемент IO.FIFO должен удерживаться в состоянии сброса до тех пор, пока синх- росигналы либо записи, либо чтения устанавливаются и стабилизируются. Аналогич- но, если после конфигурации синхросигналы чтения или записи все еще не пригодны, элемент IO.FIFO должен быть сброшен (как описано выше) после того, как синхро- сигналы будут сформированы. 11.4.4. Флаги элемента IO.FIFO Флаг FULL, когда установлен в высокий уровень, сигнализирует, что ядро FIFO и входной регистр оба полные. Состояние выходного регистра игнорируется. Флаг EMPTY указывает на состояние данных в выходном регистре. Когда флаг EMPTY установлен в высокий уровень, данные в выходном регистре недействительны. Флаги ALMOSTEMPTY и ALMOSTFULL предоставляют раннюю индикацию, что элемент IO.FIFO является приближающимся к своим пределам. Эти флаги мо- гут конфигурироваться для установки в один или два цикла перед тем, как IO.FIFO достигнет своего полного или пустого состояния. Значение 1 указывает, что оста- лось только одно слово для чтения или записи. Значение 2 указывает, что осталось только два слова для чтения или записи. Флаги ALMOSTEMPTY и ALMOSTFULL необязательно перекрываются с флага- ми FULL и EMPTY. Можно иметь установленный ALMOSTEMPTY и аннулированный EMPTY перед установкой EMPTY. Это произойдет, если WRCLK будет более чем в два раза быстрее, чем RDCLK. 11.5. Выводы К расширенным логическим ресурсам ввода-вывода FPGA 7-й серии относят- ся входные последовательно-параллельные преобразователи ISERDESE2 и выходные параллельно-последовательные преобразователи OSERDESE2. Одной из областей применения блоков ISERDESE2 и OSERDESE2 является высо- коскоростная передача данных между двумя FPGA, расположенными на одной плате. Блок ISERDESE2 представляет собой последовательно-параллельный преобразо- ватель с определенными логическими свойствами и специфической синхронизацией, спроектированный для упрощения реализации высокоскоростных приложений с син- хронным источником данных. Блок ISERDESE2 может быть настроен для реализации следующих типов интер- фейсов (режимов работы): MEMORY (по умолчанию), MEMORY.DDR3, MEMORY. QDR, OVERSAMPLE и NETWORKING. Блок ISERDESE2 состоит из модуля собственно последовательно-параллельного преобразователя, мультиплексоров выбора источника последовательных данных, мо- дуля сигнала разрешения синхронизации входа, а также подмодуля Bitslip для пере- упорядочивания потока приходящих данных.
Расширенные логические ресурсы ввода-вывода 181 Модуль разрешения синхронизации функционирует как последовательно-парал- лельный преобразователь 2:1, синхронизируется сигналом CLKDIV. Данный модуль необходим для двунаправленных интерфейсов памяти, когда блок ISERDESE2 конфи- гурируется для преобразователя 1:4 в режиме DDR. Порт OFB в модулях ISERDESE2 и OSERDESE2 может использоваться для пе- редачи данных, передаваемых на OSERDESE2, обратно к ISERDESE2. При передаче данных между различными FPGA блоки OSERDESE2 и ISERDESE2 взаимодействуют между собой, при этом биты на входах OSERDESE2 имеют обрат- ный порядок на выходах блока ISERDESE2. Методы синхронизации или типы интерфейсов блока ISERDESE2, фактически, являются режимами его работы, которые определяют не только способ синхрониза- ции, но и внутреннюю структуру блока ISERDESE2. Режим MEMORY-QDR имеет сложную структуру синхронизации, как результат требований памяти QDR. Этот режим поддерживается только когда используется программа MIG (генератор интерфейса памяти). Режим OVERSAMPLE используется для захвата двух фаз данных DDR. Режим MEMORY-DDR3 имеет сложную структуру синхронизации, как результат требований пакета DDR3. Этот режим поддерживается только когда используется генератор интерфейса памяти MIG. Два модуля ISERDESE2 могут использоваться для построения последовательно- параллельного преобразователя размером до 1:10 или 1:14 (только в режиме DDR). Подмодуль Bitslip используется для выравнивания слов в приложениях сетевого типа с синхронным источником. Подмодуль Bitslip переупорядочивает параллельные данные, позволяя каждой комбинации повторяющегося обучающего шаблона, полу- ченного преобразователем, быть представленным в структуру FPGA. При установке входа BITSLIP блока ISERDESE2, последовательный поток прихо- дящих данных на параллельной стороне переупорядочивается. Эта операция повто- ряется до тех пор, пока требуемая преамбула не появится на выходах ISERDESE2. Подмодуль Bitslip доступен только в режиме NETWORKING, во всех других ре- жимах он запрещен. Блок OSERDESE2 является специализированным параллельно-последователь- ным преобразователем для упрощения реализации высокоскоростных интерфейсов с синхронным источником. Каждый модуль OSERDESE2 включает специализирован- ный преобразователь данных и преобразователь сигналов управления третьим состо- янием. Оба преобразователя могут конфигурироваться в режимах SDR и DDR. Преобразование данных может выполняться в соотношении до 8:1, а также 10:1 и 14:1 (если используется расширение ширины слова блока OSERDESE2). Преобразо- вание 3-го состояния может быть выполнено в соотношении до 4:1. Последнее являет- ся спецификой режима DDR3 для поддержки высокоскоростных интерфейсов памяти. Блок OSERDESE2 состоит из двух модулей: параллельно-последовательного пре- образователя данных и параллельно-последовательного преобразователя третьего со- стояния. Оба модуля имеют одни и те же сигналы управления (CLK, CLKDIV, RST), однако разные входные и выходные порты. Параллельно-последовательный преобразователь данных функционирует в двух режимах: с базовой (SDR) и удвоенной (DDR) скоростью передачи данных. Для преобразования данных блок OSERDESE2 использует два синхросигнала: CLK и CLKDIV. CLK является высокоскоростным последовательным синхросигналом, CLKDIV является разделенным параллельным синхросигналом. Синхросигналы CLK и CLKDIV должны быть выровнены по фазе.
182 Раздел 11 Перед использованием к блоку OSERDESE2 должен быть применен сброс для инициализации внутреннего счетчика, который управляет потоком данных. Преобразователь третьего состояния может преобразовывать только до четырех битов параллельных сигналов третьего состояния. Преобразователь третьего состо- яния не может каскадироваться. Вывод OFB модуля OSERDESE2 имеет две функции: как путь обратной связи к выводу OFB модуля ISERDESE2; как соединение с блоком ODELAYE2 для реализации задержки выходного сигнала модуля OSERDESE2 в блоке ODELAYE2. FPGA 7-й серии имеют небольшие элементы памяти FIFO ввода-вывода IN.FIFO и OUT.FIFO (IO.FIFO), которые расположены в каждом банке ввода-вывода. Наиболее общим способом использования элементов IO.FIFO является интер- фейс с внешними компонентами как расширение IOLOGIC (т.е. ISERDES или IDDR и OSERDES или ODDR). Элементы IO.FIFO могут также использоваться внутрен- ней логикой FPGA. Каждый банк ввода-вывода содержит четыре элемента IO.FIFO, с одним эле- ментом IO.FIFO на группу байта. Группа байта (byte group) определяется как груп- па из 12 двусторонних выводов банка. Элементы IO.FIFO физически выровнены к группе байта. Элемент IN.FIFO может соединяться с блоком ILOGIC (т.е. ISERDESE2, IDDR или IBUF) для получения входных данных и передачи их на структуру FPGA. Эле- мент OUT.FIFO может соединяться с OLOGIC (т.е. OSERDESE2, ODDR или OBUF) для передачи данных от структуры FPGA и посылке их через элемент OUT.FIFO в буферы ввода-вывода ЮВ. Элемент IO.FIFO имеет входной регистр, ядро FIFO с глубиной записи 7 и выход- ной регистр. Входной и выходной регистры являются неотъемлемой частью элемента IO.FIFO. Таким образом, элемент IO.FIFO имеет глубину на девять записей памяти FIFO (включая входные и выходные регистры). Типичное использование IO.FIFO: буфер для параллельного интерфейса ввода- вывода пересекающегося между двумя доменами частот или последовательно-парал- лельный/параллельно-последовательный преобразователь 2:1 для разъединения фи- зического интерфейса от структуры FPGA, чтобы ослабить требования к произво- дительности структуры. Глубина в 8 записей элемента IN.FIFO поддерживает передачу данных, используя два режима работы: 4x4 и 4x8. Оба режима поддерживают флаги FULL, EMPTY, ALMOSTFULL и ALMOSTEMPTY. Элемент OUT.FIFO располагается рядом с соответствующим элементом IN.FIFO и физически выравнивается к байтовой группе ввода-вывода для оптимизации про- изводительности. Элемент OUT.FIFO имеет глубину 8 записей и поддерживает пере- дачу данных в двух форматах: 4x4 и 8x4. Оба режима поддерживают флаги FULL, EMPTY, ALMOSTFULL и ALMOSTEMPTY.
12 Ресурсы синхронизации FPGA 7-й серии Проектирование подсистемы синхронизации играет важную роль в разработке цифровой системы. Подсистема синхронизации непосредственно влияет на произво- дительность проекта, на потребляемую мощность и, в итоге, на стоимость. Сложные цифровые системы отличает необходимость наличия нескольких источников синхро- сигналов для управления различными частями проекта (логикой, памятью, вводом- выводом, последовательными интерфейсами данных, контроллерами стандартных протоколов и др.). Проблема усугубляется очень жесткими системными требова- ниями на временные параметры каждого управляющего синхросигнала, такие как: • частота синхронизации; • параметры скважности (длительность высокого и низкого уровней в пределах такта); • величина фазового сдвига относительно опорного или иного синхросигнала и др. К самим синхросигналам также предъявляются очень жесткие требования к их качеству. Синхросигналы современных цифровых систем должны отличаться: • малым перекосом (фазовым сдвигом) при доставке синхросигнала к различным входам синхронизации компонентов проекта (точкам синхронизации проекта); • уменьшенной флуктуацией (дрожанием фронтов); • отсутствием помех (glitch), кратковременных импульсов, которые могут возни- кать во время функционирования системы и др. Ресурсы синхронизации FPGA 7-й серии представляют собой достаточно разви- тую иерархическую структуру, содержащую различные компоненты, которая на основе внешних опорных (эталонных) синхросигналов позволяет сформировать необходимые сигналы синхронизации для управления цифровой системой. 12.1. Введение в ресурсы синхронизации FPGA 7-й серии Ресурсы синхронизации FPGA 7-й серии включают глобальные и региональные ресурсы, а также блоки формирования синхросигналов (блоки управления синхрони- зацией — Clock Management Tiles — CMTs). Каждый блок СМТ в свою очередь включает один блок управления синхронизацией смешанного режима (mixed-mode clock manager — ММСМ) и один блок фазовой автоподстройки частоты (phase-locked loop — PLL). С точки зрения системы синхронизации каждое устройство FPGA 7-й серии де- лится на регионы синхронизации. Число регионов синхронизации зависит от размеров устройства и в FPGA 7-й серии может изменяться от 4 для малых устройств до 24 для больших устройств. Регион синхронизации охватывает все синхронизируемые элемен- ты в некоторой области FPGA: блоки CLB, блоки ввода-вывода, приемопередатчики GT, блоки DSP, блоки памяти RAM, блоки СМТ и др. В центре каждой FPGA 7-й серии проходит вертикальный канал глобальной син- хронизации (Global Clock Column), который делит устройство на левую и правую сто- рону. Регион синхронизации распространяется от канала глобальной синхронизации
184 Раздел 12 Рис. 12.1. Укрупненная архитектура ресурсов синхронизации FPGA 7-й серии влево или вправо до границы устройства. Каждый регион синхронизации содержит также один блок формирования синхросигналов СМТ (рис. 12.1). В высоту один регион синхронизации занимает 50 блоков логических CLB. Обыч- но регион синхронизации, кроме блоков CLB, охватывает один банк ввода-вывода (50 двунаправленных выводов). Кроме того, в зависимости от конкретного устройства регион синхронизации может охватывать 10 блоков памяти RAM 36К, 20 секций DSP, СМТ Column I/O Column Рис. 12.2. Ресурсы региона синхронизации
Ресурсы синхронизации FPGA 7-й серии 185 4 (один квадрант) последовательных приемопередатчиков GT, а также половину стол- бца интегрированного блока для PCI Express. В центре каждого региона синхронизации проходит горизонтальный канал синхро- низации (horizontal clock row — HROW). Блоки CLB располагаются по 25 блоков CLB вверх и 25 блоков CLB вниз от канала HROW. Внешние синхросигналы в FPGA 7-й серии могут поступать только на специальные выводы синхронизации (clock-capable input-output — ССЮ), называемые в дальнейшем просто СС-входы. Каждый банк ввода-вывода содержит 4 таких вывода: два выше и два ниже горизонтального ка- нала синхронизации HROW (рис. 12.2). 12.1.1. Ресурсы трассировки синхронизации Ресурсы трассировки синхронизации в FPGA 7-й серии представляют собой ие- рархическую структуру, которая состоит из: • линий канала глобальной синхронизации; • линий горизонтальных каналов синхронизации; • деревьев региональной синхронизации; • деревьев синхронизации ввода-вывода. Каждое устройство FPGA 7-й серии содержит 32 линии глобальной синхрониза- ции, которые образуют в центре устройства магистраль глобальной синхронизации (Global Clocking Backbone)*. В регионы синхронизации глобальные синхросигналы поступают по линиям горизонтального канала HROW, который содержит 12 линий. К конкретной точке в регионе синхронизации глобальные синхросигналы поступают по деревьям региональной синхронизации, а к компонентам ввода-вывода — по де- ревьям синхронизации ввода-вывода. Все линии глобального и горизонтального каналов синхронизации, а также де- ревья региональной синхронизации и синхронизации ввода-вывода управляются со- ответствующими буферами. Отметим, что по линиям синхронизации FPGA 7-й серии, кроме синхросигналов, могут передаваться сигналы управления установки или сброса SR (set/reset), а также разрешения синхронизации СЕ (clock enable). 12.1.2. Буферы синхронизации Важную роль в системе синхронизации FPGA 7-й серии играют буферы синх- ронизации. Дело в том, что компонентами синхронизации пользователь управляет через примитивы буферов синхронизации. Но каждый буфер синхронизации имеет конкретное физическое местоположение в системе синхронизации. Отсюда следуют очень жесткие ограничения на входные сигналы примитивов буферов синхронизации и ограничения на элементы, которыми может управлять каждый буфер. Для управления ресурсами трассировки синхронизации служат следующие бу- феры: • глобальные BUFG (BUFGCTRL); • горизонтальные BUFH/BUFHCE; • региональные BUFR; • ввода-вывода BUFIO; • многорегиональные BUFMR. Глобальные буферы синхронизации. Буферы глобальных синхросигналов (BUFGCTRL или просто BUFG) управляют линиями глобальных синхросигналов и На рис. 12.1 магистраль глобальной синхронизации названа каналом глобальной синх- ронизации (Global Clock Column).
186 Раздел 12 должны использоваться для доступа к глобальным линиям синхронизации. Каждый регион синхронизации может поддерживать до 12 этих глобальных линий синхрони- зации, используя 12 линий горизонтального канала. Глобальные буферы синхронизации BUFG: • могут использоваться как схема стробирования синхронизации для разрешения или запрещения синхросигналов, которые охватывают несколько регионов син- хронизации; • могут использоваться как свободные от помех (glitch) мультиплексоры для вы- бора между двумя источниками синхросигналов или отключения на расстоянии от неисправного источника синхросигнала; • могут управляться блоками СЫТ для устранения задержки распространения син- хросигнала или корректировки задержки синхросигнала по отношению к другому синхросигналу. Горизонтальные буферы синхронизации. Горизонтальный буфер синхронизации BUFH/BUFHCE обеспечивает доступ к линиям глобальной синхронизации в одном регионе синхронизации через горизонтальный канал синхронизации HROW. Он может также использоваться как схема стробирования синхросигналов (BUFHCE) для одного региона синхронизации. Каждый регион синхронизации может поддерживать до 12 синхросигналов, используя 12 горизонтальных линий синхронизации. Региональные буферы синхронизации. Региональный буфер синхронизации BUFR управляет деревом региональной синхронизации, которое управляет всеми на- значениями синхронизации в том же регионе синхронизации и может программиро- ваться для деления приходящей тактовой частоты. Буферы синхронизации ввода-вывода. Буфер синхронизации ввода-вы вода BUFIO управляет деревом синхронизации ввода-вывода, обеспечивая доступ к синхро- низации всех последовательных ресурсов ввода-вывода в том же банке ввода-вывода. Совместно с программируемым параллельно-последовательным/последователь- но-параллельным преобразователем (serializer/deserializer) в блоке ввода-вывода IOB буферы синхронизации BUFIO и BUFR позволяют системам с синхронными источ- никами пересекать области синхронизации без использования дополнительных ло- гических ресурсов. Многорегиональные буферы синхронизации. Многорегиональные буферы синх- ронизации BUFMR позволяют региональным синхросигналам и синхросигналам вво- да-вывода охватывать вертикально до трех соседних регионов синхронизации. В одном регионе синхронизации или банке ввода-вывода может поддерживать- ся до четырех уникальных синхросигналов ввода-вывода и до четырех уникальных региональных синхросигналов. Ресурсы трассировки высокопроизводительных синхросигналов (High-performan- ce clocks) подсоединяют определенные выходы блоков СМТ к внешним выводам с очень малой флуктуацией и минимальным искажением скважности. 12.1.3. Блоки формирования синхросигналов СМТ Каждый регион синхронизации в FPGA 7-й серии содержит блок формирования синхросигналов СМТ (называемый также блоком управления синхронизацией), кото- рый, в свою очередь, содержит один блок управления синхронизацией смешанного режима (mixed-mode clock manager — ММСМ) и один блок фазовой автоподстройки частоты (phase-locked loop — PEL). Блоки ММСМ и PLL служат как синтезаторы частоты для широкого диапазо- на частот, фильтры флуктуации (jitter) для внешних и внутренних синхросигналов
Ресурсы синхронизации FPGA 7-й серии 187 а также устраняют перекос (deskew) синхросигналов. Блок PLL включает подмно- жество функций блока ММСМ. Блоки ММСМ и PLL могут использовать эталонные (опорные) синхросигналы, которые поступают от внешних выводов. Блоки ММСМ имеют широкие возможности по сдвигу фазы в каждом направ- лении и могут использоваться в динамическом режиме сдвига фазы. Блоки ММСМ также имеют дробный (fractional) счетчик либо в цепи обратной связи, либо в выход- ном пути, который обеспечивает большую гранулярность (степень детализации) для возможностей синтеза частоты. Программа (мастер синхронизации) LogiCORE IP служит для упрощения использования блоков ММСМ и PLL при создании сети синх- ронизации в проектах FPGA 7-й серии. Мастер синхронизации выбирает подходящие ресурсы блока СМТ и оптимально конфигурирует ресурсы СМТ и соответствующие ресурсы трассировки синхронизации. 12.2. Архитектура ресурсов синхронизации FPGA 7-й серии 12.2.1. Обобщенная архитектура системы синхронизации На рис. 12.3 показан верхний уровень архитектуры ресурсов синхронизации FPGA 7-й серии. Центральные вертикальные линии синхронизации образуют магистраль синхро- низации (Clock Backbone) и делят устройство на левый и правый регионы синхрони- зации. Горизонтальная центральная линия (Horizontal Central Line) делит устройство на верхнюю и нижнюю части. Ресурсы магистрали синхронизации зеркально отра- жаются на обе стороны горизонтальных соседних регионов, расширяя ресурсы гло- Clocking Center
188 Раздел 12 бальной синхронизации на соседний горизонтальный регион. Верхнюю и нижнюю части устройства отделяет два множества глобальных буферов синхронизации BUFG: 16 буферов для верхней части устройства и 16 буферов для нижней части устройст- ва. Буферы BUFG не принадлежат регионам синхронизации и могут достигать любой синхронизируемой точки в устройстве. Все горизонтальные ресурсы синхронизации находятся в центре регионального горизонтального канала синхронизации HROW. Вертикальные (не региональные) ресурсы синхронизации содержатся в магистрали синхронизации (Clock Backbone) или в магистрали блока СМТ (СМТ Backbone). 12.2.2. Архитектура региона синхронизации На рис. 12.4 показаны ресурсы региона синхронизации и их основные соединения. Буфер глобальной синхронизации BUFG может управлять синхронизируемыми элементами в каждом регионе через канал HROW, даже если он физически здесь не расположен. Буферы горизонтальной синхронизации BUFH через канал HROW управ- ляют каждой синхронизируемой точкой в регионе. Буферы BUFG и BUFH совместно используют линии трассировки в канале HROW. Буферы ввода-вывода BUFIO и буферы региональной синхронизации BUFR рас- полагаются внутри банков ввода-вывода. Буфер BUFIO управляет только ресурсами Рис. 12.4. Основной вид региона синхронизации
Ресурсы синхронизации FPGA 7-й серии 189 То Bank Above Four BUROs To Bank Below Рис. 12.5. Регион синхронизации на правой стороне устройства синхронизации ввода-вывода, в то время как буфер BUFR управляет как ресурсами ввода-вывода так и ресурсами структуры FPGA (Fabric). Буфер BUFMR обеспечивает многорегиональные соединения в виде цепочки бу- феров BUFIO и BUFR. Входы синхронизации (clock-capable inputs — СС-входы) под- соединяют внешние синхросигналы к ресурсам синхронизации в устройстве. Опре- деленные ресурсы могут подсоединяться к регионам выше и ниже через магистраль блока СМТ (СМТ Backbone). На рис. 12.5 показан более детальный вид ресурсов синхронизации в регионе синхронизации на правой стороне устройства. 12.2.3. Взаимодействие буферов BUFG, BUFH и блока СМТ На рис. 12.6 показана детальная структура соединений глобального буфера BUFG и регионального буфера BUFH, блока СМТ и входов синхронизации, а также число доступных ресурсов в регионе (здесь показана правая сторона региона). Любые 4 входа синхронизации СС могут управлять компонентами PLL/ММСМ в блоке СМТ и буфером BUFH. Буферы BUFG и BUFH совместно используют 12 линий в канале HROW и могут управлять всеми точками синхронизации в регионе. Буферы BUFG могут также управлять буферами BUFH. Это позволяет с помощью сигналов разрешения синхронизации (clock enables - СЕ) буферов BUFHCE в одном регионе использовать различные глобальные сигналы синхронизации. Квадрант приемопередатчиков GT (GT Quad) в магистрали синхронизации имеет 10 специализированных трасс для управления блоком СМТ и буферами синхрониза- ции. Буферы BUFR, расположенные в банке ввода-вывода, имеют 4 трассы, управ- ляющие точками синхронизации в структуре FPGA, блоке СМТ и буфере BUFG. Блоки СМТ могут, с некоторыми ограничениями, управлять другими блоками СМТ в соседних регионах через магистраль СМТ (СМТ Backbone). Аналогично, входы синхронизации СС могут, с теми же самыми ограничениями, управлять блоками СМТ в соседних регионах. Входы синхронизации СС могут управлять буферами BUFG
190 Раздел 12 Рис. 12.6. Детали региона синхронизации (взаимодействие буферов BUFG, BUFH и блока СМТ) везде в той же самой стороне (верхней или нижней) устройства. В магистрали СМТ имеется четыре трассы для поддержки соединений между вертикальными регионами. Источники синхронизации из одного региона могут управлять ресурсами буферов синхронизации в их собственных регионах, а также в соседнем горизонтальном реги- оне. Блоки СМТ, входы синхронизации СС и блоки GT могут управлять синхросигна- лами в горизонтальном соседнем регионе через буфер BUFH, а также подсоединяться к буферам BUFG в той же самой части (верхней или нижней) устройства. Логика FPGA управляет выводами СЕ буферов BUFG и BUFH. Она может также управлять синхросигналами в тех же самых буферах, но следует соблюдать осторож- ность, потому что такая синхронизация не предсказуема. 12.2.4. Взаимодействие буферов BUFR, BUFIO, BUFMR и приемопередатчиков GT На рис. 12.7 показана более детальная структура ресурсов синхронизации ввода- вывода и соответствующие соединения. Каждый банк ввода-вывода содержит 4 буфера BUFIO и 4 буфера BUFR. Каж- дый из этих буферов синхронизации может управляться определенной парой входов синхронизации или может непосредственно управляться определенным выходным син- хросигналом блока ММСМ. Кроме того, буферы BUFR имеют 4 трассы, управляющие точками синхронизации в структуре FPGA, блоке СМТ и буфере BUFG.
Ресурсы синхронизации FPGA 7-й серии 191 BUFG.' 1 1 1 1 | Clock | Backbone 1 1 1 1 1 1 1 1 1 Гч 1 1^ жВ: 1 mm 1 1 1 1 1 1 1 1 1 1 1 1 i I Fabric СМТ Column PLl j i Fabric s SRCC Pair MRCC Pair вино bufmr | bufmr М ЙЙЙЯЬ- MW жУя8*Е5аг^*Ч <Q> <1> <2> <3> MRCC Pair SRCC Pair CMT Backbone Рис. 12.7. Детали региона синхронизации с буферами BUFR, BUFMR и BUFIO Две пары входов синхронизации, называемые MRCC, поддерживают схему много- региональной синхронизации. Пара выводов MRCC может управлять определенным буфером BUFMR, который поочередно может управлять буферами BUFIO и BUFR в том же самом и соседнем регионах, способствуя многорегиональным интерфей- сам. Аналогично, квадрант приемопередатчиков GT также может управлять буфе- рами BUFMR. Выходы ММСМ[3:0] блока ММСМ имеют специализированный высокопроизводи- тельный дифференциальный путь к буферам BUFR и BUFIO. Это свойство также от- носится к высокопроизводительным синхросигналам (high-performance clock — НРС). 12.2.5. Архитектурные особенности отдельных семейств и устройств FPGA 7-й серии Хотя все FPGA 7-й серии построены по единой архитектуре, однако имеются некоторые архитектурные отличия между семействами и устройствами в пределах одного семейства. Каждая FPGA 7-й серии имеет минимум один полный столбец ввода-вывода на левой стороне устройства. Блок GT может быть любым из после- довательных приемопередатчиков, поддерживаемых FPGA 7-й серии (GTP, GTX или GTH). Устройства с блоками GT либо имеют смешанный столбец блоков GT и бло- ков ввода-вывода на правой стороне устройства (некоторые устройства семейств Kin-
192 Раздел 12 tex-7 и Artix-7), либо имеют полный столбец блоков GT с правой стороны (некото- рые устройства семейств Kintex-7 и Vitrex-7) и полный столбец блоков ввода-вывода с правой стороны устройства. Другие устройства семейства Vitrex-7 имеют полные столбцы GT на правой и левой сторонах с полными столбцами блоков ввода-вывода также на правой и левой сторонах. Устройство Artix-7 200Т имеет приемопередатчики GTP вверху и внизу рядом со столбцом синхронизации. Следовательно, не все регионы синхронизации содержат все блоки, показанные на предыдущих рисунках (детали можно найти в документе UG475 7 Series FPGAs Packaging and Pinout. Product Specification и приложении В документа UG472 7 Series FPGAs Clocking Resources. User Guide). 12.2.6. Возможности соединения элементов синхронизации FPGA 7-й серии Как можно заметить из предыдущего рассмотрения архитектуры ресурсов синх- ронизации FPGA 7-й серии, соединение элементов синхронизации между собой пред- ставляет непростую задачу. Для этого необходимо точно знать, что можно подсоеди- нять к входам и выходам каждого элемента синхронизации. Для облегчения решения указанной задачи в табл. А.72 приложения А суммируются возможности соединения элементов синхронизации FPGA 7-й серии. 12.3. Входы синхронизации (СС-входы) Внешние пользовательские синхросигналы подаются на FPGA по дифференци- альным парам выводов синхронизации, называемых входами с возможностью син- хронизации (clock-capable — СС) или просто СС-входами. СС-входы обеспечивают специализированный высокоскоростной доступ к внутренним глобальным и регио- нальным ресурсам синхронизации. СС-входы используют специальную трассировку и должны использоваться в качестве входов синхронизации для гарантии временных параметров и различных свойств сигналов синхронизации. Отметим, что в FPGA 7-й серии запрещено использование для синхронизации выводов общего назначения. Из 50 двунаправленных выводов каждого банка ввода- вывода 4 пары выводов являются СС-входами (т. е. всего 8 выводов). Свойства С С-входа: • может подсоединяться к дифференциальному (differential) или асимметричному (single-ehded) синхросигналу на печатной плате; • может конфигурироваться для любых стандартов ввода-вывода, включая диф- ференциальные стандарты; • имеет главный или положительный (P-side) и подчиненный или отрицательный (N-side) выводы. В паре СС-входа асимметричные входы синхросигналов должны назначаться главному выводу Р. Если асимметричный синхросигнал подсоединяется к Р-выводу дифференциальной пары, то N-вывод не может использоваться как другой асиммет- ричный вывод синхросигнала — он может использоваться только как двунаправлен- ный вывод общего назначения (см. документ UG475 7 Series FPGAs Packaging and Pinout. Product Specification). В каждом банке ввода-вывода СС-входы организованы как две пары MRCC и две пары SRCC. Пары SRCC имеют доступ к единственному региону синхронизации и глобальному дереву синхронизации, а также до трех блоков СМТ. Пары SRCC мо- гут управлять: • линиями региональной синхронизации (буферы BUFR, BUFH, BUFIO) в пределах того же региона синхронизации;
Ресурсы синхронизации FPGA 7-й серии 193 • блоками СМТ в том же регионе и соседних регионах синхронизации; • линиями глобальной синхронизации (буфер BUFG) в той же (верхней или нижней) половине устройства. Пары MRCC имеют доступ к нескольким регионам синхронизации и глобальному дереву синхронизации. Пары MRCC функционирует так же, как пары SRCC, и могут дополнительно управлять буферами многорегиональной синхронизации BUFMR для доступа к многим (до трех) регионам синхронизации. Если СС-входы не используются как синхросигналы, то они могут применяться как обычные двунаправленные входы, при этом они могут конфигурироваться как любой асимметричный или дифференциальный стандарт ввода-вывода. 1 2.3.1. Подсоединение СС-входов к блокам СМТ СС-входы могут подсоединяться к блоку СМТ в том же регионе синхронизации и, с некоторыми ограничениями, к блокам СМТ в регионах выше и ниже данного. Один СС-вход синхронизации может управлять несколькими (до трех) блоками СМТ. В этом случае один блок СМТ должен быть расположен в том же самом регионе синхронизации, что и СС-вход, а другие блоки СМТ должны находиться в соседних регионах выше и ниже. Ресурсы, используемые в блоках СМТ, должны быть иден- тичными для этой конфигурации для того, чтобы быть автоматически размещен- ными без ограничения CLOCK_DEDICATED_ROUTE. Если требуется смесь блоков ММСМ/PLL, они должны размещаться в том же блоке СМТ первыми. Если необходимо управлять блоком СМТ от СС-входа, который не находится в том же регионе синхронизации, и нет блока ММСМ/PLL в том же регионе, в котором находится СС-вход, то должен быть установлен атрибут CLOCK_DEDICATED_ROUTE = BACKBONE. В этом случае блок ММСМ или PLL не выравнивает должным образом выходы к входному синхросигналу. Имеются также определенные ограничения специализированных ресурсов для управления блоками СМТ в смежных регионах синхронизации. Некоторые IP-ядра Xilinx используют эти ресурсы, делая их недоступными для других использований, что может приводить к нетрассируемым проектам. Если специальные трассировки к смежным регионам синхронизации недоступны, установка атрибута CLOCK-DEDICA- TED-ROUTE в значение FALSE позволяет использовать локальную логику межсо- единений. 1 2.3.2. Правила размещения СС-входов В табл. А.73 приложения А приведены правила размещения для СС-входов, кото- рые необходимо соблюдать при ручном размещении элементов синхронизации. Вы- полнение этих правил дает гарантию, что СС-входы имеют доступ к требуемой внут- ренней сети синхронизации. Двумя главными соображениями при ручном выборе выводов для СС-входов в усовершенствовании создаваемого начального проекта являются: • убедитесь, что СС-вход может подсоединяться к требуемому ресурсу синхрони- зации; • убедитесь, что требуемые ресурсы синхронизации доступны и уже не использу- ются другой частью проекта. Лучший способ избежать конфликтов при построении системы синхронизации — это использование средств автоматизированного проектирования. Необходимо также быть внимательным при переносе проекта из одного устройства в другое устройство или из одного корпуса в другой корпус.
194 Раздел 12 12.4. Ресурсы глобальной синхронизации Глобальные синхросигналы являются отдельными сетями внутренних соединений специально спроектированными для возможности достижения сигналов от всех вхо- дов синхронизации к различным ресурсам в структуре FPGA. Эти сети проектируются так, чтобы иметь наименьший перекос и наименьшую скважность распространения, наименьшую мощность и улучшенную устойчивость к флуктуациям, а также для под- держки очень высокой частоты сигналов. Понимание путей сигналов для глобальных синхросигналов расширяет понимание различных ресурсов глобальной синхронизации. Ресурсы глобальной синхронизации включают следующие компоненты: • сети и деревья глобальной синхронизации; • регионы синхронизации; • буферы глобальных синхросигналов. Сети и деревья глобальной синхронизации. В FPGA 7-й серии деревья глобаль- ной синхронизации спроектированы для функционирования с малым перекосом и ма- лым энергопотреблением. Любая неиспользуемая ветвь сети отсоединяется. Деревья глобальной синхронизации могут также использоваться для управления логическими ресурсами, такими как сброс или разрешение синхронизации. Например, в блоках CLB глобальные линии синхронизации, кроме выводов CLB, могут также управлять выводами сброса/установки SR и разрешения синхронизации СЕ. Данное свойство можно использовать в приложениях, требующих сигналы с очень быстрым соединением или с большим коэффициентом расширения по выходу. Регионы синхронизации как ресурсы глобальной синхронизации. В FPGA 7-й серии улучшено распределение глобальной синхронизации путем использования реги- онов синхронизации. Каждый регион синхронизации может иметь до 12 глобальных областей (доменов) синхронизации. Эти 12 глобальных синхросигналов могут управ- ляться любой комбинацией из 32 глобальных буферов синхронизации. Регион синхронизации (50 блоков CLB) является границей дерева синхронизации. 12.4.1. Буферы глобальной синхронизации В каждой FPGA 7-й серии имеется 32 буфера глобальной синхронизации. СС- вход может прямо подсоединяться к любому глобальному буферу в данной половине устройства. Глобальные буферы синхронизации позволяют различным источникам синхро- сигналов или обычных сигналов иметь доступ к глобальным деревьям синхронизации и сетям. Источниками сигналов для буферов глобальных синхросигналов могут быть: • СС-выходы; • блок формирования синхросигналов СМТ, управляющий буферами BUFG в той же самой половине устройства; • выходы соседних глобальных буферов синхронизации BUFG; • логика FPGA; • региональные буферы синхронизации BUFH; • гигабитные приемопередатчики GT. Блоки СМТ в верхней (нижней) половине устройства могут управлять только буферами BUFR в верхней (нижней) половине устройства. Аналогично, только буфе- ры BUFG в данной половине устройства могут использоваться как обратная связь к блокам СМТ в данной половине устройства. СС-входы FPGA 7-й серии могут управлять глобальными буферами синхрони- зации BUFG косвенно через вертикальную сеть синхронизации, которая находится
Ресурсы синхронизации FPGA 7-й серии 195 в столбце магистрали синхронизации. 32 буфера BUFG организованы в 2 группы по 16 буферов в верхней и нижней частях устройства. Любые ресурсы (например, приемопередатчик GTX), прямо подсоединяемые к буферам BUFG, имеют верхнее или нижнее ограничение. Например, каждый блок ММСМ в верхней (нижней) части устройства может управлять только 16-ю буферами BUFG, расположенными в этой верхней (нижней) части устройства. Все глобальные буферы синхронизации BUFG могут управлять всеми регионами синхронизации устройства. Однако только 12 раз- личных синхросигналов могут использоваться в одном регионе синхронизации. Буферы глобальной синхронизации спроектированы таким образом, чтобы кон- фигурироваться как синхронные или асинхронные мультиплексоры 2:1 с двумя вхо- дами синхронизации. Имеется специализированный путь (ресурсы трассировки) для каскадирования буферов BUFG, чтобы допустить более двух выборов входных син- хросигналов. Выводы управления FPGA 7-й серии обеспечивают широкий диапазон функциональности и устойчивое переключение входов. 12.4.2. Примитивы буферов глобальной синхронизации В табл. 12.1 приведены примитивы буферов глобальной синхронизации. Все при- митивы формируются путем настройки буфера BUFGCTRL. Таблица 12.1 Примитивы буферов глобальных синхросигналов Примитив Входы Выходы Сигналы управления BUFGCTRL 10, 11 О CEO, СЕ1, IGNOREO, IGNORE1, SO, S1 BUFG 1 О — BUFGCE 1 О СЕ BUFGCE-l 1 О СЕ BUFGMUX 10, 11 О S BUFGMUX-l 10, 11 О S BUFGMUX_CTRL 10, 11 О S Более детальное описание примитивов глобальной синхронизации приведено в приложении А. 12.4.3. Дополнительные модели использования буфера BUFGCTRL Асинхронный мультиплексор синхросигналов. В некоторых случаях приложение требует немедленного переключения между входами синхронизации или обхода фрон- та чувствительности буфера BUFGCTRL. Например, когда один из входов синхрониза- ции долго не переключается. В этом случае используется асинхронный мультиплексор синхросигналов MUX. На рис. 12.8 показан пример проекта асинхронного мультиплек- сора синхросигналов с буфером BUFGCTRL, а на рис. 12.9 — временная диаграмма. Пояснения к рис. 12.9: • активный синхросигнал поступает от 10; • S активизируется высоким уровнем; • выход Clock немедленно переключается к II; • когда сигнал Ignore устанавливается в высокий уровень, отключается защита от помех. Буфер BUFGMUX-CTRL с разрешением синхронизации. Буфер BUFGMUX. CTRL с конфигурацией разрешения синхронизации примитива BUFGCTRL позволяет пользователю выбирать между входами приходящих синхросигналов. Если необходи- мо, используется разрешение синхронизации для запрещения выхода. На рис. 12.10 показан пример проекта, а на рис. 12.11 — его временная диаграмма.
196 Раздел 12 Asynchronous MUX Design Example Рис. 12.8. Пример асинхронного мультиплексора синхросигналов MUX с буфером BUFGCTRL at 10 Begin 11 Рис. 12.9. Временная диаграмма асинхронного мультиплексора синхросигналов MUX с буфером BUFGCTRL BUFGMUX_CTRL+CE Design Example Рис. 12.10. Буфер BUFGMUX.CTRL с входом СЕ и примитивом BUFGCTRL В момент времени 1 выход О использует вход 10; до момента времени 2 вход S устанавливается в высокий уровень; в момент времени Твсско.о после момента 2 выход О использует вход II; это случилось после перехода с высокого на низкий
Ресурсы синхронизации FPGA 7-й серии 197 Рис. 12.11. Временная диаграмма буфера BUFGMUX.CTRL с входом СЕ и примитивом BUFGCTRL уровень входа 10, следующего за окончанием перехода с высокого на низкий уровень входа II; в момент времени Твссск.се до события 3 вход СЕ принимает низкий уро- вень; чтобы избежать помех (glitches) на выходе, выход синхросигнала переключается на низкий уровень и сохраняет это значение до тех пор, пока не завершится переход с высокого на низкий уровень входа II. 12.5. Ресурсы региональной синхронизации Сети региональных синхросигналов являются независимыми сетями глобальной сети синхронизации. Область (домен) регионального сигнала синхронизации (BUFR) ограничивается одним регионом синхронизации, один сигнал синхронизации ввода- вывода управляет одним банком ввода-вывода. Эти сети особенно эффективны для проектов интерфейсов с синхронными источниками. Ресурсы региональной синхронизации включают: • СС-входы; • региональные сети синхронизации; • буферы синхронизации ввода-вывода BUFIO; • региональные буферы синхронизации BUFR; • многорегиональные буферы синхронизации BUFMR или BUFMRCE; • буферы горизонтальной синхронизации BUFH, BUFHCE; • синхросигналы высокой производительности НРС (High-Performance Clocks). СС-входы как ресурсы региональной синхронизации. Каждый регион имеет 4 па- ры СС-входов на один банк ввода-вывода. Пары СС-входов являются специализиро- ванными парами ввода-вывода в выбранном месте со специальными аппаратными со- единениями к ближайшим региональным ресурсам синхронизации и другим ресурсам синхронизации. В каждом банке имеется 4 специализированных места для СС-входов. СС-пара, когда используется как вход синхронизации, может управлять буферами BUFIO, BUFMR и BUFR. Каждый столбец ввода-вывода поддерживает региональный буфер синхронизации BUFR. Каждое устройство имеет 2 столбца ввода-вывода. СС-входы могут управлять любым буфером BUFR в регионе, но только опреде- ленные СС-входы могут управлять определенными буферами BUFIO, а вход MRCC может управлять буферами BUFMR в отношении 1:1. Это значит, что СС-вход имеет только одно соединение: либо к буферу BUFIO, либо к буферу BUFMR. Региональные сети синхронизации. В дополнение к глобальным деревьям и сетям синхронизации, FPGA 7-й серии содержат региональные деревья и сети синхрониза- ции. Региональные деревья синхронизации также спроектированы с целью малого
198 Раздел 12 перекоса сигналов и малого энергопотребления. Неиспользуемые ветви деревьев от- соединяются. Региональные деревья синхронизации могут также управлять загрузкой регистров или разветвлением по выходам, когда исчерпаны все логические ресурсы. Региональные сети синхронизации ограничены одним регионом синхронизации. На один регион синхронизации приходится 4 независимые региональные сети синхро- низации. Для доступа к региональной сети необходимо создать экземпляр буфера BUFR. 12.5.1. Буферы синхронизации ввода-вывода BUFIO Буфер синхронизации ввода-вывода BUFIO управляет специализированной сетью синхронизации в пределах банка ввода-вывода, независимо от глобальных ресурсов синхронизации. Поэтому буфер BUFIO идеально подходит для приема данных, синх- ронизируемых источником. В регионе синхронизации (в банке ввода-вывода) имеется четыре буфера BUFIO. Каждый буфер BUFIO может управлять единственной сетью синхронизации вво- да-вывода в данном регионе или банке ввода-вывода. Однако буфер BUFIO не может управлять логическими ресурсами (блоками CLB, RAM, DSP и др.), так как сеть синхронизации ввода-вывода охватывает только столбец ввода-вывода в регионе. Буферы BUFIO могут управляться: • выводами SRCC и MRCC в данном регионе; • выводами MRCC соседнего региона используя буфер BUFMR; • выходами синхронизации 0-3 блока ММСМ, управляя высокоскоростными синх- росигналами НРС в том же регионе синхронизации; • общими внутренними соединениями. Описание примитива буфера BUFIO приведено в приложении А. 12.5.2. Буфер региональной синхронизации BUFR Буфер BUFR является другим буфером региональной синхронизации. Буфе- ры BUFR управляют синхросигналами в специализированной сети синхронизации в пределах региона, независимо от дерева глобальной синхронизации. Каждый буфер BUFR может управлять 4 региональными сетями синхронизации в данном регионе. В отличие от буферов BUFIO, буферы BUFR могут управлять логикой ввода-вывода и логическими ресурсами (блоками CLB, RAM, DSP и др.). Буферы региональной синхронизации BUFR могут управлять СС-входами, ло- кальными межсоединениями, высокопроизводительными сигналами НРС (CLKOUTO- CLKOUT3) блоков ММСМ или буферами BUFMR в данном и соседнем регионе. Бу- феры BUFR могут также прямо управлять входами синхронизации блока ММСМ и буферами BUFG. Кроме того, буферы BUFR способны генерировать разделенные выходы синхрни- зации по отношению к входу синхросигнала. Значение делителя равно целому числу от 1 до 8 (атрибут BUFR-DMDE). Буферы BUFR являются идеальными для синхро- низируемых источником приложений, требующих пересечения области синхронизации или последовательно-параллельного преобразования. Буферы BUFR могут управляться: • выводами SRCC и MRCC в данном регионе; • выводами MRCC соседнего региона используя буфер BUFMR; • выходами синхронизации 0-3 блока ММСМ, управляя высокоскоростными синх- росигналами НРС в том же регионе синхронизации; • выходами синхронизации 0-3 блока ММСМ; • общими внутренними соединениями.
Ресурсы синхронизации FPGA 7-й серии 199 Каждый столбец ввода-вывода поддерживает региональные буферы синхрониза- ции. В устройстве имеется два столбца ввода-вывода. Описание примитива буфера BUFR приведено в приложении А. 12.5.3. Модели использования буферов BUFIO и BUFR Буфер BUFIO идеально подходит для приема данных, синхронизируемых источ- ником. Буфер BUFR является идеальным для приложений с синхронными источ- никами, требующих пересечения области синхронизации или для последовательно- параллельного преобразования. В отличие от буферов BUFIO, буферы BUFR могут синхронизировать как ресурсы блоков ввода-вывода ЮВ, так и ресурсы логики FPGA. На рис. 12.12 показан пример использования буферов BUFIO и BUFR. FPGA logic resources Рис. 12.12. Использование буферов BUFIO и BUFR для управления логическими ресурсами 12.5.4. Многорегиональный буфер синхронизации BUFMR/BUFMRCE Буфер BUFMR заменяет многорегиональную (многобанковую) поддержку для буферов BUFR и BUFIO, доступных в предыдущих архитектурах семейства Virtex. В одном банке ввода-вывода имеется 2 буфера BUFMR. Каждый буфер BUFMR мо- жет управляться одним специализированным выводом MRCC данного банка. Выводы MRCC обозначаются с аббревиатурой MRCC в имени вывода как для Р, так и для N выводов пары выводов (например, IO_L12P_T1_MRCC_12 или IO_L12N_T1_MRCC_12). Буферы BUFMR управляют буферами BUFIO и/или BUFR в данном регионе/бан- ке и в регионе/банке выше и ниже. Примитивы BUFR и BUFIO должны быть ин- станцированы отдельно. Когда используются делители буфера BUFR (не обход буфера), буфер BUFMR должен запрещаться путем сброса вывода СЕ, должен сбрасываться буфер BUFR (установкой сигнала CLR), а затем должен устанавливаться сигнал СЕ. Эта после- довательность операций дает уверенность, что все выходные синхросигналы буферов BUFR выровнены по фазе. Если делители в буферах BUFR не используются, то то- пология схемы требует только использования буфера BUFMR. Входы буфера BUFMR подключаются к:
200 Раздел 12 • выводам MRCC в том же самом банке; • синхросигналам блока GT в том же самом регионе. Описание примитивов буфера BUFMR приведено в приложении А. 12.5.5. Буферы горизонтальной синхронизации BUFH и BUFHCE Буфер горизонтальной синхронизации BUFH управляет горизонтальной сердце- виной дерева глобальной синхронизации в единственном регионе. Описание прими- тивов буфера BUFH приведено в приложении А. Каждый регион имеет 12 доступных буферов BUFH. Каждый буфер BUFHCE имеет вывод СЕ, который позволяет динамически отключать синхросигналы. Буфер BUFH может управляться: • выходами блоков ММСМ данного региона; • выходами буферов BUFG; • выходными синхросигналами блоков GT в том же самом или горизонтальном соседнем регионе синхронизации; • локальными внутренними соединениями; • СС-входами от каждой, левой или правой, сторон банков ввода-вывода в том же самом горизонтальном соседнем регионе или банке. Для того чтобы использовать буфер BUFH, логика должна располагаться в двух соседних друг к другу горизонтальных регионах, как показано на рис. 12.13. Рис. 12.13. Пример использования горизонтального буфера синхронизации Вывод СЕ может полностью выключать синхросигналы для сохранения мощнос- ти. Потребляемая мощность и флуктуация в буфере BUFH меньше, по сравнению с буфером BUFG, управляющим двумя соседними регионами. 12.5.6. Выбор буфера синхросигнала FPGA 7-й серии предлагают разнообразные ресурсы для трассировки сигналов синхронизации цифровых систем: различные типы буферов, входных выводов синх- росигналов, средств соединения/маршрутизации др. Выбирая надлежащие ресурсы синхронизации можно улучшить возможности трассировки, производительности и ис- пользование общих ресурсов FPGA. В некоторых приложениях и проектах планирова- ние размещения (floor planning) или другие типы ручного управления могут улучшить общую производительность. Буфер глобальных синхросигналов BUFGCTRL (чаще обозначаемый BUFG) яв- ляется общим ресурсом трассировки синхросигнала. Это действительно глобальные
Ресурсы синхронизации FPGA 7-й серии 201 синхросигналы, которые могут подсоединяться к любой синхронизируемой точке в устройстве. Однако в некоторых случаях для улучшения производительности, функ- циональности или по причине доступности ресурса более выгодно использовать аль- тернативные буферы синхронизации. Буфер BUFG лучше применять, когда: • проекты или части проекта имеют глобальную область действия через большие площади устройства и локализация функций невозможна; • каскадируются аппаратные функциональные блоки, такие как блоки RAM, DSP или интегрированные IP-ядра, которые охватывают несколько регионов синхро- низации, или необходимо выполнить соединения к блокам CLB, которые не яв- ляются ближайшими; • переключая синхронные или асинхронные синхросигналы, приложения в состоя- нии переключить далеко от остановленного синхросигнала или выбрать синхро- сигнал с другой частотой (с целью уменьшения энергопотребления); • возможности сигналов разрешения синхронизации (СЕ) могут использоваться для уменьшения энергопотребления в периоды бездействия; однако в большинст- ве случаев возможности СЕ не должны использоваться для моделирования истин- ной логической функции СЕ в элементах синхронизации из-за временных огра- ничений (задержка сигнала СЕ); • функция СЕ может использоваться для синхронной инициализации элементов синхронизации после запуска устройства. Главной целью объединения буферов BUFR и BUFIO является поддержка ин- терфейсов с синхронными источниками. Буфер BUFIO синхронизирует высокоско- ростную часть блока SelectIO, а буфер BUFR синхронизирует сторону параллельно- последовательного/последовательно-параллельного преобразователя с низкой ско- ростью. Для интерфейсов, которые требуют больше логики и/или контактов ввода-выво- да, чем доступно в одном регионе синхронизации или банке ввода-вывода, использу- ется буфер BUFMR (BUFMRCE) для расширения функциональности синхросигнала в регионы синхронизации выше и ниже. Буфер BUFR может использоваться в качестве простого делителя синхросигнала в приложениях, которые требуют деления синхросигнала, не связанного с синхрон- ным источником, и когда не может использоваться блок MMCM/PLL или недоступна функция деления частоты. В этих случаях особое внимание должно быть уделено на тактирование и перекос сигналов, так как это не основная цель буфера BUFR (см. документ UG471). Буфер горизонтальной синхронизации BUFH (BUFHCE) является строго реги- ональным ресурсом и не может охватывать регионы синхронизации выше и ниже. В отличие от буфера BUFR, буфер BUFH не может делить синхросигнал. Свойства буфера BUFH: • подобен глобальному ресурсу синхронизации, только на региональной основе, охватывающей два горизонтальных региона; • может обслуживать обратную связь к блоку MMCM/PLL и компенсировать за- держку инвертирования синхросигнала; • является предпочтительным ресурсом синхронизации, когда интерфейс или об- лако логики может быть локализовано к одному региону синхронизации или двум горизонтальным соседним регионам;
202 Раздел 12 • имеет вывод разрешения синхронизации (BUFHCE), который может использо- ваться для уменьшения динамической потребляемой мощности, когда либо логи- ка, либо интерфейс и связанная с ним логика, не активны; • свойство разрешения синхронизации может обеспечивать стробирование синхро- сигнала на основе синхронизации от цикла к циклу; • подобно глобальному дереву синхронизации, буфер BUFH может подсоединяться к не синхронизируемым ресурсам в блоках CLB (разрешения или сброса), но с лучшими характеристиками перекоса; • может использоваться для синхронного запуска синхронизируемых элементов в регионе синхронизации. Ограничения на выбор ресурсов синхронизации для устройств с технологией сте- ковых кремниевых соединений SSI можно найти в документе UG872 Large FPGA Methodology Guide. Including Stacked Silicon Interconnect (SSI). 12.5.7. Синхросигналы высокой производительности (НРС) Каждый банк ввода-вывода FPGA 7-й серии содержат 4 синхросигнала высокой производительности (High-Performance Clock — НРС). Эти синхросигналы являются прямыми короткими дифференциальными соединениями к буферам BUFIO и BUFR в банке ввода-вывода. Следовательно, эти синхросигналы обеспечивают очень низкую флуктуацию и минимальное