ZZZRF413 0 4 февраля, 2015 Опубликовано 4 февраля, 2015 · Жалоба Всем доброго дня! Помогите пожалуйста разобраться: "проседает" тактовый сигнал на ПЛИС XC6SLX100T с генератора. Микросхема генератора AD9518. Выходы генератора запрограммированы на выходное дифференциальное напряжение в 960 mV. Стандарт LVPECL_33. ПЛИС запускается 50/50. В последнее время преимущественно не запускается. На рисунках 1 и 3 в прикреплении показан тактовый сигнал на ПЛИС (рис. 1 (CLK_1)) и тактовый сигнал на АЦП с того же генератора (рис. 3 (CLK_ADC_3)). Так же сильно "подсажен" с АЦП сигнал DCO, который используется в качестве тактового (рис. 2 (DCO_2)). Тип сигнала DCO: LVDS. Сигнал с DCO в ПЛИС заводиться на PLL (DCO => IBUFDS => BUFG => PLL). PLL не запускается. Если сделать на проход (DCO => IBUFDS => test_pin) то с выхода ПЛИС постоянный уровень '1'. Ранее на тестовом сигнале в 200 МГц DCO сигнал воспринимался ПЛИС как тактовый (но не заводился на PLL) т.е. DCO => IBUFDS => BUFG, все работало. Форма сигнала не контролировалась. Терминирующие резисторы тактового сигнала и DCO внешние и равны 100 Ом. В чем может быть причина? Почему не работает? Как можно ещё по тестировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 4 февраля, 2015 Опубликовано 4 февраля, 2015 · Жалоба Терминирующие резисторы тактового сигнала и DCO внешние и равны 100 Ом. Вот эта фраза наводит на подозрение, что вы неправильно терминировали lvpecl, там одним резистором не обойтись. По lvds, внешние терминирующие резисторы надо ставить возле источника, если невозможно их установить в непосредственной близости от приёмника, я обсуждал эту тему при первом появлении на форуме:). Так у меня успешно работает lvds 200МГц на 250мм линии. Кстати, на 180мм линии 200МГц клок на строне передатчика становится почти не виден, так как излучённый сигнал противофазно складывается с отражённым, но на стороне приёмника при этом всё в порядке. В вашем случае можно попробовать использовать для LVDS внутренние терминаторы S6, а внешние отключить. Ну и всё это надо моделировать Hyperlynx-ом, там проблемы видно хорошо, если правильно модель сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 4 февраля, 2015 Опубликовано 4 февраля, 2015 · Жалоба а смотрите чем ? 10-20 пф щупом ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 4 февраля, 2015 Опубликовано 4 февраля, 2015 · Жалоба схему подключения тактового - в студию! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZZZRF413 0 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба Вот эта фраза наводит на подозрение, что вы неправильно терминировали lvpecl, там одним резистором не обойтись. По lvds, внешние терминирующие резисторы надо ставить возле источника, если невозможно их установить в непосредственной близости от приёмника, я обсуждал эту тему при первом появлении на форуме:). Так у меня успешно работает lvds 200МГц на 250мм линии. Кстати, на 180мм линии 200МГц клок на строне передатчика становится почти не виден, так как излучённый сигнал противофазно складывается с отражённым, но на стороне приёмника при этом всё в порядке. В вашем случае можно попробовать использовать для LVDS внутренние терминаторы S6, а внешние отключить. Ну и всё это надо моделировать Hyperlynx-ом, там проблемы видно хорошо, если правильно модель сделать. Убрал внешний резистор (он был непосредственно рядом с выводами; номинал проверел - 100 Ом), добавил внутренний. Картина не изменилась, ну может чуть чуть побольше сигнал стал. Внутрений включал так: ADC2_BUF: IBUFDS generic map ( DIFF_TERM => TRUE) ... а смотрите чем ? 10-20 пф щупом ? Щуп Tektronix P6139B 10 МОм, 8 пФ схему подключения тактового - в студию! В приложении Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба ..судя по схемам - вы отрезали среднюю точку у PECL, а для LVDS новую среднюю точку 1.25V не создали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба ..судя по схемам - вы отрезали среднюю точку у PECL, а для LVDS новую среднюю точку 1.25V не создали. Да, есть такое дело. Но это не объясняет двукратную просадку напряжения на линии к FPGA по сравнению с линией к ADC. 8 pf щуп имеет емкостное сопротивление 50 Ом на 400МГц, так что пользоваться им нужно с оглядкой. И вообще нет объяснения низкому напряжению на LVDS, разве что АЦП не сконфигурирован и ничего не передаёт. Кстати, это похоже на правду, ведь на осциллограмме LVDS 400МГц, а должно бы быть 200МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба да нормальное у него напряжение, на щупе все падает 99%. нужен щуп с емкостью пару пикушек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба да нормальное у него напряжение, на щупе все падает 99%. нужен щуп с емкостью пару пикушек. От ёмкости не могла разница в 2 раза набраться, ведь сигнал к АЦП эта ёмкость тоже сажает. Хотя надо бы уточнить у ТС контрольные точки. Может быть, решающую роль сыграл длинный заземлитель через крокодил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба От ёмкости не могла разница в 2 раза набраться, ведь сигнал к АЦП эта ёмкость тоже сажает. Хотя надо бы уточнить у ТС контрольные точки. Может быть, решающую роль сыграл длинный заземлитель через крокодил. Могла, был у меня подобный случай, как раз с тактовой под 200 МГц, судя по осцилу там все плохо по уровню. Взял нормальный осцил с полосой под гиг и высокочастотные щупы и все там стало нормально :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZZZRF413 0 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба ..судя по схемам - вы отрезали среднюю точку у PECL, а для LVDS новую среднюю точку 1.25V не создали. Да, есть такое дело. Но это не объясняет двукратную просадку напряжения на линии к FPGA по сравнению с линией к ADC. 8 pf щуп имеет емкостное сопротивление 50 Ом на 400МГц, так что пользоваться им нужно с оглядкой. И вообще нет объяснения низкому напряжению на LVDS, разве что АЦП не сконфигурирован и ничего не передаёт. Кстати, это похоже на правду, ведь на осциллограмме LVDS 400МГц, а должно бы быть 200МГц. В рабочем режиме частота должны быть 400 МГц. Это для тестирования я брал 200 МГц, чтобы посмотреть chipscope-ом (у него максимум 320 МГц). На chipscope в качестве тактового подавался сигнал DCO. Все работало. да нормальное у него напряжение, на щупе все падает 99%. нужен щуп с емкостью пару пикушек. Попробую щуп с меньшей емкостью В приложении снимки DCO с использованием внутреннего сопротивления и с ножек разрядов данных D0, D1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба Попробую щуп с меньшей емкостью вы еще не забывайте что если смотрите прямоугольный сигнал, то вам нужен осцил с намного более широкой аналоговой полосой и малым временем установления сигнала Иначе вы увидите смещенный недосинус маленькой амплитуды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба картинка до конденсаторов С119 и С120 и после - одинаковая? а с загруженной ПЛИС и с пустой? а если снять С119 и С120? если во всех случаях всё примерно одинаково выглядит - я бы проверил номиналы, что вам впаяли вместо R35 R36. а так, вообще-то, подтяните входы к средней точке 1.25 В, сами они не подтянутся ;-) и ещё, в отчете PAR какие буферы в LOC'ах фигурируют? должны быть только входные, и никак не BIDIR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 5 февраля, 2015 Опубликовано 5 февраля, 2015 · Жалоба Если у вас LVDS, то R39, R40 не нужны. А если PECL, то не нужен R10. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZZZRF413 0 6 февраля, 2015 Опубликовано 6 февраля, 2015 · Жалоба Сделал следующее: Второй канал DCO 2 отключил, закоментировав соотвествующие выводы. Понизил частоту до 200 МГц. Картинки на линиях DCO_1 и DCO_2 в приложении. Так же подключил chipscope с тактовым сигналом (ADC1_DCO) от АЦП 1. И он работает! (см. приложение). А вот сигнала LOCKED с соотвествующей PLL нет. Может быть с PLL что-нибудь не так? Код: ... ADC1_DIFF_BUF : IBUFDS generic map( DIFF_TERM => FALSE, IOSTANDARD => "LVDS_25") port map( I => ADC1_DCO_p, IB => ADC1_DCO_n, O => ADC1_DCO); ADC1_DCO_BUFG: BUFG port map( I => ADC1_DCO, O => ADC1_CLKIN); ADC1_PLL:PLL_ADV generic map ( BANDWIDTH => "OPTIMIZED", CLKIN1_PERIOD => 2.5, CLKIN2_PERIOD => 2.5, CLKOUT0_DIVIDE => 1, CLKOUT1_DIVIDE => 4, CLKOUT2_DIVIDE => 1, CLKOUT3_DIVIDE => 1, CLKOUT4_DIVIDE => 1, CLKOUT5_DIVIDE => 1, CLKOUT0_PHASE => 0.000, CLKOUT1_PHASE => 0.000, CLKOUT2_PHASE => 0.000, CLKOUT3_PHASE => 0.000, CLKOUT4_PHASE => 0.000, CLKOUT5_PHASE => 0.000, CLKOUT0_DUTY_CYCLE => 0.500, CLKOUT1_DUTY_CYCLE => 0.500, CLKOUT2_DUTY_CYCLE => 0.500, CLKOUT3_DUTY_CYCLE => 0.500, CLKOUT4_DUTY_CYCLE => 0.500, CLKOUT5_DUTY_CYCLE => 0.500, COMPENSATION => "INTERNAL", DIVCLK_DIVIDE => 1, CLKFBOUT_MULT => 1, -- CLKFBOUT_MULT => 2, CLKFBOUT_PHASE => 0.0, REF_JITTER => 0.1, SIM_DEVICE => "SPARTAN6" ) port map ( CLKFBIN => ADC1_CLKFB, CLKINSEL => '1', CLKIN1 => ADC1_CLKIN, CLKIN2 => '0', DADDR => (others => '0'), DCLK => '0', DEN => '0', DI => (others => '0'), DWE => '0', REL => '0', RST => reset, CLKFBDCM => open, CLKFBOUT => ADC1_CLKFB, CLKOUTDCM0 => open, CLKOUTDCM1 => open, CLKOUTDCM2 => open, CLKOUTDCM3 => open, CLKOUTDCM4 => open, CLKOUTDCM5 => open, CLKOUT0 => ADC1_CLK, CLKOUT1 => ADC1_DCLK, CLKOUT2 => open, CLKOUT3 => open, CLKOUT4 => open, CLKOUT5 => open, DO => open, DRDY => open, LOCKED => ADC1_PLL_LOCKED ); ADC1_BUFFPLL:BUFPLL generic map( DIVIDE => 4, ENABLE_SYNC => TRUE) port map ( PLLIN => ADC1_CLK, -- GCLK => ADC1_DIVCLK, GCLK => DIVCLK, LOCKED => ADC1_PLL_LOCKED, IOCLK => ADC1_SerDes_CLK, SERDESSTROBE => ADC1_SerDes_Strobe, LOCK => adc1_bufpll_locked ); ADC1_DCLK_BUF : BUFG port map( I => ADC1_DCLK, O => ADC1_DIVCLK); --ADC2_DIFF_BUF : IBUFDS -- generic map( DIFF_TERM => TRUE, -- IOSTANDARD => "LVDS_25") -- port map( I => ADC2_DCO_p, -- IB => ADC2_DCO_n, -- O => ADC2_DCO); --test_out<=ADC2_DCO; --ADC2_DCO_BUFG: BUFG -- port map( -- I => ADC2_DCO, ---- I => ADC2_DCO_BUF, -- O => ADC2_CLKIN); ADC2_CLKIN<='0'; ADC2_PLL:PLL_ADV generic map ( BANDWIDTH => "OPTIMIZED", CLKIN1_PERIOD => 2.5, CLKIN2_PERIOD => 2.5, CLKOUT0_DIVIDE => 1, CLKOUT1_DIVIDE => 4, CLKOUT2_DIVIDE => 1, CLKOUT3_DIVIDE => 1, CLKOUT4_DIVIDE => 1, CLKOUT5_DIVIDE => 1, CLKOUT0_PHASE => 0.000, CLKOUT1_PHASE => 0.000, CLKOUT2_PHASE => 0.000, CLKOUT3_PHASE => 0.000, CLKOUT4_PHASE => 0.000, CLKOUT5_PHASE => 0.000, CLKOUT0_DUTY_CYCLE => 0.500, CLKOUT1_DUTY_CYCLE => 0.500, CLKOUT2_DUTY_CYCLE => 0.500, CLKOUT3_DUTY_CYCLE => 0.500, CLKOUT4_DUTY_CYCLE => 0.500, CLKOUT5_DUTY_CYCLE => 0.500, COMPENSATION => "INTERNAL", DIVCLK_DIVIDE => 1, CLKFBOUT_MULT => 1, -- CLKFBOUT_MULT => 2, CLKFBOUT_PHASE => 0.0, REF_JITTER => 0.1, SIM_DEVICE => "SPARTAN6" ) port map ( CLKFBIN => ADC2_CLKFB, CLKINSEL => '1', CLKIN1 => ADC2_CLKIN, CLKIN2 => '0', DADDR => (others => '0'), DCLK => '0', DEN => '0', DI => (others => '0'), DWE => '0', REL => '0', RST => reset, CLKFBDCM => open, CLKFBOUT => ADC2_CLKFB, CLKOUTDCM0 => open, CLKOUTDCM1 => open, CLKOUTDCM2 => open, CLKOUTDCM3 => open, CLKOUTDCM4 => open, CLKOUTDCM5 => open, CLKOUT0 => ADC2_CLK, CLKOUT1 => ADC2_DCLK, CLKOUT2 => open, CLKOUT3 => open, CLKOUT4 => open, CLKOUT5 => open, DO => open, DRDY => open, LOCKED => ADC2_PLL_LOCKED ); ADC2_BUFFPLL:BUFPLL generic map( DIVIDE => 4, ENABLE_SYNC => TRUE) port map ( PLLIN => ADC2_CLK, -- GCLK => ADC2_DIVCLK, GCLK => DIVCLK, LOCKED => ADC2_PLL_LOCKED, IOCLK => ADC2_SerDes_CLK, SERDESSTROBE => ADC2_SerDes_Strobe, LOCK => adc2_bufpll_locked ); ADC2_DCLK_BUF : BUFG port map( I => ADC2_DCLK, O => ADC2_DIVCLK); ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться