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

Podobne dokumenty
Układy Cyfrowe laboratorium

Projektowanie hierarchiczne Mariusz Rawski

Synteza strukturalna

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

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

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

Projekt prostego procesora

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

Specyfika projektowania Mariusz Rawski

Projektowanie automatów z użyciem VHDL

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

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

Projektowanie w VHDL

PUCY Kolos 2: Reloaded

Projektowanie hierarchiczne Mariusz Rawski

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

Synteza strukturalna Mariusz Rawski

Krótkie wprowadzenie do ModelSim i Quartus2

Systemy Czasu Rzeczywistego FPGA

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

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

Sposoby projektowania systemów w cyfrowych

Systemy Czasu Rzeczywistego FPGA

Cyfrowe przetwarzanie sygnałów Mariusz Rawski

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

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

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

Instrukcje sekwencyjne

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

Systemy Czasu Rzeczywistego FPGA

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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ęść 2)

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

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

Programowalne układy logiczne

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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

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

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

Quartus. Rafał Walkowiak IIn PP Wer

Projektowanie Urządzeń Cyfrowych

Elementy języka VHDL

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

Języki opisu sprzętu VHDL Mariusz Rawski

Programowalne układy logiczne

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

Projektowanie układów kryptograficznych Mariusz Rawski

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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

1. Synteza układów opisanych w języku VHDL Xilinx ISE Design Suite 10.1 VHDL 2. Obsługa przetwornika CA Project Add source...

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Realizacja logiki kombinacyjnej Mariusz Rawski

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

Quartus. Rafał Walkowiak IIn PP Listopad 2017

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. Automaty stanów

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

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Programowalne układy logiczne

Inżynieria Układów Programowalnych

Język VERILOG w praktyce

Układy kryptograficzne z uŝyciem rejestrów LFSR

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

Systemy Czasu Rzeczywistego FPGA

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

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

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

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

WYTYCZNE I ZALECENIA DO PRZYGOTOWANIA PRAC DYPLOMOWYCH INSTYTUTU INFORMATYKI I AUTOMATYKI KIERUNKU INFORMATYKA

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

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

(przykład uogólniony)

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.

Układy cyfrowe w Verilog HDL. Elementy języka z przykładami. wersja: cz.3

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

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

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

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

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

Język VHDL podstawy Mariusz Rawski

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

Przykład realizacji ćwiczenia nr 8.

Architektura systemów komputerowych. Ścieżka danych

Detekcja zakleszczenia (1)

Pod o z d ia i ł a r yn y k n u k u ( 2004 r.). źródło: Gartner 3

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

PRZEMYSŁAW SOŁTAN

Szkolenia specjalistyczne

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

Realizacja własnych modułów IP Cores w srodowisku EDK

Rys. 1. Widok ramienia robota AL5A firmy Lynxmotion

Transkrypt:

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 1 Układy Cyfrowe laboratorium Przykład realizacji ćwiczenia nr 6 (wersja 2015) 1. Wstęp 1.1. Algorytm Realizacja algorytmu wyznaczania wyrazów ciągu w języku VHDL z zastosowaniem podziału projektu na moduły: FSM i Data Path. Definicja 1. Niech będzie dany ciąg: Dla i będzie to ciąg Fibonacciego. Uwaga 1. Fibonacci Leonardo z Pizy żył w latach 1170-1250. Jacques Philippe Maria Binet (1786-1856) podał wzór jawny służący do wyznaczania n-tego wyrazu ciągu: 1.2. Sekwencyjna specyfikacja algorytmu w języku CPP void fib ( int count, int x, int y ) { int first = y, second = x ; // rejestry, multipleksery while ( count--) // dekrementacja, porównanie z 0 { int tmp = first + second ; // sumator first = second ; // multipleksery second = tmp ; // multipleksery printf ( %d,, second ) ; } } Uwaga 2. Implementacja ta ma złożoność czasową. Istnieje inna, bardziej efektywna metoda wyznaczania n-tego elementu ciągu, w czasie. 1.3. Specyfikacja algorytmu w języku VHDL library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; entity fibonacci is N :integer :=16 clk, rst : in std_logic;

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 2 fibo_s : out std_logic_vector(n-1 downto 0) end fibonacci; architecture fib_arch of fibonacci is signal a :unsigned(n-1 downto 0 signal b_reg :unsigned(n-1 downto 0 signal b_next :unsigned(n-1 downto 0 signal c_reg :unsigned(n-1 downto 0 signal c_next :unsigned(n-1 downto 0 process(clk, rst) if(rst='1')then b_reg <= to_unsigned(1, N c_reg <= to_unsigned(0, N elsif(clk'event and clk='1')then c_reg <= c_next; b_reg <= b_next; process(a, b_reg, c_reg) b_next <= a; c_next <= b_reg; a <= b_reg + c_reg; fibo_s <= std_logic_vector(a end fib_arch; Symulacja Skrypt test_fibo.do restart -nowave -force add wave clk add wave rst add wave -radix unsigned fibo_s add wave -radix unsigned a add wave -radix unsigned b_reg add wave -radix unsigned c_reg add wave -radix unsigned b_next add wave -radix unsigned c_next force clk 0 0, 1 {50 ps} -r 100 force rst 1 0, 0 10 run 1000

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 3 2. Implementacja W implementacji dokładamy możliwość swobodnego zdefiniowania wartości elementów początkowych i oraz liczby wykonanych kroków. 2.1. Moduł Data Path entity dp is rst, clk : in std_logic; first, second, count : in std_logic_vector(n-1 downto 0 first_sel, second_sel : in std_logic; first_load, second_load, counter_load : in std_logic; comp_out : out std_logic; end dp; architecture dp_arch of dp is component mux is N : integer :=4 sel : in std_logic; x, y : in std_logic_vector(n-1 downto 0 component reg is rst, clk, load :in std_logic; input :in std_logic_vector(n-1 downto 0 output :out std_logic_vector(n-1 downto 0)

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 4 component add is x, y : in std_logic_vector(n-1 downto 0 component comp is x :in std_logic_vector(n-1 downto 0 output :out std_logic component counter is clk, rst :in std_logic; input :in std_logic_vector(n-1 downto 0 load :in std_logic; output :out std_logic_vector(n-1 downto 0) signal first_reg, second_reg, add_out, counter_r, first_r, second_r : std_logic_vector(n-1 downto 0 b1: mux generic map(n => N) port map(sel => first_sel, x => first, y => second_r, output => first_reg b2: mux generic map(n => N) port map(sel => second_sel, x => second, y => add_out, output => second_reg b3: reg generic map(n => N) port map(rst => rst, clk => clk, load => first_load, input => first_reg, output => first_r b4: reg generic map(n => N) port map(rst => rst, clk => clk, load => second_load, input => second_reg, output => second_r b5: add generic map(n => N) port map(x => first_r, y => second_r, output => add_out b6: counter generic map(n => N) port map(rst => rst, clk => clk, input => count, load => counter_load, output => counter_r b7: comp generic map(n => N) port map(x => counter_r, output => comp_out output <= second_r; end dp_arch; 2.2. Komponenty modułu Data Path

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 5 Multiplekser entity mux is N : integer :=4 sel : in std_logic; x, y : in std_logic_vector(n-1 downto 0 end mux; architecture mux_arch of mux is output <= x when (sel = '0') else y; end mux_arch; Rejestr entity reg is rst, clk, load : in std_logic; input : in std_logic_vector(n-1 downto 0 end reg; architecture reg_arch of reg is signal reg_reg, reg_next : std_logic_vector(n-1 downto 0 process(rst, clk) if rst = '1' then reg_reg <= (others => '0' elsif rising_edge(clk) then reg_reg <= reg_next; process(load, input, reg_reg) if load = '1' then reg_next <= input; else reg_next <= reg_reg;

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 6 output <= reg_reg; end reg_arch; Sumator use ieee.std_logic_unsigned.all; entity add is x, y : in std_logic_vector(n-1 downto 0 end add; architecture add_arch of add is output <= x + y; end add_arch; Licznik use ieee.numeric_std.all; entity counter is clk, rst :in std_logic; input :in std_logic_vector(n-1 downto 0 load :in std_logic; output :out std_logic_vector(n-1 downto 0) end counter; architecture cnt_arch of counter is signal counter_reg, counter_next : unsigned(n-1 downto 0 process(rst, clk) if rst = '1' then counter_reg <= (others => '0' elsif rising_edge(clk) then counter_reg <= counter_next;

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 7 process(load, input, counter_reg) if load = '1' then counter_next <= unsigned(input elsif counter_reg = 0 then counter_next <= counter_reg; else counter_next <= counter_reg - 1; output <= std_logic_vector(counter_reg end cnt_arch; Komparator use ieee.std_logic_unsigned.all; entity comp is x : in std_logic_vector(n-1 downto 0 output : out std_logic end comp; architecture comp_arch of comp is process(x) if x = 0 then output <= '0'; else output <= '1'; end comp_arch; 2.3. Moduł FSM use ieee.std_logic_unsigned.all; entity fsm is rst, clk : in std_logic; comp, start : in std_logic; first_sel, second_sel : out std_logic; first_load, second_load, counter_load : out std_logic;

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 8 ready : out std_logic end fsm; architecture fsm_arch of fsm is type state_type is (init, s1, s2, last signal state_reg, state_next : state_type; process(rst, clk) if rst = '1' then state_reg <= init; elsif rising_edge(clk) then state_reg <= state_next; process(state_reg, comp, start) ready <= '0'; first_sel <= '0'; second_sel <= '0'; first_load <= '0'; second_load <= '0'; counter_load <= '0'; case state_reg is when init => if start = '0' then state_next <= init; else state_next <= s1; when s1 => first_load <= '1'; second_load <= '1'; counter_load <= '1'; state_next <= s2; when s2 => first_sel <= '1'; second_sel <= '1'; first_load <= '1'; second_load <= '1'; end case; if comp = '1' then state_next <= s2; else state_next <= last; when last => ready <= '1'; state_next <= init; when others => state_next <= init;

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 9 end fsm_arch; 2.4. Integracja modułów FSM i Data Path entity fib is N : integer := 16 rst, clk, start : in std_logic; x_i, y_i, c_i : in std_logic_vector(n-1 downto 0 ready : out std_logic; d_o : out std_logic_vector(n-1 downto 0) end fib; architecture fib_arch of fib is component fsm is rst, clk : in std_logic; comp, start : in std_logic; first_sel, second_sel : out std_logic; first_load, second_load, counter_load : out std_logic; ready : out std_logic component dp is rst, clk : in std_logic; first, second, count : in std_logic_vector(n-1 downto 0 first_sel, second_sel : in std_logic; first_load, second_load, counter_load : in std_logic; comp_out : out std_logic; signal f_load, s_load, c_load, f_sel, s_sel, comp :std_logic; fsm_inst :fsm port map(rst => rst, clk => clk, comp => comp, start => start, first_sel => f_sel, second_sel => s_sel, first_load => f_load, second_load => s_load, counter_load => c_load, ready => ready dp_inst : dp generic map(n => N) port map(rst => rst, clk => clk, first => x_i, second => y_i, count => c_i, first_sel => f_sel, second_sel => s_sel,

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 10 first_load => f_load, second_load => s_load, counter_load => c_load, comp_out => comp, output => d_o end fib_arch; 3. Wyniki kompilacji i symulacji Moduł FIB Moduł Data Path Moduł FSM Realizacja automatu

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 11 Symulacja Skrypt test_fib.do restart -nowave add wave -radix unsigned * add wave /fib/fsm_inst/state_reg add wave -radix unsigned \ /fib/dp_inst/counter_r /fib/dp_inst/first_r /fib/dp_inst/second_r force clk 0 0, 1 {50 ps} -r 100 force rst 1 0 force start 0 0 force x_i 10#0 0 force y_i 10#1 0 force c_i 10#5 0 run force rst 0 0 run force start 1 0 run force start 0 0 run 800 Literatura i materiały pomocnicze:

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 12 1. Plansze do wykładu UCYF 2. Literatura podana na wykładzie, ze szczególnym uwzględnieniem rozdz. 6 książki Programowalne układy przetwarzania sygnałów i informacji 3. Dokument PDF: DE2-115 User Manual Opracowanie wewnętrzne ZCB IT, PW, grudzień 2015: P. Sapiecha, P. Tomaszewicz