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

 
 
> Десериализатор 600 MHz на Stratix II
boulon
сообщение Aug 11 2009, 08:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 25-08-06
Пользователь №: 19 820



Добрый день.

Столкнулся с проблемой следующего характера.
Реализовываю десериализатор, который принимает 8 LVDS 12-битных потоков с АЦП ADC5271 (50MSPS, 12 bits) на частоте 600 MHz, которые синхронизируются частотой 50 MHz тоже от этой микросхемы.
Из приходящей частоты 50 MHz сделал 2 клока 300MHz (сдвиг 180 град) для фиксации четных и нечетных бит и 50MHz для конечной фиксации 12-бит слова. Настроил фазы всех этих частот по паттернам из микросхемы (микросхема может генерировать 2 паттерна "101010101010" и "111111000000") для настройки. Все работает хорошо, но...
При добавлении новых модулей в стратикс и новой компиляции происходит рассинхронизация - меняется расскладка и приходится каждый раз подбирать фазы клоков. А так как на плате стоит 8 микросхем АЦП, то работа достаточно долгая и нудная.
Зафиксировал десериализатор при помощи FloorPlan. Помогло, но не надолго. Сейчас, как я понимаю, могут меняться пути от ног микросхемы, куда приходят данные, до модуля десериализатора на кристале.
Нужно как то все зафиксировать чтобы при добавлении новых модулей и компиляции не было нужды каждый раз снова корректировать фазы клоков.
Уверен есть людт которые решали такую проблему.
Как грамотно разрешить ситуацию? Возможно можно зафиксировать раз и навсегда пути до модуля.

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DmitryR
сообщение Aug 11 2009, 08:54
Сообщение #2


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(boulon @ Aug 11 2009, 12:34) *
Уверен есть людт которые решали такую проблему.

Вы правильно уверены, только зря не поискали по форуму: эта тема раз в пару месяцев обсуждается стабильно. Меняются только ADC, но все они на самом деле работают одинаково. Краткий пересказ:
- ловить данные надо по двум фронтам LCLK
- определять нулевой бит и записывать в FIFO надо по ADCLK
- если внутренности FPGA работают на ADCLK то без FIFO можно обойтись, если на синхронной, но другой частоте (например от PLL, которая раздает по плате частоты) - то FIFO можно заменить на эластичный буфер
Go to the top of the page
 
+Quote Post
boulon
сообщение Aug 11 2009, 10:22
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 25-08-06
Пользователь №: 19 820



Цитата(DmitryR @ Aug 11 2009, 11:54) *
Вы правильно уверены, только зря не поискали по форуму: эта тема раз в пару месяцев обсуждается стабильно. Меняются только ADC, но все они на самом деле работают одинаково. Краткий пересказ:
- ловить данные надо по двум фронтам LCLK
- определять нулевой бит и записывать в FIFO надо по ADCLK
- если внутренности FPGA работают на ADCLK то без FIFO можно обойтись, если на синхронной, но другой частоте (например от PLL, которая раздает по плате частоты) - то FIFO можно заменить на эластичный буфер


я все так и делаю. Проблема в том, что при добавлении модуля и компиляции все расстраивается и надо снова подбирать фазы клоков.
Можно ли как то зафиксировать пути сигналов от ног и до модуля дессериализации?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 11 2009, 11:19
Сообщение #4


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(boulon @ Aug 11 2009, 14:22) *
я все так и делаю.

Цитата(boulon @ Aug 11 2009, 12:34) *
Из приходящей частоты 50 MHz сделал 2 клока 300MHz (сдвиг 180 град) для фиксации четных и нечетных бит и 50MHz для конечной фиксации 12-бит слова.

Еще раз: вы делаете АБСОЛЮТНО не так, как я сказал. Или очень плохо описываете свои мысли. Не надо ничего делать из приходящей 50, LCLK - это 300 МГц. Надо прямо на ней хлопать по двум фронтам.
Go to the top of the page
 
+Quote Post
boulon
сообщение Aug 11 2009, 11:30
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 25-08-06
Пользователь №: 19 820



Цитата(DmitryR @ Aug 11 2009, 14:19) *
Еще раз: вы делаете АБСОЛЮТНО не так, как я сказал. Или очень плохо описываете свои мысли. Не надо ничего делать из приходящей 50, LCLK - это 300 МГц. Надо прямо на ней хлопать по двум фронтам.

у меня нету на альтере такого клока, все что заведено на плате это 50 MHz для синхронизации нулевого бита (начало слова) и данные (8 последовательных потоков). Теперь для фиксации каждого бита мне надо 50 мегагерц умножать в 6 раз и получать нужные клоки - 300 мегагерц. Вобщем, у меня модуль делает из входного клока 50MHz 3 частоты: 300MHz, 300MHz(180 град) и 50 MHz уже для фиксации всех 12 бит после их накопления в сдвиговых регистрах.
Да, действительно, я это не описал раньше.

Цитата(SM @ Aug 11 2009, 14:29) *
Fast Input Register = ON

спасибо, если это поможет

Сообщение отредактировал boulon - Aug 11 2009, 11:37
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 11 2009, 12:04
Сообщение #6


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(boulon @ Aug 11 2009, 15:30) *
у меня нету на альтере такого клока, все что заведено на плате это 50 MHz для синхронизации нулевого бита (начало слова) и данные (8 последовательных потоков).

То есть человек, который делал плату даже не поинтересовался, что же это за выход такой у АЦП, LCLK. Поэтому у вас теперь будет гемморой, если вообще что-то выйдет. И вот почему:
1. Фронт ADCLK может гулять +-350ps, то есть 700 ps p-p (стр. 7), и вместе с ним будет гулять фаза умноженного клока, а у вас все окно данных 1666 ps, минус фронт еще 180 ps минимум (на той же странице).
2. Из документации непонятно, какой у этого ADCLK джиттер и соответственно непонятно, какой он будет у вас на выходе PLL.
Вобщем я думаю, что тут без периодической перекалибровки не получится. И в любом случае я бы не отдал такую плату заказчику: надо переделать, разведя LCLK, и все станет легко.
Go to the top of the page
 
+Quote Post
boulon
сообщение Aug 11 2009, 12:31
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 25-08-06
Пользователь №: 19 820



Цитата(DmitryR @ Aug 11 2009, 15:04) *
То есть человек, который делал плату даже не поинтересовался, что же это за выход такой у АЦП, LCLK. Поэтому у вас теперь будет гемморой, если вообще что-то выйдет. И вот почему:
1. Фронт ADCLK может гулять +-350ps, то есть 700 ps p-p (стр. 7), и вместе с ним будет гулять фаза умноженного клока, а у вас все окно данных 1666 ps, минус фронт еще 180 ps минимум (на той же странице).
2. Из документации непонятно, какой у этого ADCLK джиттер и соответственно непонятно, какой он будет у вас на выходе PLL.
Вобщем я думаю, что тут без периодической перекалибровки не получится. И в любом случае я бы не отдал такую плату заказчику: надо переделать, разведя LCLK, и все станет легко.

человек, который делал плату уволился и поэтому...
а меня этот постоянная настройка уже выводит и очень сильно, я решил глобально решить эту проблему, поэтому и обратился сюда.
После каждой компиляции корректировать фазы на PLL и компилировать снова очень расточительно.Одна компиляция занимает 15 минут.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 11 2009, 12:42
Сообщение #8


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Увы, я абсолютно уверен, что глобально решить эту проблему можно только переделкой платы. А так я думаю у вас и без перекомпиляции фаза будет периодически съезжать. В дополнении ко всему еще возникает конечно ощущение, что у вас сам дизайн сделан как-то неверно. Параллельно с переделкой платы (надеюсь, ваш уволившийся не унес схематику с собой) сделайте timesim модель десериализатора (по-правильному, с LCLK) и добейтесь того, чтобы она работала идеально.

P.S. А что вы FPGA-то такие древние взяли?
Go to the top of the page
 
+Quote Post
boulon
сообщение Aug 11 2009, 12:54
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 25-08-06
Пользователь №: 19 820



Цитата(DmitryR @ Aug 11 2009, 15:42) *
Увы, я абсолютно уверен, что глобально решить эту проблему можно только переделкой платы. А так я думаю у вас и без перекомпиляции фаза будет периодически съезжать. В дополнении ко всему еще возникает конечно ощущение, что у вас сам дизайн сделан как-то неверно. Параллельно с переделкой платы (надеюсь, ваш уволившийся не унес схематику с собой) сделайте timesim модель десериализатора (по-правильному, с LCLK) и добейтесь того, чтобы она работала идеально.

P.S. А что вы FPGA-то такие древние взяли?

да, вы правы, при изменении температуры платы/чипа (например при начальном запуске) видно как фаза уезжает.
Кристалл сейчас занят на треть и я боюсь что если еще пихать модули так я не смогу настроить в принципе.
По выбору микросхем и платы - это было еще до меня, моя задача теперь запрограммировать с таким железом как есть.
А чип выбран EP2S60 1020 ног.
Я бы взял специальные для этого дела Arria

Сообщение отредактировал boulon - Aug 11 2009, 13:01
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 11 2009, 13:13
Сообщение #10


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Не смешивайте две проблемы. Сначала сделайте работоспособный дизайн с помощью модели (тайминговой). На модели у вас будет для начала идеальная частота, все должно заработать. Потом на модели же испортите входную частоту (введите вандер например +-150 ps), посмотрите в каких пределах ее качества дизайн сохраняет работоспособность. Если будут подозрения, что запаса прочности дизайна окажется недостаточно - стройте динамическую перекалибровку (АЦП периодически переводится в тестовый режим и фаза PLL гоняется до тех пор, пока не встанет в нужное место). Но опять же IMHO, это все можно делать чтобы удовлетворить начальство, типа смотрите я из мертвой платы сделал что-то. Клиенту такое монстрячество отдавать нельзя. Да еще там 64 канала, устройство серьезное видно.
Go to the top of the page
 
+Quote Post
boulon
сообщение Aug 11 2009, 13:19
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 25-08-06
Пользователь №: 19 820



Цитата(DmitryR @ Aug 11 2009, 16:13) *
Не смешивайте две проблемы. Сначала сделайте работоспособный дизайн с помощью модели (тайминговой). На модели у вас будет для начала идеальная частота, все должно заработать. Потом на модели же испортите входную частоту (введите вандер например +-150 ps), посмотрите в каких пределах ее качества дизайн сохраняет работоспособность. Если будут подозрения, что запаса прочности дизайна окажется недостаточно - стройте динамическую перекалибровку (АЦП периодически переводится в тестовый режим и фаза PLL гоняется до тех пор, пока не встанет в нужное место). Но опять же IMHO, это все можно делать чтобы удовлетворить начальство, типа смотрите я из мертвой платы сделал что-то. Клиенту такое монстрячество отдавать нельзя. Да еще там 64 канала, устройство серьезное видно.

фазы на выходе PLL разве можно менять динамически, не перекомпилируя проект?
Go to the top of the page
 
+Quote Post
ArMouReR
сообщение Aug 16 2009, 12:47
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 3-03-06
Пользователь №: 14 936



Цитата(boulon @ Aug 11 2009, 16:19) *
фазы на выходе PLL разве можно менять динамически, не перекомпилируя проект?

Да.
Для етого в MegaWizarde выберите функцию ALTPLL_RECONFIG.

У Вас появятся входы для динамической реконфигурации.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- boulon   Десериализатор 600 MHz на Stratix II   Aug 11 2009, 08:34
|- - SM   Цитата(boulon @ Aug 11 2009, 14:22) Можно...   Aug 11 2009, 10:36
||- - boulon   Цитата(SM @ Aug 11 2009, 13:36) Можно, ис...   Aug 11 2009, 10:53
||- - SM   Цитата(boulon @ Aug 11 2009, 14:53) нет я...   Aug 11 2009, 11:00
||- - boulon   Цитата(SM @ Aug 11 2009, 14:00) Если триг...   Aug 11 2009, 11:26
||- - SM   Цитата(boulon @ Aug 11 2009, 15:26) то ес...   Aug 11 2009, 11:29
|- - SM   Цитата(boulon @ Aug 11 2009, 15:30) спаси...   Aug 11 2009, 11:36
||- - boulon   Цитата(SM @ Aug 11 2009, 14:36) Смотрите ...   Aug 11 2009, 11:57
||- - SM   Цитата(boulon @ Aug 11 2009, 15:57) пишут...   Aug 11 2009, 12:00
|- - DmitryR   AN367 читайте. Цитата(boulon @ Aug 11 2009, ...   Aug 11 2009, 13:55
- - SM   Задействуйте DDR-регистры, и фаза должна перестать...   Aug 11 2009, 13:08
|- - boulon   Цитата(SM @ Aug 11 2009, 16:08) Задейству...   Aug 11 2009, 14:18
|- - SM   Цитата(boulon @ Aug 11 2009, 18:18) подск...   Aug 11 2009, 14:28
- - boulon   Даю отчет. Сделал как советовали, используя входн...   Sep 30 2009, 12:06


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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 12:27
Рейтинг@Mail.ru


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