Specyfika projektowania Mariusz Rawski

Podobne dokumenty
System cyfrowy. Układ sterujący (kontroler) Układ operacyjny (Datapath) Mikrooperacje wywoływane przez sygnały sterujące.

Synteza logiczna w projektowaniu

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

Synteza strukturalna

Systemy Czasu Rzeczywistego FPGA

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

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

Systemy Czasu Rzeczywistego FPGA

Projektowanie hierarchiczne Mariusz Rawski

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

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

Projekt prostego procesora

Systemy Czasu Rzeczywistego FPGA

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

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

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

Języki opisu sprzętu VHDL Mariusz Rawski

PUCY Kolos 2: Reloaded

Systemy Czasu Rzeczywistego FPGA

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Sposoby projektowania systemów w cyfrowych

Krótkie wprowadzenie do ModelSim i Quartus2

Układy Cyfrowe laboratorium

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Projektowanie automatów z użyciem VHDL

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

Synteza strukturalna Mariusz Rawski

Projektowanie hierarchiczne Mariusz Rawski

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

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

Projektowanie w VHDL

Programowalne układy logiczne

Projektowanie Urządzeń Cyfrowych

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

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

dr hab. Joanna Jędrzejowicz Podstawy informatyki i komputeryzacji Gdańska Wyższa Szkoła Humanistyczna

CZ1. Optymalizacja funkcji przełączających

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

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

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

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

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Programowalne układy logiczne

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

DOKUMENTACJA PROJEKTU

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

Układy logiczne układy cyfrowe

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

Projektowanie układów kryptograficznych Mariusz Rawski

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. Automaty stanó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.

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Bajt (Byte) - najmniejsza adresowalna jednostka informacji pamięci komputerowej, z bitów. Oznaczana jest literą B.

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

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

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

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

Układy kombinacyjne. cz.2

Architektury akceleratorów kryptograficznych opartych o układy programowalne. Marcin Rogawski

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

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

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

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

Rekonfigurowalne systemy scalone

PYTANIA BUDOWA KOMPUTERA kartkówki i quizy

Układy logiczne układy cyfrowe

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

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

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

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

Budowa i zasada działania komputera. dr Artur Bartoszewski

Cyfrowe przetwarzanie sygnałów Mariusz Rawski

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

Kombinacyjne bloki funkcjonalne

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

Sprawdzian test egzaminacyjny GRUPA I

Struktura i działanie jednostki centralnej

Wielkość analogowa w danym przedziale swojej zmienności przyjmuje nieskończoną liczbę wartości.

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

Architektura komputerów

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Wykorzystanie układów FPGA w implementacji systemów bezpieczeństwa sieciowego typu Firewall

Funkcja Boolowska a kombinacyjny blok funkcjonalny

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Metody optymalizacji soft-procesorów NIOS

Projektowanie Scalonych Systemów Wbudowanych VERILOG

UKŁAD SCALONY. Cyfrowe układy można podzielić ze względu na różne kryteria, na przykład sposób przetwarzania informacji, technologię wykonania.

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

UKŁADY MIKROPROGRAMOWALNE

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

Transkrypt:

CAD Specyfika projektowania Mariusz Rawski rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/

System cyfrowy pierwsze skojarzenie Urządzenia wprowadzania danych: klawiatury czytniki urządzenia przetwarzania dokumentów manipulatory Urządzenia wyprowadzania danych: monitory drukarki urządzenia foniczne urządzenia graficzne Urządzenia przetwarzania i przechowywania danych: pamięć operacyjna procesor kanały WE/WY urządzenia pamięci zewnętrznej: taśmy dyski (elastyczne, twarde, optyczne) 2

Projekt do realizacji Konwerter kodu binarnego na kod BCD W kodzie BCD (Binary Coded Decimal) każda cyfra liczby zapisanej w kodzie dziesiętnym jest przedstawiana czterobitową liczbą binarną Np. liczba 489 zostanie zapisana jako wektor binarny z wykorzystaniem 12 bitów (3 4 bity) 4 8 9 0100 1000 1001 BIN/BCD Wejście Wyjście (00011011) BIN (00100111) BCD 0 liczby 99 3

Metoda +3 Liczba konwertowana zapisana jest w postaci binarnej Przekształcenie polega na wykonaniu określonej liczby razy tych samych operacji START LOAD (LB) LDA := 0 LDB := 0 LK := 8 Wykorzystuje proste operacje na liczbach binarnych: LDB 5 NIE TAK LDB := LDB + 3 przesunięcie w lewo, zwiększenie o 3, LDA 5 TAK porównanie ze stałą. NIE LDA := LDA + 3 Przy konwersji liczb z zakresu 0 99 można algorytm uprościć LDA := SHL(LDA,LDB 7 ) LDB := SHL(LDB,LB 7 ) LB := SHL(LB) LK := DEC(LK) NIE LK = 0 TAK LD := LDA LDB KONIEC 4

Przykład działania 0 0 0 0 0 0 0 0 27 = 0 0 0 1 1 0 1 1 LDA LDB LB 0 0 0 0 0 0 0 0 LDB 5 NIE TAK LDB := LDB LDB := LDB+3 8 5

LDA LDB LB LDB < 5 LDB < 5 LDB < 5 LDB < 5 LDB < 5 LDB < 5 LDB 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 6 0 1 1 0 0 0 0 0 1 1 0 + 0 0 1 1 1 2 3 4 5 7 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 1 LDB < 5 0 0 0 1 0 0 1 1 8 1 0 0 1 0 0 1 1 1 LD BCD = 0 0 1 0 0 1 1 1 = 27 2 7 6

Algorytm zapisany w języku C++ Kompilator Dev-C++ Kompilacja w systemie Windows XP Specyfikacja komputera: Procesor AMD Athlon 64X2 Dual Core 4200+ 2.2 GHz Pamięć RAM 1,96 GB DDR2 Realizacja programowa Konieczność symulowania operacji na rejestrach: przesunięcie w lewo, zwiększenie o 3, porównanie ze stałą. 7

Efektywność realizacji Szybkość działania szacowana liczbą konwersji na sekundę Przepustowość = 9,17 * 10 6 = 9,17 mln liczb binarnych na sekundę 8

Urządzenia przetwarzania i przechowywania danych: pamięć operacyjna procesor kanały WE/WY urządzenia pamięci zewnętrznej: taśmy dyski (elastyczne, twarde, optyczne) Architektura komputerów 9

Nowoczesny Procesor 10

Schemat jądra procesora 11

Schemat jednostki ALU 12

Kod w asemblerze 13

Inne myślenie Komputer może być przedstawiany jako zestaw warstw poczynając od warstwy programów a kończąc na poziomie tranzystorów Najwyższa warstwa prezentuje najbardziej abstrakcyjny model systemu Im niższa warstwa tym bardziej szczegółowy model systemu Poziom użytkownika: Programy Języki wysokiego poziomu Kod maszynowy (Asembler) Sprzętowe/programowalne sterowanie Moduły funkcjonalne (ALU, pamięć,..) Bramki logiczne Tranzystory 14

System cyfrowy Sygnały sterujące 0 0 0 1 11 0 0 0 1 0 0 Dane wejściowe Układ sterujący (kontroler) Układ operacyjny (Datapath) Mikrooperacje wywoływane przez sygnały sterujące Stan części operacyjnej Dane wyjściowe 15

Realizacja systemu cyfrowego X Z D Z US UO X P Z Y F Układ operacyjny (UO) budowany jest z bloków funkcjonalnych Układ sterujący (US) tworzony jest jako automat (lub układ mikroprogramowany) 16

Metoda +3 Rejestry LB, LDA, LDB z operacjami: START zeruj wpisz, przesuń. LOAD (LB) LDA := 0 LDB := 0 LK := 8 Licznik LK z operacjami: ustaw, zmniejsz o 1. LDB 5 NIE TAK LDB := LDB + 3 Sumator LDA 5 TAK NIE LDA := LDA + 3 Komparator LDA := SHL(LDA,LDB 7 ) LDB := SHL(LDB,LB 7 ) LB := SHL(LB) LK := DEC(LK) NIE LK = 0 TAK LD := LDA LDB KONIEC 17

Opis strukturalny układu operacyjnego 4 4 8 LB 8 4 R3 R2 R1 A S3 S2 S1 B LK LK = 0 LOAD1 DEC 1 0 3 4 Σ MUX K 5 MUX A B 4 4 S US LK = 0 K 5 10 LB UO Y K 5 R4 LOAD2 8 Y = LD 18

Sieć działań układu sterującego 0 1 S LOAD 1 CLEAR 2,3 LOAD (LK) A 0 A 1 x 2 A 0 /Z 0 x 2 MUX := 0 A 2 A 1 /Z 1 K > 5 1 A 6 0 A 3 MUX := 1 K > 5 1 LOAD 2 A 7 A 2 /Z 2 x 1 x 1 A 6 /Z 4 0 A 4 LOAD 3 A 3 /Z 3 x 1 A 7 /Z 5 SHL 1, SHL 2, SHL 3, DEC (LK) x 1 0 LK = 0 1 A 5 LOAD 4 x 0 A 4 /Z 6 x 0 A 5 /Z 7 19

Bin2BCD opis strukturalny -- Kowersja liczby binarnej na liczbe bcd (lb<99) ------------------------------------------------ library ieee; use ieee.std_logic_1164.all; entity bin2bcd is port( start, zegar: in std_logic; lb : in std_logic_vector(7 downto 0); ld : out std_logic_vector(7 downto 0); koniec : out std_logic); end bin2bcd; signal a : std_logic_vector(1 downto 0); signal b : std_logic_vector(9 downto 0); begin k1 : uo port map (lb => lb, st => b, zegar => zegar, ld => ld, lk_s => a(1), k_s => a(0)); k2 : us port map (start => start, lk => a(1), k => a(0), zegar => zegar, s => b, koniec => koniec); end structure; architecture structure of bin2bcd is component uo port( lb : in std_logic_vector(7 downto 0); st : in std_logic_vector(9 downto 0); zegar : in std_logic; ld : out std_logic_vector(7 downto 0); lk_s, k_s: out std_logic); end component; component us port( start, lk : in std_logic; k,zegar : in std_logic; s : out std_logic_vector(9 downto 0); koniec : out std_logic); end component; S US LK = 0 K 5 10 LB UO Y 20

Wyniki realizacji FLEX10K10 EPF10K10LC84-3 LC s 69 (12 %) f MAX 56,82 MHz (17,6 ns ) Niewielki procent wykorzystania zasobów układu Liczba jest konwertowana w (około) 29 cyklach zegarowych Przepustowość = 56,82 * 10 6 / 29 = 1,959 mln liczb binarnych na sekundę 21

Bin2BCD opis funkcjonalny -- Konwersja liczby binarnej na liczbe bcd (lb<99) ------------------------------------------------ library ieee; use ieee.std_logic_1164.all; -- USE ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity bin2bcd is port( start, clk : in std_logic; lb : in std_logic_vector(7 downto 0); koniec : out std_logic; ld : out std_logic_vector(7 downto 0)); end bin2bcd; architecture behavior of bin2bcd is begin process (clk) variable lk : integer range 0 to 8; variable lda, ldb : std_ligic_vector(3 downto 0); variable lb_r : std_ligic_vector(7 downto 0); begin if (rising_edge(clk)) then if start = '1' then lda := "0000"; ldb := "0000"; ld <= "00000000"; lb_r := lb; lk := 8; koniec <= '0'; else if lk > 0 then if ldb >= 5 then lda := (lda(2 downto 0) & '1'); ldb := ((ldb(2 downto 0) + "011") & lb_r(7)); else lda := (lda(2 downto 0) & '0'); ldb := (ldb(2 downto 0) & lb_r(7)); end if; lb_r := (lb_r(6 downto 0) & '0'); lk := lk - 1; else ld <= (lda & ldb); koniec <= '1'; end if; end if; end if; end process; end behavior; 22

Wyniki realizacji FLEX10K10 EPF10K10LC84-3 LC s 43 (7 %) f MAX 69,93 MHz (14,3 ns ) Jeszcze mniejsze wykorzystanie zasobów układu Liczba jest konwertowana w (około) 10 cyklach zegarowych Przepustowość = 69,93 * 10 6 / 10 = 6,993 mln liczb binarnych na sekundę 23

Inna rodzina układów FPGA EP1S10F484C5 Strukturalny Funkcjonalny LC s 54 ( < 1 % ) 34 ( < 1 % ) f MAX 392,77 MHz (2,546 ns ) 371,20 MHz (2,694 ns ) Dla realizacji opisanej funkcjonalnie: Przepustowość = 392,77 * 10 6 / 10 = 39,277 mln liczb binarnych na sekundę Znacznie więcej niż nowoczesny komputer! 24

Inny algorytm dla realizacji programowej Algorytm zapisany w języku C++ Kompilator Dev-C++ Kompilacja w systemie Windows XP Specyfikacja komputera: Procesor AMD Athlon 64X2 Dual Core 4200+ 2.2 GHz Pamięć RAM 1,96 GB DDR2 Wykorzystanie operacji dzielenia i modulo Ponad 91 mln liczb na sekundę! 25

# Konwerter bin2bcd.type fr.i 7.o 8.p 100 0000000 00000000 0000001 00000001 0000010 00000010 0000011 00000011.................. 1011111 10010101 1100000 10010110 1100001 10010111 1100010 10011000 1100011 10011001.e EP1S10F484C5 Inny algorytm dla realizacji sprzętowej pla2vhdl LC s 24 (< 1 %) f MAX 357,78 MHz (2,795 ns ) EP2S15F484C3 LC s 7 (< 1 %) f MAX 500,00 MHz (2,000 ns ).................................... block1_1: process (block1_1_in) begin case block1_1_in is when "0000000" => block1_1_out <= '0'; when "0000001" => block1_1_out <= '0'; when "0000010" => block1_1_out <= '0'; when "0000011" => block1_1_out <= '0'; when "0000100" => block1_1_out <= '0'; when "0000101" => block1_1_out <= '0'; when "0000110" => block1_1_out <= '0'; when "0000111" => block1_1_out <= '0'; when "0001000" => block1_1_out <= '0'; when "0001001" => block1_1_out <= '0'; when "0001010" => block1_1_out <= '0'; when "0001011" => block1_1_out <= '0'; when "0001100" => block1_1_out <= '0'; when "0001101" => block1_1_out <= '0';.................................... Ponad 357 mln liczb na sekundę! Nowszy układ Stratix II jeszcze szybszy! 26