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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Сдвиг фазы такта в Virtex4
maxics
сообщение Oct 26 2011, 18:28
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Защелкиваю данные с АЦП (16 бит). Есть подозрения, что данные сдвинуты относительно такта. Пробовал инвертировать такт, не помогло. Слышал, что можно сдвигать фронт, прописывая условия в UCF файле. Подскажите как это сделать?

Сообщение отредактировал maxics - Oct 26 2011, 18:29
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Oct 26 2011, 19:12
Сообщение #2


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Для начала Вам необходимо прочитать о constraint'ах (см. Constraint Guide) OFFSET, IOBDELAY и IOB.
При помощи OFFSET IN можно задать необходимое соотношение между данными и clock'ом, а при компиляции среда сможет проверить выполняются ли эти соотношения или нет.
IOBDELAY определяет использование элементов задержки в IOB.
Именно для V-4 – не помню, но в ряде FPGA можно задерживать как Data, так и Clock.
Кстати, обращаю Ваше внимание, иногда этот Delay втыкается автоматически (когда не нужен), поэтому его лучше всегда задавать вручную.
Также помогает FPGA Editor, чтобы понять, какие ресурсы использованы и как расположены триггера (легли в IOB или нет - от этого очень сильно зависит времянка)...
Constraint IOB задаёт: укладывать триггер в IOB или нет.

Если не поможет, то тогда почитайте про DCM. Вроде как им можно покрутить фазу непрерывного clock'а.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 27 2011, 06:17
Сообщение #3


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

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



Цитата(maxics @ Oct 26 2011, 21:28) *
Есть подозрения, что данные сдвинуты относительно такта.

Подозрения - это плохо, в таких случаях надо иметь уверенность. Поэтому вы напишите, как у вас все тактируется (какой марки ADC и откуда берут тактовые частоты ADC и FPGA), тогда вам можно будет ответить, как сделать это правильно. Потому что прежде, чем выполнить рекомендации из предыдущего поста вам все-таки придется понять фазовое соотношение.
Go to the top of the page
 
+Quote Post
maxics
сообщение Oct 27 2011, 06:49
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Цитата(DmitryR @ Oct 27 2011, 10:17) *
Подозрения - это плохо, в таких случаях надо иметь уверенность. Поэтому вы напишите, как у вас все тактируется (какой марки ADC и откуда берут тактовые частоты ADC и FPGA), тогда вам можно будет ответить, как сделать это правильно. Потому что прежде, чем выполнить рекомендации из предыдущего поста вам все-таки придется понять фазовое соотношение.


ADC - LTC2208. Такт АЦП 100 МГц с кварца. Затем с АЦП такт заводится сначала на одну ПЛИС (Spartan3), а затем на VIrtex4 LX25. По этому такту защелкиваются данные с АЦП. Вижу появление доп. гармоник оцифрованного сигнала. На входе их нет. Подозрение на неправильное защелкивание.
Go to the top of the page
 
+Quote Post
Джеймс
сообщение Oct 27 2011, 07:41
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Цитата(maxics @ Oct 27 2011, 10:49) *
Подозрение на неправильное защелкивание.

А осциллографом посмотреть?..
Хотя datasheet недвусмысленно говорит - Latch the data on the falling edge of CLKOUTB или Latch the data on the rising edge of CLKOUTA.

Цитата(maxics @ Oct 27 2011, 10:49) *
Вижу появление доп. гармоник оцифрованного сигнала.

Аналоговый "антиалайзинговый" НЧ-фильтр на входе АЦП стоит?
Go to the top of the page
 
+Quote Post
maxics
сообщение Oct 27 2011, 08:01
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Цитата(Джеймс @ Oct 27 2011, 11:41) *
Аналоговый "антиалайзинговый" НЧ-фильтр на входе АЦП стоит?


Да, стоит.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 27 2011, 13:30
Сообщение #7


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

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



Цитата(maxics @ Oct 27 2011, 10:49) *
Затем с АЦП такт заводится сначала на одну ПЛИС (Spartan3), а затем на VIrtex4 LX25.

Чувствую, будет проще если вы схему загрузите. А то уж больно хитро как-то.
Go to the top of the page
 
+Quote Post
Genn
сообщение Oct 27 2011, 17:50
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 48
Регистрация: 14-04-05
Пользователь №: 4 146



Цитата(DmitryR @ Oct 27 2011, 17:30) *
Чувствую, будет проще если вы схему загрузите. А то уж больно хитро как-то.


Согласен, взглянуть бы на схему (достаточно функциональную) в части организации тактирования АЦП и ПЛИС и на спектр оцифрованного сигнала (какое значение SFDR получается?), потому как наличие спектральных составляющих, не относящихся к самому сигналу может быть вызвано некачественным тактовым сигналом на самом АЦП (либо по причине характеристик самого генератора, либо по причине каких-либо промахов в схемотехнике распределения тактовой частоты).
Практически уверен, что ПЛИС здесь не причем (подбором настроек, указанных в ответе Boris_TS и выбором фронта вполне можно получить подходящие фазовые соотношения), если конечно отсчеты АЦП защелкиваются регистрами, расположенными в блоках IOB (обязательное условие стабильной работы).
Есть ещё момент, который нужно иметь ввиду: Генераторы ВЧ - сигналов зачастую совместно с полезным сигналом на выходе имеют еще и гармоники этого сигнала, которые не являются признаком несоответствующей работы схемы.
Go to the top of the page
 
+Quote Post
maxics
сообщение Oct 28 2011, 13:24
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Выкладываю схему тактирования и FFT. Такт 100 МГц. Рис.2 - fft в нашем случае. На входе Sin 19 МГц. Видны собственные гармоники, которые ведут себя неадекватно. При изменении уровня входного сигнала, гармоники изменяются непропорционально. Должно быть как на рис.3. доп. "палки" - гармоники генератора.
Пробовали понижать тактовую частоту. До 70 МГц все в норме.

Сообщение отредактировал maxics - Oct 28 2011, 14:37
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Genn
сообщение Oct 28 2011, 18:45
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 48
Регистрация: 14-04-05
Пользователь №: 4 146



Цитата(maxics @ Oct 28 2011, 17:24) *
Выкладываю схему тактирования и FFT. Такт 100 МГц. Рис.2 - fft в нашем случае. На входе Sin 19 МГц. Видны собственные гармоники, которые ведут себя неадекватно. При изменении уровня входного сигнала, гармоники изменяются непропорционально. Должно быть как на рис.3. доп. "палки" - гармоники генератора.
Пробовали понижать тактовую частоту. До 70 МГц все в норме.


Основное, что бросается в глаза - это используемый в схеме генератор тактового сигнала и путь, проходимый тактовым сигналом из АЦП к ПЛИС, регистрирующей отсчеты (Virtex 4). Если честно такое решение (прохождение тактового сигнала из АЦП) выглядит нелогичным ( должно быть АЦП - Virtex4 - Spartan3), но фатальным оно не является. Для стабильной повторяемости результатов разводки проектов для ПЛИС предлагаю следующий обратить внимание на следующие моменты:
1. Spartan3
1.1. Тактовый сигнал обязательно должен быть заведен на специальные контакты GCLK
1.2. Поскольку петли для выравнивания фазы с помощью DCM скорее всего нет, для стабильной повторяемости результатов трассировки тактовый сигнал на выходе Spartan3 рекомендую выполнить с использованием выходного DDR-регистра в IOB, и уже с выхода регистра сигнал будет поступать на выходные контакты. (К сведению: в Spartan3 для использования DDR - регистра придется подключать DCM для формирования сигналов clk0 и clk180, кстати здесь можно и поиграться с фазой тактового сигнала 0->(clk0,clk180), Pi/2->(clk90,clk270), Pi->(clk180,clk0), 3Pi/2->(clk270,clk90), где в скобках указано подключение тактовых к DDR-регистру ).
2. Virtex4
2.1. Тактовый сигнал обязательно должен быть заведен на специальные контакты (глобального или регионального тактового сигнала). Замечание: Если используются входы для регионального тактового сигнала, необходимо убедиться, что входные (данные из АЦП) контакты принадлежат одному из банков, имеющих подключение к контакту регионального тактового сигнала сигналу.
2.2. поскольку в промежуточной ПЛИС (Sprtan3) будет использована DCM, то для упрощения работы в Virtex4 желательно использовать просто глобальный буфер BUFG (при использовании DCM, а она будет 2-ой в цепочке, а поэтому, придется заниматься ее инициализацией).
2.3. еще раз повторюсь - обязательное использование входных регистров в блоках IOB для защелкивания данных из АЦП.

Что касается используемого генератора GK-154. Подобные генераторы предназначены только для тактирования цифровых схем. Ожидать качественных характеристик от АЦП при его использовании не приходится: качество сигнала на его выходе как раз и может служить причиной той картины что представлена на 1-ом спектре (виден сигнал, 2-я гармоника, а наивысшая из ненужных палок - около -75 дБ, причем спектр не разваливается). Кстати, при понижении тактовой частоты какой генератор использовался? Конечно параметры и GK-154 можно улучшить: поставить на его выходе полосовой кварцевый фильтр, но относительная нестабильность этого генератора улучшена быть не может.

Еще одной из причин появления подобных продуктов может быть непроработанная топология платы, отсутствие должной развязки по питанию между АЦП и другими функциональными узлами. При настройке рекомендую в качестве тактового генератора использовать внешний лабораторный (в качестве его можно не сомневаться, а заодно и исключите влияние GK-154 как непосредственно через тактовый сигнал, так и через питание).
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Oct 28 2011, 20:26
Сообщение #11


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Genn @ Oct 28 2011, 22:45) *
1.2. Поскольку петли для выравнивания фазы с помощью DCM скорее всего нет, для стабильной повторяемости результатов трассировки тактовый сигнал на выходе Spartan3 рекомендую выполнить с использованием выходного DDR-регистра в IOB, и уже с выхода регистра сигнал будет поступать на выходные контакты. (К сведению: в Spartan3 для использования DDR - регистра придется подключать DCM для формирования сигналов clk0 и clk180, кстати здесь можно и поиграться с фазой тактового сигнала 0->(clk0,clk180), Pi/2->(clk90,clk270), Pi->(clk180,clk0), 3Pi/2->(clk270,clk90), где в скобках указано подключение тактовых к DDR-регистру ).

Если мне не изменяет память, то в Spartan3 есть DLL, который может криво/коряво (с точки зрения jitter'а) заниматься компенсацией фазы. Даже если петля обратной связи не была предусмотрена, то, по идеи, её можно сделать на любой подходящей свободной ножке, использовав и OBUF, и IBUF оной. В этом случае схема более или менее нормальной компенсации может выглядеть следующим образом:
IN_CLK -> IBUF -> BUFG* -> DLL.CLKIN
IO_BF_CLK -> IBUF -> BUFG* -> DLL.CLKBF
DLL.CLK0/DLL.CLK180 -> BUFG -> ODDR -> OBUF -> IO_BF_CLK
DLL.CLK0/DLL.CLK180 -> BUFG -> ODDR -> OBUF -> OUT_V4_CLK
* - Если возможно отказаться от этих BUFG, то от них обязательно необходимо отказаться (именно со Spartan3 не работал - поэтому не знаю надо ли их использовать в этом месте или нет) - чем меньше лишних элементов, тем значительно меньше jitter и отклонение фазы выходного clock'а относительно входного.
Go to the top of the page
 
+Quote Post
maxics
сообщение Oct 28 2011, 20:29
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Цитата(Genn @ Oct 28 2011, 22:45) *
Основное, что бросается в глаза - это используемый в схеме генератор тактового сигнала и путь, проходимый тактовым сигналом из АЦП к ПЛИС, регистрирующей отсчеты (Virtex 4). Если честно такое решение (прохождение тактового сигнала из АЦП) выглядит нелогичным ( должно быть АЦП - Virtex4 - Spartan3), но фатальным оно не является. Для стабильной повторяемости результатов разводки проектов для ПЛИС предлагаю следующий обратить внимание на следующие моменты:
1. Spartan3
1.1. Тактовый сигнал обязательно должен быть заведен на специальные контакты GCLK
1.2. Поскольку петли для выравнивания фазы с помощью DCM скорее всего нет, для стабильной повторяемости результатов трассировки тактовый сигнал на выходе Spartan3 рекомендую выполнить с использованием выходного DDR-регистра в IOB, и уже с выхода регистра сигнал будет поступать на выходные контакты. (К сведению: в Spartan3 для использования DDR - регистра придется подключать DCM для формирования сигналов clk0 и clk180, кстати здесь можно и поиграться с фазой тактового сигнала 0->(clk0,clk180), Pi/2->(clk90,clk270), Pi->(clk180,clk0), 3Pi/2->(clk270,clk90), где в скобках указано подключение тактовых к DDR-регистру ).
2. Virtex4
2.1. Тактовый сигнал обязательно должен быть заведен на специальные контакты (глобального или регионального тактового сигнала). Замечание: Если используются входы для регионального тактового сигнала, необходимо убедиться, что входные (данные из АЦП) контакты принадлежат одному из банков, имеющих подключение к контакту регионального тактового сигнала сигналу.
2.2. поскольку в промежуточной ПЛИС (Sprtan3) будет использована DCM, то для упрощения работы в Virtex4 желательно использовать просто глобальный буфер BUFG (при использовании DCM, а она будет 2-ой в цепочке, а поэтому, придется заниматься ее инициализацией).
2.3. еще раз повторюсь - обязательное использование входных регистров в блоках IOB для защелкивания данных из АЦП.

Что касается используемого генератора GK-154. Подобные генераторы предназначены только для тактирования цифровых схем. Ожидать качественных характеристик от АЦП при его использовании не приходится: качество сигнала на его выходе как раз и может служить причиной той картины что представлена на 1-ом спектре (виден сигнал, 2-я гармоника, а наивысшая из ненужных палок - около -75 дБ, причем спектр не разваливается). Кстати, при понижении тактовой частоты какой генератор использовался? Конечно параметры и GK-154 можно улучшить: поставить на его выходе полосовой кварцевый фильтр, но относительная нестабильность этого генератора улучшена быть не может.

Еще одной из причин появления подобных продуктов может быть непроработанная топология платы, отсутствие должной развязки по питанию между АЦП и другими функциональными узлами. При настройке рекомендую в качестве тактового генератора использовать внешний лабораторный (в качестве его можно не сомневаться, а заодно и исключите влияние GK-154 как непосредственно через тактовый сигнал, так и через питание).


Спасибо за развернутый ответ. При понижении частоты использовали лабораторный генератор Agilent. Какой генератор посоветуете для тактирования АЦП?
Go to the top of the page
 
+Quote Post
Genn
сообщение Oct 29 2011, 15:12
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 48
Регистрация: 14-04-05
Пользователь №: 4 146



Цитата(maxics @ Oct 29 2011, 00:29) *
Спасибо за развернутый ответ. При понижении частоты использовали лабораторный генератор Agilent. Какой генератор посоветуете для тактирования АЦП?


Обратите внимание на продукцию ОАО "МОРИОН" (http://morion.com.ru/rus/oscillators/), например модель ГК118-ТС для установки на плату. Требуемая частота получается путем умножения (с помощью дискретной логики) с последующей фильтрацией нужной гармоники, используя кварцевый фильтр. Получившийся сигнал остается привести в соответствие с требуемым уровнем. Вот и всё. Генератор будет, конечно, дороговат (порядка 10000 - 15000 руб), но результат будет положительным (не забываем про правильную организацию питания на плате). Вообще подобные генераторы отлично подходят на роль системных опорников, где от одного генератора запитываются несколько потребителей, а для одного потребителя его использование всё же несколько расточительно.

Цитата(Boris_TS @ Oct 29 2011, 00:26) *
Если мне не изменяет память, то в Spartan3 есть DLL, который может криво/коряво (с точки зрения jitter'а) заниматься компенсацией фазы. Даже если петля обратной связи не была предусмотрена, то, по идеи, её можно сделать на любой подходящей свободной ножке, использовав и OBUF, и IBUF оной. В этом случае схема более или менее нормальной компенсации может выглядеть следующим образом:
IN_CLK -> IBUF -> BUFG* -> DLL.CLKIN
IO_BF_CLK -> IBUF -> BUFG* -> DLL.CLKBF
DLL.CLK0/DLL.CLK180 -> BUFG -> ODDR -> OBUF -> IO_BF_CLK
DLL.CLK0/DLL.CLK180 -> BUFG -> ODDR -> OBUF -> OUT_V4_CLK
* - Если возможно отказаться от этих BUFG, то от них обязательно необходимо отказаться (именно со Spartan3 не работал - поэтому не знаю надо ли их использовать в этом месте или нет) - чем меньше лишних элементов, тем значительно меньше jitter и отклонение фазы выходного clock'а относительно входного.

Упоминание проблемы джиттера на частоте 100 МГц были бы уместно, если бы шло обсуждение формирования тактового сигнала для АЦП, а не для использования в обсуждаемом контексте. В нашем случае величина джиттера значительно меньше чем диапазон "setup...Hold" для триггеров внутри ПЛИС, а кроме того при разводке и проверке на выполнение временных ограничений, джиттер, порождаемый DCM и BUFG уже учтен в значениях "setup/hold".
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Oct 29 2011, 17:21
Сообщение #14


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Genn @ Oct 29 2011, 19:12) *
Упоминание проблемы джиттера на частоте 100 МГц были бы уместно, если бы шло обсуждение формирования тактового сигнала для АЦП, а не для использования в обсуждаемом контексте.
Что-то мне подсказывает, что для такого АЦП, jitter Spartan3 DLL просто убьёт всё измерение. И да, в этом случае о нём будет крайне уместно говорить !

Цитата(Genn @ Oct 29 2011, 19:12) *
В нашем случае величина джиттера значительно меньше чем диапазон "setup...Hold" для триггеров внутри ПЛИС, а кроме того при разводке и проверке на выполнение временных ограничений, джиттер, порождаемый DCM и BUFG уже учтен в значениях "setup/hold".
Так я же про всё вместе говорил... если что. А т.к. в Virtex-4 нет PLL, а есть только аналогичной корявости DLL, то в худшем случае (т.е. нашем) jitter обоих DLL может складываться и составлять уже весьма заметную величину. Также, туда же в кучу необходимо накинуть будет статическое отклонение фазы, вызванное разбросами тех. параметров элементов Spartan-3 (да, эти разбросы наносят заметно больше вреда, чем jitter Spartan-3 DLL, но и jitter тоже имеет место быть).

Думаю, что наверное, работать всё-таки будет, но без детального описания и расчетов гарантировать работу будет затруднительно.
Go to the top of the page
 
+Quote Post
maxics
сообщение Oct 29 2011, 18:36
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Цитата(Boris_TS @ Oct 29 2011, 21:21) *
Что-то мне подсказывает, что для такого АЦП, jitter Spartan3 DLL просто убьёт всё измерение. И да, в этом случае о нём будет крайне уместно говорить !

Так я же про всё вместе говорил... если что. А т.к. в Virtex-4 нет PLL, а есть только аналогичной корявости DLL, то в худшем случае (т.е. нашем) jitter обоих DLL может складываться и составлять уже весьма заметную величину. Также, туда же в кучу необходимо накинуть будет статическое отклонение фазы, вызванное разбросами тех. параметров элементов Spartan-3 (да, эти разбросы наносят заметно больше вреда, чем jitter Spartan-3 DLL, но и jitter тоже имеет место быть).

Думаю, что наверное, работать всё-таки будет, но без детального описания и расчетов гарантировать работу будет затруднительно.


АЦП тактируется напрямую от кварца
Go to the top of the page
 
+Quote Post

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

 


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


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