|
Десериализатор 600 MHz на Stratix II |
|
|
|
Aug 11 2009, 08:34
|
Участник

Группа: Участник
Сообщений: 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. Помогло, но не надолго. Сейчас, как я понимаю, могут меняться пути от ног микросхемы, куда приходят данные, до модуля десериализатора на кристале. Нужно как то все зафиксировать чтобы при добавлении новых модулей и компиляции не было нужды каждый раз снова корректировать фазы клоков. Уверен есть людт которые решали такую проблему. Как грамотно разрешить ситуацию? Возможно можно зафиксировать раз и навсегда пути до модуля.
Спасибо.
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 24)
|
Aug 11 2009, 12:54
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Aug 11 2009, 13:19
|
Участник

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

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

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

|
Цитата(SM @ Aug 11 2009, 16:08)  Задействуйте DDR-регистры, и фаза должна перестать уезжать вообще. Они придуманы специально для этого. подскажите как это проще сделать?
|
|
|
|
|
Aug 16 2009, 12:47
|
Участник

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

|
Цитата(boulon @ Aug 11 2009, 16:19)  фазы на выходе PLL разве можно менять динамически, не перекомпилируя проект? Да. Для етого в MegaWizarde выберите функцию ALTPLL_RECONFIG. У Вас появятся входы для динамической реконфигурации.
|
|
|
|
|
Sep 30 2009, 12:06
|
Участник

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

|
Даю отчет.
Сделал как советовали, используя входные регистры в IO селлах. И это действительно помогло. Уже добавил много новых модулей в проект, фазы никуда не уехали. Плату пока не переделываем.
Спасибо всем за содействие.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|