- W Boga - wierze. Natomiast nie bardzo wierzę w to, co ludzie mówią o Bogu.

[ 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.

 



Tabela 2.1. 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ść



zmiany bazy domyślnej przy użyciu dyrektywy Radix

 

 

 

 

 

 

 

 

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 ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • slaveofficial.keep.pl
  • Szablon by Sliffka (© - W Boga - wierze. Natomiast nie bardzo wierzę w to, co ludzie mówią o Bogu.)