LABOLATORUM, TECHNIKA CYFROWA 2 |
Termin: CZ TN 07:30 |
Sala: 019A |
Zadania wykonane w trakcie zajęć.
- Za pomocą programu Xilinx zaprojektować i wykonać symulację Rejestru SIS0/SIPO 4 bit na JK z resetem synchronicznym (reset zrobić samodzielnie).
- Za pomocą programu Xilinx zaprojektować i wykonać symulację Detektora sekwencji 0110 na rejestrze SIPO (przerzutnik D) + zerowanie asynchroniczne.
- Za pomocą programu Xilinx zaprojektować i wykonać symulację Rejestru przesuwnego wstecz typu SIPO 4 bit z asynchronicznym resetem na D i równoległym wpisem synchronicznym
- Za pomocą programu Xilinx zaprojektować i wykonać symulację Rejestru SIPO 4 bit z wstępnym równoległym asynchronicznym wpisem na JK (jednym klawiszem)
Realizacja ćwiczenia.
Przedstawić projekt, schemat, opis i wyniki symulacji Rejestru SIS0/SIPO 4 bit na JK z resetem synchronicznym (reset zrobić samodzielnie).
Projekt:
- Zamiana przerzutnika JK na przerzutnik D:
J = D
K = D’
- Tabela prawdy przerzutnika D:
D Qn
0 -> 0
1 -> 1
– Single Input - każde wyjście przerzutnika będzie napędzać wejście kolejnego.
- Single Output – wyjście ostatniego przerzutnika będzie wyjściem rejestru.
- Pararel Output – wyjście każdego przerzutnika będzie jednym z wyjść rejestru.
- Reset synchroniczny – zgodnie z tabelą prawdy zerowanie wyjścia poprzez jednoczesny wpis 0 na wejście wszystkich przerzutników.
Schemat:
SISO
SIPO
Opis działania układu:
Jest to układ służący do przechowywania i odtwarzania informacji w postaci bitów. Na każdej pozycji rejestru przechowywany jest jeden bit informacji. Przedstawione rejestry są szeregowe, co oznacza, że umożliwiają szeregowe wprowadzanie danych (bit po bicie), przy czym Rejestr SISO umożliwia szeregowe (wyjście OUTP), a SIPO równoległe wyprowadzanie danych – wyjścia OUTP0, OUTP1, OUTP2, OUTP3.
Przedstawione rejestry posiadają 3 wejścia INP – do wprowadzania danych, CLK – wejście zegarowe, RESET – reset synchroniczny, który aktywowany jest poprzez wpisanie na niego „1”.
Wyniki symulacji:
RESET <= '0', '1' after 500 ns;
INP <= '1';
for i in 1 to 25 loop
CLK <= '1'; wait for 50 ns;
CLK <= '0'; wait for 50 ns;
end loop;
SISO
SIPO
Przedstawić projekt, schemat, opis i wyniki symulacji Detektora sekwencji 0110 na rejestrze SIPO (przerzutnik D) + zerowanie asynchroniczne.
Projekt:
Schemat:
Opis działania układu.
Detektor zbudowany jest za pomocą rejestru SIPO, posiada 3 wejścia: INP – do szeregowego wprowadzania danych, CLK – wejście zegarowe, RESET – reset asynchroniczny, który aktywowany jest poprzez wpisanie na niego „1”.
Wyjście detektora OUTP oparte jest na bramce AND wykrywającej czy na wyjściach rejestru pojawiła się żądana sekwencja, jeśli tak się dzieje to na OUTP pojawia się „1”;
Wyniki symulacji.
for i2 in 1 to 10 loop
iRESET := iRESET + 1; -- RESET PRZESUWA SIĘ Z KAŻDYM CYKLEM ZEGARA
for i in 1 to 5 loop
if (i = iRESET or iRESET > 5)
then RESET <= '1'; iRESET := i;
else RESET <= '0'; -- RESET ZERUJE SIĘ Z AKŻDYM 5 CYKLEM PĘTLI
end if;
if (i = 2 or i = 3) --WPIS SEKWENCJI
then INP <= '1';
else INP <= '0';
end if;
CLK <= '1'; wait for 10 ns;
CLK <= '0'; wait for 10 ns;
end loop;
end loop;
Przedstawić projekt, schemat, opis i wyniki symulacji Rejestru przesuwnego wstecz typu SIPO 4 bit z asynchronicznym resetem na D i równoległym wpisem synchronicznym
Projekt
- Rejestr przesuwny wstecz - Każde wyjście kolejnego przerzutnika napędza wejście wcześniejszego.
Schemat
Teoretyczny opis działania układu:
Rejestr posiada 8 wejść, z czego 4 sterujące i 4 danych, oraz 4 wyjścia:
Wejścia (danych) wpisu równoległego: INP0, INP1, INP2, INP3;
Wejście (sterujące) załączenia wpisu równoległego: SLD;
-działa ono tylko wtedy, kiedy nie ma sygnału RESET
Wejście (sterujące) wpisu szeregowego „przesuwające dane w lewo”: SHLD
- działa ono wtedy, kiedy nie ma sygnału RESET i nie jest ustawiony wpis równoległy (SLD) – set load
Wejście (sterujące) resetu aktywowane stanem „1”: RESET
Wejście (sterujące) zegara: CLK
Wyjścia szeregowe z każdego z rejestrów: OUTP0, OUTP1, OUTP2, OUTP3;
Przykładowe działanie polega na
Wyniki symulacji.
for iINP3 in 1 to 2 loop if (iINP3 = 1) then INP3 <= '0'; else INP3 <= '1'; end if; -- GENERATORY SEKWNCJI WPISU
for iINP2 in 1 to 2 loop if (iINP2 = 1) then INP2 <= '0'; else INP2 <= '1'; end if; -- SYNCHRONICZNEGO
for iINP1 in 1 to 2 loop if (iINP1 = 1) then INP1 <= '0'; else INP1 <= '1'; end if;
for iINP0 in 1 to 2 loop if (iINP0 = 1) then INP0 <= '0'; else INP0 <= '1'; end if;
SLD <= '1'; CLK <= '0'; RESET <= '0'; SHLD <= '0'; wait for 100 ns; --WPIS SEKWENCJI PRZED URUCHOMIENIEM
SLD <= '0';
for i2 in 1 to 5 loop iRESET := iRESET + 1; -- GENERATOR SEKWENCJI 0110
for i in 1 to 5 loop --Z RESETEM PRZESUWJĄCYM SIĘ
if (i = iRESET or iRESET > 5)
then RESET <= '1';
iRESET := i;
else RESET <= '0';
end if;
if (i = 2 or i = 3)
then SHLD <= '1';
else SHLD <= '0';
end if;
CLK <= '1'; wait for 10 ns;
CLK <= '0'; wait for 10 ns;
end loop; end loop; end loop; end loop; end loop; end loop;
Przedstawić projekt, schemat, opis i wyniki symulacji Rejestru SIPO 4 bit z wstępnym równoległym asynchronicznym wpisem na JK (jednym klawiszem).
Projekt
Schemat
Teoretyczny opis działania układu:
Rejestr posiada 7 wejść, z czego 3 sterujące i 4 danych, oraz 4 wyjścia:
Wejścia (danych) wpisu równoległego: INP0, INP1, INP2, INP3;
Wejście (sterujące) załączenia wpisu równoległego, asynchronicznego: SLD;
Wejście (sterujące) wpisu szeregowego: INP
- działa ono wtedy, kiedy nie ma sygnału wpisu równoległego (SLD) – set load
Wejście (sterujące) zegara: CLK
Wyjścia szeregowe z każdego z rejestrów: OUTPU0, OUTPU1, OUTPU2, OUTPU3;
Wyniki symulacji
variable stINP0 : STD_LOGIC := '0'; stINP1 : STD_LOGIC := '0';
variable stINP2 : STD_LOGIC := '0'; variable stINP3 : STD_LOGIC := '0';
CLO <= '0';
INP0 <= '1'; INP1 <= '0'; INP2 <= '0'; INP3 <= '0'; -- SEKWENCJA ŁADOWANIA RÓWNOLEGŁEGO (POCZĄTKOWEGO)
for iINP in 1 to 2 loop -- GENERATOR WEJŚCIA SZEREGOWEGO I ZEGARA
for iINP3 in 1 to 2 loop if (iINP3 = 1) then stINP3 := '0'; else stINP3 := '1'; end if;
for iINP2 in 1 to 2 loop if (iINP2 = 1) then stINP2 := '0'; else stINP2 := '1'; end if;
for iINP1 in 1 to 2 loop if (iINP1 = 1) then stINP1 := '0'; else stINP1 := '1'; end if;
for iINP0 in 1 to 2 loop if (iINP0 = 1) then stINP0 := '0'; else stINP0 := '1'; end if;
SLD <= '1';
INTP <= stINP0; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
INTP <= stINP1; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
INTP <= stINP2; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
INTP <= stINP3; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
SLD <= '0'; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
INTP <= stINP0; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
INTP <= stINP1; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
INTP <= stINP2; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
INTP <= stINP3; CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
for i in 1 to 10 loop
CLO <= '1'; wait for 10 ns; CLO <= '0'; wait for 10 ns;
end loop; end loop; end loop; end loop; end loop; end loop;
Przedstawić projekt, schemat i opis Pamięci 2x2 bity na D
Projekt
Schemat
Teoretyczny opis działania układu:
Pamięć posiada 4 Wejścia oraz jedno wyjście OUTP odpowiadające za odczyt danych z wybranego rejestru.
-Linie adresowe: A1, A0
Pozwalają na binarny wybór, który rejestr ma zostać zapisany lub odczytany.
- Linia zapisu: WR
Pozwala na wpis danych znajdujących się na wejściu INP do rejestru wybranego za pomocą linii adresowych.
-Linia wpisu: INP
Pozwala na ustalenie, jaka wartość ma być wpisana do określonego rejestru, wybranego za pomocą linii adresowych, gdy linia zapisu WR znajduje się w stanie „1”.
Przedstawić projekt, schemat i opis szeregowego sumatora akumulacyjnego 4 bit z osobnym rejestrem na wynik.
Projekt
Funkcja sumatora pełnego:
S = A ⊕ B ⊕ Ci
Co = AB + (A + B)Ci
Schemat
Teoretyczny opis działania układu:
Sumator posiada 4 wejścia oraz 4 wyjścia.
Wejście zegarowe: CLO – odpowiada za sterowanie wszystkimi rejestrami
Wejście resetu: RES – odpowiada za asynchroniczny reset wszystkich rejestrów.
Wejścia danych: INPA i INPB – pozwalają na załadowanie danych do rejestrów Schematic103
Schematic103 – są to 4 bit rejestry typu SISO, gdzie ładujemy zmienne. (Zmodyfikowany rejestr z zadania 1)
Schematic102 – jest to 4 bit rejestr typu SIPO, gdzie załaduje się wynik operacji. (Rejestr z zadania 1)
Działanie układu polega na początkowym wpisaniu 4 bitowej liczby A i B do rejestrów SISO za pomocą wejść INPA i INPB a następnie po kolejnych cyklach zegara wyniki sumowania kolejnych bitów są zapisywane do rejestru SIPO. Układ posiada dodatkowy przerzutnik typu D na wyjściu przeniesienia CO z sumatora w celu zapamiętywania przeniesienia z poprzedniej liczby i dodania go do kolejnej poprzez wejście przeniesienia CI.