AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

Podobne dokumenty
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

UKŁADY CYFROWE. Układ kombinacyjny

Podstawy Informatyki Elementarne podzespoły komputera

Mikrokontroler ATmega32. Język symboliczny

Tranzystor JFET i MOSFET zas. działania

Podstawy programowania skrót z wykładów:

Wstęp do programowania

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Programowalne układy logiczne kod kursu: ETD Podstawy języka Verilog W

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Języki programowania zasady ich tworzenia

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

ForPascal Interpreter języka Pascal

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Podstawy Programowania C++

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Arytmetyka liczb binarnych

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

LEKCJA. TEMAT: Funktory logiczne.

1 Podstawy c++ w pigułce.

Zadania do wykładu 1, Zapisz liczby binarne w kodzie dziesiętnym: ( ) 2 =( ) 10, ( ) 2 =( ) 10, (101001, 10110) 2 =( ) 10

Mikrooperacje. Mikrooperacje arytmetyczne

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Zmienne, stałe i operatory

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Projektowanie automatów z użyciem VHDL

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Ćw. 1: Systemy zapisu liczb, minimalizacja funkcji logicznych, konwertery kodów, wyświetlacze.

Architektura komputerów Wykład 2

Sterowniki Programowalne (SP)

Projekt Koder HDB-3. Wykonali: Agnieszka Sikorska, Łukasz Kokosza EiTI Politechnika Warszawska Warszawa Projekt UCYF Koder HDB-3

Algorytmika i Programowanie VBA 1 - podstawy

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

1 Podstawy c++ w pigułce.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Podstawy programowania w języku C i C++

LABORATORIUM ELEKTRONIKI I TEORII OBWODÓW

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

Bloki anonimowe w PL/SQL

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

Modelowanie złożonych układów cyfrowych (1)

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Języki i metodyka programowania. Wprowadzenie do języka C

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Układy VLSI Bramki 1.0

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Układy sekwencyjne. 1. Czas trwania: 6h

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

LibreOffice Calc VBA

Sławomir Kulesza. Projektowanie automatów asynchronicznych

Programowanie obiektowe

Programowalne układy logiczne

WSTĘP DO ELEKTRONIKI

2 Przygotował: mgr inż. Maciej Lasota

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

dwójkę liczącą Licznikiem Podział liczników:

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Wstęp do informatyki- wykład 2

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Elementy języków programowania

Języki skryptowe w programie Plans

Układy kombinacyjne - przypomnienie

MATERIAŁY DO ZAJĘĆ II

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

LICZNIKI PODZIAŁ I PARAMETRY

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Właściwości i metody obiektu Comment Właściwości

4. UKŁADY FUNKCJONALNE TECHNIKI CYFROWEJ

Układy Logiczne i Cyfrowe

SWB - Projektowanie synchronicznych układów sekwencyjnych - wykład 5 asz 1. Układy kombinacyjne i sekwencyjne - przypomnienie

Programowanie w języku Python. Grażyna Koba

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Cw.12 JAVAScript w dokumentach HTML

Kiedy i czy konieczne?

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Transkrypt:

AHDL - Język opisu projektu. Podstawowe struktury języka Przykładowy opis rewersyjnego licznika modulo 64. TITLE "Licznik rewersyjny modulo 64 z zerowaniem i zapisem"; %------------------------------------------------------------ Zbior : cnt_txt.tdf Jezyk : AHDL Autor : Marek Pawlowski Wersja : 1 Data : 2004.12.14 ------------------------------------------------------------% SUBDESIGN cnt_txt WE[5..0] : input; WY[5..0] : output; LD : input; CR : input; UD : input; CK : input; WY[5..0] : DFF; WY[].clk = CK; WY[].clrn = CR; if LD==0 then WY[]=WE[]; elsif UD==0 then WY[]=WY[]+1; else WY[]=WY[]-1; end if; W pierwszym wierszu pliku *.tdf występuje dyrektywa TITLE zawierającą nagłówek umieszczany w raporcie z kompilacji. Następujące po nim wiersze są komentarzem opisującym podstawowe dane projektu. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN Dyrektywa SUBDESIGN z nazwą projektowane układu wyznacza zmienne wejściowe input, wyjściowe output i dwukierunkowe bidir projektowanego układu. Nazwa projektowanego układu musi być identyczna jak nazwa zbioru *.tdf, w którym została dyrektywa subdesign umieszczona. Słowo kluczowe określające typ zmiennej poprzedza lista zmiennych oddzielonych przecinkami zakończona dwukropkiem. Deklaracje zmiennych we-wy umieszczane są pomiędzy nawiasami i. Zapis w BNF ang. Backus-Naur Form tej konstrukcji jest następujący: SUBDESIGN nazwa_zbioru <lista zmiennych> : <typ zmiennej>; {<lista zmiennych> : <typ zmiennej>;} <lista zmiennych> ::= <zmienna> {,<zmienna>} <typ zmiennej> ::= INPUT OUTPUT BIDIR dla przypomnienia oznaczeń notacji BNF: MPW AHDL - Język opisu projektu. 1

<...> - zawiera identyfikator {...} opcjonalne powtórzenie obiektu zero bądź dowolną liczbę razy... grupowanie listy obiektów...... - wybór jednej z wymienionych możliwości n:m - zakres obiektu ::= - definiowanie znaczenia lewej strony wyrażenia Słowa kluczowe mogą być pisane dużymi bądź małymi literami. Słowo kluczowe pozwala wskazać realizację zmiennych jako rejestrowe a także zdefiniować zmienne wewnętrzne układu nie wyprowadzane na jego końcówki. <lista zmiennych> : <typ zmiennej wewnętrznej>; {<lista zmiennych> : <typ zmiennej wewnętrznej>;} <lista zmiennych> ::= <zmienna> {,<zmienna>} <typ zmiennej wewnętrznej> ::= NODE TRI_STATE_NODE <podprojekt> <element podstawowy> <maszyna stanów> <element podstawowy> ::= DFF DFFE JKFF LATCH TRI <maszyna stanów> ::= MACHINE [OF BITS <rejestr>] WITH STATES <stan>{,<stan>} <rejestr> ::= <lista nazw> <nazwa>[<zakres>] <zakres> ::= <liczba dziesiętna>.. <liczba dziesiętna> <stan> ::= <nazwa> [= <liczba dziesiętna> <nazwa>] <liczba> ::= <kod liczbowy> <ciąg cyfr> <kod liczbowy> ::= B D O Q H X uwagi: elementy podstawowe ang. primitives patrz help programu MAX+PlusII pogrupowane są w następujące kategorie: bufory, przerzutniki i zatrzaski, układy logiczne i pozostałe w definicji powyższej wymieniono tylko najczęściej wykorzystywane np. DFF przerzutnik D, DFFE przerzutnik D z blokadą zegara, JKFF przerzutnik JK itp.; w deklaracji maszyny stanów lub inaczej automatu po słowie kluczowym MACHINE określa się liczbę bitów rejestru stanu automatu a kończy ją lista stanów wewnętrznych opisanych liczbami bądź nazwami z opcjonalnie przypisanymi kodami; liczby występujące w AHDL mogą być zapisane w następujących kodach: B dwójkowo, D dziesiętnie, O lub Q ósemkowo, H lub X szesnastkowo format domyślny liczby to dziesiętny od jednej do 10 cyfr; w zapisie dwójkowym można używać również znaku X jako wartość dowolna danej cyfry. W omawianym przykładzie zmienna WY została zadeklarowana jako zmienna realizowana na przerzutnikach D. Zmienne rejestrowe wyposażone są w atrybuty opisujące wejścia przerzutników. Do najczęściej używanych należą:.clk - wejście taktujące;.clrn - wejście asynchronicznego zerowania przerzutnika;.prn - wejście asynchronicznego ustawiania przerzutnika w stan 1. Na wejścia te podawane są najczęściej sygnały globalne ale mogą być one sterowane dowolną funkcją logiczną. W przypadku omawianego przykładu przerzutniki WY taktowane są sygnałem CK a zerowane asynchronicznie sygnałem CR. MPW AHDL - Język opisu projektu. 2

... END Słowo kluczowe rozpoczyna sekcję opisu działania projektowanego układu a END ją kończy. W sekcji tej mogą być umieszczane min.: Równania i funkcje złożone; tablice wartości; opisy automatów. Równania i funkcje złożone Równania pozwalają na wykonanie prostych operacji podstawień. Uproszczona definicja zapisu w notacji BNF jest następująca: <równanie> ::= <zmienna wyjściowa> = <zmienna> [<operator> <zmienna>]; <zmienna wyjściowa> :: = <zmienna> <zmienna> ::= <nazwa> <nazwa> [,<nazwa>] <nazwa> ::= <nazwa prosta> <nazwa indeksowana> <nazwa prosta> ::= <litera> [<litera> <cyfra>] <nazwa indeksowana> ::= <nazwa prosta> [ [<liczba dziesiętna> [..<liczba dziesiętna>]] ] <operator> ::= <operator logiczny> <operator relacji> <operator arytmetyczny> <operator logiczny> ::=! NOT & AND!& NAND # OR!# NOR $ XOR!$ XNOR <operator relacji> ::= ==!= > >= < <= <operator arytmetyczny> ::= + - * DIV MOD ^ LOG2 ZZ[] = XX[] + YY[] & S[]==1; % operacja arytmetyczna pod warunkiem S[]==1% ZZ[7..0],ZZ[15..8]= XX[15..8],YX[7..0] AND S[]==2; % konkatenacja słów binarnych % ZZ[] = ZZ[14..0],ZZ15; % przesunięcie cykliczne w lewo % IF THEN ELSE pozwala na warunkowe wykonanie operacji podstawień. Opis struktury w notacji BNF jest następujący: lub IF <wyrażenie warunkowe> THEN <równanie>; ELSE <równanie>; END IF; IF <wyrażenie warunkowe> THEN <równanie>; [ ELSIF <wyrażenie warunkowe> THEN <równanie>;] ELSE <równanie>; END IF; <wyrażenie warunkowe> :: = <zmienna> <operator logiczny> <zmienna> <stała> <stała> ::= <liczba> <ciąg alfanumeryczny> <ciąg alfanumeryczny> ::= [<znak alfanumeryczny>] MPW AHDL - Język opisu projektu. 3

if S[]==0 then ZZ[] = XX[]; % proste podstawienie pod warunkiem S=0 % elsif s[]==1 then ZZ[] = XX[] + YY[]; % operacja arytmetyczna % elsif s[]==2 then ZZ[7..0],ZZ[15..8]= XX[15..8],YY[7..0]; else ZZ[] = ZZ[14..0],ZZ15; % przesunięcie cykliczne w lewo % end if CASE WHEN pozwala podobnie jak poprzednia konstrukcja na warunkowe wykonanie operacji podstawień. Opis struktury w notacji BNF jest następujący: CASE <zmienna> IS WHEN <stała> => <równanie>; [WHEN <stała> => <równanie>;] END CASE; case S[] is when 0 => ZZ[] = XX[]; % proste podstawienie pod warunkiem S=0 % when 1 => ZZ[] = XX[] + YY[]; % operacja arytmetyczna % when 2 => ZZ[7..0],ZZ[15..8]= XX[15..8],YY[7..0]; when 3 => ZZ[] = ZZ[14..0],ZZ0; % przesunięcie cykliczne w lewo % end case; Tabele funkcji Tabele funkcji służą do czytelnego opisu układów koderów, dekoderów i innych bloków funkcjonalnych, które w sposób jednoznaczny przypisują stan wyjść stanom wejść. Postać tabeli w zapisie BNF jest następująca: <tabela> ::= TABLE <lista wejść> => <lista wyjść>; <lista wejść> => <lista wyjść>; {<lista wejść> => <lista wyjść>;} END TABLE; TABLE WE[] => A, B, C, D, E, F, G; H"0" => 1, 1, 1, 1, 1, 1, 0; H"1" => 0, 1, 1, 0, 0, 0, 0; H"2" => 1, 1, 0, 1, 1, 0, 1; H"3" => 1, 1, 1, 1, 0, 0, 1; H"4" => 0, 1, 1, 0, 0, 1, 1; H"5" => 1, 0, 1, 1, 0, 1, 1; H"6" => 1, 0, 1, 1, 1, 0, 1; H"7" => 1, 1, 1, 0, 0, 0, 0; END TABLE; Maszyna stanów automat Maszyny stanów służą do opisywania automatów w projektowanych układach. Sposób zadeklarowania maszyny stanów został przedstawiony przy okazji dyrektywy. Warto zwrócić uwagę na fakt, że wymieniony rejestr stanu w definicji automatu nie musi być deklarowany ponownie. Do opisu funkcji przejść i wyjść automatu można użyć tablic, case-when lub if-then-else. Na początek przykład automatu realizującego funkcję licznika modulo 5 generującego na wyjściu WY kolejne stany kodu NKB. Kodowanie stanów jest dowolne co pokazano w przykładzie. MPW AHDL - Język opisu projektu. 4

TITLE "Automat - Licznik rewersyjny modulo 5 bez ladowania"; SUBDESIGN automat WY[2..0] : output; CR : input; UD : input; CK : input; AUT : machine of bits Q[2..0] with statess0=b"000",s1=b"001",s2=b"010",s3=b"111",s4=b"101"; AUT.clk = CK; AUT.reset =!CR; case AUT is when S0 => WY[]=B"000"; if UD==0 then AUT=S1; else AUT=S4; end if; when S1 => WY[]=B"001"; if UD==0 then AUT=S2; else AUT=S0; end if; when S2 => WY[]=B"010"; if UD==0 then AUT=S3; else AUT=S1; end if; when S3 => WY[]=B"011"; if UD==0 then AUT=S4; else AUT=S2; end if; when S4 => WY[]=B"100"; if UD==0 then AUT=S0; else AUT=S3; end if; end case; Automat ma zdefiniowane następujące wejścia sterujące:.clk - wejście taktujące;.reset - wejście zerujące aktywne poziomem wysokim inaczej niż przerzutniki;.ena - wejście blokujące wpływ sygnału taktującego na automat. Ten sam automat opisany za pomocą tabeli jak pokazano poniżej zachowa się w sposób identyczny do poprzednio zaprojektowanego. W poniższym przykładzie pominięto sekcję deklaracyjną identyczną do poprzedniego opisu. AUT.clk = CK; AUT.reset =!CR; table AUT, UD => AUT, WY[]; S0, 0 => S1, B"000"; S0, 1 => S4, B"000"; S1, 0 => S2, B"001"; S1, 1 => S0, B"001"; S2, 0 => S3, B"010"; S2, 1 => S1, B"010"; S3, 0 => S4, B"011"; S3, 1 => S2, B"011"; S4, 0 => S0, B"100"; S4, 1 => S3, B"100"; end table; Pojedyncze sygnały nie mogą przyjmować wartości liczbowych 1 lub 0. Zastępują je predefiniowane zmienne odpowiednio VCC i GND. MPW AHDL - Język opisu projektu. 5