www.mikrocontroller.net

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

Autor: Norbert Fischer (agrippa)
Datum: 10.05.2008 22:07

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
Datum: 10.05.2008 22:14

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: 10.05.2008 22:58

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net