DieAdvanced Boolean Equation Language (ABEL) ist eine heute kaum noch genutzteHardwarebeschreibungssprache, die in der Digitaltechnik der 1980er und 1990er Jahre eingesetzt wurde, um einfache logische Schaltungen für Bausteine wie CPLDs (Complex Programmable Logic Devices) und für kleinere FPGAs (Field Programmable Gate Array) zu entwerfen. Die Beschreibung erfolgt mit booleschen Gleichungen, Wahrheitstafeln oder bedingten Zuweisungen. Bei Zustandsautomaten können die Zustandsübergänge als STATE_DIAGRAMM beschrieben werden. WährendVerilog undVHDL ursprünglich nur für die Schaltungssimulation konzipiert wurden, lag das Augenmerk bei der Konzeption von ABEL auf der automatischen und sehr hardwarenahen Generierung von Programmierfiles für CPLDs.
ABEL wurde in den 1980er Jahren von der „Data I/O Corporation“ in Redmond (Washington) entwickelt. Nach einer Reihe von Verkäufen wird ABEL seit 1999 vonXilinx gepflegt.[1] Heute wird ABEL nur noch wenig genutzt, da durch das Aufkommen leistungsfähigerSynthesetools abstraktere Beschreibungen wie zum Beispiel in VHDL automatisch in Gatterlisten umgesetzt werden können. Für Schaltungen, die aus mehreren Hunderttausenden Logikgattern bestehen, ist die manuelle Beschreibung mit logischen Gleichungen wie in ABEL nicht praktikabel. Aber auch bei kleineren Schaltungen findet ABEL kaum noch Anwendung, da die komplette Funktionalität mit heute üblichen Hardwaresprachen wie VHDL oder Verilog abgedeckt werden kann.
Ein Abelprogramm besteht aus verschiedenen Abschnitten, die durch entsprechende Schlüsselwörter (u. a. module, declarations, equations, truth_table, state_diagramm, test_vectors) eingeleitet werden. Pro Zeile sind maximal 150 Zeichen erlaubt. Alle Zeilen enden mit einem Semikolon.
Es gibt ca. 30 Schlüsselworte, die nicht frei verwendet werden dürfen (z. B. if, else, istype, buffer, com, when, then, truth_table, equations, u. a. m.)
Identifier müssen mit einem Buchstaben oder Unterstrich beginnen und dürfen maximal 31 Zeichen lang sein. Identifier dürfen keine Sonderzeichen (außer ~ und _), Umlaute (ä, ö, ü) oder Leerzeichen enthalten.Identifier sind case-sensitiv!
Zur Auszeichnung von Kommentaren gibt es zwei Möglichkeiten.
In ABEL gibt es 4 Gruppen von Operatoren: logische Operatoren, arithmetische Operatoren, Vergleichsoperatoren und Zuweisungsoperatoren.
Bei Zuweisungen werden kombinatorische Zuweisungen und Zuweisungen mit Speicher unterschieden:

DOT-Extensions in ABEL sind ein wichtiges Hilfsmittel, um auf internen Signale der im CLPD enthaltenen D-Flipflops zuzugreifen.Die Abbildung zeigt die am häufigsten genutzten Dot-Extensions:
Weitere Dot-Extensions werden bausteinspezifisch direkt umgesetzt oder emuliert. So kann in einem CPLD, welches nur D-Flipflops enthält, mittels.J und.K oder.R und.S das Verhalten eines JK- oder RS-Flipflops nachgebildet werden. Wenn die internen Flipflops des CPLD kein asynchrones Setz-Signal (.AS) aufweisen, wird bei der Verwendung von.AS die Logik des Flipflops invertiert und stattdessen der asynchrone Rücksetzeingang.AR genutzt. Dabei kann.AR und.AS nicht gleichzeitig genutzt werden.
Der folgendeQuelltext stellt einProgramm zur einfachen Ampelschaltung dar, welches die Ampelphasen rot – rot/gelb – grün – gelb – rot – usw. durchläuft, solange ein High-Signal am Enable-Eingang anliegt.
MODULEtrafficlightTITLE'trafficlight'DECLARATIONS// inputsclkpin11;// clock signalenpin9;// enable signal to start the traffic light// nodesq0nodeistype'reg';q1nodeistype'reg';// outputredpin36istype'com';// the red lightyellowpin42istype'com';// the yellow lightgreenpin39istype'com';// the green lightEQUATIONSq0:=!q0&!en;q1:=(q1$q0)&!en;q0.clk=clk;q1.clk=clk;red=q1;yellow=!q0;green=!(q1&!q0);TEST_VECTORS([clk,en]->[red,yellow,green]);@repeat1{[.C.,1]->[.X.,.X.,.X.];}@repeat7{[.C.,0]->[.X.,.X.,.X.];}@repeat3{[.C.,1]->[.X.,.X.,.X.];}@repeat40{[.C.,0]->[.X.,.X.,.X.];}END