Возьмем паралельный счетчик из предидущей секции и добавим к нему обратную связь, что бы по достижении 101 он асинхронно сбрасывался в 0. (т.е. считать он будет: 000,001,010,011,100, 000...) Добавим обратную связь
Основная проблема - после включения питания состояние триггеров в счетчике может быть любым, и если у счетчика нет внешнего сигнала сброса то комбинационные связи в счетчике должны быть сделаны таким образом, чтобы выводить счетчик на основной цикл счета:
Добавим обратную связь, что бы счетчик обновлялся по достижению 0xb VHDL програма для двоичного счетчика 0..f library ieee; use ieee.std_logic_1164.all; use ieee.STD_LOGIC_UNSIGNED.all; use ieee.std_logic_arith.all; entity count4 is port ( clk,reset : in std_logic; count: out std_logic_vector(3 downto 0)); end count4; architecture Example of count4 is signal count_i: std_logic_vector(3 downto 0); begin process(clk,reset) begin if (reset = '1') then count_i <= "0000"; elsif rising_edge(clk) then count_i <= count_i + '1'; if count_i = "1011" then count_i <= "0000"; end if; end if; end process; count <= count_i; end Example;
Имплементация счетчика в Xilinx Virtex-II
Пример BCD счетчика
Пример счетчика считающего до 6 в коде Грея: