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 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
- Elementarz ABEL Uniwersytetu Pensylwanii ( pamiątka z 7 lutego 2005 w Internet Archive )
- Przewodnik po Xilinx ABEL
Indywidualne dowody
- ↑ XILINX finalizuje zakup oprogramowania . ( Pamiątka z 23 kwietnia 2000 w Internet Archive ) Komunikat prasowy