Hmmm, todo esto depende de lo que está intentando aprender exactamente. Un contador o sumador en VHDL es súper fácil:
signal count :std_logic_vector (7 downto 0) := (others=>'0');
. . .
process (clk)
begin
if rising_edge(clk) then
if count_enable='1' then
count <= count + 1; -- could be +2 also
end if;
end if;
end process;
Y eso es todo! El compilador VHDL normalmente sintetiza un sumador completo para esto, y optimizan todo lo que no es necesario, terminando con algún tipo de medio sumador. Lo bueno de hacerlo de esta manera es que su código es legible y fácil de entender, y el compilador se ocupa de descubrir la mejor manera de implementarlo.
Ahora, si estás tratando de aprender sobre sumadores y contadores, el pequeño fragmento de código no te va a ayudar mucho. En ese caso, debe implementar un medio adicionante de manera manual y difícil.