another_one 0 7 сентября, 2020 Опубликовано 7 сентября, 2020 · Жалоба Здравствуйте! Подскажите пожалуйста как быть если ресет физически не заведен на ПЛИС, но хочется сброситься после включения питания. Или можно не сбрасыватся?, Какие аргументы за и против в случае ПЛИС со срам конфигурацией? Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 31 7 сентября, 2020 Опубликовано 7 сентября, 2020 · Жалоба Какой производитель ПЛИС, какая серия? Что должен делать ресет? сбрасывать что? Для FPGA Xilinx после загрузки конфигурации в SRAM все триггера и блочная память установятся в значение, которое вы пропишете в прошивке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 7 сентября, 2020 Опубликовано 7 сентября, 2020 · Жалоба можно как то так -- ------------------------------------ -- Power On Reset with NO reset input -- ------------------------------------ -- 10 clock cycles reset pulse issued at start up Library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- ---------------------------------------- Entity POR is -- ---------------------------------------- Port ( Clock : in std_logic; -- clock input Reset : out std_logic ); -- reset output end entity POR; -- ---------------------------------------- Architecture RTL of POR is -- ---------------------------------------- signal Cnt : unsigned (3 downto 0) := (others=>'0'); -- init for simulation signal iRst_n : std_logic := '0'; -- init for simulation Begin Reset <= not iRst_n; process (Clock) begin if rising_edge(Clock) then if Cnt /= 10 then -- If counter hasn't reached this value then Cnt <= Cnt + 1; -- keep counting iRst_n <= '0'; -- and force the Reset else iRst_n <= '1'; -- release the Reset end if; end if; end process; end architecture RTL; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 7 сентября, 2020 Опубликовано 7 сентября, 2020 · Жалоба Можно использовать сигнал locked, с PLL, если используете PLL. Дополнительно можно использовать совет Maverick_. У себя использую оба этих способа, в зависимости от задачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 7 сентября, 2020 Опубликовано 7 сентября, 2020 · Жалоба 3 часа назад, another_one сказал: Здравствуйте! Подскажите пожалуйста как быть если ресет физически не заведен на ПЛИС, но хочется сброситься после включения питания. Или можно не сбрасыватся?, Какие аргументы за и против в случае ПЛИС со срам конфигурацией? Спасибо! У меня всегда система по-умолчанию даже без стартового сброса готова к работе. Пока проблем не было. Со сбросами надо аккуратно. Например FIFO от Xilinx просто так сбрасывать нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 7 сентября, 2020 Опубликовано 7 сентября, 2020 · Жалоба Приветствую! 5 minutes ago, Flip-fl0p said: Например FIFO от Xilinx просто так сбрасывать нельзя. Это почему же нельзя? Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 1 8 сентября, 2020 Опубликовано 8 сентября, 2020 · Жалоба 6 hours ago, RobFPGA said: Приветствую! Это почему же нельзя? Удачи! Rob. У неё есть лаг в работе после сброса. Нужно выждать Н тактов, в зависимости от размеров FIFO. И всё это обрамлено флагами wr_rdy/rd_rdy. Недавно буквально заводил хоровод с бубном из-за этой фичи. Привык к альтере - там через 1 или 2 такта после сброса можно данные записывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 сентября, 2020 Опубликовано 8 сентября, 2020 · Жалоба 8 часов назад, RobFPGA сказал: Приветствую! Это почему же нельзя? Удачи! Rob. Там надо асинхронныйй сброс удерживать минимум 3 такта самой медленной частоты. Там надо во время действия флагов wr_rst_busy/rd_rst_busy запретить запись/чтение FIFO, и необходимо, чтобы во время действия сброса была все время частота. Если частота в это время нестабильна, то надо снять и ещё раз подать сброс. Сам нарываося на то, что. из-за нарушения этих правил при работе с fifo, оно работало неправильно. Например у меня при зпписи в пустое fifo оно все время о выдавало флаг owerflow и запись в fifo не производилась. А стоило убрать вообще сброс с FIFO - оно работало нормально. В качестве сброса применял locked от MMCM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 8 сентября, 2020 Опубликовано 8 сентября, 2020 · Жалоба Приветствую! 3 hours ago, Flip-fl0p said: Там надо асинхронныйй сброс удерживать минимум 3 такта самой медленной частоты. То есть сбрасывать все же можно и нужно - но надо делать это правильно, в соответствии с требованиями к FIFO. Ну а снимать ресет при нестабильном клоке вообще смысла нет. Мало ли куда логика может залететь при нарушенных времянках. Кстати выключив параметром вход reset вы сброс не убираете - внутри корки создается генератор одноразового ресета который генерирует правильный импульс сброса в начале работы после окончания загрузки. Естественно при этом должны быть оба клока. 6 hours ago, nice_vladi said: У неё есть лаг в работе после сброса. Нужно выждать Н тактов, в зависимости от размеров FIFO. И всё это обрамлено флагами wr_rdy/rd_rdy. От размеров? Или может от длинны синхронизаторов меду клоками? Выключив при генерации корки параметр синхронизации ресета, можно избавьтся от внутренних синхронизаторов и wr_rdy/rd_rdy. Но тогда придется самому заботится о синхронизацию ресета. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость vitzap 8 сентября, 2020 Опубликовано 8 сентября, 2020 · Жалоба Сами по себе ячейки в сбросе не нуждаются - после конфигурации они "встают" в состояние по умолчанию. Другое дело, если вы используете компоненты IDELAY, SERDES и прочие аппаратные ресурсы - они требуют сброса, но его можно сгенерировать, как уже показано в третьем сверху сообщении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 1 8 сентября, 2020 Опубликовано 8 сентября, 2020 · Жалоба 2 hours ago, RobFPGA said: От размеров? Или может от длинны синхронизаторов меду клоками? Выключив при генерации корки параметр синхронизации ресета, можно избавьтся от внутренних синхронизаторов и wr_rdy/rd_rdy. Но тогда придется самому заботится о синхронизацию ресета. Перефразирую: от настроек ip core. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nemos760 0 8 сентября, 2020 Опубликовано 8 сентября, 2020 · Жалоба On 9/7/2020 at 9:37 PM, Maverick_ said: можно как то так -- ------------------------------------ -- Power On Reset with NO reset input -- ------------------------------------ -- 10 clock cycles reset pulse issued at start up Library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- ---------------------------------------- Entity POR is -- ---------------------------------------- Port ( Clock : in std_logic; -- clock input Reset : out std_logic ); -- reset output end entity POR; -- ---------------------------------------- Architecture RTL of POR is -- ---------------------------------------- signal Cnt : unsigned (3 downto 0) := (others=>'0'); -- init for simulation signal iRst_n : std_logic := '0'; -- init for simulation Begin Reset <= not iRst_n; process (Clock) begin if rising_edge(Clock) then if Cnt /= 10 then -- If counter hasn't reached this value then Cnt <= Cnt + 1; -- keep counting iRst_n <= '0'; -- and force the Reset else iRst_n <= '1'; -- release the Reset end if; end if; end process; end architecture RTL; А в этом примере счётчик может инициализироваться со значением 10 вследствии чего сброса не будет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость vitzap 9 сентября, 2020 Опубликовано 9 сентября, 2020 · Жалоба 10 hours ago, Nemos760 said: А в этом примере счётчик может инициализироваться со значением 10 вследствии чего сброса не будет? Вот эта строчка задает значение по умолчанию. Оно работает не только в симуляции, но и при инициализации fpga. signal Cnt : unsigned (3 downto 0) := (others=>'0'); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nemos760 0 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба On 9/9/2020 at 8:30 AM, vitzap said: Вот эта строчка задает значение по умолчанию. Оно работает не только в симуляции, но и при инициализации fpga. signal Cnt : unsigned (3 downto 0) := (others=>'0'); К сожалению далеко не для всех семейств работает. Есть какое-нибудь решение для этого случая кроме аппаратного, чтобы с супервизора питания не заводить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Приветствую! 3 minutes ago, Nemos760 said: К сожалению далеко не для всех семейств работает. Есть какое-нибудь решение для этого случая кроме аппаратного, чтобы с супервизора питания не заводить? Счетчик можно сделать не только на регистрах, а и например на distributed RAM, начальное содержимое которой задается в дизайне и точно инициализируется при загрузке прошивки. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться