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

Podobne dokumenty
Projektowanie w VHDL

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

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

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

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

Języki opisu sprzętu VHDL Mariusz Rawski

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

Projektowanie automatów z użyciem VHDL

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

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

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

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

Projektowanie hierarchiczne Mariusz Rawski

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

PUCY Kolos 2: Reloaded

Synteza strukturalna

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

Specyfika projektowania Mariusz Rawski

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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

Instrukcje sekwencyjne

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

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

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

Programowalne układy logiczne

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

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Język VHDL podstawy Mariusz Rawski

Sposoby projektowania systemów w cyfrowych

Projekt prostego procesora

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Krótkie wprowadzenie do ModelSim i Quartus2

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Projektowanie Urządzeń Cyfrowych

Elementy języka VHDL

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

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

Programowalne układy logiczne

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

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.

Realizacja logiki kombinacyjnej Mariusz Rawski

Systemy Czasu Rzeczywistego FPGA

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

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

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

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

Architektura systemów komputerowych. Ścieżka danych

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

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.

Inżynieria Układów Programowalnych

PRZEMYSŁAW SOŁTAN

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

Cyfrowe układy scalone c.d. funkcje

Projektowanie hierarchiczne Mariusz Rawski

Układy Cyfrowe laboratorium

Architektura komputerów Wykład 2

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Metoda Newtona przyjmuje następujące założenia dla funkcji :

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

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

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

Bloki anonimowe w PL/SQL

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska,

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

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

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

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

CZ1. Optymalizacja funkcji przełączających

Programowalne układy logiczne

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

Technika Cyfrowa. Wprowadzenie do laboratorium komputerowego część II

Tranzystor JFET i MOSFET zas. działania

UKŁADY CYFROWE. Układ kombinacyjny

Sterowniki Programowalne (SP)

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

Systemy Czasu Rzeczywistego FPGA

PROJEKTOWANIE UKŁADÓW CYFROWYCH Z WYKORZYSTANIEM PAKIETU MULTISIM 2001 ORAZ JĘZYKA OPISU SPRZĘTU VHDL

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

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016

Podstawy elektroniki cz. 2 Wykład 2

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Przykład realizacji ćwiczenia nr 8.

Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Programowanie Układów Logicznych kod kursu: ETD6203. Komunikacja z układami cyfrowymi W dr inż. Daniel Kopiec

Funkcje logiczne X = A B AND. K.M.Gawrylczyk /55

PODSTAWY BAZ DANYCH 13. PL/SQL

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

ELECTRIC IMPULSE DURATION MEASUREMENT USING VHDL LANGUAGE

Projektowanie układów kryptograficznych Mariusz Rawski

Programowanie mikrokontrolerów - laboratorium

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL

Układy kombinacyjne - przypomnienie

Transkrypt:

Modelowanie złożonych układów cyfrowych () funkcje i procedury przykłady (przerzutniki, rejestry) style programowania kombinacyjne bloki funkcjonalne bufory trójstanowe multipleksery kodery priorytetowe PUEw4

Funkcje i procedury (podprogramy) funkcja zwraca pojedynczą wartość, procedura może więcej VHDL traktuje funkcję jak wyrażenie a procedurę jak instrukcję można w nich stosować wyłącznie instrukcje sekwencyjne dozwolone są jedynie zmienne lokalne a nie sygnały wewnętrzne, zmienne lokalne w podprogramach nie mogą być wykorzystane do "pamiętania" stanów (inaczej niż w procesach) argumentami funkcji mogą być stałe i sygnały wynik funkcji to wartość wyrażenia za instrukcją return w obrębie funkcji nie można stosować instrukcji wait PUEw4 2

Funkcje i procedury (podprogramy) przyklad funkcja porownujaca 3 bity function komp3(a,b,c : std_logic) return boolean is if((a xor b) nor (a xor c)) = '' then return true ; else return false; end if; end function komp3; PUEw4 3

Funkcje i procedury (podprogramy) p2. konwersja wektora std_logic na liczbe function vec_int(a : std_logic_vector) return integer is variable p : integer; p := ; for i in a'range loop p := p * 2; case a(i) is when '' 'H'; => p := p +; when others => null; end case; end loop; return p; end function vec_int; L(B)=((..((b3*2+b2)*2+b)*2+b PUEw4 4

Funkcje i procedury (podprogramy) niektore funkcje zdefiniowane w pakiecie standardowym std_logic_64 function rising_edge( signal s : std_ulogic) return boolean; function falling_edge( signal s : std_ulogic) return boolean; zamiast pisac: if zegar'event and (zegar = '') then... wystarczy: if rising_edge(zegar) then... PUEw4 5

Funkcje i procedury (podprogramy) funkcja NAND o dowolnej liczbie argumentow function fnand(signal a: std_logic_vector) return std_logic is variable p : std_logic; p := ''; for i in a'range loop p := p and a(i); end loop; return not p; end fnand; funkcje mozna wywolac tylko w procesie, np....process... if fnand(s) = '' then...;... end process; PUEw4 6

Funkcje i procedury (podprogramy) P = '' gdy liczba jedynek w A jest parzysta procedure test_par( signal A : in std_logic_vector; signal P,N : out std_logic) is variable t : std_logic; t := '' ; for i in A'range loop t := t xor A(i); end loop; P <= t; N <= not t; end test_par; procedura moze byc wywolana w ciele architektury jako wspolbiezna, wykonywana gdy zmienia sie A; jako sekwencyjna w procesie PUEw4 7

Procedura (JK z asynchronicznym zerow.i ustaw.) procedure FFJK( signal C,J,K,R,S : in std_logic; signal Q : inout std_logic; signal QN: out std_logic) is variable JK : std_logic_vector( to ); variable re : boolean; JK := J & K; re := rising_edge(c); if R = '' then Q <= ''; elsif S = '' then Q <= ''; elsif re then case JK is when "" => Q <= ''; when "" => Q <= ''; when "" => Q := not Q; when others => null; end case; end if; QN <= not Q; end FFJK; PUEw4 8

Procedura (JK z asynchronicznym zerow.i ustaw.) procedure FFJK2( signal C,J,K,R,S : in std_logic; signal Q : inout std_logic; signal QN: out std_logic) is variable re : boolean; re := rising_edge(c); if R = '' then Q <= ''; elsif S = '' then Q <= ''; elsif re then Q <= (J and not Q) or (not K and Q); end if; QN <= not Q; end FFJK2; przykladowe wywolania: FFJK(zegar,a,b,reset,set,Q4,Q4not); FFJK2(C=>zegar,J=>a,K=>b,R=>reset,S=>set,Q=>Q4, QN=>Q4not); PUEw4 9

Rejestr równoległy (n przerzutników D) procedure reg( signal C,R : in std_logic; signal D : in std_logic_vector; signal Q : out std_logic_vector ) is if R = '' then Q <= (Q'range => ''); zerowanie wektora o dowolnej dlugosci elsif rising_edge(c) then Q <= D; end if; end procedure reg; PUEw4

Trzy style opisu architektury w VHDL styl przepływowy, z użyciem instrukcji współbieżnych, (na poziomie RTL: register transfer logic) styl behawioralny z użyciem instrukcji procesu styl strukturalny, z wcześniejszym zdefiniowaniem komponentów następnie zestawianych z użyciem listy połączeń PUEw4

Bufor trójstanowy library ieee; use ieee.std_logic_64.all; entity buf3s is port(a, en : in std_logic; z : out std_logic); en a buf3s z end entity buf3s; architecture when_else of three_state is z <= a when en = '' else 'Z'; end architecture when_else; EN PUEw4 2

Multiplekser 2 na entity mux2_ is port( a,b,s : in std_logic; y : out std_logic); end entity mux2_; architecture a of mux2_ is y <= a when s = '' else b; end architecture a; s a b G y architecture a2 of mux2_ is y <= a when s = '' else b when s = '' else 'X'; end architecture a2; PUEw4 3

Koder priorytetowy 4 na 2 Wejścia Wyjścia A 4 koder4_2 2 y valid A3 A2 A A y y2 Valid library ieee; use ieee.std_logic_64.all; entity koder4_2 is port (a: in std_ulogic_vector(3 downto ); y: out std_ulogic_vector( downto ); valid: out std_ulogic); end entity koder4_2; PUEw4 4

Koder priorytetowy 4 na 2 (2) architecture DontCare of koder4_2 is Wejścia with a select A3 A2 A A y y <="" when "", "" when "", "" when "", "" when "", "" when others; valid <= '' when a()='' or a()='' or a(2)='' or a(3)='' else ''; end architecture DontCare; Wyjścia y2 Valid!to nie jest opis realnego ukladu, ze wzgl. na PUEw4 5

Koder priorytetowy 4 na 2 (3) architecture Ordered of koder4_2 is Wejścia A3 A2 A A y <="" when a(3)='' else "" when a(2)='' else "" when a()='' else "" when a()='' else "" ; valid <= '' when a()='' or a()='' or a(2)='' or a(3)='' else ''; end architecture Ordered; y Wyjścia y2 Val PUEw4 6

Koder priorytetowy 4 na 2 (4) library ieee; use ieee.numeric_std.all; architecture Match of koder4_2 is y <="" when std_match(a,"") else "" when std_match(a,"") else "" when std_match(a,"") else "" when std_match(a,"") else "" ; valid <= '' when a()='' or a()='' or a(2)='' or a(3)='' else ''; end architecture Match; funkcja std_match traktuje wartości nieistotne jak rzeczywiście nieistotne warunki wady: pokrywajace sie instukcje przypisania A3 Wejścia A2 A A y Wyjścia y2 Val PUEw4 7

Koder priorytetowy 4 na 2 (5) architecture Sequential of koder4_2 is proces(a) is if a(3)='' then y <= ""; valid <= ''; elsif a(2)='' then y <= ""; valid <= ''; elsif a()='' then y <= ""; valid <= ''; elsif a()='' then y <= ""; valid <= ''; else y <= ""; valid <= ''; end if; end process; end architecture Sequential; styl sekwencyjny dla ukladu kombinacyjnego! zasada: jesli przypisanie do y w jednej sciezce procesu, to rowniez w kazdej innej; w przeciwnym razie kompilator wstawi przerzutnik (zatrzask) A3 Wejścia A2 A A y Wyjścia y2 Val PUEw4 8

Koder priorytetowy 4 na 2 (6) architecture Sequential2 of koder4_2 is proces(a) is valid <= ''; if a(3)='' then y <= ""; elsif a(2)='' then y <= ""; elsif a()='' then y <= ""; elsif a()='' then y <= ""; else y <= ""; valid <= ''; end if; end process; end architecture Sequential2; przy instrukcjach wspolbieznych byly by 2 sterowniki dla tego samego sygnalu valid w procesie sekwencyjnym nie ma konfliktu A3 Wejścia A2 PUEw4 9 A A y Wyjścia y2 Val

Układ cyfrowy złożony z bramek i rejestru () entity kompleks is port (C,RA,RS : in std_logic; D: in std_logic_vector(4 downto ); Q: out std_logic_vector(3 downto ); end entity kompleks; PUEw4 2

Układ cyfrowy złożony z bramek i rejestru () architecture ar of kompleks is p: process if RA = '' then Q() <= ''; else wait until rising_edge(c); Q() <= D() xor D(); end if; end process p; p: process(c,ra) if RA = '' then Q() <= ''; elsif rising_edge(c) then Q()<= D(2) and not D(3); end if; end process p;... PUEw4 2

Układ cyfrowy złożony z bramek i rejestru () p2: process wait until rising_edge(c); Q(2) <= not D() or not D(4) or not RS; end process p2; p3: process(c) if rising_edge(c) then if RS='' then Q(3)<= ''; else Q(3) <= D(2) and D(4); end if; end if; end process p3; end architecture ar; PUEw4 22