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

Zynq 7020 выход OSERDES на вход PLL?

Приветствую.

Пытаюсь реализовать генератор частоты для подстройки под различный видеосигнал.

У цинка весьма ограниченные PLL с куцым 3 битным дробным делителем, которые не могут сгенерировать производьную частоту.

 

Наткнулся на вот такую статью: 

Breaking all the rules to create an arbitrary clock signal

Смысл там в том, чтобы генерировать клок на обычной логике, на счетчике, а потом, прогнав его через oserdes (умножив, как я понимаю, его на 8 для снижения фазового шума), подать на вход PLL, которая снизит джиттер и уже этот сигнал использовать для тактирования.

 

Попробовал в железе - роутер не может развести выход oserdese2 на вход pll.

То есть не получается вывести на внешний пин сигнал с сериализатора, и потом с этого же пина завести этот сигнал на вход pll.

 

Это я что-то делаю не так, или действительно это не возможно?

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


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

20 часов назад, sonycman сказал:

То есть не получается вывести на внешний пин сигнал с сериализатора, и потом с этого же пина завести этот сигнал на вход pll

Разве в вашей статье говорится про "завести с этого же пина"? Там же на картинке фигурирует выход за пределы FPGA и ввод через CC-pin. 

Вообще неочевидно, что вывод сигнала за пределы кристалла и обратный ввод, даже с учётом использования DDR, позволит снизить джиттер. Я бы просто протащил сигнал с выхода делителя через BUFG (при этом рутер обязательно выдаст варнинг, а при соответствующих настройках и ошибку), а после подал бы на PLL. 

20 часов назад, sonycman сказал:

Попробовал в железе - роутер не может развести выход oserdese2 на вход pll.

И правильно, что не может. Выход осердеса может только на пин трассироваться.

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


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

В 30.06.2023 в 10:21, fingertouch сказал:

Разве в вашей статье говорится про "завести с этого же пина"? Там же на картинке фигурирует выход за пределы FPGA и ввод через CC-pin. 

Именно с этого-же пина:

IOBUF	genclkio(.I(w_pin), .IO(io_pin), .O(pll_input), .T(1'b0));

w_pin - выход oserdes, pll_input - вход PLL.

Статья довольно мутная, не знаю, где там автор проверял на практике.

 

Проблему решил, использовав два пина. Идея, в общем-то работает, ФАПЧ лочится, но такой клок как пиксель клок видеосигнала использовать не получилось - монитор не распознаёт сигнал.

Видимо, слишком большой джиттер...

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


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

4 hours ago, sonycman said:

Проблему решил, использовав два пина. Идея, в общем-то работает, ФАПЧ лочится, но такой клок как пиксель клок видеосигнала использовать не получилось - монитор не распознаёт сигнал.

Видимо, слишком большой джиттер...

какой номинал клока не получается сформировать?

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


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

В 30.06.2023 в 22:16, quato_a сказал:

какой номинал клока не получается сформировать?

Да всего 27 МГц. По осциллографу клок вполне ровный, частота по осциллографу 26.96, видеосигнал 576p 50 герц.

Монитор на него не реагирует.

 

Беру клок такой-же частоты с PLL цинка (без хитрого генератора), подаю на схему вместо сгенерированного - все работает.

 

На ultrascale есть периферийный блок display port с отличным генератором частоты, у пятых циклонов отличные PLL с 24 битным фракционным делителем, а вот у простого цинка нихрена подходящего 😞

 

Придется ставить внешний синтезатор частоты.

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


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

11 hours ago, sonycman said:

Да всего 27 МГц. По осциллографу клок вполне ровный, частота по осциллографу 26.96, видеосигнал 576p 50 герц.

Монитор на него не реагирует.

 

Беру клок такой-же частоты с PLL цинка (без хитрого генератора), подаю на схему вместо сгенерированного - все работает.

не понял, так PLL цинка походит?

11 hours ago, sonycman said:

На ultrascale есть периферийный блок display port с отличным генератором частоты, у пятых циклонов отличные PLL с 24 битным фракционным делителем, а вот у простого цинка нихрена подходящего 😞

 

Придется ставить внешний синтезатор частоты.

хм, вроде в clockwizard (PLL, MMCM) достаточно большая гибкость по умножителю/делителю, в моих задачах всегда удавалось сделать нужный клок, например из 200 -> для fullHD 148.5 МГц 

сейчас не у вивадо, но уверен, что ровные 27 МГц можно сделать спокойно

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


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

В 02.07.2023 в 01:36, quato_a сказал:

не понял, так PLL цинка походит?

Только для проверки.

В 02.07.2023 в 01:36, quato_a сказал:

хм, вроде в clockwizard (PLL, MMCM) достаточно большая гибкость по умножителю/делителю, в моих задачах всегда удавалось сделать нужный клок, например из 200 -> для fullHD 148.5 МГц 

сейчас не у вивадо, но уверен, что ровные 27 МГц можно сделать спокойно

Мне нужно генерировать частоту под входящий различный видеосигнал и синхронизироваться под него с точностью до нескольких сотен наносекунд на фрейм.

На такое куцые ФАПЧ простого цинка не способны, к сожалению...

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


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

On 7/2/2023 at 12:47 AM, sonycman said:

Только для проверки.

Мне нужно генерировать частоту под входящий различный видеосигнал и синхронизироваться под него с точностью до нескольких сотен наносекунд на фрейм.

На такое куцые ФАПЧ простого цинка не способны, к сожалению...

А видеосигнал идёт без сопровождаемой пиксельной частоты? 

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


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

В 03.07.2023 в 09:54, quato_a сказал:

А видеосигнал идёт без сопровождаемой пиксельной частоты? 

Видеосигнал VGA, различной частоты.

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


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

6 hours ago, sonycman said:

Видеосигнал VGA, различной частоты.

Имхо. Его нужно принимать через отдельный ацп.

Интересно как тут решается вопрос синхронизации, клоки передатчика и приёмника будут отличаются по фазе и частоте.

Да же если в идеальном мире клоки будут одинаковые по частоте, то смещение фазы может привести к некорректному защелкиванию (на переходе между пикселями).

 

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


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

По идее метод должен работать. По идее ещё можно вставить tristate buffer и отключить его навсегда. Тогда клок не будет покидать пределов ПЛИС, что может быть удобно, если не хочется светить этим клоком наружу или если по какой-то причине неиспользованный Clock-Capable пин прижат к земле или питанию банка.

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


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

В 03.07.2023 в 19:29, quato_a сказал:

Интересно как тут решается вопрос синхронизации, клоки передатчика и приёмника будут отличаются по фазе и частоте.

Для идеального выравнивания сигналов по времени фрейма делаю HDMI клок чуть быстрее, а лишние такты клока блокирую через BUFGCE.

В 03.07.2023 в 19:57, Inanity сказал:

По идее метод должен работать. По идее ещё можно вставить tristate buffer и отключить его навсегда. Тогда клок не будет покидать пределов ПЛИС, что может быть удобно, если не хочется светить этим клоком наружу или если по какой-то причине неиспользованный Clock-Capable пин прижат к земле или питанию банка.

Не получается без вывода клока наружу.

Только используя два пина - выходной и входной...

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


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

1 hour ago, sonycman said:

Для идеального выравнивания сигналов по времени фрейма делаю HDMI клок чуть быстрее, а лишние такты клока блокирую через BUFGCE.

Эм, а причём тут hdmi? В нем клок пиксельный передается и спокойно на приемной стороне через pll синтезируется 5х клок, синхронный с данными, по корому можно захватить и десериализировать данные. Хороший пример на github - dvi2rgb

В vga иначе, там в разъёме нет клоковой линии и мне пока не ясно как происходит синхра. Может создаётся клок в 2 раза больший, по нему защелкивается пиксель по 2 раза, принимается решение. А подсигхронищация pll происходит по hsync/vsync (мысли вслух) 

 

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


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

15 hours ago, sonycman said:

Не получается без вывода клока наружу.

Да, прошу прощения, вы правы. Забыл, что на выход берутся данные непосредственно с пада IOBUF:
 

Screenshot from 2023-07-04 11-37-28.png

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


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

On 7/3/2023 at 7:41 PM, sonycman said:

Только используя два пина - выходной и входной...

Странно, зачем использовать 2 пина, когда должно быть достаточно 1 CC пина ?

Вот пример на VHDL, компилируемый ISE 14.7 для XC7Z010-1CLG400:

library ieee;
use ieee.std_logic_1164.all;

library unisim;
use unisim.vcomponents.all;


entity IO_Test is port (
	IN_CLK_1:	in		std_logic;
	IO_CLK_2:	inout	std_logic;
	OUT_Q:		out		std_logic );
end entity;


architecture Tushka of IO_Test is
	signal	CLK_1_UB:	std_logic;
	signal	CLK_1:		std_logic;
	signal	CLK_1_Out:	std_logic;
	
	signal	CLK_2_UB:	std_logic;
	signal	CLK_2:		std_logic;
	
	signal	Q:			std_logic := '0';
	
begin
	CLK_1_IBUFG: component IBUFG port map ( I => IN_CLK_1,     O => CLK_1_UB );
	CLK_1_BUFG:  component  BUFG port map ( I =>    CLK_1_UB,  O => CLK_1    );
	
	CLK_1_ODDR: component ODDR port map (
		D1 => '0',  D2 => '1',  Q => CLK_1_Out, CE => '1',  C  => CLK_1
	);
	
	CLK_1_OBUF:  component OBUF  port map ( I =>    CLK_1_Out,  O => IO_CLK_2    );
	CLK_2_IBUFG: component IBUFG port map ( I => IO_CLK_2,      O =>    CLK_2_UB );
	CLK_2_BUFG:  component  BUFG port map ( I =>    CLK_2_UB,   O =>    CLK_2    );
	
	
	process( CLK_2 ) begin
		if rising_edge(CLK_2) then
			Q <= not(Q);
		end if;
	end process;
	
	Q_OBUF: component OBUF port map ( I => Q,  O => OUT_Q );
	
end architecture;

Оба буфера (OBUF и IBUFG) для IO_CLK_2 расположены в одном IOB (в чём можно убедиться FPGA_Editor'ом).

Можно и IOBUFT использовать, но тогда возникает дополнительная ненужная цепь '0' для входа T.

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


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

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

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

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

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

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

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

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

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

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