Maverick_ 15 1 февраля, 2022 Опубликовано 1 февраля, 2022 · Жалоба Добрый день мне стыдно обращаться с таким простым вопросом... но я что то не могу понять. Пишу тестбенч (во вложении). Там есть процесс process (all) begin if (rst = '1') then reg_eof <= '0'; reg_eof1 <= '0'; elsif (clk'event and clk = '1') then if reg_cnt_data = std_logic_vector(to_unsigned((num_row_file), reg_cnt_data'length)) then reg_eof <= '1'; else reg_eof <= '0'; end if; if reg_cnt_data = std_logic_vector(to_unsigned((num_row_file-1), reg_cnt_data'length)) then reg_eof1 <= '1'; else reg_eof1 <= '0'; end if; end if; end process; Почему reg_eof1 занимает 2 такта, а reg_eof - 1 такт. ??? Не могу понять. Прошу помощи indata.txt top_vhd_tst_file.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 1 февраля, 2022 Опубликовано 1 февраля, 2022 (изменено) · Жалоба 2 часа назад, Maverick_ сказал: Почему reg_eof1 занимает 2 такта Первый такт возник, т.к. reg_cnt_data = 17, а num_row_file = 18. Затем на следующем фронте клока происходит одновременно два события: reg_cnt_data увеличивается на 1 и становится равным 18 и вместе с ним num_row_file = 19, т.е. снова возникло условие для reg_eof1 = 1. Изменено 1 февраля, 2022 пользователем Самурай Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 1 февраля, 2022 Опубликовано 1 февраля, 2022 · Жалоба 2 hours ago, Maverick_ said: Не могу понять. А чего тут понимать - у вас num_row_file меняется (+1) в то время когда reg_eof1 уже в единице стоит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 1 февраля, 2022 Опубликовано 1 февраля, 2022 · Жалоба Почему тогда reg_eof тоже не два такта? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 1 февраля, 2022 Опубликовано 1 февраля, 2022 · Жалоба Just now, Maverick_ said: тоже не два такта? потому что изменение num_row_file происходит раньше, за такт до того как должен установится reg_eof. Поэтому reg_eof устанавливается уже по новому значению num_row_file Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 1 февраля, 2022 Опубликовано 1 февраля, 2022 · Жалоба Спасибо за пояснение всем. За работался... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 9 часов назад, Maverick_ сказал: process (all) А сейчас стало модно вот так вот список чувствительнсти (не)писать? 9 часов назад, Maverick_ сказал: if reg_cnt_data = std_logic_vector(to_unsigned((num_row_file), reg_cnt_data'length)) then Зачем вы так делаете? Что может быть проще, чем if unsigned (reg_cnt_data) = num_row_file then Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 1 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Влезу со своим вопросом тоже: В чем смысл именно так: (clk'event and clk = '1') А не: if rising_edge(clk) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 16 minutes ago, nice_vladi said: В чем смысл именно так: Старая школа еще Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 1 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 2 hours ago, RobFPGA said: Старая школа еще Всегда вспоминаю : Spoiler Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Смешно))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться