Zaawansowany język równań logicznych

Zaawansowane Boolean Równanie Język ( ABEL ) to język opisu sprzętu , który jest rzadko używany dzisiaj , który został wykorzystany w technologii cyfrowej w latach 1980 i 1990 do tworzenia prostych układów logicznych dla komponentów, takich jak CPLD ( CPLD ), a dla mniejszych FPGA ( Programowalna macierz bramek ). Opis odbywa się za pomocą równań logicznych, tabel prawdy lub przypisań warunkowych. W przypadku automatów stanów przejścia stanów można opisać jako STATE_DIAGRAM. Podczas gdy Verilog i VHDL zostały pierwotnie zaprojektowane tylko do symulacji obwodów, podczas projektowania ABEL skupiono się na automatycznym i bardzo zorientowanym na sprzęt generowaniu plików programowych dla CPLD.

ABEL został opracowany w latach 80. przez „Data I / O Corporation” w Redmond (Waszyngton). Po wielu sprzedażach, ABEL jest utrzymywany przez Xilinx od 1999 roku . Obecnie ABEL jest rzadko używany, ponieważ pojawienie się potężnych narzędzi do syntezy oznacza, że bardziej abstrakcyjne opisy, takie jak te w VHDL, mogą być automatycznie przekształcane w listy znaczników. W przypadku obwodów, które składają się z kilkuset tysięcy bramek logicznych, ręczny opis za pomocą równań logicznych jak w ABEL nie jest praktyczny. Ale ABEL jest również rzadko używany w mniejszych obwodach, ponieważ pełną funkcjonalność można pokryć za pomocą dzisiejszych języków sprzętowych, takich jak VHDL lub Verilog.

Składnia ABEL

Struktura programu

Program Abla składa się z różnych sekcji, które są wprowadzane odpowiednimi słowami kluczowymi (np. moduł, deklaracje, równania, tablica_prawdziwości, diagram_stanu, wektory_testowe). Maksymalnie 150 znaków w wierszu. Wszystkie wiersze kończą się średnikiem.

Zarezerwowane słowa kluczowe

Istnieje około 30 słów kluczowych, których nie można swobodnie używać (np. if, else, istype, buffer, com, when, then, true_table, równania itp.)

Identyfikator (zdefiniowany samodzielnie identyfikator sygnału)

Identyfikatory muszą zaczynać się od litery lub podkreślenia i mogą mieć do 31 znaków. Identyfikatory nie mogą zawierać żadnych znaków specjalnych (z wyjątkiem ~ i _), umlautów (ä, ö, ü) ani spacji. W identyfikatorach rozróżniana jest wielkość liter !

Komentarze

Istnieją dwie opcje oznaczania komentarzy.

  • Rozpocznij i zakończ znakiem mark
  • Rozpocznij od // - dotyczy końca linii, przydatne, jeśli sam komentarz zawiera "

Stałe (wybór)

  • .X. nie obchodzi mnie warunek (np. w sekcji true_table)
  • .DO. pełny cykl: low-high-low (np. w test_vectors)
  • .K. pełny zegar wysoki-niski-wysoki
  • .RE. opadająca krawędź zegara
  • .U. rosnąca krawędź zegara

Operatorzy

W ABEL istnieją 4 grupy operatorów: operatory logiczne, operatory arytmetyczne, operatory porównania i operatory przypisania.

  • Operatory logiczne to :! (NIE), & (AND), # (OR), $ (XOR) ,!$ (XNOR), << (przesunięcie w lewo) i >> (przesunięcie w prawo)
  • Operatory arytmetyczne to + (dodawanie), - (odejmowanie lub uzupełnienie do dwóch), * (mnożenie) i / (dzielenie)
  • Operacje porównania odpowiadają składni wielu języków wysokiego poziomu. Możliwe są == , ! = , < , <= , > , <=

Rozróżnia się przypisania kombinatoryczne i pamięciowe:

  • = dla wyjść bez przerzutnika (i dla wyjść z FF z rozszerzeniem kropkowym)
  • : = dla wyjść z przerzutnikiem
Rozszerzenia kropki
Rozszerzenia kropkowe przerzutnika D w CPLD

Rozszerzenia kropki

Rozszerzenia DOT w ABEL są ważnym narzędziem dostępu do wewnętrznych sygnałów przerzutników D zawartych w CLPD. Ilustracja przedstawia najczęściej używane rozszerzenia kropki:

  • .OE przełącza bufor trójstanowy
  • .D to dane wejściowe przerzutnika
  • .CLK oznacza wejście zegara przerzutnika
  • .AR oznacza asynchroniczne wejście resetujące przerzutnika
  • .Q to wyjście przerzutnika. Tylko .Q może być używany z wewnętrznymi przerzutnikami (NODE) .
  • .Pin to sygnał na pinie wyjściowym . Używając .OE , możliwe są również magistrale dwukierunkowe.

Dalsze rozszerzenia kropek są implementowane lub emulowane bezpośrednio dla konkretnego modułu. W CPLD który zawiera tylko D przerzutników, zachowanie JK lub przerzutnika RS można symulować za pomocą .J i .K lub .R i .S . Jeśli wewnętrzne przerzutniki CPLD nie mają asynchronicznego sygnału nastawczego ( .AS ), logika przerzutnika jest odwracana przy użyciu .AS i zamiast tego używane jest asynchroniczne wejście resetujące .AR . To może .AR i .Jak nie mogą być używane jednocześnie.

Przykład włączania sygnalizacji świetlnej w ABEL-HDL

Poniższy kod źródłowy przedstawia program do prostego przełączania sygnalizacji świetlnej, który przechodzi przez fazy sygnalizacji świetlnej czerwony - czerwony / żółty - zielony - żółty - czerwony - itd. tak długo, jak na wejściu zezwalającym jest wysoki sygnał.

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

linki internetowe

Indywidualne dowody

  1. XILINX finalizuje zakup oprogramowania . ( Pamiątka z 23 kwietnia 2000 w Internet Archive ) Komunikat prasowy