wykl_dodB.pdf

(267 KB) Pobierz
4
Wykład
Mikrokontrolery
i Mikrosystemy
Dodatek B
Język ABEL opisu układów realizowalnych w
strukturach programowalnych
autor: dr inż. Zbigniew Czaja
Gdańsk 2005
Mikrokontrolery i Mikrosystemy – Dodatek B
2
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..............................................................................................................................5
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.....................................................................................................9
7.4. Operatory przypisania.............................................................................................10
7.5. Operatory priorytetu............................................................................................... 10
8. Opis logiki projektowanego układu.................................................................................11
8.1. Równania................................................................................................................11
8.2. Tablica prawdy.......................................................................................................11
8.3. Opis stanowy.......................................................................................................... 13
9. Rozszerzenie z kropką w deklaracji pinów.....................................................................15
10. Wektory testujące..........................................................................................................16
11. Deklaracje aktywności stanem niskim...........................................................................17
12. Przykłady wykorzystania języka ABEL........................................................................ 18
29974757.002.png
Mikrokontrolery i Mikrosystemy – Dodatek B
3
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.
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 : dla słów kluczowych języka ABEL wielkość liter nie jest istotna. 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.
Tabela 2.1. Listing opisu źródłowego w języku ABEL
Komentarz "Struktura pliku źródłowego
" w języku ABEL
Nagłówek module nazwa_modułu
title 'tytuł projektu'
deviceID device deviceType;
declarations
sygnały_we pin ;
sygnały_wy pin istype 'com' ;
nazwa = .c. ;
nazwa = [nazwa1, nazwa2,..];
Opis logiczny układu equations
równania, lub/i
truth_table
tablice wartości, przejść
lub/i
state_diagram
opis tekstowy grafu przejść
Wektory testowe test_vectors
wartości sygnałów wejściowych ->
spodziewane odpowiedzi
Zakończenie opisu modułu end nazwa_modułu
Deklaracje sygnałów wejściowych i wyjściowych,
stałych zmiennych pomocniczych w postaci wektorów
29974757.003.png
Mikrokontrolery i Mikrosystemy – Dodatek B
4
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.
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
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.
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:
29974757.004.png
Mikrokontrolery i Mikrosystemy – Dodatek B
5
[!]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ść
zmiany bazy domyślnej przy użyciu dyrektywy Radix
Tabela 4.1. Systemy liczb w języku ABEL
Nazwa systemu Podstawa Symbol
Binarny
2
^b
Ósemkowy 8
^o
Dziesiętny 10
^d (domyślny)
Szesnastkowy 16
^h
29974757.005.png 29974757.001.png
Zgłoś jeśli naruszono regulamin