|
Десериализатор 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. Помогло, но не надолго. Сейчас, как я понимаю, могут меняться пути от ног микросхемы, куда приходят данные, до модуля десериализатора на кристале. Нужно как то все зафиксировать чтобы при добавлении новых модулей и компиляции не было нужды каждый раз снова корректировать фазы клоков. Уверен есть людт которые решали такую проблему. Как грамотно разрешить ситуацию? Возможно можно зафиксировать раз и навсегда пути до модуля.
Спасибо.
|
|
|
|
|
Aug 11 2009, 08:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

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

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

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

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

|
Цитата(SM @ Aug 11 2009, 13:36)  Можно, использовав входные триггеры в IO-целлах. Они никуда переехать не могут  нет я имел ввиду другое. Данные заходят в кристал через IO селл и потом идут через кристал в модуль десериализатора. Так вот эти пути, от IO селл до модуля. Потому что получается что от одной компиляции к другой они могут быть разные и набег фаз разный. А у меня 8 каналов данных параллельно.
|
|
|
|
|
Aug 11 2009, 11:26
|
Участник

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

|
Цитата(SM @ Aug 11 2009, 14:00)  Если триггер в модуле и триггер в IO-целле тактируются одним клоком, и правильно указаны констрейны, то квартус автоматически выдержит правильную времянку при разводке от IO-целла до модуля. то есть из моего модуля вынести первый тригер "захвата" входящих данных в IO селл? Каким констрейнтом это можно сделать?
|
|
|
|
|
Aug 11 2009, 11:29
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(boulon @ Aug 11 2009, 15:26)  то есть из моего модуля вынести первый тригер "захвата" входящих данных в IO селл? Каким констрейнтом это можно сделать? Fast Input Register = ON (для пина), причем Вам надо смотреть в сторону DDR-регистров, коих в IO-целле как раз пара, и потом еще проверить по отчетам, вынесся ли он туда. А то не каждый триггер можно туда засунуть, он должен соответствовать неким требованиям, в основном в части сигналов сброса, предустановки. Читайте апноты.
|
|
|
|
|
Aug 11 2009, 11:30
|
Участник

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

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

|
Цитата(SM @ Aug 11 2009, 14:36)  Смотрите картинку 2-52 вот там http://www.altera.com/literature/hb/stx2/stx2_sii51002.pdfТам есть 2 input-регистра, один работает по фронту, второй по спаду, так вот Вам лучше их задействовать, да и клока одного хватит, не надо делать два разных двинутых 300-МГцовых. не хватит, пишут что их всего 6 на микросхеме, у меня же всего 64 канала с АЦП (8 восьмиканальных АЦП на плате)
|
|
|
|
|
Aug 11 2009, 12:04
|
Профессионал
    
Группа: Свой
Сообщений: 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, и все станет легко.
|
|
|
|
|
Aug 11 2009, 12:31
|
Участник

Группа: Участник
Сообщений: 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 минут.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|