Worldmaster 0 7 марта Опубликовано 7 марта · Жалоба Здравствуйте. Все таки, почему может быть такая низкая частота у корки MIPI RX для GW2AR-LV18EQ144C8/I7?? Создал пустой проект. Самый простой. Добавил только одну корку. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_unsigned.all; use IEEE.numeric_std.all; entity top is port ( clk: in std_logic:= '0'; --генератор входного клока на 50мгц HS_CLK_P_io: inout std_logic := '0'; HS_CLK_N_io: inout std_logic := '0'; HS_DATA1_P_io: inout std_logic := '0'; HS_DATA1_N_io: inout std_logic := '0'; HS_DATA0_P_io: inout std_logic := '0'; HS_DATA0_N_io: inout std_logic := '0'; out_d:out std_logic_vector(15 downto 0) ); end top; architecture structural of top is signal clk_byte_out_o: std_logic; signal data_out1_o: std_logic_vector(7 downto 0); signal data_out0_o: std_logic_vector(7 downto 0); signal ready_o: std_logic; component MIPI_RX_Advance_Top port ( reset_n: in std_logic; HS_CLK_P: inout std_logic; HS_CLK_N: inout std_logic; clk_byte_out: out std_logic; HS_DATA1_P: inout std_logic; HS_DATA1_N: inout std_logic; data_out1: out std_logic_vector(7 downto 0); HS_DATA0_P: inout std_logic; HS_DATA0_N: inout 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 ); end component; begin your_instance_name: MIPI_RX_Advance_Top port map ( reset_n => '1', HS_CLK_P => HS_CLK_P_io, HS_CLK_N => HS_CLK_N_io, clk_byte_out => clk_byte_out_o, HS_DATA1_P => HS_DATA1_P_io, HS_DATA1_N => HS_DATA1_N_io, data_out1 => data_out1_o, HS_DATA0_P => HS_DATA0_P_io, HS_DATA0_N => HS_DATA0_N_io, data_out0 => data_out0_o, hs_en => '1', clk_term_en => '1', data_term_en => '1', ready => ready_o ); lop: process(clk_byte_out_o, data_out1_o, data_out0_o) begin if rising_edge(clk_byte_out_o) then out_d <= data_out1_o & data_out0_o; end if; end process lop; end architecture; Собрал проект и все равно частота мизер какой то. Какие 100 мегагерц то. В чем ошибка то? Прикладываю проект. Ну ведь не может же быть настолько все плохо?? fpga_project.7z Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 7 марта Опубликовано 7 марта · Жалоба У вас в проекте один регистр? Тогда времянку просто не от чего считать по моему. Чтобы считать времянку нужно хотя бы 2. Т.е поставить чего то на входе. Чего то на выходе и отдельно внутреннюю логику. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 7 марта Опубликовано 7 марта · Жалоба В 07.03.2024 в 16:23, MegaVolt сказал: У вас в проекте один регистр? В этом проекте один. Мне нужно понять почему он ставит такую низкую частоту. В 07.03.2024 в 16:23, MegaVolt сказал: Т.е поставить чего то на входе. Чего то на выходе и отдельно внутреннюю логику. Так это входные линии на которые камера шлет данные. Как мне туда поставить то что нибудь? В 07.03.2024 в 16:23, MegaVolt сказал: Чтобы считать времянку нужно хотя бы 2. Хотите сказать что это фигня и не стоит обращать внимания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 7 марта Опубликовано 7 марта · Жалоба 6 минут назад, Worldmaster сказал: В этом проекте один. Мне нужно понять почему он ставит такую низкую частоту. Так это входные линии на которые камера шлет данные. Как мне туда поставить то что нибудь? Ну поставить хотя бы ещё один регистр. Или входной регистр. Или ещё что нибудь 🙂 Цитата Хотите сказать что это фигня и не стоит обращать внимания? Я хочу сказать что я не понимаю как он это определяет когда в проекте 1 регистр. Хотя анализатор настроен считать пути между 2 триггерами. Т.е. его расчёты могу совершенно ничего не значить. К сожалению не нашёл максимальных параметров по частоте тактирования каких нибудь клоковых путей внутри этой плис. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 7 марта Опубликовано 7 марта · Жалоба 7 minutes ago, MegaVolt said: К сожалению не нашёл максимальных параметров по частоте тактирования каких нибудь клоковых путей внутри этой плис. GW2AR-C8/I7 DS226E.pdf 3.4.5 Clock and I/O Switching Character HCLK tree - 0.82 nS GCLK tree - 1.77 nS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 7 марта Опубликовано 7 марта (изменено) · Жалоба В 07.03.2024 в 16:43, _4afc_ сказал: GW2AR-C8/I7 DS226E.pdf 3.4.5 Clock and I/O Switching Character HCLK tree - 0.82 nS GCLK tree - 1.77 nS Ну значит можно утверждать что если входные линии взяты с блока HCLK и ведут напрямую в корку то максимальная частота там будет до 1149 мегагерц? В 07.03.2024 в 16:37, MegaVolt сказал: Ну поставить хотя бы ещё один регистр. Или входной регистр. Или ещё что нибудь 🙂 Ну вот поставил генератор хотя бы на 600 мгц. но он требует дифференциальные линии. Гуглю вот как их описать но не врубаюсь. Не подскажете как это? if rising_edge(clkout_o) then HS_CLK_P_io <= '1'; HS_CLK_N_io <= '0'; end if; end process pol; ERROR (PA2014) : Pin(I) of 'U0_IB'(ELVDS_IBUF) does not connect to port ERROR (PA2014) : Pin(IB) of 'U0_IB'(ELVDS_IBUF) does not connect to port Вот так сделал: differential_pair_driver : ELVDS_OBUF port map ( O => iHS_CLK_P_io, OB => iHS_CLK_N_io, I => state ); Но почему то он не соединил. Pin(iHS_CLK_P_io) of 'differential_pair_driver'(ELVDS_OBUF) does not connect to port("C:\Delme\tttFPG\fpga_project\src\mipi_rx_advance\mipi_rx_advance.vhd":112) Изменено 7 марта пользователем Worldmaster Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 7 марта Опубликовано 7 марта · Жалоба 3 hours ago, Worldmaster said: Создал пустой проект. Самый простой. А референсы смотрели GOWIN MIPI refDesign Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 7 марта Опубликовано 7 марта · Жалоба В 07.03.2024 в 17:59, _4afc_ сказал: А референсы смотрели GOWIN MIPI refDesign Конечно смотрел. По ним и писал все. Ну если я чего то просмотрел, ткните конкретно. Зачем эти загадки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 7 марта Опубликовано 7 марта · Жалоба 1 hour ago, Worldmaster said: Ну если я чего то просмотрел, ткните конкретно. Зачем эти загадки? Ну клоки внутри ПЛИС вероятно в 8/16 раз медленнее внешних, иначе зачем аппаратный MIPI SERDES... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 7 марта Опубликовано 7 марта · Жалоба В 07.03.2024 в 19:39, _4afc_ сказал: Ну клоки внутри ПЛИС вероятно в 8/16 раз медленнее внешних, иначе зачем аппаратный MIPI SERDES... Итог то какой? В даташите указано что MIPI RX может работать на частоте до 1200mbs на линию. Мне надо всего лишь 800 на линию. Анализ говорит что не больше 100mbs. Что не так то тут? Будет оно работать на 800 мегагерц или нет? В 07.03.2024 в 19:39, _4afc_ сказал: аппаратный MIPI а разве к плис это применимо?? разве любой блок тут не формирует аппаратную схему? Я так понимаю что корки это просто готовые библиотеки от разработчиков. В идеале даже оптимизированные под конкретное железо. Или нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 8 марта Опубликовано 8 марта · Жалоба 11 hours ago, Worldmaster said: Я так понимаю что корки это просто готовые библиотеки от разработчиков. В идеале даже оптимизированные под конкретное железо. Или нет Если посмотреть на самый нижний уровень, то есть варианты когда serdes раскручивается не в набор LUT-REG, а в нечто с атрибутом по аппаратной имплементации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 8 марта Опубликовано 8 марта · Жалоба В 08.03.2024 в 09:54, _4afc_ сказал: Если посмотреть на самый нижний уровень, то есть варианты когда serdes раскручивается не в набор LUT-REG, а в нечто с атрибутом по аппаратной имплементации. Так будет оно работать на заявленных характеристиках или нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 8 марта Опубликовано 8 марта · Жалоба On 3/8/2024 at 3:40 PM, Worldmaster said: Так будет оно работать на заявленных характеристиках или нет? Если может быть Вам ближе микроконтроллеры - чтобы процессорное ядро не тратило свои вычислительные ресурсы для программной реализации к-л блока (интерфейса, таймера, счетчика) - в микроконтроллер добавляется уже готовая, аппаратная реализация нужного функционала. Аналогично и в микросхемы FPGA добавляются уже готовые аппаратные блоки, реализующие часто необходимые функции (блоки DSP, интерфейсы). Зачастую реализовать это просто невозможно из стандартных "кирпичиков", имеющихся в FPGA. Например, интерфейс PCIe должен выдавать/принимать данные на частоте нескольких гигагерц. Поэтому внутри FPGA добавляется такой скоростной блок, который принимает-передает наружу микросхемы на гигагерцах, а внутрь FPGA или из нее данные поступают по более широкой (гораздо более многоразрядной шине) на той частоте, которую уже способна "переварить" эта FPGA. Это делается как раз для того, чтобы необходимый блок работал с заявленными характеристиками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 8 марта Опубликовано 8 марта (изменено) · Жалоба В 08.03.2024 в 16:01, Yuri124 сказал: Если может быть Вам ближе микроконтроллеры - чтобы процессорное ядро не тратило свои вычислительные ресурсы для программной реализации к-л блока (интерфейса, таймера, счетчика) - в микроконтроллер добавляется уже готовая, аппаратная реализация нужного функционала. Аналогично и в микросхемы FPGA добавляются уже готовые аппаратные блоки, реализующие часто необходимые функции (блоки DSP, интерфейсы). Зачастую реализовать это просто невозможно из стандартных "кирпичиков", имеющихся в FPGA. Например, интерфейс PCIe должен выдавать/принимать данные на частоте нескольких гигагерц. Поэтому внутри FPGA добавляется такой скоростной блок, который принимает-передает наружу микросхемы на гигагерцах, а внутрь FPGA или из нее данные поступают по более широкой (гораздо более многоразрядной шине) на той частоте, которую уже способна "переварить" эта FPGA. Это делается как раз для того, чтобы необходимый блок работал с заявленными характеристиками. Ну хорошо. Это мне понятно. но не понятно другое. Если я взял корку от производителя который утверждает что этот модуль может работать на частоту до 1200mbs и подключил ее топ сразу в входным линиям ПЛИС то будет ли модуль работать на заявленной частоте или нет? Мне обращать внимание на красный свет во временных диаграммах или нет? А что касается МК то там все намного логичнее. Если в даташите заявлено что какой то модуль работает на частоте 100мгц то я даже голову морочить не буду. Я использую модуль по расчетным значениям и выхожу на заявленные скорости. Там все четко и понятно. А тут какая то неведомая фигня.. вроде ДШ заявляет что можно, среда компилит, моделсим тоже говорит что все ок. А какая то временная диаграмма сообщает что "в железо не улеглось". Ладно я могу принять что я код писал по аналогии с высокоуровневым программированием. Но готовый модуль от разрабов который единственный в системе и не проходит временные рамки это просто шедевр. И главное что разработчик должен сам догадаться что конкретно пошло не так и в каком моменте. Изменено 8 марта пользователем Worldmaster Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 9 марта Опубликовано 9 марта · Жалоба В 08.03.2024 в 16:27, Worldmaster сказал: И главное что разработчик должен сам догадаться что конкретно пошло не так и в каком моменте. А может разработчику почитать документацию от производителя ПЛИС (выбрав нужное семейство ПЛИС)? После ознакомления с документацией посмотреть, что и как сделано в рефдизайнах. Вот ссылка раз, вот ссылка два. Вторая ссылка требует авторизации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться