Forum: FPGA, VHDL & Co. Problem ISPLever ABEL programmierung


von Jochen R. (josch90)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

zur Zeit programmiere ich Lattice-PLD's in Abel,
im Anhang habe ich dass Programm, welches ich mir geschrieben habe. 
Allerdings bekomme ich beim checken der Syntax immer folgenden Fehler:

"Syntax Error 1028: In "ampel_fussgänger.abl":22:EQUATIONS, 
STATE_DIAGRAM, TRUTH_TABLE or END expected."

Ich verstehe jedoch nicht, warum das Programm in der Zuordnungszeile der 
Truth_Table etwas wie Equations, State_Diagramm, etc. erwartet.

kann mir jemand weiterhelfen?

Gruß

von Jochen R. (josch90)


Angehängte Dateien:

Lesenswert?

Hier nochmal der Code als TXT

von Volker (Gast)


Lesenswert?

Ohje, hab schon seit einigen Jahren kein Abel mehr gemacht, aber ich 
glaub, dass das Semikolon nach deiner Truth_Table Kopfzeile weg muss.



([fussgaenger, takt2, takt1, takt0] :> [fussgaenger, takt2, takt1, 
takt0]) -> [Arot,Agelb,Agruen,Frot,Fgruen]);
                                   | Semikolon muss weg

von Christian R. (supachris)


Lesenswert?

Ist das etwa das Praktikum vom Prof. Fischer an der HTW Dresden? 
Irgendwie kommt mir das bekannt vor.

von Jochen R. (josch90)


Lesenswert?

Also den Fehler habe ich behoben, ich hatte in der Zeile eine Klammer zu 
viel, semikolon bleibt...
allerdings habe ich jetzt natürlich den nächsten fehler...

Logical Error 1095: In "ampel_fussgänger.abl":23:Block or macro nested 
too far. (Possible mis-use of macro arguments.)


>Ist das etwa das Praktikum vom Prof. Fischer an der HTW Dresden?

Nein, nicht ganz, ist an einer Berufsschule in Baden-Württemberg

Gruß

von Holger (Gast)


Lesenswert?

http://mezdata.de/isp/abel_kompakt/interne_d-ff.php
http://mezdata.de/isp/
Schau mal da rein, um ABEL Code zu lernen.

Gruss Holger.

von Bernhard (Gast)


Lesenswert?

Hallo Jochen,

Hauptproblem: istype 'Buffer,Reg'
hier gehört kein Punkt hin. Di Nodes müssen ebenfalls mit Register sein, 
sonst macht ja :> keinen Sinn. Also takt0 NODE istype 'buffer, reg'; 
Dann hat auch der Fußgänger keinen Takt bekommen, obwohl in der Tabelle 
:> drin ist. Edit: sehe gerade, dass es Quatsch ist, den Fussgaenger 
überhaupt auf die rechte Seite der Tabelle zu nehmen. Du kannst ja kein 
Eingangssignal auf 0 setzen, wenn von außen eine '1' anliegt.
Weiterer Hinweis: einige ältere Versionen von Synario bzw. Lever machen 
ärger, wenn sich Variablen nur ein einem Buchstaben unterscheiden. Takt, 
takt, takt1 etc. kann kritisch sein (je nach Version).

Nicht ganz logisch ist die Zuordnung von ISTYPE für die beiden Eingänge 
takt und fussgaenger. Als reiner Eingang genügt: takt PIN 11;
Dann hat der Dateiname einen _ wo ein Umlaut wäre. Vermeide bei Lever 
Umlaute und Leerzeichen im Dateinamen und Pfad! Daher ist "Eigene 
Dateien" meist ein schlechter Speicherort. Ebenso der Desktop (liegt ja 
in c:\dokumente und einstellungen\username\desktop), gaz schlimm beim 
User Müller... Bei uns habe ich das Verzeichnis "Eigenen Dateien" daher 
auf c:\daten\schueler verschoben.

Tschuessle
Bernhard
Ende vom Lied - das hier Compiliert dann wenigstens. Der Ablauf der 
State-Machine ist aber trotzdem etwas Zweifelhaft, weil diverse 
Kombinationen fehlen (Fussgänger = 0, wenn Takt = 010 => Welcher 
Folgezustand ist hier gewünscht??). Etwas Arbeit soll Dir ja auch 
bleiben :-))

MODULE Ampel

DECLARATIONS                " Zuweisungen

takt2, takt1, takt0 Node ISTYPE 'Buffer,reg';        " Declarieren 
interner Hilfsausgänge
Arot, Agelb, Agruen, Frot, Fgruen PIN 4,10,7,13,17 ISTYPE 'Buffer,com'; 
" ARot, Agelb, Agruen den Flip-Flop Ausgangen 4,10,7 zuweisen 
Fussgängerampel
takt PIN 11 ;    " Den Takt dem Pin 11 zuweisen
fussgaenger pin 20;  " für den Fussgänger wurde einfach PIN 20 
angenommen


Takt= [takt2,takt1, takt0];  " Rot, Gelb, Gruen dem Set Takt 
zusammenfassen

EQUATIONS      " Beginn Hauptprogramm
Takt.clk = takt;  " Dem Set Ampel den Takt zuweisen

TRUTH_TABLE

([fussgaenger, takt2, takt1, takt0] :> [takt2, takt1, takt0] -> 
[Arot,Agelb,Agruen,Frot,Fgruen]);  " Zählstand vor dem Takt :> Zählstand 
nach dem Takt -> Ausgang
 [0,0,0,0] :> [0,0,1] -> [0,0,1,1,0]  ;
 [0,0,0,1] :> [0,1,0] -> [0,0,1,1,0]  ;
 [1,0,1,0] :> [0,1,1] -> [0,1,0,1,0]  ;
 [0,0,1,1] :> [1,0,0] -> [1,0,0,1,0]  ;
 [0,1,0,0] :> [1,0,1] -> [1,0,0,0,1]  ;
 [0,1,0,1] :> [1,1,0] -> [1,0,0,0,1]  ;
 [0,1,1,0] :> [1,1,1] -> [1,0,0,1,0]  ;
 [0,1,1,1] :> [0,0,0] -> [1,1,0,1,0]  ;

end    " Ende des Programms

von spartanne (Gast)


Lesenswert?

> >Ist das etwa das Praktikum vom Prof. Fischer an der HTW Dresden?
>Nein, nicht ganz, ist an einer Berufsschule in Baden-Württemberg

-- spam_on
hihi, so ist das halt im Ländle..
An Berufsschulen macht man das mit ABEL und an der Hochschule werden die 
Fußgängerampeln in VHDL programmiert.. aber ich konnte mich bisher als 
Fußgänger auf die Ampel verlassen, war alles synchron :-)
-- spam_off

von adil (Gast)


Lesenswert?

kann mir bitte jamand helfen ?  ich muss  ein programm mit Abel 
reaisiren , der  zwei 2 Bit-Zahlen addieren , und einer für das 
Substrahiern und einer für das Multipliziern .
bitte helfen sie mir

von Gast (Gast)


Lesenswert?


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.