disel 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Добрый день! Никак не могу понять как правильно написать этот констрейн. Прошу направить на путь истинный :) Задача: Выдача данных с Virtex4 на ЦАП. Режим SYSTEM_SYNCHRONOUS. Клок на плис и на цап приходит в одной фазе с клочного дистрибьютера. Тактовая частота 192 Мгц (период соответсвенно ~ 5,2 нс). Данные должны быть достоверны во временном окне 0,8-4,37 нс относительно положительного клока. По всем документам которые прочитал (wp237 и т.д.) нужно задать примерно такой констрен: TIMEGRP "DAC_PAD_GRP" OFFSET = OUT 0.8 ns AFTER "DAC_Tx_CLK_P" TIMEGRP "DAC_RG_GRP" RISING; OFFSET = OUT по сути проверяет условие: временя прохождения данных до выходного пада от регистров + временя прохождения клока от входного пада до регистров < меньше требумой. У меня эта сумма получается больше периода, порядка 8,6-9,1 нс. Подвигать ее влево-вправо не проблема, вопрос в другом: как правильно задать констрейн в случае, когда время прохождения сигнала от входного до выходного пада больше периода? Если прибавить период или два, т.е написать OFFSET = OUT 6 ns или OFFSET = OUT 11.2 ns, то окно валидности данных проверяется только по одной границе. Как многоуважемые гуру поступают в таком случае? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Не скажу за гуру, но я в этих случаях поступаю так: ставлю выходные триггеры в пэды (чем навсегда фиксирую время от триггера до физической ножки), клок завожу через DCM, делаю timesim, и по результатам делаю в DCM fixed phase shift, чтобы клок был точно в центре окна данных. А вообще этот вопрос IMHO пора в FAQ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба У меня эта сумма получается больше периода, порядка 8,6-9,1 нс. Могу ошибаться, но мне кажется эта цифра достаточно странной для Virtex-4... Поэтому задам ряд наводящих вопросов: 1. Используете ли Вы выходные триггеры по линиям данных для DAC? 2. Используете ли Вы DCM для DAC_Tx_CLK_P ? 3. Какой путь проходит DAC_Tx_CLK_P ? К сожалению по OFFSET OUT подсказать не могу... т.к. в моих проектах особой пользы от этого constraint не было: частота выходных сигналов до 100МГц - т.е. можно без подстраховки, а время задержки получалось постоянным и определялось только параметрами ПЛИС; из-за того что CLK у меня проходили по следующему пути: IBUFG->(DLL) ->BUFG->C(OFF) - использовались только специально предназначенные для CLK линии связи, а данные с выхода OFF сразу (с 0 задержкой) попадают на OBUF. А мнения по правильному применению OFFSET OUT сам бы с удовольствием послушал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба 1. Используете ли Вы выходные триггеры по линиям данных для DAC? ... А мнения по правильному применению OFFSET OUT сам бы с удовольствием послушал... Почитайте WP237. OFFSET OUT нужен только тогда, когда между последним триггером и пэдом есть логика. Но сейчас так никто не делает. Поэтому по памяти (лень перечитывать) синтезатор умеет сам ставить фазу DCM на основании OFFSET OUT. Однако, мне лично спокойнее поставить ее самому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
disel 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба 1. Выходные регистры конечно используются 2. DCM не использую. Нужды в нем особенной нет, посколько возможно двигать клок в клочном дистибьютере. Причем без увеличения джиттера. А делить\множить частоту не нужно 3. DAC_Tx_CLK_P: входной лвдс-буфер IBUFDS, дальше BUFG Мне тоже показалось что много, просинтезировал пробный проект для XtremDSP V4, приблизительно то же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба 2. DCM не использую. Нужды в нем особенной нет, посколько возможно двигать клок в клочном дистибьютере. Причем без увеличения джиттера.Первое: тот джиттер, что добавит DCM (150 ps) при таких частотах глубоко безразличен. Что касается "клочного дистрибьютора": если вы можете ее двигать отдельно для ЦАП и для FPGA - двигайте там, отличный вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
disel 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Почитайте WP237. OFFSET OUT нужен только тогда, когда между последним триггером и пэдом есть логика. Но сейчас так никто не делает. Поэтому по памяти (лень перечитывать) синтезатор умеет сам ставить фазу DCM на основании OFFSET OUT. Однако, мне лично спокойнее поставить ее самому. Читал, не помогло. Безо всякой логикой задержка от триггера до выходного пада получается больше 3 нс, т.е. требования не выполняются. Крутить фазу DCM никакой необходимости нет, я же написал что могу двигать фазу внешними средствами. К тому же кроме джиттера это ничего не изменит. Хотя конечно интерестно узнать как заставить синтезатор делать это. Однако это не есть ответ на мой вопрос. Двигать фазу с помощью DCM возможно только в пределах такта, у меня задержка больше такта. Первое: тот джиттер, что добавит DCM (150 ps) при таких частотах глубоко безразличен. Что касается "клочного дистрибьютора": если вы можете ее двигать отдельно для ЦАП и для FPGA - двигайте там, отличный вариант. 150 пс это 2% от 5,2 нс. не так чтобы совсем мало. И самое обидное, что это нужно делать чтобы удовлетворить кривизну софта. Вопрос про то как ограничить время прохождения сигнала от входа до выхода. Например как задать следующее условие: min < временя прохождения данных до выходного пада от регистров + временя прохождения клока от входного пада до регистров < max Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Однако это не есть ответ на мой вопрос. Двигать фазу с помощью DCM возможно только в пределах такта, у меня задержка больше такта. Задержки больше такта не бывает :) Нарисуйте на бумаге и поймете, что при тактовой в 5ns например задержка в 8ns - то же самое, что задержка в 3 ns. min < временя прохождения данных до выходного пада от регистров + временя прохождения клока от входного пада до регистров < max OFFSET OUT AFTER < X < OFFSET OUT BEFORE. Однако я повторю, что констрейн такой вы поставить можете, но средств его выполнить у синтезатора при отсутствии DCM не будет никаких, так как задержка от триггера в пэде до ножки фиксирована. Если же вы триггеры не поставите в пэды ... То не знаю что будет, я так не извращался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
disel 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Задержки больше такта не бывает :) Нарисуйте на бумаге и поймете, что при тактовой в 5ns например задержка в 8ns - то же самое, что задержка в 3 ns. OFFSET OUT AFTER < X < OFFSET OUT BEFORE Еще раз. Это Х у меня получается около 9 нс. И мне нужно его ограничить с двух сторон, сверху и снизу. Например в границах 8,6-9,1 нс. Сверху я могу отграничить констрейном OUT AFTER. Из wp237 про него : TQ + TClock2Out + TClock <= Toffset_OUT_AFTER. Т.е. это значит Х < 9,1 нс. Вопрос как ограничить снизу? Т.е. как задать условие X > 8.6. Констрейн OFFSET OUT BEFORE проверет условие: TQ + TClock2Out + TClock <= TPeriod – Toffset_OUT_BEFORE Он не может быть больше периода. Трегера в падах конечно. И данные в цап правильно попадают. НО!!! Хочется же один раз написать констрейн и больше не думать про это, и не проверять каждый раз ручками. А как заставить синтезатор крутить фазу DCM? Где про это можно прочитать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Трегера в падах конечно. И данные в цап правильно попадают. НО!!! Хочется же один раз написать констрейн и больше не думать про это, и не проверять каждый раз ручками Забейте тогда, при фиксированной распиновке времянка даного куска может измениться только либо если тактовая частота разведется в другое дерево (сейчас в региональном, а разведется в глобальное или наоборот) или если очень-чень сильно изменится нагрузка на тактовую частоту, что мне видится крайне маловероятным. Чтобы зафиксировать разводку тактовой - поставьте туда руками BUFR, BUFIO или BUFG и все. А когда изделие будет готово, все же посмотрите осцилографом, что приходит на ЦАП и с помощью клокера подвиньте частоту в середину окна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Приветствую! ... min < временя прохождения данных до выходного пада от регистров + временя прохождения клока от входного пада до регистров < max ... Вот именно для таких случаев ТРЕБУЕТСЯ использование DCM. В этом случае возможно сделать время "время прохождения клока от входного пада до регистров" нулевым или отрицательным чтоб скомпенсировать задержку от триггера до пада. Только в этом случае можно считать что FPGA работает в SYSTEM_SYNCHRONOUS режиме. У xilinx есть wp237.pdf там более подробно по поводу OFSET. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
disel 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Забейте тогда, при фиксированной распиновке времянка даного куска может измениться только либо если тактовая частота разведется в другое дерево (сейчас в региональном, а разведется в глобальное или наоборот) или если очень-чень сильно изменится нагрузка на тактовую частоту, что мне видится крайне маловероятным. Чтобы зафиксировать разводку тактовой - поставьте туда руками BUFR, BUFIO или BUFG и все. А когда изделие будет готово, все же посмотрите осцилографом, что приходит на ЦАП и с помощью клокера подвиньте частоту в середину окна. Спасибо. Ну в принципе я так и делаю. А как все же заставить синтезатор самому DCM-ом управлять? Вот именно для таких случаев ТРЕБУЕТСЯ использование DCM. В этом случае возможно сделать время "время прохождения клока от входного пада до регистров" нулевым или отрицательным чтоб скомпенсировать задержку от триггера до пада. Только в этом случае можно считать что FPGA работает в SYSTEM_SYNCHRONOUS режиме. У xilinx есть wp237.pdf там более подробно по поводу OFSET. Не очень понял почему именно ТРЕБУЕТСЯ? Я уже писал что задержка получается 9 нс, а DCM может сдвинуть только на период, т.е. на 5 нс. И все равно при этом констрейны не выполняются!!! Мне что, нужно поставить DCM чтобы сдвинуть на целый период и тем самым успокоить синтезатор? Ну тогда это кривизна синтезатора. wp237 я читал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gothard 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Безо всякой логикой задержка от триггера до выходного пада получается больше 3 нс, т.е. требования не выполняются. Крутить фазу DCM никакой необходимости нет, я же написал что могу двигать фазу внешними средствами. кажется здесь противоречие :). Зачем вам тогда вообще понадобилось накладывать ограничение плису? И самое обидное, что это нужно делать чтобы удовлетворить кривизну софта. Какой софт вы имеете в виду? Трегера в падах конечно Кроме как использовать DCM (в Virtex-4) у вас нет большого выбора. 1. "Окошко" у вас довольно малое. Примено 3,5нс, если попасть надо между 0,8-4,37. При периоде 5,2нс у вас запас по неопределенности примерно 1,7нс. DCM компенсирует задержку распространения синх. сигнала по кристалу (эта задержка как минимум зависит от температуры). В доках ксилинкса сложно понять величину разброса задержки синхросигнала (минимальных значений clock2pad в доках не вижу :( ), но есть такое ощущение, что разброс одного порядка с величиной вашего запаса. Вы его уже хорошенько "съели". Кстати - если бы вы выдавали клок на ЦАП из плиса а не с внешнего размножителя - этой проблемы бы не было, но теперь у вас выбора нет... 2. Время переключения сигнала на выходе ПЛИСа тоже имеет разброс (который ксилинкс тоже не привел, но вы его можете посмотреть проведя IBIS моделирование) - еще "съели" от запаса (он еще есть?). 3. Если используются выходные триггера - то сместить сигнал на паде Virtex-4 без DCM нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба Не очень понял почему именно ТРЕБУЕТСЯ? Я уже писал что задержка получается 9 нс, а DCM может сдвинуть только на период, т.е. на 5 нс. Я уже тоже писал, что при периоде тактовой частоты в 5ns задержка в 9ns эквивалентна задержке в 4ns. И вообще вы какой-то неверующий, вам уже несколько человек хором говорят, что надо либо внутри поставить DCM, либо внешней PLL фазу подвигать, а вы все свое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gothard 0 12 марта, 2009 Опубликовано 12 марта, 2009 · Жалоба DCM может сдвинуть только на период, т.е. на 5 нс DCM сдвигает фазу (считается что сигнал у вас периодический). Причем с очень хорошим шагом (в районе 100пс). Поскольку сигнал периодический, то сдвиг на -3 нс эквивалентен сдвигу на 2нс при периоде 5нс. (правда сдвиг задается в долях периода, но все же...) Если у вас задержка больше периода - то сигнал будет принят через несколько тактов (сколько их укладывается в задержку), но на соотношение "полочки" данных относительно фронта не повлияет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться