Elementy języka VHDL. obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne. PUE-w3 1

Podobne dokumenty
Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

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

VHLD Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL)

Układy reprogramowalne i SoC Język VHDL (część 4)

Projektowanie w VHDL

Projektowanie automatów z użyciem VHDL

Projektowanie hierarchiczne Mariusz Rawski

Układy reprogramowalne i SoC Testbenches. Symulacja sterowana zdarzeniami.

Kurs języka VHDL Very High (Speed Integrated Circuits) Description Language

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2014 Katedra Elektroniki AGH 2

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

Układy reprogramowalne i SoC Język VHDL (część 5)

Języki opisu sprzętu VHDL Mariusz Rawski

Język VHDL podstawy Mariusz Rawski

Układy reprogramowalne i SoC Język VHDL (część 2)

1. ELEMENTY JĘZYKA PL/SQL

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Projektowanie Urządzeń Cyfrowych

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

Technika cyfrowa projekt: Sumator 4 bitowy równoległy

Krótkie wprowadzenie do ModelSim i Quartus2

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Projekt prostego procesora

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.

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Sposoby projektowania systemów w cyfrowych

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

Projektowanie systemów cyfrowych w językach opisu sprzętu. Studium Zaoczne IV rok kierunek Elektronika i Telekomunikacja. Wykład 2

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Bloki anonimowe w PL/SQL

Specyfika projektowania Mariusz Rawski

Systemy Czasu Rzeczywistego FPGA

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Wstęp do programowania. Różne różności

Programowalne układy logiczne

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Synteza strukturalna

Realizacja logiki kombinacyjnej Mariusz Rawski

Układy reprogramowalne i SoC Język VHDL (część 3)

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

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

PRZEMYSŁAW SOŁTAN

Ada 95 #1/5 - typy. Typy skalarne. Hierarchia typów w Adzie. Typ znakowy. Typy dyskretne. Plan wykładu

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Systemy Czasu Rzeczywistego FPGA

Wstęp do programowania

Podstawy Programowania C++

Układy reprogramowalne i SoC Język VHDL (część 1)

PUCY Kolos 2: Reloaded

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Synteza logiczna. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

Systemy Czasu Rzeczywistego FPGA

PODSTAWY BAZ DANYCH 13. PL/SQL

Instrukcje sekwencyjne

Inżynieria Układów Programowalnych

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

VHDL. Zebrał i opracował R.Walkowiak PTC wykład 2013/2014

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Elementy języka VHDL

Język programowania PASCAL

Język PL/SQL Wprowadzenie

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

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

XC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

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

Realizacja algorytmu wyznaczania wyrazów ciągu w języku VHDL z zastosowaniem podziału projektu na moduły: FSM i Data Path.

Język PL/SQL Wprowadzenie

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005

Programowanie obiektowe

Programowanie Układów Logicznych kod kursu: ETD6203. VHDL, ISE WebPACK, Plan Ahead, Impact W

Układy reprogramowalne i SoC Implementacja w układach FPGA

LABORATORIUM OPTOELEKTRONIKA I SENSORYKA Oprogramowanie bariery podczerwieni w układzie CPLD

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe.

Programowanie obiektowe

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

Pascal - wprowadzenie

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Oracle Developer Suite. Budowa aplikacji użytkownika końcowego

Układy Cyfrowe laboratorium

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Podstawy techniki cyfrowej zima 2017 Rafał Walkowiak Synteza strukturalna wyższego poziomu

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

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

Wstęp do programowania 2

PL/SQL. Lidia Małkiewicz i Cezary Skubała

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

Informatyka 1. Przetwarzanie tekstów

LibreOffice Calc VBA

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Niezawodne Systemy Informatyczne

Transkrypt:

Elementy języka VHDL obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne PUE-w3 1

Obiekty (sygnały, zmienne, stałe, pliki) Obiekty służą do zapisu i pamiętania danych Sygnały (wejściowe, wejściowe i wewnętrzne) - są funkcjami czasu -- przykłady deklaracji sygnałów: signal zegar : bit; -- domyslna wartosc pocz. '0' signal reset : bit := '1'; -- inicjalizacja '1' signal x : integer; -- domyslna w.p. -2147483647 signal alfa : integer range 0 to 255; signal mi : bit_vector(9 downto 0):= (others => '1') -- operator => oznacza przyporzadkowanie -- (w.pocz. wszystkich elem. wektora bedzie '1') PUE-w3 2

Obiekty (sygnały, zmienne, stałe, pliki) Zmienne - nie są funkcjami czasu stosuje się tylko w obrębie procesu lub podprogramu wartość uzyskują w wyniku przypisania := (natychmiastowo) variable u : integer range 0 to 127 := 5; variable xx: integer range 500 downto 5 := 100; PUE-w3 3

Obiekty (sygnały, zmienne, stałe, pliki) constant Ucc : bit := '1'; constant tuzin : integer := 12; constant Vec : bit_vector(7 downto 0) := "10101001"; file mplik : text [open write_mode] is "dane.dat" -- nawiasy [ ] oznaczają opcjonalność -- tryby: read_mode, write_mode, append_mode PUE-w3 4

Typy danych: skalarne, złożone, wektorowo-skalarne Podstawowe typy danych są zdefiniowane w tzw. pakietach standardowych (plikach), objętych normą IEEE Std 1164-1993 i dalszych (IEEE Std 1076-2001,...) Dla każdego typu istnieją ściśle określone operatory (...) Są trzy rodzaje typów skalarnych: numeryczne (integer, std_logic,...) wyliczeniowe i fizyczne (time) Można tworzyć podtypy zawężając zakres wartości typu bazowego. Istnieją również podtypy standardowe, np.: subtype natural is integer range 0 to 2147483647 PUE-w3 5

Typy danych: skalarne, złożone, wektorowo-skalarne Liczby całkowite: integer (-2 31-1 to 2 31-1) (liczby rzeczywiste): real ( -1.0E+38 to 1.0E+38) Typ bitowy: bit ('0', '1') Typ boolowski: boolean (false, true) Typ znakowy: character (..,'0','1',..'A','B',..'a','b',...) Typ fizyczny czasowy: time (0 to 2147483647) jednostek (fs,ps,ns,us,ms,sec,min,hr) Typy wyliczeniowe, np.: type kolory is (niebieski, zielony, czerwony); PUE-w3 6

Tworzenie własnych podtypów (zalecane!) subtype bajtowy is integer range 0 to 255; subtype mlitery is character range 'a' to 'z'; subtype cyfry is character range '0' to '9'; type zakres256 is range 0 to 255; -- typ liczbowy type dekada is range 0 to 9; -- inny typ liczbowy subtype dekada is zakres256 range 0 to 9; zawężanie zakresu zwiększa efektywność obliczeń i redukuje złożoność logiczną projektu operacje można przeprowadzać tylko na danych tego samego typu! PUE-w3 7

Wielowartościowy, niejednoznaczny typ std_ulogic type std_ulogic is ( 'U', -- stan niezainicjowany 'X', -- wymusza stan nieznany '0', -- wymusza stan 0 '1', -- wymusza stan 1 'Z', -- stan wysokiej impedancji 'W', -- słaby stan nieznany (odczyt) 'L', -- słabe 0 (odczyt z R do masy) 'H', -- słabe 1 (odczyt Ucc przez R) '-'); -- stan dowolny (don't care) "metalogiczne" wartości 'U','X','W','-' służą do opisu modelu podczas symulacji, a nie realnego układu gdy przewód jest sterowany różnymi wartościami to wynik nie jest określony (unresolved) PUE-w3 8

Funkcja rozdzielcza resolved i typ std_logic funkcja resolved posługuje się poniższą tablicą "rozstrzygajacą": constant resolution_table : stdlogic_table := ( -- U X 0 1 Z W L H - ---------------------------------------------------- ( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U'),-- U ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'),-- X ( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X'),-- 0 ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X'),-- 1 ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X'),-- Z ( 'U', 'X', '0', '1', 'W', 'W', 'W', 'w', 'X'),-- W ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X'),-- L ( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X'),-- H ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'),-- - ); PUE-w3 9

Typy danych: skalarne, złożone, wektorowo-skalarne Są to indeksowane zbiory elementów jednego typu (array) lub różnych typów (record) type slowo16 is array(0 to 15) of bit; type memory16 is array(natural range <>) of slowo16; -- typ o nieokreslonej pojemnosci (range <>); -- zmienne tego typu musza ukonkretnic pojemnosc: variable mem : memory16(0 to 2**n-1); typy predefiniowane: string, bit_vector signal a : bit_vector(0 to 3); -- nie zalecane signal b : bit_vector(3 downto 0); -- zalecane PUE-w3 10

Typy danych: skalarne, złożone, wektorowo-skalarne Aby umożliwić operacje arytmetyczne na wektorach o elementach typu bit lub std_logic zdefiniowano typy signed oraz unsigned: type signed is array (natural range <>) of std_logic; --... use ieee.numeric_std.all; -- klauzula odn. do pakietu --... variable s : unsigned(7 downto 0); -- s moze miec wartosci od 255 do 0 PUE-w3 11

Atrybuty typów i obiektów atrybut związany jest z typem lub obiektem przez apostrof ' 'event zwraca true gdy zmienił się związany sygnał 'right, 'left, 'high, 'low zwr. granice typu type zakres is range 15 downto -5; variable P : integer := zakres'left; --P:=15 variable R : integer := zakres'right; --R:=-5 variable S : integer := zakres'high; --S:=15 variable T : integer := zakres'low; --T:=-5 PUE-w3 12

Pakiety i biblioteki (1) Obiekty, podprogramy i modele do wielokrotnego wykorzystywania umieszcza się w zbiorach zwanych pakietami (package). Są pakiety standardowe (ujęte w normach IEEE) i tworzone indywidualnie package moj_pakiet is -- deklaracje stalych, typow, funkcji end moj_pakiet package body moj_pakiet is -- cialo pakietu end moj_pakiet Skompilowane pakiety i projekty są umieszczane w zbiorach zwanych bibliotekami (library). Biblioteki std, work są domyślnie dostępne w każdym projekcie, korzystanie z innych wymaga klauzuli: PUE-w3 13

Pakiety i biblioteki (2) library nazwa_biblioteki; use nazwa_biblioteki.nazwa_pakietu.nazwa_elementu; -- lub: use nazwa_biblioteki.nazwa_pakietu.all; -- aby uzyc wielowartosciowych typow std_logic -- nalezy na poczatku projektu dopisac: library ieee; use ieee.std_logic_1164.all; PUE-w3 14

Instrukcje współbieżne Instrukcje współbieżne w VHDL to: przypisanie do sygnału (<=) instrukcja procesu process instrukcja łączenia komponentów port map instrukcja powielania generate instrukcja blokowa block instrukcja współbieżnego wykonania procedury Instrukcje współbieżne są wykonywane równocześnie (nie ma znaczenia kolejność ich wypisania); odwzorowują działanie układów cyfrowych o strukturze równoległej PUE-w3 15

Przypisanie warunkowe współbieżne when-else entity mux2_1 is port( a,b,s : in std_logic; y : out std_logic); end entity mux2_1; a b s mux2_1 y architecture a1 of mux2_1 is y <= a when s = '0' else b; end architecture a1; architecture a2 of mux2_1 is y <= a when s = '0' else b when s = '1' else 'X'; end architecture a2; PUE-w3 16

Przypisanie współbieżne selektywne: with-select entity mux8_4_1 is port (a,b,c,d : in std_logic_vector(7 downto 0); adr : in std_logic_vector(1 downto 0); y : in std_logic_vector(7 downto 0)); end entity mux8_4_1; architecture a1 of mux8_4_1 is begin with adr select y <= a when "00", b when "01", c when "10", d when "11", "XXXXXXXX" when others; end architecture a1; PUE-w3 17

Instrukcje sekwencyjne odwzorowują działanie sekwencyjnych układów cyfrowych stosuje się do opisu procesów oraz procedur i funkcji Lista instrukcji sekwencyjnych: przypisanie do zmiennej (:=) instrukcja warunkowa if-then-else, instrukcja wyboru case, instrukcja czekania wait instrukcja pętli loop, (oraz exit, next) instrukcja pusta null, instrukcja testowa assert PUE-w3 18

Instrukcja czekania na zdarzenie: wait on entity ffd is D port (D,C,R : in bit; Q : out bit); C end entity ffd; architecture a2 of ffd is begin process -- nie ma listy wrazliwosci! begin wait on (R,C); --czekaj na zmiane R,C if R = '1' then Q <= '0'; elsif (C'event and C='1') then Q <=D; end if; end process; end architecture a2; R Q PUE-w3 19

Instrukcja czekania wait for wait for 25 ns ; -- czekaj przez 25ns wait on a for 250 ns ; -- czekaj na zmiane a przez 250 ns wait on b = '0' for 150 ns; -- czekaj na spełnienie war. B = '0' przez 150 ns wait on a until d = '1' for 66 ns; -- czekaj na a dopóki nie spełni się warunek -- d = '1', przez 66 ns Proces bez listy wrażliwości wykonuje się od początku (begin) do instrukcji wait, zatrzymuje do spełnienia warunku, po czym wykonuje do end process a następnie rozpoczyna od nowa. PUE-w3 20

Instrukcja warunkowa (sekwencyjna): if-then-else entity fft is port (T,C,R : in bit; Q out bit); T Q end entity fft; C R architecture a1 of fft is begin process (C,R); -- lista wrazliwosci variable tq; -- zmienna lokalna begin -- poczatek procesu if R = '1' then tq := '0'; -- zerowanie elsif C'event and C = '1' and T = '1' then tq := not tq; -- zmiana stanu Q <= tq; -- przypisanie do sygn. wyj. end process; end architecture a1; ( w procesie nie można stosować when - else!) PUE-w3 21

Instrukcja pętli: loop -- petla wykonujaca sie okreslona ilosc razy: petla1: for i in 0 to A'length -1 loop B(i) <= not A(i); end loop petla1; -- wykonanie zalezne od warunku (flaga) process begin while flaga loop zegar <= not zegar; -- zegar dziala wait for okres_zegara/2; -- typ time end loop; end process; PUE-w3 22

Instrukcje sekwencyjne: exit, next, null, assert exit [etykieta_petli] [when warunek]; if warunek then exit; end if; -- wyjscie z petli next [etykieta_petli][when warunek]; -- przejscie do nastepnej iteracji w petli null; -- nie wykonuje sie zadne dzialanie -- poza przejsciem do nastepnej instrukcji -- do sprawdzania poprawnosci i alarmowania assert (t_setup < 2 ns) report "Za krotki czas ustalania!" severity Warning; --lub: Failure, Error, Note PUE-w3 23