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



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

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

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

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

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

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

PRZEMYSŁAW SOŁTAN

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

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

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

Projektowanie hierarchiczne Mariusz Rawski

Projektowanie automatów z użyciem VHDL

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

Projektowanie w VHDL

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

Języki opisu sprzętu VHDL Mariusz Rawski

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

Systemy Czasu Rzeczywistego FPGA

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

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

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

Sposoby projektowania systemów w cyfrowych

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

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.

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

Projekt prostego procesora

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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

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

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

Krótkie wprowadzenie do ModelSim i Quartus2

Systemy Czasu Rzeczywistego FPGA

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

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Systemy Czasu Rzeczywistego FPGA

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

Specyfika projektowania Mariusz Rawski

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

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

Realizacja logiki kombinacyjnej Mariusz Rawski

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

Elementy języka VHDL

Programowalne układy logiczne

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

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

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.

PUCY Kolos 2: Reloaded

Instrukcje sekwencyjne

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

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

Układy FPGA w przykładach, część 2

Język VHDL podstawy Mariusz Rawski

Projektowanie Urządzeń Cyfrowych

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

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

1. ELEMENTY JĘZYKA PL/SQL

Zmiany techniczne wprowadzone w wersji Comarch ERP Altum

Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie. Technika Cyfrowa. Wprowadzenie do laboratorium komputerowego część II

Synteza strukturalna

Programowalne układy logiczne

Projektowanie hierarchiczne Mariusz Rawski

Bloki anonimowe w PL/SQL

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Ćwiczenia 2 IBM DB2 Data Studio

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

Układy Cyfrowe laboratorium

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

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

Quartus. Rafał Walkowiak IIn PP Wer

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

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Języki Opisu Sprzętu. Studium Zaoczne III rok kierunek Elektronika. Język VHDL cz.3

Systemy wbudowane. Poziomy abstrakcji projektowania systemów HW/SW. Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji

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

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

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

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

Quartus. Rafał Walkowiak IIn PP Listopad 2017

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

Projektowanie Scalonych Systemów Wbudowanych VERILOG

PODSTAWY BAZ DANYCH 13. PL/SQL

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

MMfpga01. MMfpga11. Instrukcja konfiguracji środowiska, przykładowy projekt oraz programowanie układu

SPIS TREŚCI. 2. Arytmetyka rozproszona Symulacja układu programowalnego Realizacja algorytmu cyfrowego filtrowania

OpenPoland.net API Documentation

Układy mnoŝące H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

Synteza strukturalna Mariusz Rawski

Inżynieria Układów Programowalnych

Październik Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

15. Funkcje i procedury składowane PL/SQL

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH

LCD (Liquid Crystal Display)

Transkrypt:

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe Zaawansowany VHDL Rajda & Kasperek 2014 Katedra Elektroniki AGH 1 Program wykładu Opis strukturalny map, generate Pojęcia leksykalne obiekty: sygnały, zmienne, stałe, parametry Instrukcje sekwencyjne process, wait, if, case, loop, next, exit, assert, function, procedure Instrukcje współbieżne przypisania: bezwarunkowe, warunkowe i decyzyjne, podprogramy, block Rajda & Kasperek 2014 Katedra Elektroniki AGH 2

Opis strukturalny Instrukcja generate Składnia: [etykieta:] {[for instrukcja if warunek]} generate {instrukcje_współbieżne} end generate; U0 U1 U2 U3 X0 D Q X1 D Q X2 D Q X3 D Q X4 CLK CLK CLK CLK Przykład: gen1: for i in 0 to 3 generate U: DFF port map (X(i), clk, X(i+1)); end generate; Rajda & Kasperek 2014 Katedra Elektroniki AGH 3 Opis strukturalny Instrukcja generate U0 U1 U2 U3 SIN D Q X1 D Q X2 D Q X3 D Q SOUT CLK CLK CLK CLK for i in 0 to 3 generate if (i=0) generate UA: DFF port map (SIN, CLK, X(i+1)); end generate; if ((i>0) and (i<3)) generate UB: DFF port map (X(i), CLK, X(i+1)); end generate; if (i=3) generate UC: DFF port map (X(i), CLK, SOUT); end generate; end generate; Rajda & Kasperek 2014 Katedra Elektroniki AGH 4

Opis strukturalny Instrukcja generate gen_code_label: for index in 0 to 7 generate BUFR_inst : BUFR generic map ( BUFR_DIVIDE => "BYPASS") port map ( O => clk_o(index), CE => ce, CLR => clear, I => clk_i(index) ); end generate; The example shows a generate for loop that generates 8 regional clock buffers (BUFR) using the same chip enable (CE) and clear (CLR) signals but with their own clock input and output signals. The separate clock input and output signals are referenced to different bits of a signal vector using the variable called index. http://www.fpgadeveloper. com/2011/07/codetemplates-generate-forloop.html 5 Pojęcia leksykalne Deklaracje stałych Deklaracje stałych skalarnych: constant name: type := expression; tablicowych: constant name: array_type [(index)] := expression; np: constant Vcc: real := 5.0; constant Cycle: time := 50 ns; constant five: bit_vector := 0101 ; constant SIX: std_logic_vector (8 to 11):= 0110 ; constant H_clk_per : TIME := 10ns; constant T_CSRS: TIME := H_clk_per/2-3ns; Rajda & Kasperek 2014 Katedra Elektroniki AGH 6

Pojęcia leksykalne Deklaracje parametrów Deklaracje parametrów generic (generic_interface_list); generic ( name: type := expression); Deklaruje statyczną wartość podobnie jak stała, ale wartość ta może być zmieniana z zewnątrz. Może być deklarowany w: entities (dostępny we wszystkich architekturach z nią skojarzonych), blokach i komponentach. Wykorzystywany do parametryzacji modelów (szerokość magistral, czasy opóźnień itp.) np: entity CPU is generic (BusWidth : integer := 16) port ( DataIn : in bit_vector(buswidth-1 downto 0); DataOut : out bit_vector(buswidth-1 downto 0);... Rajda & Kasperek 2014 Katedra Elektroniki AGH 7 Przykład deklaracji generic funkcja lpm_ff z biblioteki Altery ENTITY reggen IS GENERIC( REG_WIDTH : INTEGER); PORT( d : IN STD_LOGIC_VECTOR(REG_WIDTH - 1 DOWNTO 0); clk : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(REG_WIDTH - 1 DOWNTO 0)); END reggen; ARCHITECTURE a OF reggen IS BEGIN PROCESS (clk) BEGIN q <= d; END PROCESS; END a; 8

Przykład deklaracji generic wykorzystanie inicjalizacja przez VHDL PACKAGE reg24gen_package IS CONSTANT TOP_WIDTH : INTEGER := 24; CONSTANT HALF_WIDTH : INTEGER := TOP_WIDTH / 2; END reg24gen_package; USE work.reg24gen_package.all; -- package definition -- component instantiation ENTITY reg24gen IS PORT( d : IN STD_LOGIC_VECTOR(23 DOWNTO 0); clk : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(23 DOWNTO 0)); END reg24gen; ARCHITECTURE a OF reg24gen IS COMPONENT reggen -- recall from package GENERIC( REG_WIDTH : INTEGER); PORT( d : IN STD_LOGIC_VECTOR(REG_WIDTH - 1 DOWNTO 0); clk : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(REG_WIDTH - 1 DOWNTO 0)); END COMPONENT; BEGIN reg12a : reggen GENERIC MAP (REG_WIDTH => HALF_WIDTH) -- upload generic data PORT MAP (d => d(half_width - 1 DOWNTO 0), clk => clk, q => q(half_width - 1 DOWNTO 0));... 9 Przykład deklaracji generic moduł PLL_BASE z biblioteki Xilinx Spartan6 ----- CELL PLL_BASE ----- library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_SIGNED.all; use IEEE.STD_LOGIC_ARITH.all; library SPARTAN6; use SPARTAN6.vpkg.all; use SPARTAN6.VCOMPONENTS.all; entity PLL_BASE is generic ( BANDWIDTH : string := "OPTIMIZED"; CLKFBOUT_MULT : integer := 1; CLKFBOUT_PHASE : real := 0.0; CLKIN_PERIOD : real := 0.000; CLKOUT0_DIVIDE : integer := 1; CLKOUT0_DUTY_CYCLE : real := 0.5; CLKOUT0_PHASE : real := 0.0; CLKOUT1_DIVIDE : integer := 1; CLKOUT5_DUTY_CYCLE : real := 0.5; CLKOUT5_PHASE : real := 0.0; -- and many more parameters... 10

Moduł PLL_BASE z biblioteki Xilinx Spartan6 inicjalizacja w środowisku AHDL BDE 11 Instrukcje sekwencyjne process (współbieżna!) instrukcje przypisania wait if case null loop next exit assert podprogramy Rajda & Kasperek 2014 Katedra Elektroniki AGH 12

Instrukcje sekwencyjne Instrukcja loop Przydatna do multiplikacji logiki i w modelowaniu behawioralnym. Składnia: [etykieta:] [while warunek for index in vala to valz] loop instrukcje sekwencyjne; end loop; Przykłady: L: for i in 1 to 10 loop instrukcje sekwencyjne; end loop; M: while i < 11 loop instrukcje sekwencyjne; i := i + 1; end loop; Rajda & Kasperek 2014 Katedra Elektroniki AGH 13 Instrukcje sekwencyjne Instrukcja loop Przykład: powielanie logiki entity multi_and is port (a: in bit_vector (0 to 3); m: out bit_vector (0 to 3)); end multi_and; architecture example of multi_and is process (a) variable b: bit; b := '1'; for i in 0 to 3 loop b := a(3-i) and b; m(i) <= b; end loop; end process; end example; Rajda & Kasperek 2014 Katedra Elektroniki AGH 14

Instrukcje sekwencyjne Instrukcja next Składnia: next [etykieta] [when warunek]; Przykłady: for i in 0 to max_limit loop if a(i) = 0 then next; end if; g(i) := a(i); end loop; Natychmiastowe przejście do kolejnej iteracji L1: while i < 5 loop L2: while j < 5 loop... next L2 when i=j;... end loop L2; end loop L1; Rajda & Kasperek 2014 Katedra Elektroniki AGH 15 Instrukcje sekwencyjne Instrukcja exit Składnia: exit [etykieta] [when warunek]; Przykład: for i in 0 to max_limit loop if a(i) = 0 then exit; end if; g(i) := a(i); end loop;... Natychmiastowe opuszczenie pętli Rajda & Kasperek 2014 Katedra Elektroniki AGH 16

Instrukcje sekwencyjne Instrukcja assert Drukuje na konsoli komunikat podczas symulacji. Składnia: assert warunek [report string] [severity level]; level: FAILURE ERROR WARNING NOTE Przykład: assert (Machine_Code = "0000") report "Illegal Opcode" severity FAILURE; W VHDL 92 umożliwiono używanie report bez assert. report Well done - simulation finished " Instrukcja assert może występować w deklaracji entity (ponieważ jest bierna nie ma przypisania). Rajda & Kasperek 2014 Katedra Elektroniki AGH 17 Instrukcja assert *AHDL help When an assertion violation occurs, the report is issued and displayed on the screen. The supported severity level supplies an information to the simulator. The severity level defines the degree to which the violation of the assertion affects operation of the process: NOTE can be used to pass information messages from simulation (default) WARNING can be used in unusual situation in which the simulation can be continued, but the results may be unpredictable; ERROR can be used when assertion violation makes continuation of the simulation not feasible FAILURE can be used when the assertion violation is a fatal error and the simulation must be stopped at once. Summary The message is displayed when the condition is NOT met, therefore the message should be an opposite to the condition. Concurrent assertion statement is a passive process and as such can be specified in an entity. Concurrent assertion statement monitors specified condition continuously. Synthesis tools generally ignore assertion statements. 18

Instrukcja assert przykład CHECK_SETUP: process (CLK) if (CLK'event and CLK = '1') then Q <= D; assert D'stable(SETUP_TIME) --ignored by synthesis report "Setup Violation..." severity warning; end if; end process CHECK_SETUP; -- assert packet_length /= 0 report "empty network packet received" severity warning; -- assert clock_pulse_width >= min_clock_width severity error; 19 Assertion based verification 20

Assertion based verification Aldec webinar 21 Assertion based verification Aldec webinar 22

Instrukcje sekwencyjne Podprogramy instrukcja function Funkcje zwracają jedną wartość. W momencie wywołania funkcji parametry formalne przekazują bieżące wartości. Składnia: function nazwa [(parametr: typ;...)] return typ is deklaracje instrukcje sekwencyjne; end [nazwa ]; Przykład: (z biblioteki std_logic_1164, sprawdza czy wartość jest unknown) function Is_X (s : STD_ULOGIC) return BOOLEAN is case s is when 'U' 'X' 'Z' 'W' '-' => return true; when others => null; end case; return false; end function Is_X; Rajda & Kasperek 2014 Katedra Elektroniki AGH 23 Instrukcje sekwencyjne Podprogramy instrukcja procedure Procedury mogą zwracać więcej niż jedną wartość - formalnie to procedura nie zwraca wartości to się odbywa za pomocą formalnych parametrów, które zastępują bieżące wartości po wykonaniu procedury. Składnia: procedure nazwa [(parametr;...)] is deklaracje instrukcje sekwencyjne; end [nazwa ] parametry: {[variable] nazwy: [in out inout] typ [:=wyrażenie]; [signal] nazwy: [in out inout] typ;} Przekazanie parametrów do procedury : in inout Przekazanie parametrów z procedury : out inout Rajda & Kasperek 2014 Katedra Elektroniki AGH 24

Instrukcje sekwencyjne Podprogramy instrukcja procedure Przykład: procedure vect_to_int (z: in bit_vector (1 to 8); zero_flag: out boolean; q: inout integer) is q := 0; zero_flag := true; for i in 1 to 8 loop q := q * 2; if z(i) = '1' then q := q + 1; zero_flag := false; end if; end loop; return; end vect_to_int; Wywołanie: vect_to_int (s,t,u); Rajda & Kasperek 2014 Katedra Elektroniki AGH 25 Instrukcje sekwencyjne Podprogramy instrukcja procedure procedure read_cycle ( address: in STD_LOGIC_VECTOR(15 downto 0); -- input parameter signal addr: out STD_LOGIC_VECTOR(15 downto 0); -- DSP addres bus signal data: in STD_LOGIC_VECTOR(15 downto 0); -- DSP data data_read: out STD_LOGIC_VECTOR(15 downto 0); -- reading result signal rd: out STD_LOGIC; -- DSP signal signal ms3: out STD_LOGIC -- DSP signal) is constant T_CSRS: TIME := H_clk_per/2-3ns; constant T_ARS: TIME := H_clk_per/2-3ns; constant T_RW: TIME := H_clk_per - 2ns + (wait_states*h_clk_per); constant T_RSA: TIME := H_clk_per/2-2ns; ms3 <= '0'; addr <= address; wait for T_ARS; rd <= '0'; wait for T_RW; rd <= '1'; data_read := data; wait for T_RSA; addr <= (others => 'Z'); ms3 <= '1'; end procedure read_cycle; Rajda & Kasperek 2014 Katedra Elektroniki AGH 26

Podprogramy instrukcje procedure/function Podprogramy są wykorzystywane głównie w weryfikacji (testbench). Jest bardzo dużo różnych ciekawych funkcji w bibliotekach.. 27 Instrukcje współbieżne przypisania wartości sygnałom bezwarunkowe (unconditional) warunkowe (conditonal) decyzyjne (selected) podprogramy block Rajda & Kasperek 2014 Katedra Elektroniki AGH 28

Instrukcje współbieżne Współbieżne wywołanie podprogramu W obydwu poniższych przykładach skutek jest ten sam: architecture concurrent of SUB_CALL is vect_to_int (bitstuff, flag, number); end concurrent ; architecture sequential of SUB_CALL is process (bitstuff, number) vect_to_int (bitstuff, flag, number); end process; end sequential ; Rajda & Kasperek 2014 Katedra Elektroniki AGH 29 Instrukcje współbieżne Instrukcja block Grupuje instrukcje współbieżne. Bloki można zagnieżdżać, tworząc hierarchię. Składnia: [etykieta:] block [(wyrażenie_typu_boolean)] [is]; [deklaracje] instrukcje współbieżne; end block [etykieta]; deklaracje: stałych, typów, sygnałów podprogramów klauzula use komponentów Rajda & Kasperek 2014 Katedra Elektroniki AGH 30

Instrukcje współbieżne Instrukcja block Wyrażenie_typu_boolean automatycznie generuje sygnał guard, który może warunkować przypisania wartości sygnałom przez klauzulę guarded. Przykład: B1: block (control) s <= guarded '1'; end block B1; Przypisanie s <= '1' zajdzie, jeżeli control jest równe true. Uwaga!!! Nie wszystkie narzędzia dopuszczają korzystanie z tej opcji. Rajda & Kasperek 2014 Katedra Elektroniki AGH 31 Ciąg dalszy nastąpi Rajda & Kasperek 2014 Katedra Elektroniki AGH 32