8 (812) 740 62 09    8 (800) 100 62 09

Санкт-Петербург, поселок Шушары, ул. Кокколевская д.1 литера А, помещение 41-Н

info@actel.ru

Power Matters™

Публикации

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

Введение

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

  Для выполнения этих задач сложился и развивается целый класс устройств. По-английски такие устройства называются 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 B, Gigabit Ethernet и SGMII.

  При работе с EPCS каналы SERDES подключаются непосредственно к структуре ПЛИС1, при этом блоки SERDES конфигурируются в режиме соединения с физическим носителем (physical media attachment, PMA). Подключение выполняется в обход логики PCS2 интерфейсов 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 трафик канала 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 и структурой ПЛИС.

  Модуль 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, если это еще не сделано. Дистрибутив драйвера можно найти по адресу 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.

 

  Теперь запрограммируем ПЛИС. Для этого, прежде всего, надо загрузить 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.

                                

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

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

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

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

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

                            

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

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

  Щелкнем по кнопке выбора файла (на рисунке она обведена красным эллипсом) и загрузим какой-либо 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).

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

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

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

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

  В следующей части этой статьи мы рассмотрим создание проекта для 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: практикум по сверхнизкому энергопотреблению // Компоненты и технологии. №10.
  5. CorePCS Handbook. microsemi.com
  6. SmartFusion2 and IGLOO2 SmartDebug — Hardware Design Debug Tools Tutorial. microsemi.com