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

Как убрать варнинги

В 05.03.2024 в 09:50, Yuri124 сказал:

Ну и когда у Вас 3 разные частоты "питают" 3 разных блока - они , наверное, считаются независимыми?

Там PLL с одними настройками и все 3 экземпляра запитаны одной частотой 50mhz. То есть частота вроде бы должна быть одинаковая.

В 05.03.2024 в 09:50, Yuri124 сказал:

кроме кол-ва логических блоков на частоту влияют также задержки на элементах коммутации сигналов и длина путей.

Так как можно исправить то это? Указать например чтобы он ближе размещал. 

Или вообще ничего страшного нет в том чтобы питать каждый процесс своим PLL ?

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


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

On 3/5/2024 at 10:07 AM, Worldmaster said:

Там PLL с одними настройками и все 3 экземпляра запитаны одной частотой 50mhz. То есть частота вроде бы должна быть одинаковая.

частота то одинаковая, но может оказаться так, что блоки между собой не зависимы (если нет передачи данных между ними) - т.е. легче их развести в кристалле с макс. частотой (минимальными задержками) при трех различных CLK  (с различными названиями).
А если все три блока тактируются одним клоком (с одним названием) - они будут зависимы, разложить их в кристалле может оказаться сложнее.
На истину в посл. инстанции не претендую, в конкретно этом Вашем проекте может оказаться по-другому.
Ну и степень "забитости" кристалла имеет значение. Если наполовину свободен - то синтезатору проще со всем разобраться, если забит под 80% - уже сложнее...

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


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

В 05.03.2024 в 10:33, Yuri124 сказал:

они будут зависимы, разложить их в кристалле может оказаться сложнее.

А если я буду выводить такие процессы в отдельные компоненты это может улучшить ситуацию? 

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


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

1 hour ago, Worldmaster said:

А если я буду выводить такие процессы в отдельные компоненты это может улучшить ситуацию? 

для начала покажите схему после имплементации:

  • с 3 компонентами от "разных" частот
  • с 3 компонентами от "одной" частоты

думаю дело в больше во взаимной кривизне всего проекта, а не в частотах.

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


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

В 05.03.2024 в 12:24, _4afc_ сказал:

для начала покажите схему после имплементации:

Я же показывал. Там такая каша что невозможно разобраться что к чему. Сейчас выношу код в отдельный компонент. Может там будет проще.

В 05.03.2024 в 12:24, _4afc_ сказал:

кривизне всего проекта

ну да ну да.. 

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


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

2 hours ago, Worldmaster said:

Я же показывал. Там такая каша что невозможно разобраться что к чему. Сейчас выношу код в отдельный компонент. Может там будет проще.

Покажите, что в вашем проекте возможны 3 модуля "на разных частотах", т.е. IO на отдельные ножки ПЛИС и не связанные между собой ничем общим, в том числе RST, CE, GAO...

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


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

В 05.03.2024 в 14:42, _4afc_ сказал:

Покажите, что в вашем проекте возможны 3 модуля "на разных частотах", т.е. IO на отдельные ножки ПЛИС и не связанные между собой ничем общим, в том числе RST, CE, GAO...

Не понял совсем.  Вот тут же код вроде написал.

 

Но в целом вот какой результат:

Вынес код в несколько разных модулей. Сделал как советовали отдельный модуль буфера двухклоковый.

Также отдельно модуль взаимодействия с SDRAM.

Частота теперь по всем линиям вроде бы то что надо, хотя еще надо будет отладить. Но это ладно.

 

Вот что меня все равно смущает.

image.thumb.png.00104fee24994cda49b23abe2c6a34b7.png

 

CAM1_CLK - все равно отображает 30мгц. Но это мало очень.

Причем эта линия входит напрямую в корку. 

component mipi_rx
	port (
		reset_n: in std_logic;
		HS_CLK_P: in std_logic;
		HS_CLK_N: in std_logic;
		clk_byte_out: out std_logic;
		HS_DATA1_P: in std_logic;
		HS_DATA1_N: in std_logic;
		data_out1: out std_logic_vector(7 downto 0);
		HS_DATA0_P: in std_logic;
		HS_DATA0_N: in std_logic;
		data_out0: out std_logic_vector(7 downto 0);
		hs_en: in std_logic;
		clk_term_en: in std_logic;
		data_term_en: in std_logic;
		ready: out std_logic
	);

	MyMIPI1: mipi_rx
		port map (
			reset_n => Mipi_Rst_N,
	
			HS_CLK_P => CAM1_CLK_P,
			HS_CLK_N => CAM1_CLK_N,
	
			HS_DATA1_P => CAM1_DATA_P,
			HS_DATA1_N => CAM1_DATA_N,
			
			HS_DATA0_P => CAM1_DATA_2_P,
			HS_DATA0_N => CAM1_DATA_2_N,
			
			ready => Cam1_Mipi_Ready,
			clk_byte_out => Cam1_Mipi_Data_Read_Clk,		
			data_out1 => CAM1_MIPI_DATA_OUT1,
			data_out0 => CAM1_MIPI_DATA_OUT0,
			
			hs_en => Mipi_EN_N,
			clk_term_en => '0',
			data_term_en => '0'	
		); 

 

 

Можно с этим что нибудь поделать?? ДА и как такое может быть чтобы корка так тормознуто работала?

Или ее тоже надо выделить в отдельный компонент?? 

Ведь даже в даташите указано что может принимать до 1200Mbs

image.thumb.png.e922f245143359e02965cd8eef54136c.png

А ведь это гигагерц. Этот модуль размещен в топе. 

Вот схематик топа schematic.pdf хотя пользы от него наверное никакой. В топе уже осталось всего 2 процесса но все равно каша получается.

 

 

 

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


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

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

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

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

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

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

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

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

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

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