Внедрение высокоскоростного сериализатора / десерализатора (сердес) во Vhdl

Введение в высокоскоростные сердечки в VHDL

Модули Serialiser/deserialiser (SerDes) являются фундаментальными строительными блоками в современных высокоскоростных системах передачи данных. Они преобразуют параллельные потоки данных в последовательный формат для передачи по одной дифференциальной паре или оптическому волокну, а затем реконструируют параллельные данные на приемнике. Реализация надежных высокоскоростных SerDes в VHDL требует глубокого понимания принципов цифрового проектирования, архитектуры часов и целостности сигнала. Эта статья предоставляет всестороннее руководство по проектированию SerDes в VHDL, охватывающее архитектуру, время, методы кодирования, моделирование и валидацию. Она предназначена для инженеров, которым необходимо интегрировать SerDes в FPGA или ASIC проекты для таких приложений, как Gigabit Ethernet, PCI Express, SATA и высокоскоростные задние плоскости.

Основы архитектуры SerDes

Полный SerDes можно разделить на четыре ключевые подсистемы: сериализатор, десериализатор, восстановление данных часов (CDR) и схема выравнивания/обрамления. В то время как сторона передатчика сериализует параллельные данные, сторона приемника должна восстановить битовые часы из входящего последовательного потока и выровнять границы данных. Каждая подсистема накладывает различные ограничения на дизайн VHDL.

Сериализатор (параллельный серийный преобразователь)

Сериализатор принимает N-битовое широкопараллельное слово и выводит биты по одному за раз на скорости линии.Параллельные часы (]) обычно N раз медленнее, чем серийные часы. В VHDL серийизатор может быть реализован в виде регистра сдвига со счетчиком, управляющим выбором битов. Для правильной высокоскоростной работы регистр сдвига должен быть синтезирован с использованием выделенных флип-флопов с минимальной задержкой от часов к выходу, и время между параллельными и последовательными доменами должно быть тщательно устранено, чтобы избежать метастабильности.

Десериализатор (Serial-to-Parallel Converter)

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

Восстановление данных о часах (CDR)

CDR извлекает последовательные часы из входящего потока данных. Это важно, потому что приемник и передатчик не являются частотно заблокированными во многих системах. В высокоскоростных SerDes CDR обычно реализуется как фазовый цикл (PLL) или задерживающий цикл (DLL), который настраивает локальный осциллятор для соответствия входящих переходов данных. В то время как CDR редко кодируется в чистом VHDL для синтеза на уровне затвора (он использует аналоговые или смешанные сигнальные схемы в ASIC или затвердевшие блоки в FPGA), цифровая часть, такая как детекторы фазовой частоты и фильтры цифровых циклов, может быть описана в VHDL. Понимание поведения CDR имеет важное значение при разработке логики управления десериализатором.

Выравнивание слов и фрейминг

После CDR входящие биты должны быть выровнены с границами слов. Многие протоколы встраивают отдельный шаблон (например, K28.5 в 8b/10b), который десериализатор использует для определения границ байтов. Логика выравнивания VHDL включает в себя машину состояний, которая ищет шаблон, а затем сдвигает поток битов до тех пор, пока шаблон не будет сопоставлен. Это гарантирует, что последующие параллельные слова правильно оформлены.

Вызовы в области высокоскоростного дизайна SerDes

Высокоскоростные SerDes работают с многогигабитными скоростями, часто превышающими 10 Гбит/с на полосу движения. На этих скоростях становятся ярко выраженными физические и цифровые проблемы проектирования.

Закрытие времени и метастабильность

Сериализатор и десериализатор должны передавать данные между часовыми доменами (параллельными и последовательными). Метастабильность может возникнуть при нарушении времени установки/удержания. Разработчики VHDL должны вставлять синхронизаторы и тщательно ограничивать инструмент синтеза для соответствия времени. Использование двойных или тройных синхронизаторов для управляющих сигналов является стандартной практикой.

Джиттер и Скью

В сериализаторе перекос часов между параллельными и последовательными доменами приводит к неправильному упорядочиванию битов. Для борьбы с этим высокоскоростные конструкции SerDes часто используют дифференциальную сигнализацию, предварительный акцент и выравнивание. С точки зрения VHDL, дизайнеры должны минимизировать комбинаторную логику в последовательном пути данных; ретиминг (перемещение шлепаний для балансировки задержек) является распространенной техникой.

Потребление энергии

Переключение на гигабитных частотах обеспечивает значительную динамическую мощность. Стратегии снижения мощности включают в себя забивание часов, снижение напряжения питания (если позволяет целевая технология) и использование серийных устройств с более низкой параллельной шириной (например, смещение 8 бит против 32 бит) для уменьшения последовательной тактовой частоты. В VHDL тщательное кодирование предотвращает ненужное переключение широких шин.

Методы внедрения VHDL для высокоскоростных серде

Для обеспечения надежной работы с мультигигабитными скоростями код VHDL должен быть синтезирован в выделенные аппаратные ресурсы. В следующих разделах представлены практические методы кодирования и примеры.

Использование выделенных SerDes Hard Macros

Большинство современных FPGA включают закаленные приемопередатчики SerDes (например, Xilinx GTY, Intel E-tile). Эти блоки содержат PLL, CDR, десериализаторы и схемы выравнивания. Код VHDL для этих устройств в первую очередь инстанцирует примитивы поставщиков и соединяет их с вашей основной логикой. Например, в устройствах Xilinx приемопередатчик настраивается через атрибуты и затем доступен через модуль обертывания. Этот подход намного надежнее, чем полный мягкий SerDes на высоких скоростях. Код VHDL для таких оберток должен следовать руководству пользователя поставщика для установки правильных параметров скорости строки, контрольных часов и кодирования.

Реализация Soft SerDes (умеренные скорости)

Для ставок до нескольких сотен мегагерц жизнеспособным может быть полностью мягкий SerDes в VHDL. Ключ заключается в использовании сдвиговых регистров и счетчиков, которые реализуются с выделенными флип-флопами и избегают длинных комбинаторных цепей. Ниже приведен расширенный пример сериализатора, который включает в себя включение нагрузки и сигнал рукопожатия.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Serializer_8to1 is
 Port (
 clk_ser : in STD_LOGIC; -- serial clock
 clk_par : in STD_LOGIC; -- parallel clock (1/8 rate)
 rst : in STD_LOGIC;
 data_in : in STD_LOGIC_VECTOR(7 downto 0);
 load : in STD_LOGIC;
 serial_out : out STD_LOGIC;
 busy : out STD_LOGIC
 );
end Serializer_8to1;

architecture Behavioral of Serializer_8to1 is
 signal shift_reg : STD_LOGIC_VECTOR(7 downto 0);
 signal bit_cnt : integer range 0 to 7;
begin
 process(clk_ser, rst)
 begin
 if rst = '1' then
 shift_reg <= (others => '0');
 bit_cnt <= 0;
 busy <= '0';
 elsif rising_edge(clk_ser) then
 if load = '1' then
 shift_reg <= data_in;
 bit_cnt <= 7;
 busy <= '1';
 elsif bit_cnt > 0 then
 shift_reg <= shift_reg(6 downto 0) & '0';
 bit_cnt <= bit_cnt - 1;
 else
 busy <= '0';
 end if;
 end if;
 end process;

 serial_out <= shift_reg(7);
end Behavioral;

Этот сериализатор использует последовательные часы для всех операций. Сигнал должен быть синхронным ; на практике необходима схема пересечения часового домена из параллельного домена.

Десериализатор с выравниванием слов

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

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Deserializer_8b10b is
 Port (
 clk_ser : in STD_LOGIC;
 rst : in STD_LOGIC;
 serial_in : in STD_LOGIC;
 data_out : out STD_LOGIC_VECTOR(9 downto 0);
 aligned : out STD_LOGIC
 );
end Deserializer_8b10b;

architecture Behavioral of Deserializer_8b10b is
 signal shift_reg : STD_LOGIC_VECTOR(9 downto 0);
 signal bit_cnt : integer range 0 to 10;
 signal lock : STD_LOGIC := '0';
begin
 process(clk_ser, rst)
 begin
 if rst = '1' then
 shift_reg <= (others => '0');
 bit_cnt <= 0;
 lock <= '0';
 aligned <= '0';
 elsif rising_edge(clk_ser) then
 shift_reg <= shift_reg(8 downto 0) & serial_in;
 if bit_cnt < 10 then
 bit_cnt <= bit_cnt + 1;
 end if;
 -- check for alignment pattern at any bit position
 if lock = '0' then
 if bit_cnt = 10 then
 if shift_reg = "1111000010" then -- comma pattern
 lock <= '1';
 aligned <= '1';
 end if;
 end if;
 else
 -- After locked, output parallel word every 10 clocks
 if bit_cnt = 10 then
 data_out <= shift_reg;
 bit_cnt <= 0;
 end if;
 end if;
 end if;
 end process;
end Behavioral;

В реальной системе логика выравнивания должна также обрабатывать скольжение битов и несколько символов запятой на пакет. Предполагается, что часы CDR восстановлены; если нет, требуется блок PLL.

Стратегии пересечения часовых доменов

Высокоскоростные конструкции SerDes неизбежно переходят от более медленных параллельных часов к быстрым последовательным часам. Наиболее безопасным подходом является использование буфера FIFO (first-in, first-out) для разъединения доменов. В VHDL FIFO может быть реализован в виде двухпортовой ОЗУ с синхронизированными по часам указателями чтения и записи. Для минимальной задержки для управляющих сигналов могут использоваться синхронизаторы на основе рукопожатия (например, схема распознавания запросов).

Моделирование и проверка

Моделирование SerDes на высокой скорости требует тщательной конструкции тест-модуля. Тест-модуля должна генерировать шаблоны данных, впрыскивать джиттер (для оценки CDR и пределов времени) и проверять, что передаваемые данные соответствуют принятым данным после кадрирования. Ключевые аспекты включают:

Такие поставщики, как Xilinx и Intel, предоставляют библиотеки моделирования для своих примитивов SerDes. Использование этих библиотек ускоряет проверку, потому что они моделируют аналоговое поведение PLL и выравнивание. Всегда включайте эти модели в свою тестовую панель моделирования.

Расширенные темы: предварительный акцент, уравнение и соображения ПХБ

В то время как VHDL-код не может изменить поведение физического уровня, контроллер SerDes может регулировать параметры выравнивания, если приемопередатчик поддерживает их. Современные приемопередатчики FPGA имеют программируемый предварительный акцент передатчика и выравнивание приемника. В VHDL они настроены путем записи для управления регистрами через внутреннюю шину (например, AXI-Lite). Дизайнер должен понимать, как предварительный акцент повышает высокочастотные компоненты для компенсации потери канала и как непрерывный линейный выравниватель времени (CTLE) и эквалайзер обратной связи принятия решений (DFE) корректируют интерсимвольные помехи. Это знание влияет на компромиссы в цифровой машине состояния приема, такие как порог принятия решения для отбора образцов данных.

Компоновка ПХД одинаково важна. Серийные следы должны быть управляемыми импедансом (обычно дифференциал 100 Ом), а распределение часов должно минимизировать перекос между контрольными часами и выделенным вводом часов приемопередатчика. Эти физические ограничения находятся за пределами VHDL, но цифровой дизайнер должен предоставить четкие рекомендации инженеру ПХД, такие как требуемая толерантность к джиттеру и спецификации возвратных потерь.

Пример: внедрение Gigabit Ethernet SerDes в VHDL

Gigabit Ethernet (1000BASE-X) использует схему кодирования 8b/10b и скорость строки 1,25 Гбит/с. Сердес должен сериализовать 8-битное параллельное слово плюс бит управления (для различия символов K/D) в 10-битный последовательный поток. Приемник выполняет восстановление часов из скремблированных данных и выравнивает границы слов с помощью запятой (двоичный после кодирования).

  1. Кодер 8b/10b (может быть реализован в виде таблицы поиска), который преобразует 8-битные данные и управляющие сигналы в 10-битные кодовые группы.
  2. Сериализатор, который берет 10-битную кодовую группу и выводит ее последовательно на 1,25 Гбит/с.
  3. Десериализатор, который смещается в битах и ищет шаблон запятой.
  4. Блок CDR (обычно инстанцирован от примитивного поставщика), который генерирует восстановленные часы 125 МГц (для параллельной стороны) из входящего потока 1,25 Гбит/с.
  5. FIFO для передачи полученных данных из восстановленного часового домена в системный часовой домен.

Эта архитектура может быть полностью описана в VHDL, за исключением аналогового CDR и линейного драйвера/приемника.Многие проекты с открытым исходным кодом обеспечивают такие реализации в образовательных целях, но для производства настоятельно рекомендуется использовать закаленные приемопередатчики.

Заключение

Внедрение высокоскоростных SerDes в VHDL является сложной, но полезной задачей, которая соединяет цифровую логику и высокочастотный аналоговый дизайн. Код VHDL должен быть написан с ограничениями синтеза, закрытия времени и пересечения часовой области. Для ставок выше 1 Гбит / с, использование выделенных приемопередатчиков макросов имеет важное значение; для более низких ставок, полностью мягкий SerDes может быть построен с использованием регистров сдвига и счетчиков. Независимо от подхода, тщательное моделирование с реалистичным джиттером и шаблонами данных обеспечивает надежность. Понимание базовой архитектуры SerDes - сериализатор, десериализатор, CDR и выравнивание - позволяет дизайнеру сделать обоснованные компромиссы между областью, мощностью и производительностью. Следуя рекомендациям в этой статье, инженеры могут разработать надежные реализации SerDes, которые питают современные системы связи.


Внешние ссылки