mikrocontroller.net

Forum: FPGA, VHDL & Co. Arrays vergleichen


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich habe mir etwas zusammengeschrieben das eine beliebige Anzahl an 
Eingängen entprellen soll. Der Ansatz läuft über ein Schieberegister.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.Numeric_std.ALL;

entity debouncer is
   Generic( width : natural :=8);
    Port ( Input : in  STD_LOGIC_VECTOR (width-1 downto 0);
           Output : out  STD_LOGIC_VECTOR (width-1 downto 0);
           CLK : in  STD_LOGIC);
end debouncer;

architecture Behavioral of debouncer is
  type RegTyp is array (3 downto 0) of std_logic_vector(width-1 downto 0);
  signal ShiftReg : RegTyp := (others=> (others => '0'));
  begin
   process(CLK) begin
    if rising_edge(CLK) then
      ShiftReg <= ShiftReg(2 downto 0) & Input;
      if (ShiftReg(3)=ShifReg(2)) and (ShiftReg(2)=ShiftReg(1)) and (ShiftReg(1)=Shiftreg(0)) then
        Output<=Shiftreg(0);
      end if;
    end if;
   end process;
  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

Autor: Iulius C. (iulius)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.