Микросхемы ПЛИС Speedster22i от Achronix: самые быстрые и самые большие. Часть 5
Реализация Interlaken ПЛИС Speedster22i
Прежде чем рассказать об аппаратной реализации контроллера Interlaken, созданной в микросхемах Speedster22i HD1000, необходимо привести описание реализации этого же контроллера, но выполненного как софт-ядро. Давайте оценим затраты ресурсов для реализации подобного контроллера.
В документе [10] дается таблица количества задействованных ресурсов для создания интерфейса Interlaken для ПЛИС Altera (табл. 1). В этой реализации проекта не указаны затраты ресурсов на блок аппаратного контроля потока. Что касается блоков ALM, например в Stratix V, они представляют собой 8‑входовую таблицу LUT, два сумматора и четыре регистра. Как видно из приведенной таблицы, программная реализация контроллера получается довольно затратной. Помимо ресурсов в виде LUT, ALM и блоков М20К, также задействовано большое количество линий связи внутри кристалла. Кроме того, поскольку речь идет о высокоскоростном проекте, то и расположение этих ресурсов на кристалле тоже будет иметь значение. Проекты, подобные этому, компании-производители поставляют как платные IP-ядра.
Микросхема |
Параметры |
Задействовано ресурсов |
||||
Число линий |
Скорость |
Задействовано |
Логические |
Блоков М20К |
||
первичные |
вторичные |
|||||
Arria 10 |
12 |
10,3125 |
18 600 |
32 800 |
2300 |
38 |
12 |
12,500 |
18 600 |
32 800 |
2300 |
38 |
|
24 |
6,250 |
25 800 |
46 500 |
3200 |
125 |
|
Arria V GZ |
12 |
10,3125 |
18 700 |
33 800 |
2800 |
38 |
Stratix V GX |
12 |
10,3125 |
18 900 |
33 900 |
2900 |
38 |
24 |
6,250 |
25 400 |
48 400 |
3000 |
125 |
|
Stratix V GT |
12 |
10,3125 |
19 300 |
34 000 |
2700 |
38 |
12 |
12,500 |
18 800 |
34 100 |
2600 |
38 |
|
24 |
6,250 |
26 100 |
48 800 |
2700 |
125 |
Что же касается другой экспертной оценки задействованных ресурсов, то компания Achronix приводит следующие цифры. Для микросхем Altera и Xilinx ресурсы, необходимые для реализации интерфейса Interlaken, оцениваются в 65 000 LUT.
Теперь можно переходить к реализации контроллера Interlaken в микросхемах Speedster22i HD1000. В микросхемах Speedster22i контроллер Interlaken выполнен как аппаратный блок [11]. Но поскольку речь только что шла об IP-ядрах других производителей, необходимо сказать, что в отличие от них IP-ядро в Speedster22i является частью самой микросхемы, а потому никакой дополнительной платы за его применение, конечно же, не требуется. Interlaken — это встроенный и полностью аппаратный, масштабируемый интерфейс для связи между микросхемами, разработанный для передачи данных на скорости от 10 Гбит/с до 100 Гбит/с и выше. Используя последнюю технологию SerDes и перенастраиваемый протокольный уровень, Interlaken минимизирует издержки энергопотребления и количество выводов и предоставляет разработчику гибкое решение, которое можно применить по всей системе. Кроме того, Interlaken предусматривает два уровня проверки CRC и самосинхронизирующийся скремблер данных, что гарантирует их целостность и устойчивость работы интерфейса.
IP-ядро совместимо со стандартом протокола Interlaken версии 1.2 и позволяет системным разработчикам использовать Interlaken как протокол межсоединения для связи между микросхемами. IP-ядро может быть сконфигурировано так, чтобы применить любое число последовательных линий связи (от 4 и до 12) для получения суммарной пропускной способности до 123 Гбит/с.
Скорости передачи и разрядности данных в аппаратных контроллерах интерфейса Interlaken в Speedster22i HD1000 представлены на рис. 1. В таблице 2 показано количество аппаратных контроллеров Interlaken, а на рис. 2 — их расположение в ядре микросхемы Speedster22i HD1000.
Название микросхемы |
HD680 |
HD1000 |
HD1500 |
Количество контроллеров Interlaken |
1 |
2 |
4 |
Характеристики IP-ядра интерфейса Interlaken:
- Поскольку IP-ядро — это аппаратное ядро, оно имеет значительно меньшее потребление мощности и более простую методологию проектирования.
- Автоматическое масштабирование синхрочастот позволяет минимизировать потребляемую мощность.
- Контроллер Interlaken может работать в одном из следующих режимов: ×4, ×6, ×8, ×10, ×12.
- Распределение данных и сборка данных из 4–12 линий.
- Настраиваемые SerDes позволяют получить различные реализации по расположению входов/выходов.
- Автоматическое выравнивание линий связи и слов данных.
- Поддержка 256 различных логических каналов.
- Поддержка скорости передачи данных SerDes до 10,3125 Гбит/с.
- Программируемые параметры BurstMax, BurstShort и MetaFrameSize.
- Кодирование и декодирование по 64/67.
- Самосинхронизация скремблера данных.
- Разрядность шины данных 512 бит.
- Генерация CRC24 и проверка на целостность данных в пакете.
- Генерация CRC32 и проверка на целостность данных в линии.
- Устойчивое обнаружение состояния ошибки и восстановление.
- Шифрование данных и отслеживание запрещенных кодовых комбинаций, что позволяет минимизировать вандер и поддерживать баланс по постоянному току.
- Поддержка всей синхронизации, состояния скремблера, диагностики и блока пропуска слов (Skip Word Block Types).
- Программируемая схема, ограничивающая скорости.
- Формат передачи — в режиме сегмента (Segment-mode) и в режиме пакетов (Packet-mode).
- Формат приема — в режиме сегмента (Segment-mode) и в режиме пакетов (Packet-mode).
- Размер BurstMax может быть запрограммирован от 64 до 256 байт с шагом в 64 байт.
- Объем для минимума в BurstShort может быть программно изменен от 64 до 256 байт с шагом 64 байт, но BurstShort не должен превышать BurstMax.
- Управление потоками (In-band flow control).
- Поддержка управления потоками на уровне линии.
- Механизм управления потоками поддерживает пакеты, приостанавливающие передачу потока данных.
- Управление скоростью передачи производится с дискретом в 1 Гбит/с.
- Длина пакета (Meta Frame Length), программируемая от 128 байт до 8 кбайт.
- Поддержка обмена сообщениями о состоянии.
- Отключение неисправной линии для повышения отказоустойчивости (Lane decommissioning and resiliency).
Краткий обзор начинки интерфейса
На рис. 3 показана более подробная блок-схема IP-ядра с SerDes и логикой пользовательского интерфейса, реализованная в Speedster22i. Правая сторона — пользовательский интерфейс, левая — интерфейс SerDes. IIPC показана зеленым цветом, а блоки SerDes — оранжевым.
Иерархия IP
Интерфейс IP-ядра соединяют с SerDes, и конфигурация этих блоков выполняется с помощью программного инструмента Achronix Cad Environment (ACE) GUI.
Верхние уровни иерархии показаны на рис. 4. Текст на рис. 4 представляет собой имя модуля IP-ядра на том же уровне иерархии. Это Interlaken _1_serdes и ACX_INTERLAKEN_TOP (ядро IIPC) для Interlaken_1.
Модуль Interlaken_1 представляет собой высокоуровневый модуль обертки, и для каждой линии он содержит инстанцированный аппаратный блок IP-ядра и инстанцированный аппаратный блок SerDes. Модуль Interlaken_1_serdes содержит внутри себя блок SerDes и для него передает параметры конфигурации, необходимые для надлежащей работы Interlaken.
Для того чтобы в проекте пользователя сконфигурировать ядро Interlaken, необходимо применить программный инструмент ACE GUI с визардом для Interlaken. Визард автоматически инстанцирует линию связи SerDes и производит единую высокоуровневую обертку, которая может быть включена в проект пользователя. Далее пользователь должен подсоединить к обертке (то есть в логике пользователя в ПЛИС) интерфейс локальной шины (Local Bus, LBUS) и соответствующие сигналы синхрочастоты.
Как работает IIPC
IP-ядро может использоваться во множестве приложений и предоставляет пользователю всю гибкость протокола Interlaken. Оно поддерживает все связанные с протоколом функции, которые также поддерживаются другим устройством, связанным с ядром по интерфейсу Interlaken. Квитирование, синхронизация и проверка на ошибки обрабатываются в ядре. LBUS представляет собой шину, которую обычно применяют при передаче сообщений пакетами, подобно распространенному протоколу для SPI4.2. Более подробная информация дается в описании пользовательских интерфейсов [3]. Интерфейс с проектом пользователя организуется таким образом, что пользователь должен обеспечить передачу пакетов данных через интерфейс TX локальной шины LBUS и получение пакетов данных от интерфейса RX локальной шины LBUS.
Управление потоками данных
Информация об управлении потоками автоматически извлекается на приемной стороне RX и предоставляется пользователю. Кроме того, тракт передачи TX очень простой и состоит из единственного конвейера с единственным буфером памяти. Также пользователь должен создать планировщик (scheduling), внешний по отношению к IP-ядру, чтобы мультиплексировать данные от различных логических каналов. Кроме того, необходимо контролировать информацию об управлении потоками и гарантировать надлежащую передачу данных через IP-ядро.
Процедура запуска (Start-Up Procedure)
При включении питания для правильной работы IP-ядра необходимо сделать следующее:
- После того как устройство включается и завершается процедура сброса, тракт TX начинает передавать слова Control/Idle. Это необходимо для того, чтобы выровнять и синхронизировать интерфейс Interlaken приемного устройства. Точно так же на приемной стороне RX производится прием данных и выполняется поиск слова Control/Idle, по которому реализуют процедуру синхронизации.
- При запуске пользователь должен установить все входы управления потоками в тракте передачи TX в состояние XOFF, чтобы предотвратить любую реальную передачу данных.
- После окончания процедуры запуска тракт приема RX будет выровнен между линиями и синхронизирован, он передаст в пользовательскую логику, что процедура синхронизации полностью выполнена.
- По окончании процедуры запуска пользователь должен переключить информацию об управлении потоками от XOFF к XON для любого из каналов, которые готовы принять данные.
- Также, когда другое устройство, подключенное к интерфейсу Interlaken, будет готово получить данные, оно отправит в IP-ядро информацию XON, и XON будет принято и обработано, то получение XON разрешит пользовательской логике передать данные и сообщит о том, какие каналы могут использоваться.
Далее описывается простая и легковыполнимая процедура первоначальной конфигурации IP-ядра. Пользователь должен создать планировщика (scheduler), в задачи которого входит только мультиплексировать данные для различных логических каналов, и управлять планировщиком (to manage the scheduling function) по выводу управляющей информации. Все более низкие уровни обработки протокола Interlaken выполняются автоматически, и пользователь не должен о них заботиться.
Синхронизация
У IP-ядра есть три главных домена синхрочастоты:
- Домен синхрочастоты шины LBUS. Для синхронизации обработки протокола IP-ядра используется вход clk. Этот домен включает в себя всю логику в тракте TX и в тракте RX, ответственную за обработку уровня протокола, в том числе Control Word, Meta frame и интерфейс LBUS. Частота clk этого домена составляет 470 МГц.
- Домен синхрочастоты RX SerDes. Каждый канал SerDes генерирует для IP-ядра свою синхрочастоту, восстановленную из входного потока данных. Эти синхрочастоты подаются на входы rx_serdes_clk [11:0] и используются, чтобы синхронизировать логику в каждой приемной линии. IP-ядро автоматически аппаратно синхронизирует полученные данные от всех SerDes к домену синхрочастоты LBUS. Чтобы вычислить частоту работы этих доменов, нужно разделить последовательную скорость передачи в линии на разрядность соответствующей ей параллельной шины (20‑разрядной), выходящей из блока SerDes. Например, если последовательная скорость передачи составит 6,25 Гбит/с, то у 20‑разрядной шины rx_serdes_clk [11:0] частота при скорости передачи 6250 Мбит/с будет 6250/20 = 312,5 МГц.
- Домен синхрочастоты опоры для TX SerDes. Домен синхрочастоты TX состоит из логики, работающей в домене этой синхрочастоты, связанном с каждым TX SerDes. Все SerDes должны быть синхронизированы одним и тем же опорным источником, чтобы гарантировать соответствующую частоту во всех линиях. А чтобы при передаче данных для всех интерфейсов поддерживать требуемые соотношения фаз для сигналов в линиях, для SerDes используется одна общая синхрочастота, названная tx_serdes_refclk. Частота этого домена вычисляется делением последовательной скорости передачи на разрядность параллельной шины (20‑разрядной), входящей в блок SerDes. Например, если последовательная скорость передачи равна 6,25 Гбит/с, то у 20‑разрядной шины tx_serdes_refclk частота при скорости передачи 6250 Мбит/с составит 312,5 МГц.
На рис. 5а показаны различные домены синхрочастоты в направлении RX вместе со связанными с ними входами синхрочастоты. На рис. 5б представлены различные домены синхрочастоты в направлении TX вместе со связанными с ними входами синхрочастоты. IIPC автоматически и аппаратно обрабатывает все пересечения клоковых доменов (CDC).
О дальнейшем описании IP-ядра интерфейса
Здесь мы не приводим другую информацию об IP-ядре интерфейса Interlaken, поскольку она очень схожа с описанием визарда, конфигурирующего IP-ядро, и сигналов, связанных с этим ядром. Автору представляется целесообразным сделать это описание после рассмотрения программных инструментов, предназначенных для работы с микросхемами Speedster22i серии HD.
Описание демонстрационного проекта
Компания Achronix предлагает демонстрационный проект для интерфейса Interlaken [12]. Демопроект загружается с сайта компании после получения кода пароля для скачивания файлов. В комплекте поставки имеются как файлы проекта, так и вспомогательные программы и скрипты, необходимые для тестирования проекта.
На рис. 6 приведена блок-схема демонстрационного проекта для интерфейса Interlaken. Стартовый набор подключается к загрузчику битовых данных в микросхему — битпортеру, а также к хосту по интерфейсу USB, как это показано на рис. 7. Данные из хоста передаются в стартовый набор и управляют проведением тестирования. Внешний вид заглушки показан на рис. 8, заглушка вместе со стартовым набором изображена на рис. 9.
На блок-схеме, приведенной на рис. 10, показаны только главные функциональные модули проекта, причем они выполнены таким образом, чтобы в каждом из них был свой, изолированный домен синхрочастоты. Поэтому на самом верху иерархии проекта есть восемь основных функциональных модулей:
- Генератор PLL генерирует все синхрочастоты для FPGA.
- Секвенсер сброса обеспечивает автоматизированную и программно задаваемую последовательность выдачи и снятия сигнала «сброс».
- Интерфейс SBUS: интерфейс RS‑232/SBUS для взаимодействия с регистрами управления/состояния в ядре логики ПЛИС и IP.
- Генератор пакетов и блок проверки генерирует пакеты на передаче и приеме и проверяет принятые пакеты.
- Управление потоком — программная обработка управления потоком.
- Блок управления потоком для приемника — механизм DMA, опрашивающий тракт приема и получающий информацию об управлении потоком Rx.
- Пересечение доменов синхрочастот — для того чтобы преобразовать сигналы управления и состояния, которые передаются в IP-ядро Interlaken.
- Блок DSI (Dual Segment Interface) — софтовый сегмент-оболочка между ядром логики и IP-ядром Interlaken/SERDES.
Четыре блока PLL, расположенные в четырех углах ПЛИС, используются для генерации синхрочастот для проекта. Они генерируют синхрочастоты ilkn_clk, sys_clk, sbus_clk, и fce_clk из входных синхрочастот, таких как pll_clk, и опорных синхрочастот SERDES.
Все опорные синхрочастоты проекта представлены в таблице 3.
Тактовая |
Величина тактовой |
Описание |
ilkn_clk |
470 |
Синхрочастота IP Interlaken, используемая в аппаратном контроллере, SERDES, софтверном DSI и небольшом количестве логики ядра ПЛИС, взаимодействующей через интерфейс с управлением IP Interlaken. |
sys_clk |
280 |
Системная синхрочастота для логики ядра ПЛИС, используемая в качестве системной синхрочастоты для генератора пакетов, средства проверки и управления потоком. |
sbus_clk |
16 |
Синхрочастота канала SBUS, используемая на всех каналах SBUS в ведущих/ведомых хостах. |
fce_clk |
370 |
Синхрочастота механизма управления потоком Rx, используется в механизме DMA, получающего управление потоком от внутреннего CSR ILKN. |
pll_clk |
100 |
Синхрочастота PLL, используемая в PLL и секвенсере сброса. |
Синхрочастота для SERDES |
156,25 |
Синхрочастота для SERDES. |
На рис. 10 цветом выделены домены синхрочастоты для демонстрационного проекта. Модули, окрашенные в белый цвет, работают с несколькими синхрочастотами. При этом модуль генератора PLL содержит все синхрочастоты, кроме опорной синхрочастоты SERDES. Софтовое IP DSI, то есть оболочка между аппаратным интерфейсом и ядром логики, обеспечивает пересечение сигналов через асинхронную границу синхрочастот для sys_clk и ilkn_clk. Модуль CDC обеспечивает пересечение сигналов состояния/управления для аппаратного IP интерфейса Interlaken, для синхрочастот ilkn_clk и sys_clk. Модуль RXFCE содержит синхрочастоты fce_clk и sys_clk. Модуль SERDES также содержит опорный синхрогенератор для SERDES. Интерфейс SBUS, инстанцированный в большинстве модулей в ведомых хостах, работает как интерфейс связи модуля с регистрами управления/состояния в ядре логики ПЛИС и IP. Канал модуля интерфейса работает от sbus_clk.
Теперь приведем краткое описание некоторых блоков
Секвенсер сброса
В его задачу входит выдача последовательностей «холодного» сброса, выполняемого после конфигурации ПЛИС так, чтобы заставить проект запуститься должным образом. В рабочем режиме сброс выдается посредством записи битов в регистры управления.
Последовательный интерфейс
Интерфейс SBUS показан на рис. 10 как один модуль, но на самом деле состоит из сети ведущих и ведомых субмодулей, интегрированных в разных частях проекта. Последовательный интерфейс соединен со всеми регистрами управления/состояния в ядре логики ПЛИС и IP проекта как последовательный интерфейс RS‑232 (через USB). Основной интерфейс хоста находится в модуле верхнего уровня, где выполняется дешифрация адресов для различных ведомых устройств модулей проекта. Каждый ведомый хост собирает последовательные потоки битов, выполняет дешифрацию адреса низшего уровня и обеспечивает параллельную запись и прием информации от регистров.
Генератор пакетов и блок проверки
Генератор пакетов и блок проверки, работая вместе, обеспечивают полную функциональность тестирования для демонстрационного проекта. Генератор пакетов действует как конфигурируемый механизм DMA, он формирует пакеты для передающей части интерфейса Interlaken. Хост конфигурирует генератор пакетов и запускает его в работу через регистры управления/состояния. После того как генератор пакетов начинает формировать поток пакетов и записывает их в передающую часть двухстороннего интерфейса, эти пакеты передаются к контроллеру интерфейса Interlaken и одновременно их копия отправляется в блок проверки. Принимаемые из заглушки пакеты поступают в блок проверки, где их данные сравниваются с данными, принятыми из приемной части интерфейса данных. Затем формируется информация о статусе проведения теста и набирается статистика.
После загрузки проекта пользователь имеет возможность провести полное тестирование интерфейса Interlaken, в том числе при прохождении сигналов не только через заглушку, но и через реальную конструкцию — печатную плату или бэкплейн.
Заключение
Итак, мы ознакомились с очередной статьей, посвященной новым микросхемам семейства Speedster22i HD, работающим на максимальной частоте 750 МГц и имеющим 1,7 млн LUT. Микросхемы выполнены по 22‑нм техпроцессу на фабрике Intel и предназначены для Hi-End-устройств.
В этой части было дано описание протокола интерфейса Interlaken и аппаратного контроллера этого интерфейса, а также предоставлена краткая информация о демонстрационном проекте для проверки работы интерфейса. Применение данного интерфейса в разработках позволяет специалистам получить надежный и высокопроизводительный канал связи как между микросхемами на плате, так и по бэкплейну.
В следующих статьях цикла мы продолжим рассматривать основную «изюминку» ПЛИС Speedster — аппаратные IP-ядра контроллеров интерфейсов, а также средства разработки и стартовые наборы.
- Каршенбойм И. Микросхемы ПЛИС Speedster22i от Achronix: самые быстрые и самые большие // Компоненты и технологии. 2014. № 9–12.
- http://en.wikipedia.org/wiki/Interlaken_(networking)
- System Packet Interface Level 4 (SPI‑4) Phase 2. http://en.wikipedia.org/wiki/SPI‑4.2
- IEEE: 802.3ae‑2002 — Amendment: Media Access Control (MAC) Parameters, Physical Layers, and Management Parameters for 10Gbps Operation.
- Optical Internetworking Forum (OIF): OIF-SPI4-02.1 — System Packet Interface Level 4 (SPI‑4) Phase 2 Revision 1: OC‑192 System Interface for Physical and Link Layer Devices.
- interlakenalliance.com
- Interlaken Protocol Definition. A Joint Specification of Cortina Systems and Cisco Systems. Revision 1.2. October 7, 2008.
- Castagnoli G., Brauer S., Herrmann M. Optimization of Cyclic Redundancy-Check Codes with 24 and 32 Parity Bits. IEEE Transactions on Communications. June 1993. Vol. 41. № 6.
- Koopman P., Chakravarty T. Cyclic Redundancy Code (CRC) Polynomial Selection for Embedded Networks. The International Conference on Dependable Networks and Systems, DSN‑2004.
- 100G Interlaken MegaCore Function User Guide UG‑01128.
- Руководство пользователя Speedster22i Interlaken User Guide UG032.
- Speedster22i FPGA Family. Interlaken Single-User Interface. Reference Design User Guide. RD 006, June 30, 2014.