Hallo
ich habe mir etwas zusammengeschrieben das eine beliebige Anzahl an
Eingängen entprellen soll. Der Ansatz läuft über ein Schieberegister.
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 | use IEEE.Numeric_std.ALL;
|
4 |
|
5 | entity debouncer is
|
6 | Generic( width : natural :=8);
|
7 | Port ( Input : in STD_LOGIC_VECTOR (width-1 downto 0);
|
8 | Output : out STD_LOGIC_VECTOR (width-1 downto 0);
|
9 | CLK : in STD_LOGIC);
|
10 | end debouncer;
|
11 |
|
12 | architecture Behavioral of debouncer is
|
13 | type RegTyp is array (3 downto 0) of std_logic_vector(width-1 downto 0);
|
14 | signal ShiftReg : RegTyp := (others=> (others => '0'));
|
15 | begin
|
16 | process(CLK) begin
|
17 | if rising_edge(CLK) then
|
18 | ShiftReg <= ShiftReg(2 downto 0) & Input;
|
19 | if (ShiftReg(3)=ShifReg(2)) and (ShiftReg(2)=ShiftReg(1)) and (ShiftReg(1)=Shiftreg(0)) then
|
20 | Output<=Shiftreg(0);
|
21 | end if;
|
22 | end if;
|
23 | end process;
|
24 | end Behavioral;
|
Ich bekomme jetzt den Fehler: HDLParsers:808 - xxx Line 45. = can not
have such operands in this context.
Wieso kann ich denn nicht 2 Arrays auf Gleichheit überprüfen? Was
überseh ich?
Danke schon mal