реклама на сайте
подробности

 
 
> Cyclone V завести все трансиверы
spectr
сообщение Nov 21 2016, 10:11
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Возможно ли завести одновременно все 9 трансиверов (каждый в режиме tx/rx), находящихся в пятом циклоне (пускай будет кристалл 5CSXFC6D6F31C7)?

Больше 6-ти пока не получается даже скомпилировать....
Перепробовал разные варианты конфигураций: и с встроенными TXPLL, и с внешними, и с bonded и с не-bonded, - не собирается и всё тут. Такое ощущение что это невозможно (хотя на форуме встречал упоминания об обратном, но без какой-либо конкретики, пруф).

Куда копать хотя бы?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 14)
warrior-2001
сообщение Nov 21 2016, 10:33
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



Именно для циклона не скажу, но это реально, если это не независимые каналы, а один общий канал, по типу SRIO, JESD204 или чего-то подобного.


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
spectr
сообщение Nov 21 2016, 10:50
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



В моем случае это будут несвязанные физически (в каждом канале своя опорная тактовая), но связанные логически - например, прокинуть данные из одного канала в другой.
Go to the top of the page
 
+Quote Post
Don Eugenio
сообщение Nov 21 2016, 11:12
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 2-08-16
Пользователь №: 92 805



Какое IP ядро вы используете (Native-Phy или Custom-Phy)?
В своем проекте на 5CGX использовали все трансиверы с IP ядром Native-Phy и внешней PLL для tx. Всё заработало.
Go to the top of the page
 
+Quote Post
spectr
сообщение Nov 21 2016, 11:33
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Native PHY, настройки в данный момент такие:
Прикрепленное изображение


Выдает следующие ошибки:
Код
Error (14566): Could not place 1 periphery component(s) due to conflicts with existing constraints (1 Channel PLL(s))
    Error (175020): Illegal constraint of Channel PLL that is part of Cyclone V Transceiver Native PHY gxb to the region (0, 40) to (0, 42): no valid locations in region
    Error (11238): Node is not compatible with other nodes placed at the same location either because there are too few available Channel PLL locations, or the nodes have different inputs, parameters, or both.


Don Eugenio, вполне вероятно, что я неправильно подключаю сигналы. Как это сделано у Вас?

Правильно ли я понимаю, что сделано всё так:
- у каждого трансивера есть своя pll;
- трансиверы сгруппированы в банки по 3 штуки;
- в каждом банке pll "центрального" трансивера может шарить свой клок на соседей;
- клок также можеть шариться и на другие банки (но это увеличивает джиттер) с помощью bonded-режима;
- опору можно давать через специальную ногу REFCLK;
- передающую часть трансивера можно тактировать лююбым из вышеприведенных способов, а также отдельным pll, а также просто внешней опорой с ножки (вопрос - с какой?);
?

И сразу еще вопрос: что дает параметр "TX local clock division factor" и что означает параметр "TX PLL base data rate"? Это для всяких JESD-применений, когда используется несколько каналов?
Пока не могу понять: вроде написано что это делитель, а по цифрам получается умножитель...
Go to the top of the page
 
+Quote Post
Don Eugenio
сообщение Nov 21 2016, 11:35
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 2-08-16
Пользователь №: 92 805



Настройки нормальные.
По моему проекту: у нас используется внешняя частота с тактового генератора. Она заводится на клоковый вход, чтобы была возможность нормально использовать Fraction PLL. Саму PLL настраиваем на необходимые нам частоты (у меня Datarate 625Mbit, один выход с PLL 312.5Mhz, другой 62.5Mhz). И оба используем для тактирования native-phy. В Native-phy выставлено необходимое количество каналов сразу. Всего у меня 3 трансивера.
По сигналам:
На вход ext_pll_clk - заводим частоту с внешней PLL.
На вход rx_cdr_refclk - заводим частоту тоже с внешней PLL.
Входная частота заведена в плату (REFCLK), но не используется.

Быстро создал проект с минимумом IP ядер (разных блоков, не подключал сигналы которые на расположение не влияют, контакты в Pin Planner не задавал), чтобы проверить точно ли он расположит всё (чип 5CSXFC6D6F31C7). Всё нормально располагает.

Верхний уровень проекта.

Настройка PLL. (Настройка FPLL_CTRL - по умолчанию что предлагается в IP ядре).

Настройка Native-Phy.

Результат в Chip Planner.



Сообщение отредактировал Don Eugenio - Nov 21 2016, 12:15
Go to the top of the page
 
+Quote Post
spectr
сообщение Nov 21 2016, 12:33
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Спасибо за пояснения, буду разбираться.
Для чего на выходе FPLL задается два клока?
Один понятно зачем (тактировать параллельную шину). А второй, равный половине скорости потока - для чего (для чего значение именно в Data_rate/2)?
Go to the top of the page
 
+Quote Post
Don Eugenio
сообщение Nov 21 2016, 13:03
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 2-08-16
Пользователь №: 92 805



В данном тестовом проекте Quartus расположил входную частоту на PLL на pin AB27.
Для тактирования паралельной шины данных передаваемых с трансивера я использую выходную частоту с IP ядра (порт tx_std_clkout). Для принятых данных по аналогии используется частота rx_std_clkout. (данное решение было подсмотрено в reference desing examples.
На выходе Pll настроены 2 частоты:
Большая для передатчика, у меня равна 312.5 Мгц, из моего понимания - передатчик передаёт данные по двум фронтам, тем самым происходит умножение частоты и в итоге 625 Mbit поток данных.
Меньшая частота используется как опорная для CDR, завожу ее на порт rx_cdr_refclk. Она настраивается на частоту которая настроена в IP ядре Native-Phy, в части RX (62.5 МГц).
Go to the top of the page
 
+Quote Post
spectr
сообщение Nov 21 2016, 13:28
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Собралось, ура.
История такая: если один трансивер (один instance) настроить как 9-канальный и в режиме bonded, то всё собирается, тактируясь от одной FPLL-ки, как собственно и получилось у ув. Don Eugenio.
Однако, если сделать 9 экземпляров одноканального трансивера, тактируемых также от одного клока, то - не собирается. А у меня изначально была именно такая конфигурация.
Видимо, квартус не понимает что идентичные по настройкам трансиверы как бы можно и объединить...

Ну плюс какой-то ад в документации, где конкретики чуть меньше, чем ноль.
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Nov 22 2016, 05:52
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



Если одна мегафункция с общей частотой - то это сработает. Если много разных с одной частотой - то не сработает. Именно это я и хотел сказать в своем посте.


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
spectr
сообщение Nov 25 2016, 11:09
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Собрать удалось, теперь разбираюсь с синхронизацией потока.

Появился новый вопрос.
Собираю конфигурацию следующего вида:
- 1-канальный Native PHY на ~2.5ГБит/с с включенным входом rx_bitslip для ручного управления байтовой синхронизацией;
- Altera PLL;
- PHY Reset controller;


Далее, есть простейший тестбенч, который дожидается пока пройдет сброс, потом дергает rx_bitslip пока не поймает паттерн и всё (txd соединен с rxd, т.е. сделан external loopback). На вход (tx_parallel_data) трансивера всегда подается константа. Симуляция - функциональная.

На выходе я ожидаю увидеть как побитово двигается шина rx_parallel_data и в какой-то момент этот процесс останавливается (когда поймается паттерн). Однако странности на выходе (rx_parallel_data) наблюдаю я. Такое ощущение, что битовая синхра постоянно "подсрывается" понемногу - видны плывущие как будто бы глитчи длиной в такт rx_parallel_clk, которые портят принятые данные. Как такое может быть?
Если интересно, могу выложить проект с моделькой.

Картинки.
Настройки трансивера:
Прикрепленное изображение

Прикрепленное изображение


Настройки PLL:
Прикрепленное изображение


Времянка поближе - видно глитчи (см. шину txdata - это вход трансивера - константа, развернутая rxdata - его выход):
Прикрепленное изображение


Времянка подальше - видно как плывет rxdata:

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Don Eugenio
сообщение Nov 25 2016, 13:04
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 2-08-16
Пользователь №: 92 805



В своем проекте использую преобразование 8b/10b и синхронизацию осуществляю по K28.5 символу. Проверялось в железе. Стабильно принимало и синхронизация никуда не уплывала. Какие частоты заводите на порты rx_std_coreclkin, tx_std_coreclkin и на какой частоте передаёте данные и смотрите принимаемые?
Go to the top of the page
 
+Quote Post
spectr
сообщение Nov 25 2016, 13:20
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Сейчас туда подаю tx_std_clkout и rx_std_clkout соответственно, чтобы уж совсем наверняка.
8b/10b использовать не получится, т.к. входящий поток от другой железки, с которой будет общение, без кодирования. Поэтому и изобретаю велосипед с калибровкой.

Вспомнил сейчас: в былые времена сталкивался с похожей проблемой уплыва шины rx_parallel_data, когда симулировал Arria II GX. Как выяснилось в итоге (после многонедельного секса), в тестбенче с маааааленькой погрешностью вычислялся опорный такт (было выражение вида period=1/75_000_000, что давало 13.(3)нс). Из-за этого мееееедленно, но верно плыла линия txd. Вылечилось добавлением в тестбенч PLL и заданием в качестве опорной частоты "хорошего" такта - 50 МГц.

Но подобный трюк сейчас - не проходит, значит это уже что-то другое (((
Go to the top of the page
 
+Quote Post
spectr
сообщение Nov 28 2016, 08:04
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Чудеса расчудесные происходят: настроил трансивер ровно на 2500 Мбит/с с опорой 50 МГц: всё моделируется идеально, никаких уплывов и прочих гадостей. Всё-таки, ситуация оказалось в точности как раньше с Arria (просто вылезла чуть с другой стороны).
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Nov 30 2016, 08:03
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(spectr @ Nov 21 2016, 16:28) *
История такая: если один трансивер (один instance) настроить как 9-канальный и в режиме bonded, то всё собирается, тактируясь от одной FPLL-ки, как собственно и получилось у ув. Don Eugenio.
Однако, если сделать 9 экземпляров одноканального трансивера, тактируемых также от одного клока, то - не собирается. А у меня изначально была именно такая конфигурация.
Видимо, квартус не понимает что идентичные по настройкам трансиверы как бы можно и объединить...
Ну плюс какой-то ад в документации, где конкретики чуть меньше, чем ноль.

В данный момент времени стоит схожая задача, поэтому возник, возможно, несколько странный вопрос - если есть несколько независимых приемопередатчиков (fpga связана с несколькими другими, которые в общем случае никак не связаны между собой), то могу ли я их объединить в режиме bounded, создав один. Или все-таки придется реализовывать независимо? Не до конца понятен принцип восстановления частоты из потока данных CDR, вроде бы опорную частоту и частоту cdr_clk подаю одну на всех, а восстанавливает частоту приемопередатчик из общего потока или все-таки отдельно для каждой линии независимо?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01484 секунд с 7
ELECTRONIX ©2004-2016