Logičko projektovanje računarskih sistema 2 L05. Sekvencijalne mreže
Da ponovimo ... kombinacione mreže process (iA, iB, iSEL) begin case (iSEL) is when “00” => oY <= iA + iB; -- operacije when “01” => oY <= iA + 1; -- su samo when “10” => oY <= iA - 1; -- primer when “11” => oY <= iA(7) & iA(7 downto 1); when others => oY <= “0000”; end case; end process; Ostalo od prošlog puta: aritmetika (ponovi II komplement, sabiranje, pomeranje, ALU – statusni biti) 06 Mar 2019 L05. Sekvencijalne mreže
Pitanja? O čemu treba voditi računa kada opisujemo kombinacione mreže? Da li znate da opišete sve standardne kombinacione mreže? Da li znate da opišete proceduru provere sistema (Test Bench)? Da li znate sve predstave negativnih brojeva i njihova pomeranja? Nismo raditi Test Bench – sumiraj! 06 Mar 2019 L05. Sekvencijalne mreže
Šta ne možemo još da napravimo? Funkcija sistema: Ako pritisnemo dugme: Ako je svetlo upaljeno, ugasi ga Ako je svetlo ugašeno, upali ga Ako ne pritisnemo dugme: Ako je svetlo upaljeno, upali ga Ako je svetlo ugašeno, ugasi ga dugme svetlo Svetlo nije funkcija samo dugmeta! Tabela funkcije sistema? 06 Mar 2019 L05. Sekvencijalne mreže
Šta nam treba da bismo to napravili? dugme Ulazi: Dugme Trenutna vrednost svetla Izlaz: Naredna vrednost svetla svetlo svetlo Tabela funkcije sistema? Ne smemo napraviti kombinacionu petlju! 06 Mar 2019 L05. Sekvencijalne mreže
Šta nam treba da bi to napravili? dugme svetlo [n+1] svetlo [n] svetlo [n] trigger Memorija Povratna sprega! 06 Mar 2019 L05. Sekvencijalne mreže
Osnovne sekvencijalne mreže 06 Mar 2019 L05. Sekvencijalne mreže
Kako napraviti memorijski element? Kondenzator? Šta se dešava ako invertore povežemo sa povratnom spregom? 06 Mar 2019 L05. Sekvencijalne mreže
Treba nam mogućnost izbora promene ... iD D Latch iSEL 06 Mar 2019 L05. Sekvencijalne mreže
Karakteristike komponente Latch Ima mogućnost pamćenja starog stanja, dok god je selekcioni ulaz neaktivan i tada nema kombinacione veze ulaza sa izlazom. Menja vrednost ako je selekcioni izlaz aktivan i tada formira direktnu kombinacionu vezu ulaza sa izlazom. Bilo bi dobro da u oba slučaja nemamo kombinacionu vezu ulaza sa izlazom jer nam treba petlja, a ne želimo da bude kombinaciona! Ideje? 06 Mar 2019 L05. Sekvencijalne mreže
D registar oQ iD not(iSEL) iCLK iSEL 06 Mar 2019 L05. Sekvencijalne mreže
Karakteristike komponente D-registar Ima mogućnost pamćenja starog stanja, dok god je selekcioni ulaz na konstantnoj vrednosti i tada nema kombinacione veze ulaza sa izlazom. Menja vrednost na rastućoj ili opadajućoj ivici selekcionog signala i tada nema kombinacione veze ulaza sa izlazom. Nikada nema kombinacionu vezu ulaza sa izlazom! Može da se iskoristi za memorijski element u sekvencijalnoj mreži. 06 Mar 2019 L05. Sekvencijalne mreže
Specijalni ulazi D-registra Signal takta (iCLK) Periodičan signal sa faktorom ispune 50% Osetljivost na rastuću ili opadajuću ivicu Signal reseta (iRST, inRST) Vraća registar u početno stanje (u Spartan6 arhitekturi mora na 0) Aktivan na visokoj ili niskoj logičkoj vrednosti Dva tipa reseta: Asinhron reset (podržan arhitekturom registra) Sinhron reset (deo logike na ulazu registra) 06 Mar 2019 L05. Sekvencijalne mreže
VHDL opis sekvencijalnih mreža Sekvencijalne mreže se mogu opisati pomoću sekvencijalnog procesa. Svaka memorijska komponenta (D-registar) mora biti opisana kao interni signal osim ukoliko je: direktno vezana na izlaz i njena naredna vrednost ne zavisi od prethodne vrednosti. 06 Mar 2019 L05. Sekvencijalne mreže
VHDL Sekvencijalni proces – asinhroni reset process (iCLK, inRST) begin if (inRST = ‘0’) then sREG <= (others => ‘0’); elsif (iCLK’event and iCLK = ‘1’) then -- opis logike promene vrednosti -- sREG <= ... end if; end process; 06 Mar 2019 L05. Sekvencijalne mreže
VHDL Sekvencijalni proces – sinhroni reset process (iCLK) begin if (iCLK’event and iCLK = ‘1’) then if (inRST = ‘0’) then sREG <= (others => ‘0’); else -- opis logike promene vrednosti -- sREG <= ... end if; end process; 06 Mar 2019 L05. Sekvencijalne mreže
© 123RF 06 Mar 2019 L05. Sekvencijalne mreže
Standardne sekvencijalne mreže 06 Mar 2019 L05. Sekvencijalne mreže
Registar process (iCLK, inRST) begin if (inRST = ‘0’) then sREG <= (others => ‘0’); elsif (iCLK’event and iCLK = ‘1’) then sREG <= iD; end if; end process; 06 Mar 2019 L05. Sekvencijalne mreže
Registar – varijacije ponašanja Dozvola upisa u registar if (iEN = ‘1’) then sREG <= iD; end if; 06 Mar 2019 L05. Sekvencijalne mreže
Pomerački registar process (iCLK, inRST) begin if (inRST = ‘0’) then sREG <= (others => ‘0’); elsif (iCLK’event and iCLK = ‘1’) then -- primer: logičko pomeranje u levo sREG <= sREG(6 downto 0) & ‘0’; end if; end process; 06 Mar 2019 L05. Sekvencijalne mreže
Pomerački registar – podsetnik pomeranja Logičko pomeranje u levo / desno Aritmetičko pomeranje u levo / desno (II komplement) VHDL (primer logičkog pomeranja u levo) oY <= iX(6 downto 0) & ‘0‘; 7 6 5 4 3 2 1 7 6 5 4 3 2 1 6 5 4 3 2 1 ‘0’ ‘0’ 7 6 5 4 3 2 1 7 6 5 4 3 2 1 7 6 5 4 3 2 1 6 5 4 3 2 1 ‘0’ 7 6 5 4 3 2 1 06 Mar 2019 L05. Sekvencijalne mreže
Pomerački registar – podsetnik pomeranja Aritmetičko pomeranje u predstavi znak-moduo Aritmetičko pomeranje u predstavi I komplementa 7 6 5 4 3 2 1 7 6 5 4 3 2 1 7 5 4 3 2 1 ‘0’ 7 ‘0’ 6 5 4 3 2 1 7 6 5 4 3 2 1 7 6 5 4 3 2 1 6 5 4 3 2 1 7 7 6 5 4 3 2 1 06 Mar 2019 L05. Sekvencijalne mreže
Pomerački registar – varijacije ponašanja Dozvola pomeranja if (iEN = ‘1’) then sREG <= sREG(6 downto 0) & ‘0’; end if; 06 Mar 2019 L05. Sekvencijalne mreže
Pomerački registar – varijacije ponašanja Paralelni upis nove vrednosti if (iLOAD = ‘1’) then sREG <= iD; else sREG <= sREG(6 downto 0) & ‘0’; end if; 06 Mar 2019 L05. Sekvencijalne mreže
Pomerački registar – varijacije ponašanja Različiti tipovi pomeranja if (iDIR = ‘1’) then sREG <= sREG(7) & sREG(7 downto 1); else sREG <= sREG(6 downto 0) & ‘0’; end if; 06 Mar 2019 L05. Sekvencijalne mreže
Barrel pomerač 06 Mar 2019 L05. Sekvencijalne mreže
Brojač process (iCLK, inRST) begin if (inRST = ‘0’) then sREG <= (others => ‘0’); elsif (iCLK’event and iCLK = ‘1’) then sREG <= sREG + 1; end if; end process; 06 Mar 2019 L05. Sekvencijalne mreže
Brojač – varijacije ponašanja Dozvola brojanja, smer brojanja, korak brojanja if (iEN = ‘1’) then sREG <= sREG - 4; end if; 06 Mar 2019 L05. Sekvencijalne mreže
Brojač – varijacije ponašanja Paralelni upis nove vrednosti if (iLOAD = ‘1’) then sREG <= iD; else sREG <= sREG + 1; end if; 06 Mar 2019 L05. Sekvencijalne mreže
Brojač – varijacije ponašanja Moduo brojanja if (sCNT = 99) then sREG <= (others => ‘0’); else sREG <= sREG + 1; end if; 06 Mar 2019 L05. Sekvencijalne mreže
Brojač – varijacije ponašanja Terminal Count – komparator sTC <= ‘1’ when sCNT = 99 else ‘0’; 06 Mar 2019 L05. Sekvencijalne mreže
Složeni sekvencijalni sistemi Kako se ponaša sistem kada registri pričaju među sobom? Redna veza registara i kombinacionih mreža Protočnost podataka Ako bude vremena, uraditi primer protočnosti podataka kroz neko računanje kroz nekoliko registara. 06 Mar 2019 L05. Sekvencijalne mreže
Provera rada sekvencijalnih sistema Stimulus proces treba da počne sa resetom sistema inRST <= ‘0’; wait for 5 * iCLK_period; inRST <= ‘1’; Nakon toga vreme igra ulogu, paziti koliko taktova traje ulaz! 06 Mar 2019 L05. Sekvencijalne mreže
06 Mar 2019 L05. Sekvencijalne mreže