Advanced Boolean Equation Language

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 30. April 2013 um 12:31 Uhr durch Kam Solusar (Diskussion | Beiträge) (+ Normdaten). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Advanced Boolean Equation Language (abgekürzt ABEL) ist eine heute kaum noch genutzte Hardwarebeschreibungssprache, 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 grundsätzlich mit booleschen Gleichungen und Wahrheitstafeln. Während Verilog und VHDL 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 80er Jahren von der „Data I/O Corporation“ in Redmond (Washington) entwickelt. Nach einer Reihe von Verkäufen wird ABEL seit 1999 von Xilinx gepflegt.[1] Heute wird ABEL nur noch wenig genutzt, da durch das Aufkommen leistungsfähiger Synthesetools 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.

Beispiel Ampelschaltung in ABEL-HDL

Der folgende Quelltext stellt ein Programm zur einfache Ampelschaltung dar, welches die Ampelphasen rot – rot/gelb – grün – gelb – rot – usw. durchläuft, solange ein High Signal am Enable Eingang anliegt.

   MODULE trafficlight
   TITLE 'trafficlight'
   DECLARATIONS
   // Inputs
       clk	pin 11; // clock signal
       en	pin  9; // enable signal to start the traffic light
   // nodes
       q0	node 	istype 'reg';
       q1	node 	istype 'reg';
   // Output
       red	pin 36	istype 'com';  // the red light
       yellow	pin 42	istype 'com';  // the yellow light
       green	pin 39	istype 'com';  // the green light
   EQUATIONS
       q0 := !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]);
   @repeat 1  {[.C., 1] -> [.X., .X., .X.];}
   @repeat 7  {[.C., 0] -> [.X., .X., .X.];}
   @repeat 3  {[.C., 1] -> [.X., .X., .X.];}
   @repeat 40 {[.C., 0] -> [.X., .X., .X.];}
   END

Einzelnachweise

  1. Presseerklärung: XILINX Completes Purchase Of Software Assets