Блоки SERDES в новых ПЛИС корпорации Microsemi. Часть 1

№ 1’2015
PDF версия
Блоки преобразования данных из параллельного представления в последовательное и обратно (SERDES) есть в обоих новых семействах ПЛИС корпорации Microsemi: IGLOO2 и SmartFusion2. В предлагаемой статье, написанной на основе фирменного руководства корпорации Microsemi [1], представлен порядок работы с этими блоками на базе недорогого отладочного набора IGLOO2 Evaluation Kit. Данный материал служит продолжением цикла статей [1], [2] и [3] по ПЛИС IGLOO2 и SmartFusion2, опубликованных в журнале «Компоненты и технологии».

Введение

Уже много лет назад человечество пришло к выводу, что на сколько-нибудь значительные расстояния, например между двумя устройствами, данные лучше передавать последовательно, а не параллельно. В то же время внутри устройства данные неизбежно представлены в параллельном виде. Таким образом, перед отправкой из устройства во внешний мир их необходимо преобразовать из параллельного представления в последовательное, а на принимающей стороне выполнить обратное преобразование: из последовательного в параллельное.

Для выполнения этих задач сложился и развивается целый класс устройств. По-английски такие устройства называются serializer/deserializer, или сокращенно SERDES. Они выпускаются в виде отдельных наборов микросхем, например Channel Link фирмы National Semiconductor. Кроме того, уже давно блоки SERDES встраиваются как периферийные устройства во многие ПЛИС и системы на кристалле (СНК, они же System On Chip — SoC). Пользователю не надо заботиться о кодировании данных и прочих задачах, которые необходимо решать при передаче на большие расстояния. Ему достаточно подключить готовый модуль при помощи системы проектирования, сопровождающей выбранную ПЛИС или СНК.

Блоки SERDES, встроенные в ПЛИС семейств IGLOO2 и SmartFusion2 корпорации Microsemi (в микросхемах обоих семейств они одинаковые), предназначены для реализации последовательных интерфейсов передачи данных, работающих на скорости от 1 до 5 Гбит/с. Они поддерживают протоколы PCI Express и XAUI. Кроме того, существует механизм, который позволяет использовать приемники и передатчики SERDES с любым пользовательским протоколом, реализованным в ПЛИС. Этот механизм называется external physical coding sublayer (EPCS). Благодаря своей гибкости он способен реализовать такие протоколы, как JESD204 В, Gigabit Ethernet и SGMII.

При работе с EPCS каналы SERDES подключаются непосредственно к структуре ПЛИС (структура ПЛИС («FPGA fabric» в документации корпорации Microsemi) — в сложных микросхемах ПЛИС так называется собственно массив программируемой логики, в отличие от различных аппаратных блоков с заданной функциональностью)), при этом блоки SERDES конфигурируются в режиме соединения с физическим носителем (physical media attachment, PMA). Подключение выполняется в обход логики PCS (про PCS и другие сетевые интерфейсы нижних уровней можно прочитать, например, в статье «Взгляд на 10G Ethernet со стороны FPGA-разработчика» по адресу http://habrahabr.ru/post/234369/) интерфейсов PCI Express и XAUI, а пользовательская логика PCS реализуется в структуре ПЛИС, и сигналы интерфейса EPCS подключаются к блокам SERDES. Такой подход позволяет реализовать в ПЛИС семейств IGLOO2 и SmartFusion2 любой пользовательский высокоскоростной последовательный интерфейс.

IP-модуль CorePCS поддерживает программируемое кодирование и декодирование 8 b/10 b. Такой метод кодирования широко используется в некоторых протоколах, отсутствующих в готовых блоках интерфейсов SERDES для Microsemi SoC, поэтому CorePCS идеален для работы с этими протоколами. Он может быть сконфигурирован как передатчик, как приемник или же для двунаправленной передачи. Подробное описание IP-ядра CorePCS можно найти в [5].

Сегодня мы познакомимся с практическим руководством по использованию EPCS [1], которое предлагает корпорация Microsemi. В нем даются пошаговые инструкции по созданию проекта с EPCS при помощи инструмента Libero SoC System Builder. Это руководство продемонстрирует нам интерфейс EPCS и покажет, как работать с ним в пользовательских приложениях. Кроме того, для отладочного набора IGLOO2 Evaluation Kit мы найдем в нем полное описание маршрута проектирования начиная с создания нового проекта.

В результате выполнения последовательности заданий, предлагаемых в руководстве, мы узнаем, как:

  • формировать в Libero SoC проект с использованием интерфейса EPCS;
  • создавать тестовые воздействия для моделирования;
  • моделировать проект;
  • генерировать файлы для программатора;
  • запускать демонстрационный проект с EPCS.

Для работы нам понадобятся:

  • отладочный набор IGLOO2 Evaluation Kit версии C или более поздней;
  • JTAG-программатор FlashPro4;
  • два кабеля с вилками SMA на концах;
  • кабель USB 2.0 с разъемами A и mini-B на концах для подключения UART;
  • сетевой адаптер на напряжение 12 В с током нагрузки до 2 А;
  • САПР Libero SoC v11.4 SP1.

На компьютере должен быть установлен клиент Microsoft.NET Framework 4 для запуска демонстрационной программы с графическим интерфейсом.

Перед началом работы надо скачать с сайта корпорации Microsemi архив с необходимыми файлами. В нем мы найдем файлы проекта, тестбенчи, скрипты и инсталлятор упомянутой демонстрационной программы.

Наше обучение пройдет в два этапа. Сначала мы загрузим в ПЛИС готовую прошивку, созданную службой поддержки корпорации Microsemi, и убедимся, что вся наша аппаратура и программное обеспечение исправны и работают нормально. Затем научимся создавать свой проект, пройдя по всем этапам его разработки.

 

Описание проекта

Этот учебный проект (рис. 1) демонстрирует передачу псевдослучайной двоичной последовательности (ПСДП, англ. — pseudorandom binary sequence, PRBS) или кодов счетчика через высокоскоростной интерфейс SERDES ПЛИС IGLOO2/SmartFusion2. Блок SERDES конфигурируется для работы со скоростью 2,5 Гбит/с. Коды ПСДП отправляются через канал 2 блока SERDES, а отсчеты с кодированием 8 b/10 b — через канал 1. В проекте представлены две демонстрационные задачи.

Блок-схема демонстрационного проекта

Рис. 1. Блок-схема демонстрационного проекта

В задаче 1 трафик канала 2 непосредственно отправляется из генератора ПСДП, реализованного в структуре ПЛИС, в блок SERDES, а затем выводится из микросхемы для проверки соединения SMA. Входные разъемы SMA соединены с выводами приемников SERDES, через которые данные поступают обратно в устройство, в реализованную на структуре ПЛИС схему контроля.

В задаче 2 на пути следования данных установлен IP-модуль CorePCS. Он обеспечивает простое кодирование и декодирование 8 b/10 b. В этой задаче сигнал SERDES замыкается по трассе на печатной плате, а не через соединение SMA.

Генератор PRBS7 реализует полиномиальную ПСДП седьмого порядка (x7+x6+1) и генерирует непрерывную последовательность 10-разрядных псевдослучайных кодов. 10-разрядные посылки генератора передаются на частоте 39,3 МГц. Модуль генератора ПСДП работает на частоте 125 МГц.

Счетчик генерирует последовательные отсчеты, которые поступают на кодер 8 b/10 b в модуле CorePCS.

Контрольная схема ПСДП проверяет правильность приходящей ПСДП. При несовпадении принятой последовательности с отправленной контрольная схема сообщает об ошибке. Кроме того, контрольная схема содержит счетчик ошибок.

Аналогично контрольная схема счетчика проверяет правильность отсчетов, прошедших через декодер 8 b/10 b в модуле CorePCS.

Линия задержки используется для того, чтобы сбалансировать задержку данных в первом регистре структуры ПЛИС с приходом сигнала EPCS_RX_CLK. Эта линия имеет постоянное время задержки, которое может быть использовано в любом канале SERDES семейств IGLOO2/SmartFusion2.

Интерфейсы передатчиков и приемников (рис. 2) управляют временными соотношениями тактовой частоты и данных при обмене между интерфейсом EPCS и структурой ПЛИС.

Интерфейсы приемника и передатчика

Рис. 2. Интерфейсы приемника и передатчика

Модуль CoreUART служит для связи с интерфейсом UART на плате IGLOO2 Evaluation Kit. Модули FabUART и Output Select представляют собой «склеивающую логику» для подключения генераторов, схем контроля и сигналов сообщения об ошибках к интерфейсу, который отправляет данные через UART для отображения в демонстрационной программе.

 

Работа с готовой прошивкой

Прежде чем создавать свой проект, посмотрим, как работает готовый демонстрационный проект от корпорации Microsemi.

Сначала подготовим к работе отладочную плату (рис. 3). Заметим, что отладочные платы IGLOO2 Evaluation Kit и SmartFusion2 Evaluation Kit совершенно одинаковы и различаются только типом установленной ПЛИС.

  1. Подключим программатор FlashPro4 к разъему для программирования J5.
  2. Подключим один конец кабеля USB 2.0 с разъемом mini-B к разъему J18 на плате.
  3. Подключим другой конец этого кабеля с разъемом A к порту USB компьютера.
  4. Подключим питание платы к разъему 12 В 2 А переключателем J6.
  5. Установим на компьютере драйвер преобразователя USB-UART, если это еще не сделано. Дистрибутив драйвера можно найти по адресу www.microsemi.com/soc/documents/CDM_2.08.24_WHQL_Certified.zip.
  6. Установим джамперы на плате так, как указано в таблице 1. Во время переключений джамперов питание платы должно быть выключено.
  7. Соединим двумя кабелями SMA разъемы SMA на правом краю платы (рис. 3): SERDES_0_TX02_P с SERDES_0_RX02_P, а SERDES_0_TX02_N — с SERDES_0_RX02_N.
Отладочная плата IGLOO2 Evaluation Kit

Рис. 3. Отладочная плата IGLOO2 Evaluation Kit

Таблица 1. Установка джамперов
№ джампера Замкнуть Примечания
J22 1 и 2 Разрешение подключения выходов к разъемам
J23 2 и 3 Для подключения SMA-разъемов требуется внешнее тактирование
J3 1 и 2 Питание включается вручную выключателем SW7
J8 1 и 2 Работа FlashPro4 с SoftConsole/FlashPro

Теперь запрограммируем ПЛИС. Для этого, прежде всего, надо загрузить c сайта корпорации Microsemi архив с файлами учебного проекта. Для IGLOO2 он находится по адресу http://soc.microsemi.com/download/rsc/?f=IGLOO2_EPCS_Demo_11p4_sp1_DF. После распаковки архива мы получим несколько папок. Файл для программатора (STAPL/PDB) находится в папке Programming File.

Запустим программу-оболочку для работы с программатором. Она называется FlashPro v11.4 и находится в группе программ Microsemi Libero SoC v11.4. В появившемся окне (рис. 4) щелкнем по кнопке New Project в окне программы. Откроется одноименное диалоговое окно (рис. 5). В его поле Project Name введем EPCS_Demo, в поле Project Location укажем папку с распакованным проектом и выберем режим программирования одного устройства — пункт Single Device в группе Programming Mode. Затем нажмем кнопку OK.

Окно оболочки программатора

Рис. 4. Окно оболочки программатора

Диалоговое окно создания проекта

Рис. 5. Диалоговое окно создания проекта

После этого окно оболочки программатора заметно изменится (рис. 6). Система просканирует нашу аппаратуру, обнаружит подключенный программатор FlashPro и занесет его в список программаторов Programmer List Window, который появится ниже поля с кнопками. Теперь активны все кнопки.

Оболочка программатора после подключения отладочной платы

Рис. 6. Оболочка программатора после подключения отладочной платы

Теперь можно загружать прошивку в ПЛИС. Щелкнем по кнопке Configure Device, вместо списка программаторов появится поле с приглашением «To continue, load existing programming file…». Нажмем на кнопку Browse рядом с этим сообщением и найдем файл EPCS_Demo_top.stp, который находится в папке Programming File нашего распакованного архива. После загрузки файла в поле Programming File появится информация об этом файле. Выберем в поле справа от нее режим Advanced, появится выпадающий список Action (рис. 7).

Оболочка программатора с открытым файлом прошивки

Рис. 7. Оболочка программатора с открытым файлом прошивки

Выберем из выпадающего списка Action пункт PROGRAM, если там выбрано что-то другое (по умолчанию должно быть именно PROGRAM), и щелкнем по кнопке Procedures. Появится окно Select Action And Procedures, в котором можно задать перечень действий, выполняемых во время программирования. Авторы учебного материала [1] рекомендуют оставить в нем значения по умолчанию. Щелкнем по кнопке Restore Default Procedures и закроем это окно кнопкой OK.

Теперь щелкнем по кнопке с надписью Program в окне оболочки программатора (рис. 7). (Заметим: если бы мы выбрали не программирование, а другое действие, то на этой кнопке было бы другое название.) Начнется загрузка прошивки в ПЛИС, при этом в нижней части окна оболочки программатора в поле протокола будут появляться строки отчета о выполняемых действиях. В графе Programmer Status напротив имени нашего программатора в списке программаторов будет продвигаться синяя полоса. После успешного завершения программирования в поле протокола должно появиться сообщение «Executing action PROGRAM PASSED», а в графе Programmer Status зеленая надпись: «RUN PASSED». В линейке индикаторных све-тодиодов на отладочной плате должны загореться два синих светодиода H5 и H6.

Окно выбора действий при программировании

Рис. 8. Окно выбора действий при программировании

Закроем оболочку программатора и запустим среду Libero SoC. Еще раз вспомним о том, что ее версия должна быть 11.4 SP1 или более новой, в противном случае нам не удастся открыть проект, подготовленный корпорацией Microsemi.

В нашем распакованном архиве есть папка TCL Scripts. В ней лежат TCL-скрипты, с помощью которых можно читать и перезаписывать регистры блоков SERDES. Подробно об этой методике отладки можно прочитать в [6]. Мы сейчас выполним несколько этих скриптов и убедимся, что при их выполнении не возникают сообщения об ошибках.

Найдем в нижней части области Design Flow раздел Debug Design, а в нем — строчку SmartDebug Design и дважды щелкнем по ней левой кнопкой мыши. Появится окно SmartDebug (рис. 9).

Окно SmartDebug

Рис. 9. Окно SmartDebug

Щелкнем по кнопке Debug SERDES в этом окне. Появится одноименное окно.

Выберем в поле Debug SERDES в левой части этого окна строчку Configuration. Вид окна изменится (рис. 10).

Окно Debug SERDES

Рис. 10. Окно Debug SERDES

Щелкнем по кнопке выбора файла (на рисунке она обведена красным эллипсом) и загрузим какой-либо TCL-скрипт, а затем щелкнем по кнопке Execute. В поле протокола в нижней части окна Libero SoC появятся несколько строк сообщения о работе скрипта, которые должны заканчиваться фразой: «The Execute Script command succeeded». Это нам и нужно.

Закроем окна Debug SERDES и SmartDebug Design.

Теперь попробуем связаться с отладочной платой при помощи специальной демонстрационной программы с графическим интерфейсом. Если до сих пор мы с ней не работали, то ее надо установить. Инсталлятор находится в папке GUI Installer/Volume нашего распакованного архива, он называется традиционно: setup.exe. Запустим ее. Обратим внимание на одно из сообщений инсталлятора, которое может появиться, если на вашем компьютере установлено программное обеспечение фирмы National Instruments, например пакет программ, сопровождающий цифровой осциллограф с компьютерным интерфейсом. Инсталлятор сообщит, что он переименует некоторые файлы этого ПО. Необходимо где-то сохранить список переименованных файлов и восстановить их после работы с демонстрационной программой. Заметим еще, что после установки этой программы потребуется перезагрузка компьютера.

Запустим демонстрационную программу. Она находится в группе SmartFusion2_EPCS меню программ ОС. В этой группе единственный ярлык — SERDES EPCS Demo. Щелкнем по нему, появится окно демонстрационной программы (рис. 11).

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

Рис. 11. Окно демонстрационной программы

В выпадающем списке перечислены все последовательные порты, присутствующие на компьютере. Порты, недоступные для работы, отображаются светло-серым шрифтом, доступные — черным. Настройки порта по умолчанию: скорость 9600 бод, нет управления потоком, один стоповый бит, нет контроля четности.

Щелкнем по кнопке Connect, чтобы соединить компьютер с платой через выбранный порт. Сигналы состояния будут отображать выполнение текущей операции.

Теперь щелкнем по кнопке Start. Начнется генерация кодов ПСДП и отправка их в последовательный передающий канал. Приемник будет получать эти коды и проверять на наличие ошибок. Сигналы состояния (табл. 2) будут отображать ход процесса.

Таблица 2. Сигналы состояния
Сигнал состояния Описание
Host Connection Соединение с компьютером.
Зеленый: COM-порт подключен.
Красный: COM-порт не подключен.
Serial Link Последовательная передача.
Зеленый: канал включен и работает.
Красный: канал не работает.
RX Lock Фиксация приема.
Зеленый: приемник получает правильные данные без ошибок.
Это означает, что отправленная последовательность кодов ПСДП успешно принимается.
Красный: приемник получает неправильные данные.
Rx Error Состояние принятых пакетов.
Зеленый: в принятых пакетах нет ошибок.
Красный: поврежденный пакет или любая ошибка в принятой последовательности кодов ПСДП.
Error Count Количество ошибок в принятой ПСДП.
Generate Error Используется для искусственного внесения ошибок при отладке. Вносит ошибку в передаваемую ПСДП.
В результате должен инкрементироваться счетчик ошибок.
Clear Error Обнуляет счетчик ошибок.

На этом первый этап работы — проверка готовности аппаратуры и программного обеспечения — можно считать законченным.

В следующей части этой статьи мы рассмотрим создание проекта для Libero SoC с использованием EPCS.

Литература
  1. Implementing a SmartFusion2/IGLOO2 SERDES EPCS Protocol Design — Libero SoC v11.4 Tutorial.
  2. Иоффе Д., Казаков А. SmartFusion2 и IGLOO2 — надежные, экономичные, компактные. Обзор новых семейств ПЛИС корпорации Microsemi // Компоненты и технологии. 2014. № 8.
  3. Иоффе Д., Казаков А. SmartFusion2 и IGLOO2 — в помощь разработчику. Обзор отладочных плат для новых семейств ПЛИС корпорации Microsemi // Компоненты и технологии. 2014. № 10.
  4. Иоффе Д., Казаков А. ПЛИС IGLOO2 корпорации Microsemi: практикум по сверхнизкому энергопотреблению // Компоненты и технологии. 2014. №10.
  5. CorePCS Handbook. www.microsemi.com
  6. SmartFusion2 and IGLOO2 SmartDebug — Hardware Design Debug Tools Tutorial. www.microsemi.com

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

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