|
Spartan 6 Ввод тактового сигнала ПЛИС |
|
|
|
Feb 4 2015, 06:12
|
Частый гость
 
Группа: Участник
Сообщений: 115
Регистрация: 26-07-09
Из: Нижний Новгород
Пользователь №: 51 578

|
Всем доброго дня! Помогите пожалуйста разобраться: "проседает" тактовый сигнал на ПЛИС 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 Ом. В чем может быть причина? Почему не работает? Как можно ещё по тестировать?
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 4 2015, 07:28
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(ZZZRF413 @ Feb 4 2015, 09:12)  Терминирующие резисторы тактового сигнала и DCO внешние и равны 100 Ом. Вот эта фраза наводит на подозрение, что вы неправильно терминировали lvpecl, там одним резистором не обойтись. По lvds, внешние терминирующие резисторы надо ставить возле источника, если невозможно их установить в непосредственной близости от приёмника, я обсуждал эту тему при первом появлении на форуме  . Так у меня успешно работает lvds 200МГц на 250мм линии. Кстати, на 180мм линии 200МГц клок на строне передатчика становится почти не виден, так как излучённый сигнал противофазно складывается с отражённым, но на стороне приёмника при этом всё в порядке. В вашем случае можно попробовать использовать для LVDS внутренние терминаторы S6, а внешние отключить. Ну и всё это надо моделировать Hyperlynx-ом, там проблемы видно хорошо, если правильно модель сделать.
|
|
|
|
|
Feb 5 2015, 09:30
|
Частый гость
 
Группа: Участник
Сообщений: 115
Регистрация: 26-07-09
Из: Нижний Новгород
Пользователь №: 51 578

|
Цитата(Timmy @ Feb 4 2015, 11:28)  Вот эта фраза наводит на подозрение, что вы неправильно терминировали lvpecl, там одним резистором не обойтись. По lvds, внешние терминирующие резисторы надо ставить возле источника, если невозможно их установить в непосредственной близости от приёмника, я обсуждал эту тему при первом появлении на форуме  . Так у меня успешно работает lvds 200МГц на 250мм линии. Кстати, на 180мм линии 200МГц клок на строне передатчика становится почти не виден, так как излучённый сигнал противофазно складывается с отражённым, но на стороне приёмника при этом всё в порядке. В вашем случае можно попробовать использовать для LVDS внутренние терминаторы S6, а внешние отключить. Ну и всё это надо моделировать Hyperlynx-ом, там проблемы видно хорошо, если правильно модель сделать. Убрал внешний резистор (он был непосредственно рядом с выводами; номинал проверел - 100 Ом), добавил внутренний. Картина не изменилась, ну может чуть чуть побольше сигнал стал. Внутрений включал так: ADC2_BUF: IBUFDS generic map ( DIFF_TERM => TRUE) ... Цитата(des00 @ Feb 4 2015, 18:01)  а смотрите чем ? 10-20 пф щупом ? Щуп Tektronix P6139B 10 МОм, 8 пФ Цитата(krux @ Feb 4 2015, 18:38)  схему подключения тактового - в студию! В приложении
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 5 2015, 11:49
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(Lmx2315 @ Feb 5 2015, 13:27)  ..судя по схемам - вы отрезали среднюю точку у PECL, а для LVDS новую среднюю точку 1.25V не создали. Да, есть такое дело. Но это не объясняет двукратную просадку напряжения на линии к FPGA по сравнению с линией к ADC. 8 pf щуп имеет емкостное сопротивление 50 Ом на 400МГц, так что пользоваться им нужно с оглядкой. И вообще нет объяснения низкому напряжению на LVDS, разве что АЦП не сконфигурирован и ничего не передаёт. Кстати, это похоже на правду, ведь на осциллограмме LVDS 400МГц, а должно бы быть 200МГц.
|
|
|
|
|
Feb 5 2015, 14:07
|
Частый гость
 
Группа: Участник
Сообщений: 115
Регистрация: 26-07-09
Из: Нижний Новгород
Пользователь №: 51 578

|
Цитата(Lmx2315 @ Feb 5 2015, 14:27)  ..судя по схемам - вы отрезали среднюю точку у PECL, а для LVDS новую среднюю точку 1.25V не создали. Цитата(Timmy @ Feb 5 2015, 15:49)  Да, есть такое дело. Но это не объясняет двукратную просадку напряжения на линии к FPGA по сравнению с линией к ADC. 8 pf щуп имеет емкостное сопротивление 50 Ом на 400МГц, так что пользоваться им нужно с оглядкой. И вообще нет объяснения низкому напряжению на LVDS, разве что АЦП не сконфигурирован и ничего не передаёт. Кстати, это похоже на правду, ведь на осциллограмме LVDS 400МГц, а должно бы быть 200МГц. В рабочем режиме частота должны быть 400 МГц. Это для тестирования я брал 200 МГц, чтобы посмотреть chipscope-ом (у него максимум 320 МГц). На chipscope в качестве тактового подавался сигнал DCO. Все работало. Цитата(des00 @ Feb 5 2015, 16:56)  да нормальное у него напряжение, на щупе все падает 99%. нужен щуп с емкостью пару пикушек. Попробую щуп с меньшей емкостью В приложении снимки DCO с использованием внутреннего сопротивления и с ножек разрядов данных D0, D1.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 6 2015, 08:29
|
Частый гость
 
Группа: Участник
Сообщений: 115
Регистрация: 26-07-09
Из: Нижний Новгород
Пользователь №: 51 578

|
Сделал следующее: Второй канал DCO 2 отключил, закоментировав соотвествующие выводы. Понизил частоту до 200 МГц. Картинки на линиях DCO_1 и DCO_2 в приложении. Так же подключил chipscope с тактовым сигналом (ADC1_DCO) от АЦП 1. И он работает! (см. приложение). А вот сигнала LOCKED с соотвествующей PLL нет. Может быть с PLL что-нибудь не так? Код: CODE ... 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); ...
Эскизы прикрепленных изображений
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|