ViKo 1 21 января, 2011 Опубликовано 21 января, 2011 · Жалоба Для числа 14, т.е. 4'b1110, достаточно объединить 3 старших бита по И. Если выход равен 1, то все эти биты установлены, значит число есть 4'b1110 или 4'b1111. А это и есть >=14. А чтобы точно убедиться, что число точно равно 14, нужно проверять еще и младший бит на равенство 0, т.е. проинвертировать его и подать на ту же схему И, что и раньше. Теперь она должна быть 4-х-входовой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Muscat 0 22 января, 2011 Опубликовано 22 января, 2011 · Жалоба ViKo, да, разобрался, спасибо вам! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
voloda 0 26 января, 2011 Опубликовано 26 января, 2011 · Жалоба Вопрос по теме счетчиков. А можно ли, что бы повысить быстродействие счетчика, сравнивать значение счетчика с максимальным поразрядно, убрав многоразрядные И, ИЛИ? Задаем макс. значение счетчика. constant max_count : std_logic_VECTOR(26 downto 0) := "1......"; Проверяем значение верхнего (26-го разряда) process (clk) begin if (clk'event and clk = '1') then if (count_mill(26) ='1') then -- сравниваем count_mill(26) с "1" en_rst(26) <='1'; else en_rst(26) <= '0'; end if; end if; end process; Если он "1" - сравниваем значение 25-го разряда, L: for i in 25 downto 0 generate process (clk) begin if (clk'event and clk = '1') then if (en_rst(i+1) = '1' and count_mill(i) = max_count(i)) then en_rst(i)<='1'; else en_rst(i)<= '0'; end if; end if; end process; end generate L; И так далее, до 0-го. Сигнал en_rst(0) - на выход счетчика. Если счетчик увеличиваем на частоте, много меньшей тактовой - можно сравнивать все разряды. Если на частоте, равной тактовой - сравниваем только "1" -е разряды. Или так не надо делать, и можно обходиться проще? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться