Worldmaster 0 5 марта Опубликовано 5 марта · Жалоба В 05.03.2024 в 09:50, Yuri124 сказал: Ну и когда у Вас 3 разные частоты "питают" 3 разных блока - они , наверное, считаются независимыми? Там PLL с одними настройками и все 3 экземпляра запитаны одной частотой 50mhz. То есть частота вроде бы должна быть одинаковая. В 05.03.2024 в 09:50, Yuri124 сказал: кроме кол-ва логических блоков на частоту влияют также задержки на элементах коммутации сигналов и длина путей. Так как можно исправить то это? Указать например чтобы он ближе размещал. Или вообще ничего страшного нет в том чтобы питать каждый процесс своим PLL ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 5 марта Опубликовано 5 марта · Жалоба On 3/5/2024 at 10:07 AM, Worldmaster said: Там PLL с одними настройками и все 3 экземпляра запитаны одной частотой 50mhz. То есть частота вроде бы должна быть одинаковая. частота то одинаковая, но может оказаться так, что блоки между собой не зависимы (если нет передачи данных между ними) - т.е. легче их развести в кристалле с макс. частотой (минимальными задержками) при трех различных CLK (с различными названиями). А если все три блока тактируются одним клоком (с одним названием) - они будут зависимы, разложить их в кристалле может оказаться сложнее. На истину в посл. инстанции не претендую, в конкретно этом Вашем проекте может оказаться по-другому. Ну и степень "забитости" кристалла имеет значение. Если наполовину свободен - то синтезатору проще со всем разобраться, если забит под 80% - уже сложнее... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 5 марта Опубликовано 5 марта · Жалоба В 05.03.2024 в 10:33, Yuri124 сказал: они будут зависимы, разложить их в кристалле может оказаться сложнее. А если я буду выводить такие процессы в отдельные компоненты это может улучшить ситуацию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 5 марта Опубликовано 5 марта · Жалоба 1 hour ago, Worldmaster said: А если я буду выводить такие процессы в отдельные компоненты это может улучшить ситуацию? для начала покажите схему после имплементации: с 3 компонентами от "разных" частот с 3 компонентами от "одной" частоты думаю дело в больше во взаимной кривизне всего проекта, а не в частотах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 5 марта Опубликовано 5 марта · Жалоба В 05.03.2024 в 12:24, _4afc_ сказал: для начала покажите схему после имплементации: Я же показывал. Там такая каша что невозможно разобраться что к чему. Сейчас выношу код в отдельный компонент. Может там будет проще. В 05.03.2024 в 12:24, _4afc_ сказал: кривизне всего проекта ну да ну да.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 5 марта Опубликовано 5 марта · Жалоба 2 hours ago, Worldmaster said: Я же показывал. Там такая каша что невозможно разобраться что к чему. Сейчас выношу код в отдельный компонент. Может там будет проще. Покажите, что в вашем проекте возможны 3 модуля "на разных частотах", т.е. IO на отдельные ножки ПЛИС и не связанные между собой ничем общим, в том числе RST, CE, GAO... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 6 марта Опубликовано 6 марта · Жалоба В 05.03.2024 в 14:42, _4afc_ сказал: Покажите, что в вашем проекте возможны 3 модуля "на разных частотах", т.е. IO на отдельные ножки ПЛИС и не связанные между собой ничем общим, в том числе RST, CE, GAO... Не понял совсем. Вот тут же код вроде написал. Но в целом вот какой результат: Вынес код в несколько разных модулей. Сделал как советовали отдельный модуль буфера двухклоковый. Также отдельно модуль взаимодействия с SDRAM. Частота теперь по всем линиям вроде бы то что надо, хотя еще надо будет отладить. Но это ладно. Вот что меня все равно смущает. 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 А ведь это гигагерц. Этот модуль размещен в топе. Вот схематик топа schematic.pdf хотя пользы от него наверное никакой. В топе уже осталось всего 2 процесса но все равно каша получается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться