Simplified Rotary Encoder

This commit is contained in:
T-moe
2016-06-10 12:29:27 +02:00
parent 2cd5d550ae
commit 9cfabb1772
7 changed files with 114 additions and 146 deletions

View File

@@ -11,9 +11,9 @@ entity rotary_dec is
Port ( clk : in std_logic; -- Systemtakt
A : in std_logic; -- Spur A
B : in std_logic; -- Spur B
up_down : out std_logic; -- Zaehlrichtung
ce : out std_logic; -- Clock Enable
error : out std_logic); -- illegaler Signalübergang
right : out std_logic; -- Zaehlrichtung
ce : out std_logic); -- Clock Enable
end rotary_dec;
architecture Behavioral of rotary_dec is
@@ -41,23 +41,9 @@ variable state: std_logic_vector(3 downto 0);
begin
state := a_in & b_in & a_old & b_old;
case state is
when "0000" => up_down <= '0'; ce <= '0'; error <= '0';
when "0001" => up_down <= '1'; ce <= '1'; error <= '0';
when "0010" => up_down <= '0'; ce <= '1'; error <= '0';
when "0011" => up_down <= '0'; ce <= '0'; error <= '1';
when "0100" => up_down <= '0'; ce <= '1'; error <= '0';
when "0101" => up_down <= '0'; ce <= '0'; error <= '0';
when "0110" => up_down <= '0'; ce <= '0'; error <= '1';
when "0111" => up_down <= '1'; ce <= '1'; error <= '0';
when "1000" => up_down <= '1'; ce <= '1'; error <= '0';
when "1001" => up_down <= '0'; ce <= '0'; error <= '1';
when "1010" => up_down <= '0'; ce <= '0'; error <= '0';
when "1011" => up_down <= '0'; ce <= '1'; error <= '0';
when "1100" => up_down <= '0'; ce <= '0'; error <= '1';
when "1101" => up_down <= '0'; ce <= '1'; error <= '0';
when "1110" => up_down <= '1'; ce <= '1'; error <= '0';
when "1111" => up_down <= '0'; ce <= '0'; error <= '0';
when others => null;
when "0001" => right <= '0'; ce <= '1';
when "0010" => right <= '1'; ce <= '1';
when others => right <= '0'; ce <= '0';
end case;
end process;