Forum: FPGA, VHDL & Co. Arrays vergleichen


von Dirk (Gast)


Lesenswert?

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

von Iulius C. (iulius)


Lesenswert?

Du übersiehst einen Schreibfehler.
Beim 2ten "shiftreg" fehlt das t -> shifreg

Die Fehlermeldung ist diesbezüglich natürlich sehr tückisch.

Ich empfehle bei sowas modelsim, die Meldungen dort sind meist recht 
gut. In dem Fall war es :

Unknown identifier "shifreg"

So kommt man leicht auf die Lösung ;)


Quartus beherrscht auch brauchbare Fehlermeldungen :

Error (10482): VHDL error at debouncer.vhd(19): object "ShifReg" is used 
but not declared.

von Dirk (Gast)


Lesenswert?

Vielen Dank Iulius.
Sowas ist echt doof. War natürlich das erste mal das ich was mit Arrays 
zu tun hatte und dann so ein Fehler, der bringt einen dann aus dem 
Konzept. Ich hab den Typo einfach nicht gesehen.
Danke
Dirk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.