Pitonbl4 0 23 апреля, 2019 Опубликовано 23 апреля, 2019 (изменено) · Жалоба Столкнулся с такой штукой. Есть два модуля, которые на вход получают одни и те же данные и дальше их пакуют соответствующим образом. Вся система работает на 100 МГц, а данные надо принимать на 200 МГц => необходимо ставить IDDR. Т.к. один IOB может управлять одним IDDR, то решил для этого внутри каждого модуля поставить IBUF. Но проблема не решается. Все это реализовано в ZYNQ. Подскажите как можно избавиться от этой проблемы. Свести все в один модуль не вариант. Изменено 23 апреля, 2019 пользователем big_ben Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 23 апреля, 2019 Опубликовано 23 апреля, 2019 · Жалоба Как-то сумбурно все. Диаграмму бы нарисовали что-ли... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 23 апреля, 2019 Опубликовано 23 апреля, 2019 · Жалоба Если это один и тот же входной пин (как я понял из контекста), то никак. Только так: IBUF => IDDR => два разных модуля Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pitonbl4 0 23 апреля, 2019 Опубликовано 23 апреля, 2019 (изменено) · Жалоба 21 minutes ago, gosha-z said: Как-то сумбурно все. Диаграмму бы нарисовали что-ли... Оранжевым выделена линия, по которой приходят данные с pad. В самих модулях есть IDDR вида: IDDR_inst_data_hv_control : IDDR generic map ( DDR_CLK_EDGE => "OPPOSITE_EDGE", --! "OPPOSITE_EDGE", "SAME_EDGE" or "SAME_EDGE_PIPELINED" INIT_Q1 => '0', --! Initial value of Q1: '0' or '1' INIT_Q2 => '0', --! Initial value of Q2: '0' or '1' SRTYPE => "SYNC") --! Set/Reset type: "SYNC" or "ASYNC" port map ( Q1 => data_art2_odd(i), --! 1-bit output for positive edge of clock Q2 => data_art2_even(i), --! 1-bit output for negative edge of clock C => clk_art2_x1, --! 1-bit clock input CE => '1', --! 1-bit clock enable input D => data_art2(i), --! 1-bit DDR data input R => '0', --! 1-bit reset S => '0' --! 1-bit set ); Если все использовать в таком виде, то вылетит ошибка вида: [Place 30-457] The instance 'data_art2[5]_IBUF_inst' part of an IOB is driving multiple IDDR instances. One IOB can drive only one IDDR which can be packed into ILOGIC. The IDDR instances involved are: design_1_i/axi_data_provider_0/U0/Inst_data_provider/IDDR_inst_data_gen[5].IDDR_inst_data_art2 design_1_i/axi_hv_control_0/U0/Inst_form_hv/IDDR_inst_data_gen_hv_control[5].IDDR_inst_data_hv_control Думал поставить перед IDDR буфер IBUF, но это тоже не помогает. 14 minutes ago, alexadmin said: Если это один и тот же входной пин (как я понял из контекста), то никак. Только так: IBUF => IDDR => два разных модуля Понял, спасибо Изменено 23 апреля, 2019 пользователем big_ben Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 23 апреля, 2019 Опубликовано 23 апреля, 2019 · Жалоба А там таки DDR (т.е. данные и по фронту и по спаду)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pitonbl4 0 23 апреля, 2019 Опубликовано 23 апреля, 2019 · Жалоба 2 minutes ago, gosha-z said: А там таки DDR (т.е. данные и по фронту и по спаду)? Да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 26 апреля, 2019 Опубликовано 26 апреля, 2019 · Жалоба Приветствую! On 4/23/2019 at 6:23 PM, big_ben said: Подскажите как можно избавиться от этой проблемы. Свести все в один модуль не вариант. А кто мешает вам поставить один IDDR снаружи модулей и потом с него раздавать данные на оба модуля. Зачем вам два независимых IDDR кормящихся с одного pad? Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться