Simplified Rotary Encoder
This commit is contained in:
26
rotary.vhd
26
rotary.vhd
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user