www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Aus QFSM generierten vhdl-code compilieren


Autor: Norbert Fischer (agrippa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Im Rahmen einer Projektarbeit beschäftige ich mich mit Quartus II. 
Mittlerweile kenn ich des Programm ganz gut, nur VHDL bereitet mir 
großes Kopfzerbrechen.

Ich wäre deshalb für Tipps zur Lösung für folgendes Problem sehr 
dankbar.

Mit dem Programm QFSM ist es möglich aus Zustandsdiagrammen VHDL Code zu 
generieren. Der erzeugte Code eines 3-Bit Modulo6 Zählers lässt sich in 
Quartus aber nicht compilieren. Es werden zwei Fehlermeldungen 
Ausgegeben:
Error (10500): VHDL syntax error at 3BM6Vorw.vhdl(25) near text "3";  expecting an identifier
Error (10500): VHDL syntax error at 3BM6Vorw.vhdl(32) near text "3";  expecting an identifier

Der Code:
LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;

ENTITY 3BM6Vor IS
  PORT (clk: IN std_ulogic;
        srst_n: IN std_ulogic;
        a: IN std_ulogic_vector(0 DOWNTO 0);
        q: OUT std_ulogic_vector(2 DOWNTO 0));
END 3BM6Vor;

ARCHITECTURE behave OF 3BM6Vor IS

TYPE state_type IS (1, 2, 3, 4, 5, 6);
SIGNAL next_state, current_state : state_type;

-- comments for syf which comes with alliance : http://www-asim.lip6.fr/alliance
-- interpreted as comments by other tools
  --pragma CURRENT_STATE current_state
  --pragma NEXT_STATE next_state
  --pragma CLOCK clk

BEGIN
  state_register: PROCESS (clk)
  BEGIN
    IF ( clk = '1' AND NOT clk'STABLE ) THEN
      current_state <= next_state;
    END IF;
  END PROCESS;

  next_state_and_output_logic: PROCESS (current_state, a)
  BEGIN
    IF srst_n='0' THEN 
        next_state <= 1;
    ELSE
    CASE current_state IS
      WHEN 1 => q <= "001";
        IF a="0" THEN
          next_state <= 2;
        ELSIF a="1" THEN
          next_state <= 1;
        END IF;
      WHEN 2 => q <= "010";
        IF a="0" THEN
          next_state <= 3;
        ELSIF a="1" THEN
          next_state <= 2;
        END IF;
      WHEN 3 => q <= "011";
        IF a="0" THEN
          next_state <= 4;
        ELSIF a="1" THEN
          next_state <= 3;
        END IF;
      WHEN 4 => q <= "100";
        IF a="0" THEN
          next_state <= 5;
        ELSIF a="1" THEN
          next_state <= 4;
        END IF;
      WHEN 5 => q <= "101";
        IF a="0" THEN
          next_state <= 6;
        ELSIF a="1" THEN
          next_state <= 5;
        END IF;
      WHEN 6 => q <= "110";
        IF a="0" THEN
          next_state <= 1;
        ELSIF a="1" THEN
          next_state <= 6;
        END IF;
      WHEN OTHERS => null;
    END CASE;
    END IF;
  END PROCESS;

END behave;

Kann mich jemand über die Problematik aufklären? In QFSM lässt sich 
alles ohne Probleme simulieren.

Grüsse,
Agrippa

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Norbert Fischer wrote:
> ENTITY 3BM6Vor IS

Identifier müssen mit einem Buchstaben anfangen: 
http://www.vhdl-online.de/tutorial/englisch/t_24.htm

>     IF ( clk = '1' AND NOT clk'STABLE ) THEN

Hmm, auch mal was neues.

Autor: Norbert Fischer (agrippa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank,

hat mich gut weitergebracht, hatte zwar weitere Fehler zur Folge (States 
durften auch nicht mit 1, 2, usw. benannt werden), aber des weitere 
bekomm ich wohl in Griff.

Danke für den Link.

Grüsse,
Agrippa

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.