Build a 4-bit Johnson counter, sometimes also called a "twisted ring" counter. This is similar to a one-hot counter, except that the feedback bit is inverted, giving a sequence of values containing 1s as well as 0s:

0000
0001
0011
0111
1111
1110
1100
1000

This has the nice advantage that it encodes twice as many states as a one-hot counter for the same number of flip-flops plus an inverter.

When reset, the value should be 0000, and subsequent values should follow the pattern above.



library IEEE; use IEEE.std_logic_1164.all; entity johnson is port( clk : in std_logic; reset : in std_logic; count : out std_logic_vector(3 downto 0) ); end johnson; architecture synth of johnson is begin count <= "0000"; end;

Are you confident about this change? (select one to recompile)

Compiler/test output: