Перейти к содержанию
    

Spartan 6 Ввод тактового сигнала ПЛИС

Всем доброго дня!

 

Помогите пожалуйста разобраться: "проседает" тактовый сигнал на ПЛИС 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 Ом.

 

В чем может быть причина? Почему не работает? Как можно ещё по тестировать?

post-51578-1423030287_thumb.jpg

post-51578-1423030296_thumb.jpg

post-51578-1423030306_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Терминирующие резисторы тактового сигнала и DCO внешние и равны 100 Ом.

Вот эта фраза наводит на подозрение, что вы неправильно терминировали lvpecl, там одним резистором не обойтись. По lvds, внешние терминирующие резисторы надо ставить возле источника, если невозможно их установить в непосредственной близости от приёмника, я обсуждал эту тему при первом появлении на форуме:). Так у меня успешно работает lvds 200МГц на 250мм линии. Кстати, на 180мм линии 200МГц клок на строне передатчика становится почти не виден, так как излучённый сигнал противофазно складывается с отражённым, но на стороне приёмника при этом всё в порядке.

В вашем случае можно попробовать использовать для LVDS внутренние терминаторы S6, а внешние отключить.

 

Ну и всё это надо моделировать Hyperlynx-ом, там проблемы видно хорошо, если правильно модель сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот эта фраза наводит на подозрение, что вы неправильно терминировали 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 пФ

 

схему подключения тактового - в студию!

 

В приложении

post-51578-1423128110_thumb.jpg

post-51578-1423128122_thumb.jpg

post-51578-1423128137_thumb.png

post-51578-1423128146_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..судя по схемам - вы отрезали среднюю точку у PECL, а для LVDS новую среднюю точку 1.25V не создали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..судя по схемам - вы отрезали среднюю точку у PECL, а для LVDS новую среднюю точку 1.25V не создали.

Да, есть такое дело. Но это не объясняет двукратную просадку напряжения на линии к FPGA по сравнению с линией к ADC.

8 pf щуп имеет емкостное сопротивление 50 Ом на 400МГц, так что пользоваться им нужно с оглядкой.

И вообще нет объяснения низкому напряжению на LVDS, разве что АЦП не сконфигурирован и ничего не передаёт. Кстати, это похоже на правду, ведь на осциллограмме LVDS 400МГц, а должно бы быть 200МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да нормальное у него напряжение, на щупе все падает 99%. нужен щуп с емкостью пару пикушек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да нормальное у него напряжение, на щупе все падает 99%. нужен щуп с емкостью пару пикушек.

От ёмкости не могла разница в 2 раза набраться, ведь сигнал к АЦП эта ёмкость тоже сажает. Хотя надо бы уточнить у ТС контрольные точки. Может быть, решающую роль сыграл длинный заземлитель через крокодил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

От ёмкости не могла разница в 2 раза набраться, ведь сигнал к АЦП эта ёмкость тоже сажает. Хотя надо бы уточнить у ТС контрольные точки. Может быть, решающую роль сыграл длинный заземлитель через крокодил.

Могла, был у меня подобный случай, как раз с тактовой под 200 МГц, судя по осцилу там все плохо по уровню. Взял нормальный осцил с полосой под гиг и высокочастотные щупы и все там стало нормально :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..судя по схемам - вы отрезали среднюю точку у PECL, а для LVDS новую среднюю точку 1.25V не создали.

 

Да, есть такое дело. Но это не объясняет двукратную просадку напряжения на линии к FPGA по сравнению с линией к ADC.

8 pf щуп имеет емкостное сопротивление 50 Ом на 400МГц, так что пользоваться им нужно с оглядкой.

И вообще нет объяснения низкому напряжению на LVDS, разве что АЦП не сконфигурирован и ничего не передаёт. Кстати, это похоже на правду, ведь на осциллограмме LVDS 400МГц, а должно бы быть 200МГц.

 

В рабочем режиме частота должны быть 400 МГц. Это для тестирования я брал 200 МГц, чтобы посмотреть chipscope-ом (у него максимум 320 МГц). На chipscope в качестве тактового подавался сигнал DCO. Все работало.

 

да нормальное у него напряжение, на щупе все падает 99%. нужен щуп с емкостью пару пикушек.

 

Попробую щуп с меньшей емкостью

 

В приложении снимки DCO с использованием внутреннего сопротивления и с ножек разрядов данных D0, D1.

post-51578-1423145162_thumb.jpg

post-51578-1423145169_thumb.jpg

post-51578-1423145177_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую щуп с меньшей емкостью

вы еще не забывайте что если смотрите прямоугольный сигнал, то вам нужен осцил с намного более широкой аналоговой полосой и малым временем установления сигнала Иначе вы увидите смещенный недосинус маленькой амплитуды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

картинка до конденсаторов С119 и С120 и после - одинаковая?

а с загруженной ПЛИС и с пустой?

а если снять С119 и С120?

если во всех случаях всё примерно одинаково выглядит - я бы проверил номиналы, что вам впаяли вместо R35 R36.

 

а так, вообще-то, подтяните входы к средней точке 1.25 В, сами они не подтянутся ;-)

 

и ещё, в отчете PAR какие буферы в LOC'ах фигурируют? должны быть только входные, и никак не BIDIR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у вас LVDS, то R39, R40 не нужны. А если PECL, то не нужен R10.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал следующее:

Второй канал 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);
...

post-51578-1423210838_thumb.jpg

post-51578-1423210846_thumb.jpg

post-51578-1423210876_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...