Jump to content

    
Sign in to follow this  
syoma

Индустриальный 10GB Ethernet Switch на ПЛИС

Recommended Posts

53 minutes ago, Flood said:

Можно ли получить единый домен для всех портов уже на уровне PHY, или они будут группироваться по-квадово? Если можно для всех, то достаточно ли для этого синхронизированных внешних рефклоков?

Для SGMII можно с помощью одного MMCM подключить 19 LVDS пар Rx к одному банку IO.

То есть, к двум банкам IO можно подключить 19 GbE PHYs.

См. XAPP523.

Share this post


Link to post
Share on other sites
17 минут назад, blackfin сказал:

Для SGMII можно с помощью одной MMCM подключить 19 LVDS пар Rx к одному банку IO.

То есть, к двум банкам IO можно подключить 19 GbE PHYs.

См. XAPP523.

Спасибо! Правда, мой вопрос касался использования и тактирования встроенного PHY (MGT). Т.к. не было реальных проектов более чем на 4 порта, до сих пор точно не знаю, как получить общий клок между различными квадами. И, отдельно, между не смежными квадами, использующими разные внешние входы refclk.

Share this post


Link to post
Share on other sites
On 1/24/2020 at 6:02 PM, Flood said:

Спасибо! Правда, мой вопрос касался использования и тактирования встроенного PHY (MGT). Т.к. не было реальных проектов более чем на 4 порта, до сих пор точно не знаю, как получить общий клок между различными квадами. И, отдельно, между не смежными квадами, использующими разные внешние входы refclk.

А зачем вам это надо? То есть просто, чтобы не возиться с CDC логикой или есть какие-то другие причины?

Share this post


Link to post
Share on other sites
On 1/24/2020 at 8:02 PM, Flood said:

Т.к. не было реальных проектов более чем на 4 порта, до сих пор точно не знаю, как получить общий клок между различными квадами

а вы 4 на альтере поднимали? и как общий клок сделали? или просто корку 40g использовали?

Share this post


Link to post
Share on other sites
3 часа назад, syoma сказал:

А зачем вам это надо? То есть просто, чтобы не возиться с CDC логикой или есть какие-то другие причины?

Главным образом - для понимания (корректности) схемы тактирования. В пределах одного квада более-менее понятно, в т.ч. потому что есть примеры. А вот для межквадовых ситуаций - не вполне понятно. И в особенности - для случаев с внешним фанаутом рефклока (когда портов так много, что внутренний не достает).

Ну а на практике - как правило, удобнее иметь общий тактовый домен.

 

3 часа назад, new123 сказал:

а вы 4 на альтере поднимали? и как общий клок сделали? или просто корку 40g использовали?

Увы, реально поднимал только на Xilinx. На альтере наверняка свои особенности.

Share this post


Link to post
Share on other sites
6 minutes ago, Flood said:

И в особенности - для случаев с внешним фанаутом рефклока (когда портов так много, что внутренний не достает).

Вроде, это должна быть достаточно экзотическая ситуация. Во всех платах, с которыми мы работаем, для каждого QUADа доступен свой RefClk от внешнего программируемого генератора, позволяющего получить любую нужную частоту 125/156,25Мгц. Также частенько все это дело выводится через FMC и там тоже есть свои RefCLK линии со своими генераторами.  Поэтому у нас необходимость тактирования какого либо квада от соседнего возникала только в экзотическом случае, когда надо было получать разные скорости и протоколы в пределах одного квада и для этого как назло нужны были разные частоты опорников.

 

Share this post


Link to post
Share on other sites
59 минут назад, syoma сказал:

Вроде, это должна быть достаточно экзотическая ситуация. Во всех платах, с которыми мы работаем, для каждого QUADа доступен свой RefClk от внешнего программируемого генератора, позволяющего получить любую нужную частоту 125/156,25Мгц.

При этом у вас в каждом кваде свой частотный домен? Или даже в каждом канале?

Share this post


Link to post
Share on other sites
2 hours ago, Flood said:

При этом у вас в каждом кваде свой частотный домен? Или даже в каждом канале?

CDC делается в каждом GTH независимо от других:

Quote

The GTH transceiver RX datapath has two internal parallel clock domains used in the PCS: The PMA parallel clock domain (XCLK) and the RXUSRCLK domain. To receive data, the PMA parallel rate must be sufficiently close to the RXUSRCLK rate, and all phase differences between the two domains must be resolved.

 

The GTH transceiver includes an RX elastic buffer to resolve differences between the XCLK and RXUSRCLK domains.

См: UG576, page 268.

 

UPD:

Quote

These rules must be observed when sharing a reference clock to ensure that jitter margins for high-speed designs are met:
• The number of Quads above the sourcing Quad must not exceed two.
• The number of Quads below the sourcing Quad must not exceed two.
• The total number of Quads sourced by an external clock pin pair (MGTREFCLKN/MGTREFCLKP) must not exceed five Quads (or 20 transceivers).
The maximum number of transceivers that can be sourced by a single clock pin pair is 20. Designs with more than 20 transceivers require the use of multiple external clock pins to ensure that the rules for controlling jitter are followed. When multiple clock pins are used, an external buffer can be used to drive them from the same oscillator.

См: UG576, page 36.

Share this post


Link to post
Share on other sites
47 minutes ago, Flood said:

При этом у вас в каждом кваде свой частотный домен? Или даже в каждом канале?

И так и так. И все это асинхронно к PCIe. Причем во многих QUADах частота-то одна и та же 125МГц, но MGTREFCLK запитан от разных тактовых генераторов или от разных каналов одного и того же генератора. Поэтому мы специально рассчитываем что эти клоки могут быть асинхронными, да и все. Хотя генератор на плате, может, их и синхронно генерит.

Share this post


Link to post
Share on other sites
On 1/24/2020 at 7:21 PM, Flood said:

Вопрос чуть в сторону - при реализации 20-и портов что происходит с частотными доменами портов? Можно ли получить единый домен для всех портов уже на уровне PHY, или они будут группироваться по-квадово? Если можно для всех, то достаточно ли для этого синхронизированных внешних рефклоков?

Интересно как для 1Гбит (CPLL),  так и для случая 10Гбит (QPLL).

Напрашивается решение - каждый quad работает на своей частоте tx и rx, но вся логика соединения между портами работает на одной частоте. 

Если точнее - частота tx - одна на quad, частота rx - у каждого порта своя. Дело в том, что кодировка 64/66 которая используется в 10G не предполагает выравнивания скорости потока внутри GTH. Поэтому принятые данные от GTH поступают на частоте, которая восстановлена из входного сигнала. Работать с 20-ю частотами конечно невозможно, поэтому надо перейти на одну частоту.

 

Share this post


Link to post
Share on other sites
6 hours ago, quest said:

Белый Кролик вам не подходит?

Если я правильно Вас понял, то это обыкновенная гигабитщина на Virtex-6.

Share this post


Link to post
Share on other sites

Приветствую!

18 minutes ago, syoma said:

Если я правильно Вас понял, то это обыкновенная гигабитщина на Virtex-6.

Может тогда посмотреть  на VPX варианты,  например типа ComEth4582a Ethernet matrix

Удачи! Rob. 

Share this post


Link to post
Share on other sites
35 минут назад, dsmv сказал:

Если точнее - частота tx - одна на quad, частота rx - у каждого порта своя. Дело в том, что кодировка 64/66 которая используется в 10G не предполагает выравнивания скорости потока внутри GTH. 

 

В GTx есть Elastic Buffer, который позволяет работать с одной и той же частотой на TX и RX (для случая Ethernet, вроде, для эластика используется IFG). Вопрос не в этом.

 

Вот как делается общий TX clock для квада? Берется выход TX clock от одного GT и раздается на входы (как минимум, TX клока) всех каналов в кваде. В одном кваде единый источник этой частоты - в стандартном случае это результат деления частоты QPLL.

 

Вопрос - а можно ли так раздать и для каналов в соседних квадах?

Если можно, то почему (т.е. какие условия нужно выполнить, наверное, как минимум должен быть один и тот же источник GT refclk), и сколько квадов можно так затактировать, а если нельзя, то тоже - почему?

 

В документации я не нашел прямого ответа на этот вопрос. Обычно все тонкости с раздачей частоты заканчиваются обсуждениями внутри квада. А вот что между квадами - ссылок не нашел, ни на пример реализации, ни на запрет.

Share this post


Link to post
Share on other sites
On 2/3/2020 at 8:00 PM, Flood said:

 

В альтере кстати, в ее ip core есть настройка, либо пользуешься выдаваемым коркой клоком для забирания данных, либо в корку можно подать свой клок. Так можно посадить все в один клоковый домен. В трансиверах все равно на выходе стоит компенсанционное FIFO, которое компенсирует не совпадение частот.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this