Подключение стартового набора к хосту по интерфейсу USB

Микросхемы ПЛИС Speedster22i от Achronix: самые быстрые и самые большие. Часть 5

PDF версия
В этой статье из цикла, посвященного ПЛИС Speedster22i HD1000 от компании Achronix [1], мы продолжим рассматривать вопросы, связанные с работой аппаратного контроллера интерфейса Interlaken [2].

Все статьи цикла

Реализация Interlaken ПЛИС Speedster22i

Прежде чем рассказать об аппаратной реализации контроллера Interlaken, созданной в микросхемах Speedster22i HD1000, необходимо привести описание реализации этого же контроллера, но выполненного как софт-ядро. Давайте оценим затраты ресурсов для реализации подобного контроллера.

В документе [10] дается таблица количества задействованных ресурсов для создания интерфейса Interlaken для ПЛИС Altera (табл. 1). В этой реализации проекта не указаны затраты ресурсов на блок аппаратного контроля потока. Что касается блоков ALM, например в Stratix V, они представляют собой 8‑входовую таблицу LUT, два сумматора и четыре регистра. Как видно из приведенной таблицы, программная реализация контроллера получается довольно затратной. Помимо ресурсов в виде LUT, ALM и блоков М20К, также задействовано большое количество линий связи внутри кристалла. Кроме того, поскольку речь идет о высокоскоростном проекте, то и расположение этих ресурсов на кристалле тоже будет иметь значение. Проекты, подобные этому, компании-производители поставляют как платные IP-ядра.

Таблица 1. Количество задействованных ресурсов для реализации интерфейса Interlaken для ПЛИС Altera

Микросхема

Параметры

Задействовано ресурсов

Число линий

Скорость
на линию,
Гбит/с

Задействовано
ALM

Логические
ресурсы

Блоков М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. Скорости передачи и разрядности данных в аппаратных контроллерах интерфейса Interlaken в Speedster22i HD1000

Скорости передачи и разрядности данных в аппаратных контроллерах интерфейса Interlaken в Speedster22i HD1000 представлены на рис. 1. В таблице 2 показано количество аппаратных контроллеров Interlaken, а на рис. 2 — их расположение в ядре микросхемы Speedster22i HD1000.

Расположение аппаратных контроллеров интерфейса Interlaken в ядре микросхемы Speedster22i HD1000

Рис. 2. Расположение аппаратных контроллеров интерфейса Interlaken в ядре микросхемы Speedster22i HD1000

Таблица 2. Количество аппаратных контроллеров Interlaken у микросхем серии Speedster22i HD

Название микросхемы

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 — оранжевым.

Блок-схема соединения интерфейса IIPC с SerDes и пользовательской логикой

Рис. 3. Блок-схема соединения интерфейса IIPC с SerDes и пользовательской логикой

Иерархия IP

Интерфейс IP-ядра соединяют с SerDes, и конфигурация этих блоков выполняется с помощью программного инструмента Achronix Cad Environment (ACE) GUI.

Верхние уровни иерархии показаны на рис. 4. Текст на рис. 4 представляет собой имя модуля IP-ядра на том же уровне иерархии. Это Interlaken _1_serdes и ACX_INTERLAKEN_TOP (ядро IIPC) для Interlaken_1.

Иерархия IIPC

Рис. 4. Иерархия IIPC

Модуль 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-ядра необходимо сделать следующее:

  1. После того как устройство включается и завершается процедура сброса, тракт TX начинает передавать слова Control/Idle. Это необходимо для того, чтобы выровнять и синхронизировать интерфейс Interlaken приемного устройства. Точно так же на приемной стороне RX производится прием данных и выполняется поиск слова Control/Idle, по которому реализуют процедуру синхронизации.
  2. При запуске пользователь должен установить все входы управления потоками в тракте передачи TX в состояние XOFF, чтобы предотвратить любую реальную передачу данных.
  3. После окончания процедуры запуска тракт приема RX будет выровнен между линиями и синхронизирован, он передаст в пользовательскую логику, что процедура синхронизации полностью выполнена.
  4. По окончании процедуры запуска пользователь должен переключить информацию об управлении потоками от XOFF к XON для любого из каналов, которые готовы принять данные.
  5. Также, когда другое устройство, подключенное к интерфейсу Interlaken, будет готово получить данные, оно отправит в IP-ядро информацию XON, и XON будет принято и обработано, то получение XON разрешит пользовательской логике передать данные и сообщит о том, какие каналы могут использоваться.

Далее описывается простая и легковыполнимая процедура первоначальной конфигурации IP-ядра. Пользователь должен создать планировщика (scheduler), в задачи которого входит только мультиплексировать данные для различных логических каналов, и управлять планировщиком (to manage the scheduling function) по выводу управляющей информации. Все более низкие уровни обработки протокола Interlaken выполняются автоматически, и пользователь не должен о них заботиться.

Синхронизация

У IP-ядра есть три главных домена синхрочастоты:

  1. Домен синхрочастоты шины LBUS. Для синхронизации обработки протокола IP-ядра используется вход clk. Этот домен включает в себя всю логику в тракте TX и в тракте RX, ответственную за обработку уровня протокола, в том числе Control Word, Meta frame и интерфейс LBUS. Частота clk этого домена составляет 470 МГц.
  2. Домен синхрочастоты 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 МГц.
  3. Домен синхрочастоты опоры для 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).

Домены синхрочастоты в направлении

Рис. 5. Домены синхрочастоты в направлении:
а) RX (RX Clock Domains);
б) TX (TX Clock Domains)

О дальнейшем описании IP-ядра интерфейса

Здесь мы не приводим другую информацию об IP-ядре интерфейса Interlaken, поскольку она очень схожа с описанием визарда, конфигурирующего IP-ядро, и сигналов, связанных с этим ядром. Автору представляется целесообразным сделать это описание после рассмотрения программных инструментов, предназначенных для работы с микросхемами Speedster22i серии HD.

 

Описание демонстрационного проекта

Компания Achronix предлагает демонстрационный проект для интерфейса Interlaken [12]. Демопроект загружается с сайта компании после получения кода пароля для скачивания файлов. В комплекте поставки имеются как файлы проекта, так и вспомогательные программы и скрипты, необходимые для тестирования проекта.

Блок-схема подключения стартового набора к хосту и подключение заглушки для тестирования демонстрационного проекта для интерфейса Interlaken

Рис. 6. Блок-схема подключения стартового набора к хосту и подключение заглушки для тестирования демонстрационного проекта для интерфейса Interlaken

На рис. 6 приведена блок-схема демонстрационного проекта для интерфейса Interlaken. Стартовый набор подключается к загрузчику битовых данных в микросхему — битпортеру, а также к хосту по интерфейсу USB, как это показано на рис. 7. Данные из хоста передаются в стартовый набор и управляют проведением тестирования. Внешний вид заглушки показан на рис. 8, заглушка вместе со стартовым набором изображена на рис. 9.

Подключение стартового набора к хосту по интерфейсу USB

Рис. 7. Подключение стартового набора к хосту по интерфейсу USB

Внешний вид заглушки, предназначенной для тестирования интерфейса Interlaken

Рис. 8. Внешний вид заглушки, предназначенной для тестирования интерфейса Interlaken

Заглушка вместе со стартовым набором

Рис. 9. Заглушка вместе со стартовым набором

На блок-схеме, приведенной на рис. 10, показаны только главные функциональные модули проекта, причем они выполнены таким образом, чтобы в каждом из них был свой, изолированный домен синхрочастоты. Поэтому на самом верху иерархии проекта есть восемь основных функциональных модулей:

  • Генератор PLL генерирует все синхрочастоты для FPGA.
  • Секвенсер сброса обеспечивает автоматизированную и программно задаваемую последовательность выдачи и снятия сигнала «сброс».
  • Интерфейс SBUS: интерфейс RS‑232/SBUS для взаимодействия с регистрами управления/состояния в ядре логики ПЛИС и IP.
  • Генератор пакетов и блок проверки генерирует пакеты на передаче и приеме и проверяет принятые пакеты.
  • Управление потоком — программная обработка управления потоком.
  • Блок управления потоком для приемника — механизм DMA, опрашивающий тракт приема и получающий информацию об управлении потоком Rx.
  • Пересечение доменов синхрочастот — для того чтобы преобразовать сигналы управления и состояния, которые передаются в IP-ядро Interlaken.
  • Блок DSI (Dual Segment Interface) — софтовый сегмент-оболочка между ядром логики и IP-ядром Interlaken/SERDES.
Блок-схема демонстрационного проекта

Рис. 10. Блок-схема демонстрационного проекта.
Цветом выделены домены синхрочастот

Четыре блока PLL, расположенные в четырех углах ПЛИС, используются для генерации синхрочастот для проекта. Они генерируют синхрочастоты ilkn_clk, sys_clk, sbus_clk, и fce_clk из входных синхрочастот, таких как pll_clk, и опорных синхрочастот SERDES.

Все опорные синхрочастоты проекта представлены в таблице 3.

Таблица 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-ядра контроллеров интерфейсов, а также средства разработки и стартовые наборы.

Литература
  1. Каршенбойм И. Микросхемы ПЛИС Speedster22i от Achronix: самые быстрые и самые большие // Компоненты и технологии. 2014. № 9–12.
  2. http://en.wikipedia.org/wiki/Interlaken_(networking)
  3. System Packet Interface Level 4 (SPI‑4) Phase 2. http://en.wikipedia.org/wiki/SPI‑4.2
  4. IEEE: 802.3ae‑2002 — Amendment: Media Access Control (MAC) Parameters, Physical Layers, and Management Parameters for 10Gbps Operation.
  5. 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.
  6. interlakenalliance.com
  7. Interlaken Protocol Definition. A Joint Specification of Cortina Systems and Cisco Systems. Revision 1.2. October 7, 2008.
  8. 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.
  9. Koopman P., Chakravarty T. Cyclic Redundancy Code (CRC) Polynomial Selection for Embedded Networks. The International Conference on Dependable Networks and Systems, DSN‑2004.
  10. 100G Interlaken MegaCore Function User Guide UG‑01128.
  11. Руководство пользователя Speedster22i Interlaken User Guide UG032.
  12. Speedster22i FPGA Family. Interlaken Single-User Interface. Reference Design User Guide. RD 006, June 30, 2014.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *