mikrocontroller.net

Forum: FPGA, VHDL & Co. Couter - ParseError808


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,
habe ein Problem mit einem kleinen Testprogram. Bitte nicht lachen,
fange gerade an. Der Compiler meckert die Zeile "if CLOCK='1' and
CLOCK'event then" mit dem Fheler HDLParser808 an. Kann mir bitte jmd.
sagen wo das Problem liegt? (Xilinx ISE, VHDL-Top-Level_Module)

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.std_logic_unsigned.all;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
library UNISIM;
use UNISIM.VComponents.all;

entity Counter is
    Port ( CLOCK : in std_logic_vector(0 downto 0);
           DIRECTION : in std_logic_vector(0 downto 0);
           COUNT_OUT : out std_logic_vector(3 downto 0));
end Counter;

architecture Behavioral of counter is
signal count_int : std_logic_vector(0 to 3) := "0000";
begin
process (CLOCK)
begin
   if CLOCK='1' and CLOCK'event then
      if DIRECTION='1' then
         count_int <= count_int + 1;
      else
         count_int <= count_int - 1;
      end if;
   end if;
end process;
COUNT_OUT <= count_int;
end Behavioral;

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Daniel
schreib doch einfach:

if rising_edge(CLOCK) then

das ist viel besser lesbar.

Und daran denken: VHDL unterscheidet nicht zwischen
Groß- und Kleinschreibung (nur so am Rande)

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab ich probiert, bekomme ich aber den selben Fehler.
Habe nochmal alles durchgesehen, kann aber nix finden. Und es handelt
sich um ein original Programmbeispiel aus dem Xilinx Tutorial..

Autor: Ines (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,

probier doch mal Folgendes:
  if CLOCK="1" and CLOCK'event then
    if DIRECTION="1" then
  ...

oder:
  if CLOCK(0)='1' and CLOCK'event then
    if DIRECTION(0)='1' then
  ...

Ich bin mir zwar nicht sicher, aber es könnte sein, dass das Tool
Probleme hat, weil die beiden Ports als Vektor deklariert sind, aber
als einzelnes Bit genutzt werden.

Gruß
Ines

Autor: TobiFlex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum ist CLOCK ein Vector?

Mach mal aus

entity Counter is
    Port ( CLOCK : in std_logic_vector(0 downto 0);
           DIRECTION : in std_logic_vector(0 downto 0);
           COUNT_OUT : out std_logic_vector(3 downto 0));
end Counter;

entity Counter is
    Port ( CLOCK : in std_logic;
           DIRECTION : in std_logic;
           COUNT_OUT : out std_logic_vector(3 downto 0));
end Counter;


Vielleicht lieg es ja daran?
VieleGrüße
TobiFlex

Autor: TobiFlex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OOPS!
hat Ines ja im Prinzip auch schon geschrieben!

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke Leute - habs begriffen.
Habe zu Beginn des Design den Vector für Count_out angelegt und dabei
für die anderen beiden Variablen LSB und MSB=0 gesetzt, was dann wohl
einen Vektor erzeugt hat.
Danke

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.