PUCY Kolos 2: Reloaded

Podobne dokumenty
Projektowanie hierarchiczne Mariusz Rawski

Projektowanie automatów z użyciem VHDL

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

Specyfika projektowania Mariusz Rawski

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

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

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

Projekt prostego procesora

Synteza strukturalna

Projektowanie w VHDL

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

Projektowanie hierarchiczne Mariusz Rawski

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Systemy Czasu Rzeczywistego FPGA

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

Sposoby projektowania systemów w cyfrowych

Systemy Czasu Rzeczywistego FPGA

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

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

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

Systemy Czasu Rzeczywistego FPGA

Krótkie wprowadzenie do ModelSim i Quartus2

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

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Architektura systemów komputerowych. Ścieżka danych

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

Programowalne układy logiczne

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

Projektowanie Urządzeń Cyfrowych

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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

Układy Cyfrowe laboratorium

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

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

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

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

Instrukcje sekwencyjne

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

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

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

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

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

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

Języki opisu sprzętu VHDL Mariusz Rawski

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

CZ1. Optymalizacja funkcji przełączających

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

Programowalne układy logiczne

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

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

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

KURS Hexcalcul (2) Implementacja kalkulatora kodu BCD na Hex w układzie programowalnym

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

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

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

Język VHDL podstawy Mariusz Rawski

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

Siła (w) pamięci on-chip Implementacje pamięci w układach Cyclone IV firmy Altera

Elementy języka VHDL

DOKUMENTACJA PROJEKTU

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

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

Przykład realizacji ćwiczenia nr 8.

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

Hexcalcul (1) Implementacja kalkulatora kodu BCD na Hex w układzie programowalnym

Realizacja logiki kombinacyjnej Mariusz Rawski

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Projektowanie układów kryptograficznych Mariusz Rawski

Synteza strukturalna Mariusz Rawski

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

Cyfrowe przetwarzanie sygnałów Mariusz Rawski

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

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

Quartus. Rafał Walkowiak IIn PP Wer

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

ELECTRIC IMPULSE DURATION MEASUREMENT USING VHDL LANGUAGE

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

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

Programowalne układy logiczne

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

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

Układy reprogramowalne i SoC Implementacja w układach 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.

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

Kodery, dekodery, transkodery Synteza sprzętu przy pomocy VHDL

PRZEMYSŁAW SOŁTAN

Inżynieria Układów Programowalnych

Realizacja stopera na układzie Spartan-II przy uŝyciu pakietu Xilinx ISE

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...

RE P. Pierwsze pomysły

Quartus. Rafał Walkowiak IIn PP Listopad 2017

Transkrypt:

PUCY Kolos 2: Reloaded 1) Narysować schemat układu mikroprogramowalnego z licznikiem rozkazów. 2) Narysować schemat elementu ścieżki cyklicznej dla sygnału kombinacyjnego 3) Narysować schemat elementu ścieżki cyklicznej dla sygnału synchronicznego

4) Narysuj schemat układu konfigurującego ukkład FPGA w trybie pasywnym szeregowo 5) Narysuj schemat układu konfigurującego układ FPGA w trybie aktywnym szeregowo. 7) Automat analogiczny do tego na pierwszym kolokwium, tyle że do opisania w VHDL - automat synchroniczny licznik rewersyjny modulo 5 w NKB library ieee; use iee.std_logic_1164.all; use iee.std_logic_arith.all; entity licznik_rewersyjny is generic ( n:natural := 3 port ( WE: in std_ulogic_vector (n-1 downto 0 CLK, CLR, ENA, DIR: in std_ulogic; WY: out std_ulogic_vector (n-1 downto 0 end entity licznik_rewersyjny; architecture licznik of licznik_rewersyjny is e0: process (CK) is variable licz: unsigned (n-1 downto 0 if (CLR = '0') then licz := (others => '0' elsif rising_edge(ck) then if (ENA = '0') then licz := unsigned(we elsif (DIR = '0') then if (licz = '000') then licz := '100'; else licz := licz 1; else

if (licz = '100') then licz := '000'; else licz := licz + 1; WY <= std_ulogic_vector(licz end process e0; end architecture licznik; 8) Zaprojektować mikroprogramowany zespół funkcjonalny wyposażony w ścieżkę cykliczną i zawierający bloki funkcjonalne realizujące następujące operacje na liczbach w kodzie U2: CK Operacja x RA <= 0 rise rise x x x rise RA <= WE RA <= AF AF <= RA + WE AF <= RA - WE AF <= WE v RA RA <= SHL(RA,0) a) projekt układu - 3 punkty (schemat blokowy) b) mikroprogramowanie - 5 punktów (realizacja mikroprogramowania w bloku funkcjonalnym) c) język VHDL - 11 punktów (opis projektu) d) ścieżka cykliczna - 6 punktów (realizacja w VHDL) Struktura rozkazu ( razem 3 bity ) Kod operacji [3b] 2 1 0 Kody operacji: Operacja Przypisany kod RA <= 0 000 RA <= WE 001 RA <= AF 010 RA <= SHL(RA,0) 011 AF <= RA + WE 100 AF <= RA - WE 101 AF <= WE v RA 110

a) schemat układu WERSJA A c) library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity uklwyk is generic( n: natural := 8 port( WE: in std_logic_vector(n-1 downto 0 SEL, F: in std_logic_vector(1 downto 0 CLR, CLK: in std_logic; RA_W, AF_W: out std_logic_vector(n-1 downto 0) end entity; architecture wykonawczy of uklwyk is signal RA, AF, RAn: std_logic_vector(n-1 downto 0 with F select AF <= signed(we) + signed(ra) when "00", signed(we) - signed(ra) when "01", WE or RA when others; with SEL select RAn <= AF when "00", WE when "01", (RA(n-2 downto 0) & '0') when others; RA_W <= RA; AF_W <= AF; e0: process(clk, CLR) is if CLR = '0' then

RA <= (others => '0' elsif rising_edge(clk) then RA <= RAn; end process; end architecture; WERSJA B b) mikroprogramowanie WIDTH=3; DEPTH=16; ADDRESS_RADIX = HEX; DATA_RADIX = BIN; CONTENT BEGIN 0 : 000; 1 : 010; -- tutaj siekamy rozkazy END ; c) implementacja w VHDLu library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; library lpm; use lpm.lpm_components.all; entity mi_prog is generic( n : natural := 8; a : natural := 4 -- długość adresu port( CK, CLR : in std_logic; X : in std_logic_vector (n-1 downto 0 Y_RA, Y_AF : out std_logic_vector (n-1 downto 0) end entity mi_prog; architecture mi_prog_a of mi_prog is signal NEXT_ADDR : std_logic_vector(a-1 downto 0 signal COMMAND : std_logic_vector(2 downto 0 signal RA, AF : std_logic_vector (n-1 downto 0 RA_block: process(ck, CLR) is variable R : std_logic_vector (n-1 downto 0 if COMMAND = "000" then R := (others => '0' elsif COMMAND = "001" then R := X; elsif COMMAND = "010" then R := AF; elsif COMMAND = "011" then R := R(n-2 downto 0) & '0'; else R := R; if CLR = '0' then R := (others => '0' if rising_edge(ck) then RA <= R;

end process RA_block; AF_block: process(ck, CLR) is variable R : std_logic_vector (n-1 downto 0 if COMMAND = "100" then R := unsigned(ra) + unsigned(x elsif COMMAND = "101" then R := unsigned(ra)-unsigned(x elsif COMMAND = "110" then R := RA or X; else R := R; if CLR = '0' then R := (others => '0' if rising_edge(ck) then AF <= R; end process AF_block; ADDR_block: process (CK, CLR) is variable R : std_logic_vector(a-1 downto 0 if rising_edge(ck) then R := unsigned(r)+1; if CLR = '0' then R := (others => '0' NEXT_ADDR <= R; end process ADDR_block; Y_RA <= RA; Y_AF <= AF; rom : lpm_rom generic map (LPM_WIDTH=>3, LPM_WIDTHAD=>a, LPM_NUMWORDS=>16, LPM_FILE=>"MIKRO_PROGRAM.mif", LPM_ADDRESS_CONTROL=>"REGISTERED", LPM_OUTDATA=>"REGISTERED", LPM_HINT=>"UNUSED") port map (address => NEXT_ADDR, inclock => CK, outclock => CK, q => COMMAND end architecture mi_prog_a; WERSJA C b) mikroprogramowanie WORD 3 KOD.RA.0 EQU B#000 KOD.RA.WE EQU B#001 KOD.RA.AF EQU B#010 KOD.RA.SHL EQU B#011 KOD.AF.PLUS EQU B#100 KOD.AF.MINUS EQU B#101 KOD.AF.OR EQU B#110 RA.CLEAR DEF 2X, KOD.RA.0, 4V% RA.SET.WE DEF 2X, KOD.RA.WE, 4V% RA.SET.AF DEF 2X, KOD.RA.AF, 4V%

RA.SHL DEF 2X, KOD.RA.SHL, 4V% AF.DODAJ DEF 2X, KOD.AF.PLUS, 4V% AF.ODEJMIJ DEF 2X, KOD.AF.MINUS, 4V% AF.LUB DEF 2X, KOD.AF.OR, 4V% M00: RA.CLEAR M01: AF.DODAJ c) implementacja w VHDLu use iee.std_logic_1164.all; use iee.std_logic_arith.all; entity uklad is generic ( n:natural := 16 port ( WE: in std_ulogic_vector (n-1 downto 0 CLK, CLR, ENA, DIR: in std_ulogic; N, Z: out std_ulogic; KOD: in std_ulogic_vector (2 downto 0 WY_RA, WY_AF: out std_ulogic_vector (n-1 downto 0 end entity uklad; architecture uklad of uklad is signal ZERO: std_ulogic_vector (n-1 downto 0 BLOK_RA: proc_ra: process (CLK, CLR) is variable REG: unsigned (n-1 downto 0 if (CLR = '0' OR KOD == '000') then REG <= (others=>'0' elsif rising_edge(clk) then if (KOD == '001') then REG <= WE; elsif (KOD == '010') then REG <= AF; elsif (KOD == '011') then REG <= (RA (n-2 downto 0) & '0') RA <= REG; end; BLOK_AF: proc_af: process (CLK, CLR) is variable REG: unsigned (n-1 downto 0 if (CLR = '0') then REG <= (others=>'0' elsif rising_edge(clk) then if (KOD == '100') then REG <= unsigned(af)+unsigned(we elsif (KOD == '101') then REG<=unsigned(AF)-unsigned(WE elsif (KOD == '110') then REG<=unsigned(AF) or unsigned(we AF <= REG; end; end; end architekture uklad;