Rejestry przesuwne, sumatory

Slides:



Advertisements
Podobne prezentacje
VHDL Today, Verilog HDL is an accepted IEEE standard. In 1995, the original standard IEEE was approved. IEEE is the latest Verilog.
Advertisements

REALIZACJA REGULATORA PID W UKŁADZIE FPGA
Układy kombinacyjne Technika cyfrowa.
Inżynieria Systemów Programowalnych Część I
Projektowanie cyfrowych systemów w oparciu o układy PLD (i VLSI)
by Ernest Jamro Katedra Elektroniki, AGH Kraków
Projektowanie cyfrowych systemów w oparciu o układy (VLSI i) PLD
Programowalne Układy Cyfrowe Ernest Jamro, Paweł Russek C3 p
Najczęściej popełniane błędy w VHDL’u
Hardware Implementation of Algorithms Adders
Cyfrowe układy logiczne
Złożone układy kombinacyjne
Multipleksery, Rejestry, Pamięci Ernest Jamro Kat. Elektroniki AGH.
Rejestry przesuwne, Pamięci
Programowalne układy cyfrowe, czyli fabryka na Twoim biurku
Układy logiczne – układy cyfrowe
ZPT Evatronix Kontroler Ethernet MAC (Media Access Control) 10/100Mbit spełniający rolę rolę podstawowej arterii wymiany danych pomiędzy urządzeniami sterującymi.
Równowaga chemiczna - odwracalność reakcji chemicznych
EFEKT FOTOELEKTRYCZNY ZEWNĘTRZNY I WEWNĘTRZNY KRZYSZTOF DŁUGOSZ KRAKÓW,
1 Dr Galina Cariowa. 2 Legenda Iteracyjne układy kombinacyjne Sumatory binarne Sumatory - substraktory binarne Funkcje i układy arytmetyczne Układy mnożące.
Dr Galina Cariowa. Programowalne technologie realizacji układów logicznych.
Elementy cyfrowe i układy logiczne
Każde powołanie, każda z dróg, na które wzywa nas Chrystus, prowadzi ostatecznie do spełnienia i do radości, ponieważ prowadzi do Boga, do uczestniczenia.
Analiza wariancji (ANOVA) Zakład Statystyki Stosowanej Instytut Statystyki i Demografii Kolegium Analiz Ekonomicznych Szkoła Główna Handlowa w Warszawie.
IEN 2010 © wszelkie prawa zastrzeżone SEMINARIUM Pakiet MATLAB w Zakładzie OGM Możliwości posiadanych produktów.
VHDL Ernest Jamro, Paweł Russek C3 p. 504
Dodawania i odejmowanie sum algebraicznych. Mnożenie sumy algebraicznej przez jednomian. Opracowanie Joanna Szymańska Konsultacja Bożena Hołownia.
W KRAINIE TRAPEZÓW. W "Szkole Myślenia" stawiamy na umiejętność rozumowania, zadawania pytań badawczych, rozwiązywania problemów oraz wykorzystania wiedzy.
Lista Rozkazów: Język komputera Większość slajdów do tego wykładu to tłumaczenia i przeróbki oficjalnych sladjów do podręcznika Pattersona i Hennessy’ego.
Algorytmy Informatyka Zakres rozszerzony
VHDL Ernest Jamro, Paweł Russek C3 p. 504
© Kazimierz Duzinkiewicz, dr hab. inż. Katedra Inżynierii Systemów Sterowania Modelowanie i podstawy identyfikacji 2015/2016 Modelowanie rozmyte – podstawy,
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Algorytm Newtona - Raphsona
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
Czym jest gramofon DJ-ski?. Gramofon DJ-ski posiada suwak Pitch służący do płynnego przyspieszania bądź zwalniania obrotów talerza, na którym umieszcza.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
I T P W ZPT 1 Realizacje funkcji boolowskich Omawiane do tej pory metody minimalizacji funkcji boolowskich związane są z reprezentacją funkcji w postaci.
Transformacja Lorentza i jej konsekwencje
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.
1 Systemy Dedykowane w Układach Programowalnych Ernest Jamro Dodawanie.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy kombinacyjne.
VHDL Ernest Jamro, Paweł Russek C3 p. 504
Mikroprocesory.
WSTĘP DO ELEKTRONIKI Część VII Układy cyfrowe Janusz Brzychczyk IF UJ.
Kodowanie liczb w systemach
Nast. slajd Odcinki w trójkącie Maciej Kawka.
Binarny sumator. Binarny sumator Konieczność zmniejszania wymiarów Dominacja efektów kwantowych.
Minimalizacja automatu
Układy logiczne – układy cyfrowe
Pamięci półprzewodnikowe
Ciąg arytmetyczny Opracowały : Iwona Głowacka i Małgorzata Jacek.
Układy logiczne kombinacyjne sekwencyjne
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
ALGORYTMY I STRUKTURY DANYCH
Problem kodowania stanów w układach sekwencyjnych (automatach)
Wykład III Przetworniki A/C i C/A.
Materiały pochodzą z Platformy Edukacyjnej Portalu
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL
Obliczenia w Matlabie Operatory, instrukcje sterujące, operacje bitowe
Rozdział 2 Digital Design and Computer Architecture, 2nd Edition
Interfejsy urządzeń peryferyjnych
Interfejsy urządzeń peryferyjnych
Podstawy informatyki Zygfryd Głowacz.
MATEMATYKAAKYTAMETAM
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Układy cyfrowe Sygnał cyfrowy Sygnał analogowy
Autor: Magdalena Linowiecka
Rejestry, liczniki i sumatory.
Zapis prezentacji:

Rejestry przesuwne, sumatory Ernest Jamro Kat. Elektroniki AGH

Multiplekser Mux 2:1 Mux 4:1

Multiplekser 2:1 na bramkach Sel\In1, In0 00 01 11 10 1 Out= SelIn0 + Sel In1 Y <= (not Sel and In0) OR (Sel and In1); --VHDL

Multiplekser na bramkach – postać ogólna VHDL Ai <= conv_integer(Sel); Y <= X(Ai); -- Out i In słowa kluczowe Mux 4:1

Multiplekser na buforach trójstanowych VHDL (wewnątrz FPGA): Ch(1)<= In1 when Tn(1)=‘1’ else ‘Z’; Ch(2)<= In2 when Tn(2)=‘1’ else ‘Z’; VHDL (testbench): Y<= ch(1); Y<= ch(2); Aby uniknąć krótkotrwałego zwierania buforów stosuje się krótki czas martwy w którym wszystkie bufory są w stanie wysokiej impedancji. Wymaga to użycia automatu zamiast prostego dekodera kodu binarnego na 1 z n.

Multiplekser na bramkach OC *.ucf NET "ch<1>" LOC = "T3" ; NET "ch<1>" PULLUP; VHDL bramka OD/OC: Ch(1) <= ‘0’ when D0=‘0’ else ‘Z’; Ch(2)<= ‘0’ when D1=‘0’ else ‘Z’; Y= S’D0 + SD1 - multiplekser A + B= (A’B’)’ - prawo De Morgana, (Wired AND) Y= ( (S’D0)’ (SD1)’ )’

Demultiplekser

Multipleksowanie w czasie Wyświetlacz 7-segmentowy Tylko jeden wyświetlacz jest aktywny w danej krótkiej chwili czasowej W układach scalonych z reguły bardziej kosztowne jest dodanie dodatkowego wyprowadzenia niż dodatkowej logiki

Incrementator (S=A+1) Si Ci si = ai  ci-1 ci= ai ci-1 ci-1\ai 1 1 ci-1\ai 1 HA Half Adder si = ai  ci-1 ci= ai ci-1

Incrementator: Example A=10112= 1110=0xB S=A+1= 11002=1210=0xC

Dodawanie z szeregową propagacją przeniesienia (Ripple Carry) Adder: S= A+B ai + bi+ci-1 = si + 2·ci si = ai  bi  ci-1 ci= ai bi + ai ci-1 + bi ci-1= ai bi + ci-1 (ai  bi) ci-1\ai,bi 00 01 11 10 1 ci ci-1\ai,bi 00 01 11 10 1 Propagate Generate

Odejmowanie / Subtraction (a-b) Direct Two’s Complement (2C) ai - bi-ci-1 = si - 2·ci si = ai  bi  ci-1 Add 1 to the LSB (Least Significant Bit) Sign bit negation si Instead of employing dedicated subtraction we can use a standard adder convert B to 2C code Example: 1111 in 2C= 0000+1= 0001 (minus one) ci-1\ai,bi 00 01 11 10 1 ci ci-1\ai,bi 00 01 11 10 1 Red color – difference between addition and subtraction

Add/Subtract Logic S<= A+B when Sub=‘0’ else A-B; Convert B to Two’s Complement when Sub=1

Dodaj,Odejmij, Przepełnienie, Przykłady Add: 3+2= 5 0011 = 3 0010 = 2 0111 = 7 Add: 3+5= 8 0011 = 3 0101 = 5 1000 = -8 Overflow Add: -7+6= -1 1001 = -7 0110 = 6 1111 = -1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 Overflow= CarryOutN xor CarryOutN-1 Subtract: 6-1= 5 0110 = 6 1111 = -1 0101 = 8 Subtract: -1-2= 1 1111 = -1 1110 = -2 1101 = -3 Subtract: -5-4= -9 1011 = -5 1100 = -4 0111= 7 Overflow 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0

Komparator AB A=B  not[ (aN xor bN) or ... or (a1 xor b1) or (a0 xor b0) ] A/=B  (aN xor bN) or ... or (a1 xor b1) or (a0 xor b0) A<B  Sign(A-B) AB  not Sign(B-A) AB  not Sign(A-B) A>B  Sign(B-A)

Komparator AConst A=C  not( (aN xor cN) or ... or (a1 xor c1) or (a0 xor c0) ) np. C=5: not( aN or ... or not a2 or a1 or not a0 A!=C  (aN xor cN) or ... or (a1 xor c1) or (a0 xor c0) A!=0  aN or ... or a1 or a0 A<2i  not (aN or ... or ai+1 or ai) A2i  aN or ... or ai+1 or ai C – Constant i- integer

Counter mod 2N Qn+1= Qn+1 architecture Beh of counter_2N is signal Q: std_logic_vector(3 downto 0):= "0000"; begin process(clk, reset_asynch) begin if reset_asynch=‘1’ then Q<= (others=>’0’); elsif clk’event and clk=‘1’ then Q<= Q + 1; end if; end process; Count<= Q end Beh; library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity counter_2N is port(clk, reset_asynch: in std_logic; count : out std_logic_vector (3 downto 0)); end counter_2N;

Counter mod N architecture Beh of counter_N is signal Q: std_logic_vector(3 downto 0):= "0000"; begin process(clk) begin if clk’event and clk=‘1’ then if reset_synch=‘1’ or Q=N-1 then Q<= (others=>’0’); else Q<= Q + 1; end if; -- not reset end if; -- clk end process; end Beh;

Up/Down Counter mod 2N architecture Beh of counter_up_down is signal Q: std_logic_vector(3 downto 0); begin process(clk) begin if clk’event and clk=‘1’ then if Up_DownN=‘1’ then Q<= Q + 1; else Q<= Q - 1; end if; -- up / downN end if; -- clk end process; Count <= Q; end Beh;

Up/Down Counter mod N process(clk) begin if clk’event and clk=‘1’ then if Up_DownN=‘1’ then if Q = N-1 then Q<= (others=>’0’) else Q<= Q + 1; end if; else -- counting down if Q = 0 then Q<= conv_std_logic_vector(N-1, vec_width); Q<= Q - 1; end if; -- up / downN end if; -- clk end process;

Rotacja, Przesunięcie logiczne i Arytmetyczne Wejście: a3a2a1a0 W lewo Rot: a2a1a0a3 B<= A(2 downto 0) & A(3); Log: a2a1a00 B<= A(2 downto 0) & ‘0’; Arith: a2a1a00 B<= A(2 downto 0) & ‘0’; W prawo Rot: a0a3a2a1 B<= A(0) & A(3 downto 1); Log: 0a3a2a1 B<= ‘0’ & A(3 downto 1); Arith: a3a3a2a1 B<= A(3) & A(3 downto 1); Logiczne –mnożenie/dzielenie przez 2 dla nieujemnych liczb Arytmetyczne: mnożenie/dzielenie przez 2 dla uzupełnień do dwóch Przykład: –1= 1111; -1/2= 1111= -1

Rejestr przesuwny w prawo lub lewo SLEFT=0 – przesuń w prawo SLEFT=1 – przesuń w lewo

Rejestr przesuwny w prawo i w lewo z wpisem równoległym process(clk) begin if clk’event and clk=‘1’ then if S(1)= ‘1’ then -- load Q<= D; elsif S(0)= ‘0’ then – shift right Q<= Dleft & Q(3 downto 1); else -- shift left Q<= Q(2 downto 0) & Drigth; end if; end if; end process; S= 0 - przesuń w prawo S=1 - przesuń w lewo S=2 - wpis równoległy S=3 - wpis równoległy

Rejestr przesuwny: rotujący, logiczny, arytmetyczny Mnożenie/dzielenie przez 2 Kopiowanie bity znaku przy dzieleniu w kodzie U2

Barrel Shifter (szybkie przesunięcie o dowolną liczbę bitów) Mnożenie Dzielenie (kod U2 - uzupełnień do dwóch)

Barrel Shifter - wielopoziomowy Każdy z n poziomów przesuwa o 0 lub 2i-bitów (i=0..(n-1)) bitów w ten sposób można przesunąć o dowolną liczbę bitów w zakresie od (0..2n-1)-bitów używając prostych multiplekserów 2:1.

Serializer: Parallel-In Serial-Out (PISO)

Serializer: PISO - VHDL process(clk) begin if clk'event and clk1=‘1' then if load=‘1’ then Q <= D; else Q(N-1 downto 0)<= Q(N-2 downto 0) & Din; end if; end process; Qout<= Q(N-1);

SIPO (Serial-In Parallel-Out) (Deserializer) process(clk) begin if clk'event and clk=‘1' then Q(N-1 downto 0)<= Q(N-2 downto 0) & Din; end if; end process;

SIPO (Clock Enable) – błędne użycie Przykład taktowania co drugi takt zegara modułu SIPO i złego użycia bramki AND na sygnale zegarowym – powstaje wyścig!!!

SIPO (Clock Enable) – poprawne użycie Przykład taktowania co drugi takt zegara SIPO – sygnał zegarowy jest wyjściem Q przerzutnika (Uwaga wyścig może powstać pomiędzy sygnałem Din a Clk2).

SIPO (CE - Clock Enable)

SISO (Serial-In Serial-Out)

Przesyłanie danych szeregowo SerDeser Sposób 1 Sposób 2 PISO Clk SIPO D clk takt