,
[ Pobierz całość w formacie PDF ]
2
Język Abel opisu układów realizowanych w
strukturach programowalnych
Spis treści
1. Wstęp..............................................................................................................................3 2. Podstawowa struktura pliku źródłowego w języku ABEL.......................................... ..3 3. Słowa kluczowe języka ABEL...................................................................................... 4 4. Liczby............................................................................................................................ 6 5. Dyrektywy..................................................................................................................... 6 6. Zmienne zespołowe (SET) – wektory........................................................................... 6 6.1. Indeksowanie i dostęp do wektora (SET)....................................................................7 6.2. Operacje na wektorze................................................................................................. 7 7. Operatory........................................................................................................................9 7.1. Operatory logiczne......................................................................................................9 7.2. Operatory arytmetyczne..............................................................................................9 7.3. Operatory relacji........................................................................................................ 10 7.4. Operatory przypisania................................................................................................10 7.5. Operatory priorytetu...................................................................................................11 8. Opis logiki projektowanego układu..............................................................................11 8.1. Równania...................................................................................................................11 8.2. Tablica prawdy..........................................................................................................12 8.3. Opis stanowy.............................................................................................................13 9. Rozszerzenie z kropką w deklaracji pinów................................................................. 15 10. Wektory testujące...................................................................................................... 17 11. Deklaracje aktywności stanem niskim.......................................................................17 12. Przykłady wykorzystania języka ABEL................................................................... 18
1. Wstęp
Podczas projektowania układu zazwyczaj wiemy, jakie są sygnały wejściowe do przetwarzania w układzie oraz jakie sygnały wyjściowe powinny wystąpić na wyjściach układu. W większości języków służących do opisu układów realizowalnych w strukturach programowalnych wejścia i wyjścia są nazywane portami układu. W każdym języku opis układu składa się z dwóch bloków: tzw. bloku deklaracji zawierającego przypisania sygnałów, identyfikowanych nazwami, do odpowiednich portów oraz z bloku opisu budowy i działania układu. Język ABEL (Advanced Boolean Expression Language), to jeden z najstarszych języków opisu układów implementowanych w strukturach programowalnych. Opracowany został przez firmę DATA I/O. Opis układu w języku ABEL ma postać modułu tekstowego, lub modułów połączonych w strukturę hierarchiczną. Język ABEL daje możliwość opisu zachowania systemu na wiele sposobów, włączając równania logiczne, tablice prawdy i opis stanowy, podobny w zapisie do warunków języka C. Kompilatory do języka ABEL dają możliwość projektowania i programowania struktur PLD takich jak: SPLD, CPLD i FPGA. Aby określić funkcje ,które maja być generowane przez układ PLD, należy zgodnie z zasadami języka ABEL przygotować dokument tekstowy (łudząco podobny do opisu źródłowego programu komputerowego). Taki opis może precyzować typ układu PLD , który powinien być zastosowany oraz zawierać przyporządkowanie nazw sygnałów wejściowych i wyjściowych odpowiednim wyprowadzeniom układu. Funkcje wyjściowe zwykle są opisywane funkcjami boolowskimi, lecz stosuje się także inne sposoby ich definiowania.
2. Podstawowa struktura pliku źródłowego w języku ABEL
Plik źródłowy w języku ABEL składa się z następujących części: Ø nagłówek: załączone moduły, opcje i tytuł, Ø opis logiczny: równania, tablica prawdy, opis stanowy, Ø wektory testujące, Ø koniec.
Uwaga: Kompilator języka ABEL nie rozróżnia wielkości liter w słowach kluczowych. Natomiast nazwy nadane przez użytkownika i etykiety są identyfikowane również po wielkości liter (np.input1 i Input1 są różnymi nazwami bądź etykietami).
W tabeli 1 pokazano listing opisu źródłowego w języku ABEL.
Plik źródłowy musi zaczynać się słowem kluczowym module, a kończyć słowem end. W nagłówku opisu źródłowego występuje nazwa modułu po słowie kluczowym module. Nazwa modułu określa również nazwę plików wyjściowych tworzonych przez oprogramowanie przetwarzające systemu syntezy (kompilator, program optymalizacji, symulator, fitter, itd.). Tytuł projektu wprowadzony po słowie title umożliwia łatwą identyfikację plików związanych z danym projektem. Kolejnym blokiem jest blok deklaracji, w którym deklarowane są nazwy (identyfikatory) sygnałów wejściowych (pin) oraz wyjściowych (pin istype 'typ_końcówki'). Można również wskazać (opcjonalnie) numery pinów wejściowych i wyjściowych układu programowalnego, który zamierzamy zastosować (zadeklarowanego słowem device). W tym bloku deklarowane są również nazwy sygnałów wewnętrznych, pomocnicze zmienne, stałe itp. Deklaracja typu układu i wyprowadzeń powinna kończyć się średnikiem. Kolejnym blokiem jest blok opisu logicznego, w którym definiuje się właściwości logiczne projektowanego układu. Możliwy jest opis działania układu za pomocą: Ø równań, po słowie kluczowym equations, z operatorami logicznymi, ale także równań z operatorami arytmetycznymi i operacjami relacji, Ø tablicy wartości funkcji (dla układów kombinacyjnych) lub tablicy przejść (dla układów sekwencyjnych) po słowie kluczowym truth_table, Ø tekstowego opisu grafu przejść po słowie kluczowym state_diagram
Opcjonalnym blokiem w pliku źródłowym jest blok wektorów testowych( test_vector) przygotowanych w postaci tablicy, w której wpisuje się arbitralnie wybrane kombinacje sygnałów wejściowych (wektory pobudzeń) i oczekiwane dla nich wartości sygnałów wyjściowych (odpowiedzi na wyjściu układu). Wektory testowe są wykorzystywane przez program symulacji funkcjonalnej (poprawności opisu logicznego) lub program symulacji układu po jego implementacji w wybranej strukturze programowalnej, a więc już po przygotowaniu wynikowego pliku konfiguracyjnego. Programy wchodzące w skład pakietu ABEL (w tym przede wszystkim kompilator) na podstawie opisu źródłowego , zawierającego bloki , jak pokazano w tabeli 2.1, tworzą niezbędną dokumentację projektu i generują zbiór z wzorem połączeń do programowania układu PLD. Wyznaczona konfiguracja programowalnych połączeń jest przechowywana w pliku , który służy do zaprogramowania układu PLD. W dokumentacji jest m.in. oddzielny plik z zestawieniem ostatecznych równań boolowskich do implementacji w PLD , które są uproszczonymi lub przekształconymi równaniami pierwotnymi opisu zadania. Typ układu może być zaproponowany przez oprogramowanie pakietu ABEL w momencie , gdy ma być generowany plik wynikowy do programowania układu. Wówczas może być do wyboru kilka typów układów. Czasami , gdy układ nie jest wstępnie zadeklarowany , opis źródłowy musi zawierać także dodatkowe informacje dotyczące sygnałów , jak np. przyporządkowanie im odpowiednich atrybutów(cech) po słowie kluczowym istype lub określenie funkcji sygnałów w układzie za pomocą tzw. Etykiet rozszerzania ,,kropkowego’’ (dot extension). Na przykład sygnał wyjściowy Q0 może mieć przyporządkowany atrybut sygnału ,,rejestrowego’’ (to znaczy ma być pobierany z wyjścia przerzutnika typu D ) w wierszu deklaracyjnym Q0 istype ‘reg_d). Rozszerzenie kropkowe jest dołączane do nazwy sygnału (po kropce- stąd jego nazwa), w celu określenia , który sygnał wejściowy będzie pełnił funkcję np. sygnału zerującego przerzutniki –do nazwy sygnału dołączane jest wówczas rozszerzenie .RE(od reset).
3. Słowa kluczowe języka ABEL
Module: każdy plik źródłowy rozpoczyna się konstrukcją module a zaraz za nią występuje nazwa modułu (identyfikator). Duże źródła składają się często z wielu modułów z ich własnymi tytułami, równaniami, itd.
Title: jest opcjonalny i może być używany do identyfikacji projektu. Tytuł musi być umieszczony w pojedynczych cudzysłowach. Linia Title jest ignorowana przez kompilator, ale jest bardzo przydatna przy tworzeniu dokumentacji.
String: tekst jest łańcuchem znaków ASCII umieszczonym w pojedynczych cudzysłowach. Strings są używane do wpisania nazw Tytułu(Title), Opcji(Options), oraz nazw końcówek układu, węzłów i deklaracji atrybutów.
device: ta deklaracja jest opcjonalna i stowarzysza identyfikator układu z konkretną programowalną strukturą logiczną. Deklaracja device musi być zakończona średnikiem. Np. MY_DECODER device 'XC4003E';
comments: komentarze mogą być umieszczane w dowolnym miejscu pliku. Rozpoczynają się podwójnym cudzysłowem, a kończą końcem linii, lub podwójnym cudzysłowem, w zależności od tego co będzie pierwsze.
pin: deklaracja ta służy to poinformowania kompilatora, które nazwy użytkownika są powiązane z końcówkami urządzenia. Zapis: [!]pin_id pin [pin#] [istype 'attributes'];
Jedna deklaracja pin może opisywać więcej końcówek: [!]pin_id , pin_id, pin_id pin [pin#, [pin#, [pin#]]] [istype 'attributes'];
Przykład 3.1: IN1, IN2, A1 pin 2, 3, 4; OUT1 pin 9 istype 'reg'; ENABLE pin; !Chip_select pin 12 istype 'com'; !S0..!S6 pin istype 'com';
Nie jest konieczne do określenia końcówek układu. Numery końcówek mogą być określone podczas kompilacji używając np. Xilinx CAD. Jest to bardzo dobra własność dająca możliwość tworzenia projektów bardziej ogólnych i elastycznych. Znak ! opisuje końcówkę jako aktywną stanem niskim (sygnał będzie negowany). Atrybut istype jest powiązaniem dającym możliwość wybrania trybu pracy końcówki, takich jak ‘com’ wyjście wówczas jest kombinacyjne, lub ‘reg’ tryb rejestrowy taktowany zegarem. Ten atrybut jest tylko dla wyjścia.
node: węzeł jest deklaracją wewnętrznego sygnału, który nie ma połączenia z końcówką układu, ale ma taki sam format jak deklaracja pin. Np.: tmp1 node [istype 'com'];
Inne deklaracje: pozwalają na definicje stałych, zmiennych makr i wyrażeń, które mogą uprościć program. Przykładowa deklaracja stałej ma postać: id [, id],... = expr [, expr];
Przykład 3.2: A = 21; C=2*7; ADDR = [1,0,11]; LARGE = B & C; D = [D3, D2, D1, D0]; D = [D3..D0]; Dwa ostatnie równania są sobie równoważne. Użycie „ .. ” jest bardzo przydatne do określenia zakresu. Przedstawiają one zapis wektora, za każdym odwołaniem do D będzie to równoznaczne odwołaniu do wektora [D3, D2, D1. D0].
4. Liczby
Liczby mogą być wprowadzane w czterech różnych systemach: binarnym, ósemkowym, dziesiętnym i szesnastkowym. Systemem domyślnym jest dziesiętny. Istnieje możliwość
5. Dyrektywy
Dyrektywy (directive) pozwalają na zaawansowane zarządzanie plikiem źródłowym i mogą być używane w każdym miejscu pliku, gdy tylko zajdzie taka potrzeba. Zmieniają sposób interpretacji lub przekształcania pliku źródłowego przez kompilator.
@ALTERNATE
Zapis: @alternate @ALTERNATE włącza alternatywny zestaw operatorów. Użycie operatora @alternate wyklucza użycie operatorów ABEL-HDL dodawania(+), mnożenia(*) i dzielenia(/), ponieważ reprezentują one operatory logiczne AND i NOT w trybie @alternate. Operatory standardowe działają podczas trybu @alternate. Powrót do trybu normalnego odbywa się przez dyrektywę @STANDARD, lub koniec modułu.
@RADIX Zapis: @radix expr ; Expr: określa bazę systemu liczb jaki ma być domyślny : 2,8,10,16. Np.: @radix 2; “zmień system domyślny na binarny @radix 10; “zamień z powrotem system binarny na dziesiętny
@STANDARD Zapis: @standard Dyrektywa @standard przywraca ustawienia ABEL-HDL do standardowych.
6. Zmienne zespołowe (SET) – wektory
Wektor (SET) jest zespołem sygnałów lub stałych używanych do opisu grupy sygnałów przez nazwę. Dyrektywa Set jest bardzo użyteczna przy upraszczaniu zapisu logicznego równań. Wektor (SET) jest listą stałych lub sygnałów oddzielonych przecinkami lub operatorem zakresy „ .. „ umieszczonymi koniecznie w nawiasach kwadratowych. ... [ Pobierz całość w formacie PDF ] |
Wątki
|