digeldl zbirka z_cjelina12[2]

51
Zavod za elektroniku, mikroelektroniku, računalne i inteligentne sustave Marko Čupić, dipl. ing. ZBIRKA RIJEŠENIH ZADATAKA IZ DIGITALNE ELEKTRONIKE I DIGITALNE LOGIKE Zagreb, 2005

Upload: zana-pervan

Post on 20-Jul-2015

51 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Digeldl zbirka z_cjelina12[2]

Zavod za elektroniku, mikroelektroniku, računalne i inteligentne sustave

Marko Čupić, dipl. ing.

ZBIRKA RIJEŠENIH

ZADATAKA IZ

DIGITALNE

ELEKTRONIKE I

DIGITALNE LOGIKE

Zagreb, 2005

Page 2: Digeldl zbirka z_cjelina12[2]

Registri. 227

10. Registri.

10.1. Zadatak Uporabom D bistabila nacrtati shemu 4-bitnog registra s paralelnim ulazima i paralelnim izlazima.

D

Q

Q

CP

D

Q

Q

CP

D

Q

Q

CP

D

Q

Q

CP

Q3

Q2

Q1

Q0

D3

D2

D1

D0

CP

10.2. Zadatak Uporabom D bistabila nacrtati shemu 4-bitnog posmačnog registra sa serijskim ulazom i paralelnim izlazima.

D

Q

Q

CP

D

Q

Q

CP

D

Q

Q

CP

D

Q

Q

CP

D

Q3

Q2

Q1

Q0

CP

10.3. Zadatak Projektirati trobitni posmačni registar uporabom bridom okidanih D bistabila i potrebnog broja multipleksora 4/1. Mogućnosti sklopa su sljedeće:

Page 3: Digeldl zbirka z_cjelina12[2]

228 M. Čupić – Zbirka riješenih zadataka

S1 S0 Funkcija 0 0 Posmak udesno; punjenje bitom Sin 0 1 Posmak ulijevo; punjenje bitom Sin 1 0 Paralelni upis 1 1 Kružni posmak udesno

D

Q

Q

CP

D

Q

Q

CP

D

Q

Q

CP

Sin P

in0 Pin1

Pin2

S0

S1

CP

Pout0

Pout1

Pout2

d0

d1

d2

d3

a0a

1

y

d0

d1

d2

d3

a0a

1

y

d0

d1

d2

d3

a0a

1

y

10.4. Zadatak

Projektirati sklop koji će prolaziti kroz sljedeća stanja: 0 → 8 → 4 → 10 → 5 → 2 → 9 → 12 → 14 → 7 → 3 → 1 → 0 → ... Sklop je potrebno ostvariti uporabom strukture prikazane na slici (posmačni registar + multipleksor). Nespecificirana stanja treba tako riješiti da sklop u minimalnom broju koraka dođe u stanje 0.

Napišimo tablicu promjene stanja:

A DCB

CPSin

d0

d1

d7

d6

d5

d4

d3

d2

1

a0

a1

a2

y

mux 8/1

CP

Page 4: Digeldl zbirka z_cjelina12[2]

Registri. 229

A B C D A' B' C' D' Sin=A' 0 0 0 0 → 1 0 0 0

0 0 0 1 → 0 0 0 0 D

0 0 1 0 → 1 0 0 1

0 0 1 1 → 0 0 0 1 D

0 1 0 0 → 1 0 1 0

0 1 0 1 → 0 0 1 0 D

0 1 1 0 → 0 0 1 1

0 1 1 1 → 0 0 1 1 0

1 0 0 0 → 0 1 0 0

1 0 0 1 → 1 1 0 0 D

1 0 1 0 → 0 1 0 1

1 0 1 1 → 1 1 0 1 D

1 1 0 0 → 1 1 1 0

1 1 0 1 → 0 1 1 0 D

1 1 1 0 → 0 1 1 1

1 1 1 1 → 0 1 1 1 0

Objašnjenje: U svakom retku ABCD predstavlja početno stanje a A'B'C'D' predstavlja novo stanje. Zbog načina na koji je sklop izveden (uporabom posmačnog registra) vrijedi: B'=A, C'=B, D'=C. A' je određen tako da pređemo u ispravno stanje. Međutim, kako odrediti u koja stanja treba prijeći iz stanja koja nisu zadana (6, 11, 13, 15)? Zadan je kriterij da se u tom slučaju kroz minimalni broj stanja treba prijeći u stanje 0. Pogledajmo redom kako smo primjenjivali taj kriterij. Stanje 15 Iz stanja 15 = 1111 možemo prijeći u stanje Sin 111 (vidi sliku). Za Sin=0 to je 7, a za Sin=1 to je 15. Ako smo došli u stanje 7, to stanje je definirano i do nule nam treba još 3 koraka (označeno u zagradi). Uz čvor 7 podvučeno se nalazi i ukupni broj koraka do nule – 3 plus 1 za prijelaz 15 u 7. Ako smo došli u stanje 15, vrtimo se ciklički u krug što nije put prema stanju 0 u minimalnom broju koraka.

15

7 (3) 15

4

Stanje 13 Na isti način kao u prethodnom razmatranju (vidi sliku ispod) možemo utvrditi da iz stanja 13 treba prijeći u stanje 6 (neovisno o tome što to stanje također nije definirano, a alternativno stanje 14 jest). Stanje 11

Page 5: Digeldl zbirka z_cjelina12[2]

230 M. Čupić – Zbirka riješenih zadataka

Iz stanja 11 potrebno je prijeći u stanje 13 (vidi sliku ispod). Prilikom crtanja stabla odluke možemo se zaustaviti na čvoru 13 bez da ga raščlanjujemo jer smo to napravili u prethodnom koraku, i već smo utvrdili da je najkraći put iz stanja 13 do stanja 0 dugačak 4. Stanje 6 Iz stanja 6 potrebno je prijeći u stanje 3 (vidi sliku ispod).

13

14 (4)

5

6

3 (2)

4

11

5 (8)

11

13

11

5 (8)

9

13 (4)

5

6

3 (2)

3

11 (5)

6

Shema traženog sklopa je dakle:

A DCB

CPS

in→

d0

d1

d7

d6

d5

d4

d3

d2

1

a0

a1

a2

y

mux 8/1

CP

0

0

Page 6: Digeldl zbirka z_cjelina12[2]

Registri. 231

10.5. Zadatak

Uporabom potpunog zbrajala i potrebnog broja sinkronih bridom okidanih D registara realizirati sklop koji obavlja serijsko zbrajanje dvaju binarnih brojeva. Objasniti rad sklopa. Prikazati na vremenskom dijagramu proces zbrajanja 4-bitnih brojeva 5 i 9.

Sklop je prikazan na slici.

Si

Ci

Ci-1

Ai

FBi

D

Q

Q

CP

D

Q

Q

CP

Ain

Bin

Reset

CP

Rout

Cout

Bitovi brojeva dovode se serijski na ulaze Ain i Bin pri čemu se najprije dovodi najmanje

značajni bit. Signalom Reset najprije je potrebno resetirati D bistabile. Prvi D bistabil čuva bit rezultata, dok drugi D bistabil čuva bit preljeva potreban za zbrajanje sljedećih značajnijih bitova. Rout čuva rezultat zbrajanja trenutnih bitova a Cout je preljev nastao zbrajanjem bitova koji su u trenutku rastućeg brida CP-a bili na ulazu potpunog zbrajala. Vremenski dijagram prikazan je u nastavku.

Uočiti da signal Reset djeluje asinkrono.

Page 7: Digeldl zbirka z_cjelina12[2]

232 M. Čupić – Zbirka riješenih zadataka

t

Ain

Bin

Reset

CP

Rout

Cout

10

1 10 0

1 0

5 = 0101(2)

9 = 1001(2)

0

0 0 01

1 1 1

14 = 1110(2)

t

t

t

t

t

10.6. Zadatak

Uporabom potrebnog broja D bistabila i multipleksora 2/1 ostvariti 3-bitni registar s mogućnošću paralelnog upisa podataka. Rad registra definiran je signalom L na način:

Signal L Akcija 0 Ostaviti prethodno stanje registra 1 Upisati stanje s paralelnih ulaza

Di su paralelni ulazi, a Qi su izlazi registra.

Page 8: Digeldl zbirka z_cjelina12[2]

Registri. 233

D

Q

Q

CP

0

1a0

y D

Q

Q

CP

0

1a0

y D

Q

Q

CP

0

1a0

y

D0

D1

Q0

D2

Q1

Q2

CP

L

10.7. Zadatak Uporabom dva 4-bitna posmačna registra sa serijskim i paralelnim ulazima i serijskim izlazom čija je funkcionalnost opisana tablicom ostvariti 8-bitni posmačni registar iste funkcionalnosti. Dozvoljeno je još koristiti multipleksor te potreban broj osnovnih logičkih sklopova.

S1 S0 Funkcija 0 0 Posmak udesno; punjenje bitom SRin 0 1 Posmak ulijevo; punjenje bitom SLin 1 0 Paralelni upis 1 1 Resetiranje registra

Za ovaj jednostavan slučaj zadanih operacija sklopovi se mogu spojiti direktno, kao što je prikazano na shemi.

A DCB

CP

SLin

SRin

SLout

SRout

A DCB

CP

SLin

SRin

SLout

SRout

A DCB E HGF

SLin

SRout

SRin

SLout

CP

S0

S1

S0

S1

S0

S1

10.8. Zadatak Uporabom dva 4-bitna posmačna registra sa serijskim i paralelnim ulazima i serijskim izlazom čija je funkcionalnost prikazana tablicom ostvariti 8-bitni posmačni registar iste funkcionalnosti. Dozvoljeno je još koristiti multipleksor 2/1 te dekoder 2/4.

Page 9: Digeldl zbirka z_cjelina12[2]

234 M. Čupić – Zbirka riješenih zadataka

S1 S0 Funkcija 0 0 Posmak udesno; punjenje bitom SRin 0 1 Posmak ulijevo; punjenje bitom SLin 1 0 Paralelni upis 1 1 Kružni posmak udesno

Kao osnova za rješavanje ovog zadatka može nam poslužiti prethodni zadatak. Međutim, potrebno je uočiti bitnu razliku: funkcioniranje sklopa za vrijednost 11 upravljačkih signala. Tada registar interno obavlja kružni pomak u desno, pri čemu se ne koriste izlaz SRout i ulaz SRin. Ako bismo na predloženi način spojili registre, za kombinaciju 11 ne bismo dobili kružni pomak u desno 8-bitnog podatka, već podatak u kojem su prva četiri bita i druga četiri bita kružno pomaknuta u desno. Problem možemo riješiti tako da kružni pomak u desno 8-bitnog podatka obavimo "običnim" pomakom u desno, a izvana zadnji bit podatka vratimo na ulaz prvog registra. Dakle, upravljačke signale ne smijemo direktno dovoditi na ulaze Si. Uvedimo pomoćne signale S0x i S1x (koje ćemo stvarmo dovoditi na upravljačke ulaze) i pomoćni signal K (koji će označavati da se radi o kružnom pomaku). S1 S0 S1x S0x K 0 0 0 0 0

0 1 0 1 0

1 0 1 0 0

1 1 0 0 1

Iz tablice možemo očitati tražene funkcije (odnosno minterme):

2011mSSS

x== ,

1010mSSS

x== ,

301mSSK == .

Konačni sklop tada je prikazan na sljedećoj slici:

Page 10: Digeldl zbirka z_cjelina12[2]

Registri. 235

A DCB

CPS

Lin

SRin

SLout

SRout

A DCB

CPS

Lin

SRin

SLout

SRout

A DCB E HGF

SLin

SRout

SRin

SLout

CP

S0

S1

S0

S1

d0

d1a

y

a0

a1

d0

d1

d2

d3

dek 2/4

S0

S1

10.9. Zadatak

Napisati strukturni model 4-bitnog posmačnog registra sa serijskim ulazom i paralelnim izlazima, te ulazom za reset. Kao osnovu za opis registra koristiti komponentu Dbistabil opisanu u zadatku 8.4.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

ENTITY Reg4bit IS PORT ( Sin, Reset: IN std_logic; Q: OUT std_logic_vector( 3 DOWNTO 0); Clock: IN std_logic

); END Reg4bit;

ARCHITECTURE Structural OF Reg4bit IS COMPONENT Dbistabil IS PORT ( D, Reset: IN std_logic; Q, Qn: OUT std_logic; Clock: IN std_logic

); END COmponent; SIGNAL Qint: std_logic_vector( 3 DOWNTO 0); BEGIN

-- povezivanje pojedinih D bistabila u 4-bitni registar D3: Dbistabil PORT map (Sin, Reset, Qint(3), open, Clock); D2: Dbistabil PORT map (Qint(3), Reset, Qint(2), open, Clock); D1: Dbistabil PORT map (Qint(2), Reset, Qint(1), open, Clock); D0: Dbistabil PORT map (Qint(1), Reset, Qint(0), open, Clock);

-- preslikavanje izlaza bistabila na izlaz 4-bitnog registra

Page 11: Digeldl zbirka z_cjelina12[2]

236 M. Čupić – Zbirka riješenih zadataka

Q <= Qint; END Structural;

10.10. Zadatak

Ponašajnim VHDL-om modelirati registar prikazan slikom. Registar nailaskom impulsa CP pohranjuje vrijednost narinutu na njegovom ulazu. Upravljački ulazi S i C (postavljanje i brisanje) moraju biti sinkroni. Svi signali moraju biti isključivo ulazni odnosno izlazni.

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY d_reg IS PORT ( clk, s, c: IN std_logic; d: IN std_logic_vector (1 downto 0); q: OUT std_logic_vector (1 downto 0)

); END d_reg;

ARCHITECTURE Behavioral OF d_reg IS BEGIN

PROCESS (clk, s, c, d) BEGIN IF (falling_edge(clk)) THEN IF (s = '0') THEN

q <= "11"; ELSIF (c = '0') THEN

q <= "00"; ELSE

q <= d; END IF; END IF; END PROCESS;

END Behavioral;

D

S

C

CP

Q2 2

Page 12: Digeldl zbirka z_cjelina12[2]

Registri. 237

10.11. Zadatak

Korištenjem registra iz prethodnog zadatka nacrtati shemu 5-bitnog posmačnog registra prikazanog na slici i napisati odgovarajuću specifikaciju u VHDL-u. Operacije koje obavlja registar određene su ulazom ctrl: 00 – ne događa se ništa, 01 – posmak u desno, 10 – paralelni upis te 11 – nedefinirano. Napomena: sklop iz prethodnog zadatka upotrebljavati kao crnu kutiju!

Nacrtajmo najprije kako bismo spojili sve potrebne sklopove. Nepotpuna shema prikazana je u nastavku:

Za realizaciju sklopa koristimo tri sklopa iz prethodnog zadatka čime dobivamo mogućnost izrade čak 6-bitnog registra (pa nećemo iskoristiti sve – lijeva strana sklopa r2 ostat će neiskorištena). Uočimo sada ulaze i izlaze sklopa. Ulazi su pin (5-bitni vektor), sin, ctrl (2-bitni vektor), reset i clk, dok je izlaz pout (5-bitni vektor). Vektori su prikazani u točkastom pravokutniku. Također koristimo dva interna signala: pint (6-bitni vektor) i pouti (6-bitni vektor). Uvidom u shemu sklopa očito je da se interni signal pouti direktno spaja na izlaz sklopa pout. No trebamo utvrditi što treba spojiti na signal pint. Analizirajmo funkciju sklopa. Kada je na ctrl vrijednost 00, sklop treba zadržati postojeće stanje. To znači da mora vrijediti pint(i)=pouti(i); što je bilo na izlazu, to treba doći na ulaz kako bi se u sljedećem koraku opet pojavilo na izlazu. Ovaj slučaj, dakle, možemo opisati izrazom: pint(i) <= not crtl(1) and not ctrl(0) and pouti(i).

Za slučaj da je na ctrl vrijednost 10, sklop treba obaviti paralelni upis, tj.:

CP

reset

Sin

Pin

Pout

ctrl

5

52

Page 13: Digeldl zbirka z_cjelina12[2]

238 M. Čupić – Zbirka riješenih zadataka

pint(i) <= crtl(1) and not ctrl(0) and pin(i).

Konačno, za slučaj da je na ctrl vrijednost 01, sklop treba obaviti posmak udesno i punjenje lijeve pozicije s ulaza sin, tj. gledajući sliku treba vrijediti: pint(4) <= not crtl(1) and ctrl(0) and sin,

pint(i) <= not crtl(1) and ctrl(0) and pouti(i+1), za 0<=i<4. Kako je ponašanje za kombinaciju 11 nedefinirano, izrazi se mogu pojednostavniti, tako da se promatraju slučajevi kada su oba bita ctrl u 0, nulti u 1 ili pak prvi u jedan. Kako su analizirani slučajevi potpuno disjunktni, navedeni izrazi za sve slučajeve mogu se spojiti logičkom operacijom ILI, iz čega slijedi navedeno rješenje. Nekorišteni ulaz pint(5) spaja se ne logičku jedinicu. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY shift is PORT ( pout: OUT std_logic_vector (4 DOWNTO 0); sin, reset, clk: IN std_logic; ctrl: IN std_logic_vector (1 DOWNTO 0); pin: IN std_logic_vector (4 DOWNTO 0)

); END shift;

ARCHITECTURE Structural OF shift IS

COMPONENT d_reg PORT ( clk, s, c: IN std_logic; d: IN std_logic_vector (1 DOWNTO 0); q: OUT std_logic_vector (1 DOWNTO 0)

); END COMPONENT;

SIGNAL pint: std_logic_vector(5 DOWNTO 0); SIGNAL pouti: std_logic_vector(5 DOWNTO 0);

BEGIN

pint (0) <= (ctrl(1) AND pin(0)) OR (ctrl(0) AND pouti(1)) OR (NOT ctrl(1) AND NOT ctrl(0) AND pouti(0)); pint (1) <= (ctrl(1) AND pin(1)) OR (ctrl(0) AND pouti(2)) OR (NOT ctrl(1) AND NOT ctrl(0) AND pouti(1)); pint (2) <= (ctrl(1) AND pin(2)) OR (ctrl(0) AND pouti(3)) OR (NOT ctrl(1) AND NOT ctrl(0) AND pouti(2)); pint (3) <= (ctrl(1) AND pin(3)) OR (ctrl(0) AND pouti(4)) OR (NOT ctrl(1) AND NOT ctrl(0) AND pouti(3)); pint (4) <= (ctrl(1) AND pin(4)) OR (ctrl(0) AND sin) OR (NOT ctrl(1) AND NOT ctrl(0) AND pouti(4));

pint (5) <= '0'; r0: d_reg PORT MAP (clk, '1', reset, pint (1 DOWNTO 0), pouti(1 DOWNTO 0)); r1: d_reg PORT MAP (clk, '1', reset, pint (3 DOWNTO 2),

Page 14: Digeldl zbirka z_cjelina12[2]

Registri. 239

pouti(3 DOWNTO 2)); r2: d_reg PORT MAP (clk, '1', reset, pint (5 DOWNTO 4), pouti(5 DOWNTO 4));

pout <= pouti(4 DOWNTO 0);

END Structural; Zašto je uopće uveden interni signal (vektor) pouti? Razlog tomu je činjenica da interni signal pint koji se dovodi na ulaze dvobitnih registara ovisi o trenutnom izlazu sklopa. No kako je trenutni izlaz sklopa (pout) u opisu sklopa proglašen izlaznim (out), njegova se vrijednost ne može čitati! Da bismo riješili taj problem, možemo postupiti dvojako: ili pout proglasiti ulazom/izlazom (dakle, u VHDL-u to bi bilo inout), ili uvesti interni signal koji direktno spajamo na izlaz sklopa. Prvo rješenje je loše jer može rezultirati sintezom dodatnog sklopovlja (kako bi se osiguralo da se s tih pinova sklopa doista može i čitati i pisati). Drugo je rješenje, iz očitog razloga, bolje.

10.12. Zadatak Uporabom potrebnog broja sinkronih bridom okidanih JK bistabila ostvariti 4-bitni posmačni registar sa serijskim ulazom i paralelnim izlazom. Dozvoljeno je koristiti jedan invertor.

J

Q

Q

CP

K

J

Q

Q

CP

K

J

Q

Q

CP

K

J

Q

Q

CP

K1

D0

D1

D2

D3

CP

Sin

Objašnjenje: Prvi bistabil uporabom invertora pretvoren je u D bistabil koji je i inače osnova za izgradnju registara. Međutim, kako smo time potrošili raspoložive invertore, potrebno se je dosjetiti kako i ostale JK bistabile pretvoriti u D bistabile. To nije preteško jer je uvjet da bismo iz JK bistabila dobili D bistabil upravo dovođenje komplementarnih vrijednosti na ulaze J i K. No komplementarne vrijednosti već imamo na izlazu prethodnog bistabila, pa je dovoljno samo spojiti izlaz bistabila sa J ulazom sljedećeg JK bistabila, a komplementirani izlaz sa K ulazom.

Page 15: Digeldl zbirka z_cjelina12[2]

240 M. Čupić – Zbirka riješenih zadataka

10.13. Zadatak

Prikazati funkciju sklopa 74LS194. Opisati sklop ponašajnim VHDL-om.

Sklop 74LS194 ima funkciju posmačnog registra, čije je sučelje prikazano na slici, a funkcija opisana tablicom:

• Posmak u lijevo ide od A prema D • Posmak u desno ide od D prema A • CLR je asinkron

S1 S0 Akcija QA* QB* QC* QD* 0 0 Zadrži QA QB QC QD 0 1 Posmak desno RIN QA QB QC 1 0 Posmak lijevo QB QC QD LIN 1 1 Učitaj A B C D

library IEEE; use IEEE.std_logic_1164.all;

ENTITY SHREG74LS194 IS PORT ( CLK, CLR, RIN, LIN : IN STD_LOGIC; S : IN STD_LOGIC_VECTOR(1 DOWNTO 0); D : IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END SHREG74LS194;

ARCHITECTURE SHREG_ARCH OF SHREG74LS194 IS SIGNAL IQ : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS (CLK, CLR, IQ) BEGIN

IF (CLR='1') THEN

IQ <= "0000"; ELSIF (CLK'event AND CLK='1') THEN CASE S IS WHEN "00" => NULL; WHEN "01" => IQ <= RIN & IQ(3 DOWNTO 1); WHEN "10" => IQ <= IQ(2 DOWNTO 0) & LIN; WHEN "11" => IQ <= D; WHEN OTHERS => NULL; END CASE; END IF;

Q <= IQ; END PROCESS;

END SHREG_ARCH;

Page 16: Digeldl zbirka z_cjelina12[2]

Registri. 241

10.14. Zadatak

Ponašajnim VHDL-om modelirati 8-bitni posmačni registar sa serijskim i paralelnim ulazima i paralelnim izlazom, čija je funkcija zadana tablično:

S2 S1 S0 Akcija 0 0 0 Zadrži 0 0 1 Učitaj 0 1 0 Posmak u desno, punjenje s LIN 0 1 1 Posmak u lijevo, punjenje s RIN 1 0 0 Ciklički posmak u desno 1 0 1 Ciklički posmak u lijevo 1 1 0 Aritmetički posmak u desno 1 1 1 Aritmetički posmak u lijevo

Signal za brisanje CLR mora biti izveden asinkrono.

library IEEE; use IEEE.std_logic_1164.all;

ENTITY SHREG IS PORT ( CLK, CLR, RIN, LIN : IN STD_LOGIC; S : IN STD_LOGIC_VECTOR(2 DOWNTO 0); D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END SHREG;

ARCHITECTURE SHREG_ARCH OF SHREG IS SIGNAL IQ : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS (CLK, CLR, IQ) BEGIN

IF (CLR='1') THEN IQ <= (OTHERS=>'0'); ELSIF (CLK'event AND CLK='1') THEN CASE S IS WHEN "000" => NULL; WHEN "001" => IQ <= D; WHEN "010" => IQ <= LIN & IQ(7 DOWNTO 1); WHEN "011" => IQ <= IQ(6 DOWNTO 0) & RIN; WHEN "100" => IQ <= IQ(0) & IQ(7 DOWNTO 1); WHEN "101" => IQ <= IQ(6 DOWNTO 0) & IQ(7); WHEN "110" => IQ <= IQ(7) & IQ(7 DOWNTO 1); WHEN "111" => IQ <= IQ(6 DOWNTO 0) & '0'; WHEN OTHERS => NULL; END CASE; END IF;

Q <= IQ; END PROCESS;

END SHREG_ARCH;

Page 17: Digeldl zbirka z_cjelina12[2]

242 M. Čupić – Zbirka riješenih zadataka

10.15. Pismeni ispit, 09. 02. 2004, 1. zadatak

Na raspolaganju su sljedeći elementi: trobitni posmačni registar (s upravljačkim ulazom RS / : 0 – rotacija, 1 – posmak; vidi sliku), D bistabil te multipleksor 2/1. Samo njihovom uporabom projektirati četverobitni posmačni registar istih mogućnosti.

Sin

Q2Q

1Q

0

CPRS /

D Q

CP

1

0

1

Q3Q

2Q

1Q

0

Sin

RS /

CP

Sin

Q2Q

1Q

0

CPRS /

Page 18: Digeldl zbirka z_cjelina12[2]

Registri. 243

ZADACI ZA VJEŽBU

1. Na raspolaganju su tri 4-bitna registra čija je funkcija opisana tablicom, a sučelje prikazano slikom. Uporabom samo tih registara i tri multipleksora 4/1 (gdje/ako treba) nacrtati shemu 12-bitnog registra koji:

a) ima istu funkcionalnost kao i 4-bitni registar b) ima istu funkcionalnost kao i 4-bitni registar, samo što umjesto posmaka obavlja

rotaciju. Za b) dio zadatka K-tablicama pronaći minimalni oblik funkcija Sin svakog registra. Ctrl1 Ctrl0 Funkcija

0 0 Čuva se trenutno pohranjen podatak. 0 1 Posmak u desno, punjenje sa Sin. 1 0 Posmak u lijevo, punjenje sa Sin. 1 1 Paralelni upis.

2. Nacrtati potpuni dijagram prijelaza stanja 4-bitnog posmačnog registra udesno. Registar

ima serijski ulaz, paralelne izlaze te na svaki padajući brid CP-a obavlja posmak udesno. Napisati ponašajni model ovog sklopa u VHDL-u.

3. Na raspolaganju je posmačni registar sa serijskim ulazom i paralelnim izlazima. Njegovom uporabom projektirati sekvencijski sklop koji na izlazu ciklički generira slijed 0,1,1,0,0,1,1,1. Na raspolaganju su još i osnovni logički sklopovi.

4. Na raspolaganju je 3-bitni registar s paralelnim ulazima i paralelnim izlazima. Njegovom uporabom projektirati sekvencijski sklop koji na izlazu ciklički generira slijed 0,1,3,2,6,7,5,4.

Page 19: Digeldl zbirka z_cjelina12[2]
Page 20: Digeldl zbirka z_cjelina12[2]

Brojila. 245

11. Brojila.

11.1. Zadatak Asinkrono binarno brojilo sastavljeno je od 3 dvostruka JK bistabila. Na ulaz brojila dovode se impulsi takta. Projektirati sklop temeljen na ovom brojilu koji će nakon svakih osam impulsa takta na izlazu dati jedinicu. Koje stanje treba dekodirati ako se želi raditi na maksimalnoj frekvenciji? Na raspolaganju su još samo NI sklopovi.

Asinkrono brojilo ostvareno JK bistabilima prikazano je na slici. Uočiti da se JK bistabili zapravo koriste kao T bistabili (J=K=1).

J

K Q

Q

CP

J

K Q

Q

CP

J

K Q

Q

CP

1

CP

B0

B1

B2

Kako imamo brojilo od 3 bistabila, ukupan broj stanja kroz koja bistabili prolaze jest upravo 8 (=23). Obzirom da moramo nakon svakih 8 impulsa na izlazu generirati 1, to upravo znači da možemo detektirati jedno od 8 stanja. Naime, ako npr. generiramo jedinicu kada se na izlazu brojila pojavi 6, do sljedećeg pojavljivanja broja 6 opet će proći osam otkucaja takta. Dodatni uvjet zadatka zahtjeva maksimalno brz odziv sklopa. Pogledajmo zato koliko nam vremena treba da bismo detektirali broj 6 na izlazu. Kada brojilo prelazi sa 5 na 6, mijenjaju se dva bita: B2 B1 B0 B2 B1 B0 Broj bitova koji se mijenja 1 0 1 → 1 1 0 2 U trenutku kada dođe impuls takta na ulaz bistabila B0, stanje tog bistabila se mijenja iz 1 u 0 nakon tdb. Zbog te promjene se nakon novih tdb mijenja stanje bistabila B1 iz 0 u 1 (tdb je vrijeme potrebno za promjenu stanja bistabila). Da bismo dekodirali stanje 6 (tj. 1102), odnosno minterm

012BBB :

( )( )012012012

,, BBBNINIBBBBBB ==

(napomena: 0

B ne treba ostvarivati NI sklopom jer iz svakog bistabila imamo izlaz i

njegov komplement) trebamo sklop:

& &

2B

1B

0B

Page 21: Digeldl zbirka z_cjelina12[2]

246 M. Čupić – Zbirka riješenih zadataka

Ovaj sklop će za dekodiranje stanja 6 trebati još 2 tdls (jedan za NI sklop koji množi

2B ,

1B i

0B , i jedan za završni invertor; tdls je vrijeme potrebno da rezultat prođe na

izlaz logičkog sklopa), pa će ukupno vrijeme potrebno za dekodiranje ovog stanja biti:

dlsdbdekttt ⋅+⋅= 22

6

Pitanje je da li se to može obaviti i brže. Pogledajmo sva moguća stanja koja možemo dekodirati i koliko je to brzo moguće:

B2 B1 B0 B2 B1 B0 Broj bitova koji se

mijenja Vrijeme dekodiranja

stanja 1 1 1 → 0 0 0 3 dlsdbdek

ttt ⋅+⋅= 230

0 0 0 → 0 0 1 1 dlsdbdekttt ⋅+⋅= 21

1

0 0 1 → 0 1 0 2 dlsdbdekttt ⋅+⋅= 22

2

0 1 0 → 0 1 1 1 dlsdbdekttt ⋅+⋅= 21

3

0 1 1 → 1 0 0 3 dlsdbdekttt ⋅+⋅= 23

4

1 0 0 → 1 0 1 1 dlsdbdekttt ⋅+⋅= 21

5

1 0 1 → 1 1 0 2 dlsdbdekttt ⋅+⋅= 22

6

1 1 0 → 1 1 1 1 dlsdbdekttt ⋅+⋅= 21

7

Vidimo da su najbolji kandidati za dekodiranje stanja 1, 3, 5 i 7. Odlučimo li se za dekodiranje stanja 7, konačni sklop će izgledati:

J

K Q

Q

CP

J

K Q

Q

CP

J

K Q

Q

CP

1

CP

B0

B1

B2

& & m7

Page 22: Digeldl zbirka z_cjelina12[2]

Brojila. 247

11.2. Zadatak

Realizirati asinkrono brojilo sa 12 stanja uporabom dvostrukih JK bistabila. Pri tome se koristiti: a) Asinkronim ulazom za postavljanje, b) Asinkronim ulazom za brisanje. Odrediti potreban broj bistabila. Na raspolaganju su još i NI sklopovi. Ako je poznato da je tdls = 10 ns, tdb = 20 ns a točitanja = 20 ns, odrediti za svaki slučaj maksimalnu frekvenciju rada sklopa.

Ako brojilo mora proći kroz N stanja, mora vrijediti n

N 2≤ , gdje je n broj bistabila. Ova jednadžba ima beskonačno mnogo rješenja, ali mi ćemo naravno uzeti najmanji mogući n koji je zadovoljava, pa je time rješenje jednoznačno. Za N=12 traženi n je 4, jer je upravo 16212

4=≤ .

a) Uporaba asinkronog ulaza za postavljanje. Kada se aktivira asinkroni ulaz za postavljanje, brojilo prelazi u stanje "sve jedinice", tj. četiri-bitno brojilo prelazi u stanje 1111(2) = 15, što traje do sljedećeg impulsa CP. No kako je stanje 15 stanje koje pripada skupu stanja kroz koje brojilo prolazi, pogledajmo kroz koja još stanja brojilo mora prolaziti:

15→0→1→2→3→4→5→6→7→8→9→10→11→12→13→14→15

12 stanja

postaviti u 15

Na prethodnom dijagramu vidimo kada treba djelovati na ulaze za postavljanje: kada brojilo dođe do broja 11 (što je zapravo N-1), brojilo je potrebno prebaciti u stanje 15. Stanje 11 (

0123BBBB ) može se potpuno dekodirati uporabom 4 ulazni NI sklopa. Sklop

je sljedeći:

Page 23: Digeldl zbirka z_cjelina12[2]

248 M. Čupić – Zbirka riješenih zadataka

J

K Q

Q

CP

dS

dC

B0

J

K Q

Q

CP

dS

dC

B1

J

K Q

Q

CP

dS

dC

B2

J

K Q

Q

CP

dS

dC

B3

&

D0

D1

D2

D3

CP

1

Vremenska analiza Da bismo utvrdili kojom maksimalnom frekvencijom smiju dolaziti impulsi takta, potrebno je razmotriti dva vremena: (i) vrijeme potrebno za slijednu promjenu stanja u ciklusu brojanja i (ii) vrijeme potrebno za povratak na početak ciklusa. Maksimalna frekvencija rada određena je većim od ta dva vremena.

B2 B2 B1 B0 B2 B2 B1 B0 Broj bitova koji se

mijenja 1 1 1 1 → 0 0 0 0 4 0 0 0 0 → 0 0 0 1 1 0 0 0 1 → 0 0 1 0 2 0 0 1 0 → 0 0 1 1 1 0 0 1 1 → 0 1 0 0 3 0 1 0 0 → 0 1 0 1 1 0 1 0 1 → 0 1 1 0 2 0 1 1 0 → 0 1 1 1 1 0 1 1 1 → 1 0 0 0 4 1 0 0 0 → 1 0 0 1 1 1 0 0 1 → 1 0 1 0 2 1 0 1 0 → 1 0 1 1 1 Najveći broj promjena bitova je 4, pa je najveće vrijeme potrebno za slijednu promjenu stanja u ciklusu brojanja (bez očitavanja) jednako 802044 =⋅=⋅

dbt ns. Ovaj dio

mogao se je riješiti i bez izrade tablice, obzirom da su kod ovog tipa brojila stanja "sve nula" i "sve jedan" sastavni i susjedni dijelovi ciklusa brojanja, tako da će maksimalno vrijeme ovdje biti određeno kao kašnjenje jednog bistabila puta broj bistabila u brojilu. Za izračun vremena potrebnog za povratak na početak ciklusa promotrimo zadnje stanje u ciklusu:

Page 24: Digeldl zbirka z_cjelina12[2]

Brojila. 249

B2 B2 B1 B0 B2 B2 B1 B0 Broj bitova koji se

mijenja 1 0 1 0 → 1 0 1 1 1

Na signal takta brojilo iz 1010 prelazi u 1011 za što je potrebno

dbt⋅1 . Zatim nakon

vremena dlst⋅1 reagira sklop za detekciju stanja 11 i generira signal za postavljanje na

ulaze svih bistabila. Bistabili reagiraju paralelno i nakon još dbt⋅1 svi su u stanju 1 čime

je završena promjena. Ukupno vrijeme potrebno za ovu operaciju tada je 5010120212111 =⋅+⋅=⋅+⋅=⋅+⋅+⋅

dlsdbdbdlsdbttttt ns. Ovaj račun donekle je

neprecizan jer novi impuls ne bi smio stići tako dugo dok je signal za postavljanje aktivan (pa bismo trebali sačekati još

dlst⋅1 nakon što se svi bistabili postave tako da

logički NI sklop ukloni taj signal). Međutim, ovo vrijeme maskira se vremenom očitanja koje je puno duže, pa u ovom slučaju ne igra nikakvu ulogu. Veće od ova dva vremena je prvo, pa je maksimalna frekvencija rada sklopa određena recipročnom vrijednošću sume prvog vremena i vremena potrebnog za očitavanje stanja:

MHznsnsns

f 10100

1

2080

1

max==

+

=

b) Uporaba asinkronog ulaza za brisanje. Kada se aktivira asinkroni ulaz za brisanje, brojilo prelazi u stanje "sve nule", tj. četiri-bitno brojilo prelazi u stanje 0000(2) = 0, što traje do sljedećeg impulsa CP. No kako je stanje 0 stanje koje pripada skupu stanja kroz koje brojilo prolazi, pogledajmo kroz koja još stanja brojilo mora prolaziti:

0→1→2→3→4→5→6→7→8→9→10→11→12→13→14→15→0

12 stanja

postaviti u 0

Na prethodnom dijagramu vidimo kada treba djelovati na ulaze za brisanje: kada brojilo dođe do broja 12 (što je zapravo N), brojilo je potrebno prebaciti u stanje 0. Stanje 12 može se potpuno dekodirati (4 ulazni I sklop). Međutim, u ovom slučaju (kada se koriste brojila koja broje unaprijed i ulaz za brisanje) dovoljno je na ulaze NI sklopa dovesti one izlaze brojila koji su u stanju koje dekodiramo postavljeni na 1. Dakle, kod dekodiranja stanja 12 = 1100(2) na ulaze NI sklopa dovodimo izlaze B3 i B2. Sklop je sljedeći:

Page 25: Digeldl zbirka z_cjelina12[2]

250 M. Čupić – Zbirka riješenih zadataka

J

K Q

Q

CP

dS

dC

B0

J

K Q

Q

CP

dS

dC

B1

J

K Q

Q

CP

dS

dC

B2

J

K Q

Q

CP

dS

dC

B3

&

CP

1

D0

D1

D2

D3

Analiziramo li malo bolje ovaj sklop, uočiti ćemo da bi sklop mogao imati problema u radu. Naime, u trenutku kada sklop dođe u stanje 12, aktivira se ulaz za brisanje. No kako bistabili općenito nisu identični, moguće je da npr. bistabil B3 ode u nulu puno prije bistabila B2. No čim B3 ode u nulu, stanje više nije 12 (1100(2)), već 4 (0100(2)). Zbog toga sklop za detekciju stanja 12 prestaje biti aktivan te je moguće da bistabil B2 ostane i dalje postavljen, jer je signal za reset trajao prekratko. Kako bi se ovo izbjeglo, može se uporabom još dva NI sklopa ostvariti bistabil koji će se resetirati na signal za reset, a postaviti u neaktivno stanje signalom takta, kao što je prikazano na slici:

J

K Q

Q

CP

dS

dC

B0

J

K Q

Q

CP

dS

dC

B1

J

K Q

Q

CP

dS

dC

B2

J

K Q

Q

CP

dS

dC

B3

&

CP

1

D0

D1

D2

D3

&

&&

Q

QR

S

Kod ove izvedbe, čak i ako se npr. B3 resetira puno ranije od B2, što će za posljedicu imati prestanak djelovanja signala koji detektira stanje 12, signal za reset će i dalje djelovati jer je on pohranjen u bistabilu koji će se postaviti u neaktivno stanje (1) tek kada CP postane 1 (CP djeluje sa 1 jer ga naknadno dodatni NI sklop invertira).

Page 26: Digeldl zbirka z_cjelina12[2]

Brojila. 251

Vremenska analiza (bez pomoćnog bistabila) Ukoliko je zadovoljen zahtjev o minimalnom broju bistabila, tada će i u ovom slučaju postojati prijelaz u kojem svi bistabili mijenjaju stanje. To znači da je najveće vrijeme potrebno za slijednu promjenu stanja u ciklusu brojanja (bez očitavanja) jednako

802044 =⋅=⋅dbt ns (jer imamo 4 bistabila).

Za izračun vremena potrebnog za povratak na početak ciklusa promotrimo zadnje stanje u ciklusu:

B2 B2 B1 B0 B2 B2 B1 B0 Broj bitova koji se

mijenja 1 0 1 1 → 1 1 0 0 3 Na signal takta brojilo iz 1011 prelazi u 1100 za što je potrebno

dbt⋅3 . Zatim nakon

vremena dlst⋅1 reagira sklop za detekciju stanja 12 i generira signal za postavljanje na

ulaze svih bistabila. Bistabili reagiraju paralelno i nakon još dbt⋅1 svi su u stanju 0 čime

je završena promjena. Ukupno vrijeme potrebno za ovu operaciju tada je 9010120414113 =⋅+⋅=⋅+⋅=⋅+⋅+⋅

dlsdbdbdlsdbttttt ns.

Veće od ova dva vremena je drugo, pa je maksimalna frekvencija rada sklopa određena recipročnom vrijednošću sume drugog vremena i vremena potrebnog za očitavanje stanja:

MHznsnsns

f 09,9110

1

2090

1max

==

+

=

Analiza vremena uz pomoćni bistabil Ova analiza nešto je složenija od prethodnog slučaja. Prvo vrijeme je isto ( 802044 =⋅=⋅

dbt ns). Dodajmo tome odmah i vrijeme očitavanja pa za prvi slučaj

imamo 1002080 =+ ns. Izračun vremena potrebnog za povratak na početak ciklusa je nešto kompliciranije. Promotrimo situaciju kada je brojilo u stanju 11. Na padajući brid CPa (od tog trenutka mjerimo vrijeme) brojilo nakon

dbt⋅3 prelazi u stanje 12. Nakon

dlst⋅1 reagira sklop za detekciju stanja 12 i generira signal za reset pomoćnog bistabila.

Za reset pomoćnog bistabila potrebno je dlst⋅2 . Sada je izlaz pomoćnog bistabila 0 pa

se paralelno resetiraju svi bistabili brojila. Za što je potrebno jošdbt⋅1 . Označimo ovaj

trenutak oznakon tx. Za vrijeme tx temeljem prethodnog razmatranja vrijedi:

dlsdbdbdlsdlsdbxttttttt ⋅+⋅=⋅+⋅+⋅+⋅= 341213 . Tek sada CP smije otići u 1, čime će se

na izlazu invertora nakon dlst⋅1 pojaviti 0 koja će još nakon

dlst⋅1 postaviti pomoćni

bistabil u 1 (ovime će se prestati djelovati na asinkrone ulaze za brisanje i brojilo će biti spremno za novi impuls CPa). Uočimo da je tx zapravo vrijeme od padajućeg brida CPa pa do pojave rastućeg brida CPa. Ako je signal CP simetričan, tada će minimalno trajanje periode CPa biti

xt⋅2 , ako je vrijeme očitavanja (koje također smije započeti

tek nakon tx) manje od tx. U suprotnom (točitanja > tx) će perioda CPa biti TCP=tx+točitanja. U našem konkretnom slučaju 11010320434 =⋅+⋅=⋅+⋅=

dlsdbxttt ns, što je puno

Page 27: Digeldl zbirka z_cjelina12[2]

252 M. Čupić – Zbirka riješenih zadataka

veće od točitanja. Zbog toga uzimamo 22011022 =⋅=⋅=xCPtT ns, što je definitivno

najveće dobiveno vrijeme koje zbog toga određuje maksimalnu frekvenciju sklopa:

MHznsT

fCP

55,4220

11max

===

Treba međutim primjetiti da ovo ipak nije najveća moguća frekvencija rada sklopa. Naime, da bi CP postavio pomoćni bistabil u 1, njemu treba

dlst⋅1 (za prolaz kroz

invertor) i dlst⋅1 za postavljanje izlaza pomoćnog bistabila u 1, što je ukupno

dlst⋅2 . No

tada bi (teoretski) CP mogao preći u 1 čak i u trenutku dlsxtt ⋅− 2 (jer će se bistabili

brojila u trenutku tx resetirati, pa se pomoćni bistabil smije postaviti u 1 već u trenutku tx). Ovime bi se možda mogla povećati maksimalna frekvencija rada, međutim, ovakav proračun vrijedi uz pretpostavku da će se svi bistabili resetirati upravo nakon

dbt⋅1 . No

pomoćni bistabil smo i uveli jer nismo mogli garantirati da će ovo biti uvijek ispunjeno, pa na ovaj način nećemo raditi. Dodatak zadatku: smijemo li prilikom uporabe brojila koji broji unaprijed dekodirati samo jedinice u svrhu resetiranja brojila? Pogledajmo slučaj koji smo imali u b) dijelu zadatka, i minimizirajmo sklop za dekodiranje stanja 12. Brojilo u ovom slučaju broji: 0→1→...→9→10→11→(12→)0. Ovo znači da se stanja 13, 14 i 15 nikada neće pojaviti, pa ih možemo označiti kao dont-care minterme. Postupak minimizacije daje:

D3D2

00 01 11 10

D1D0 00 0 0 1 0

01 0 0 × 0

11 0 0 × 0

10 0 0 × 0

23DD

čime su upravo izbačeni oni članovi koji su bili nula. No to vrijedi upravo zato što dekodiramo najveći dozvoljeni broj. Ako bismo željeli dekodirati stanja u svrhu postavljanja brojila u stanje "sve jedan", ovakvo razmišljanje ne bi vrijedilo (npr. a) dio zadatka; dekodiramo 11, ali brojilo prelazi u 15 pa nije istina da su sva stanja veća od 11 dont-care stanja). Za vježbu:

Nacrtati vremenske dijagrame za a) i b) dijelove zadatka.

Page 28: Digeldl zbirka z_cjelina12[2]

Brojila. 253

11.3. Zadatak

Realizirati sinkrono trobitno binarno brojilo uporabom dvostrukih JK bistabila.

J

K Q

Q

CP

B0

J

K Q

Q

CP

B1

J

K Q

Q

CP

B2

CP

1

D0

D1

D2

&

11.4. Zadatak

Realizirati sinkrono trobitno binarno brojilo koje broji u Grayevom kodu uporabom dvostrukih JK bistabila, i potrebnog broja osnovnih logičkih sklopova.

Napišimo tablicu promjene stanja u upišimo potrebne pobude bistabila:

n n+1 Q2 Q1 Q0 Q2 Q1 Q0 J2 K2 J1 K1 J0 K0 0 0 0 0 0 1 0 × 0 × 1 ×

0 0 1 0 1 1 0 × 1 × × 0

0 1 1 0 1 0 0 × × 0 × 1

0 1 0 1 1 0 1 × × 0 0 ×

1 1 0 1 1 1 × 0 × 0 1 ×

1 1 1 1 0 1 × 0 × 1 × 0

1 0 1 1 0 0 × 0 0 × × 1

1 0 0 0 0 0 × 1 0 × 0 ×

Očitavamo Ji i Ki kao funkcije od Q2, Q1 i Q0 u trenutku n i vršimo minimizaciju:

J2 Q1Q0

00 01 11 10

Q2 0 1

1 × × × ×

K2 Q1Q0

00 01 11 10

Q2 0 × × × ×

1 1

Page 29: Digeldl zbirka z_cjelina12[2]

254 M. Čupić – Zbirka riješenih zadataka

J1 Q1Q0

00 01 11 10

Q2 0 1 × ×

1 × ×

K1 Q1Q0

00 01 11 10

Q2 0 × ×

1 × × 1

J0 Q1Q0

00 01 11 10

Q2 0 1 × ×

1 × × 1

K0 Q1Q0

00 01 11 10

Q2 0 × 1 ×

1 × 1 ×

12120

12120

021

021

012

012

QQQQK

QQQQJ

QQK

QQJ

QQK

QQJ

+=

+=

=

=

=

=

J

K Q

Q

CP

J

K Q

Q

CP

& J

K Q

Q

CP

&

CP

D0

D1

D2

B0

B1

B2

&&

1≥

1≥

&

&

&

&

11.5. Zadatak

Realizirati sinkrono trobitno brojilo uporabom dvostrukih JK bistabila, i potrebnog broja osnovnih logičkih sklopova, koje prolazi kroz stanja: 0→4→1→5→7→0. Osigurati siguran start brojila (tako da se nespecificirana stanja prebace u 0).

Napišimo tablicu prijelaza zajedno sa odgovarajućom pobudom bistabila:

Page 30: Digeldl zbirka z_cjelina12[2]

Brojila. 255

n n+1 Q2 Q1 Q0 Q2 Q1 Q0 J2 K2 J1 K1 J0 K0 0 0 0 1 0 0 1 × 0 × 0 ×

0 0 1 1 0 1 1 × 0 × × 0

0 1 0 0 0 0 0 × × 1 0 ×

0 1 1 0 0 0 0 × × 1 × 1

1 0 0 0 0 1 × 1 0 × 1 ×

1 0 1 1 1 1 × 0 1 × × 0

1 1 0 0 0 0 × 1 × 1 0 ×

1 1 1 0 0 0 × 1 × 1 × 1

Očitavamo Ji i Ki kao funkcije od Q2, Q1 i Q0 u trenutku n i vršimo minimizaciju:

J2 Q1Q0

00 01 11 10

Q2 0 1 1

1 × × × ×

K2 Q1Q0

00 01 11 10

Q2 0 × × × ×

1 1 1 1

J1 Q1Q0

00 01 11 10

Q2 0 × ×

1 1 × ×

K1 Q1Q0

00 01 11 10

Q2 0 × × 1 1

1 × × 1 1

J0 Q1Q0

00 01 11 10

Q2 0 × ×

1 1 × ×

K0 Q1Q0

00 01 11 10

Q2 0 × 1 ×

1 × 1 ×

10

120

1

021

012

12

1

QK

QQJ

K

QQJ

QQK

QJ

=

=

=

=

+=

=

Shema sklopa:

Page 31: Digeldl zbirka z_cjelina12[2]

256 M. Čupić – Zbirka riješenih zadataka

J

K Q

Q

CP

J

K Q

Q

CP

J

K Q

Q

CP

CP

D0

D1

D2

1≥

&

1

&B

0B

1B

2

11.6. Zadatak

Realizirati sinkrono trobitno brojilo uporabom dvostrukih JK bistabila, i potrebnog broja osnovnih logičkih sklopova, koje prolazi kroz stanja: 0→4→1→5→7→0. Nije potrebno osigurati siguran start brojila. Provjeriti da li će tako realizirano brojilo raditi ispravno.

Napišimo tablicu prijelaza zajedno sa odgovarajućom pobudom bistabila:

n n+1 Q2 Q1 Q0 Q2 Q1 Q0 J2 K2 J1 K1 J0 K0 0 0 0 1 0 0 1 × 0 × 0 ×

0 0 1 1 0 1 1 × 0 × × 0

0 1 0 × × × × × × × × ×

0 1 1 × × × × × × × × ×

1 0 0 0 0 1 × 1 0 × 1 ×

1 0 1 1 1 1 × 0 1 × × 0

1 1 0 × × × × × × × × ×

1 1 1 0 0 0 × 1 × 1 × 1

Napomena: prijelazi za stanja 2, 3 i 6 nisu zadani pa su u tablici označeni kao dont-care. Zbog toga je i odgovarajuća pobuda označena s dont-care. Očitavamo Ji i Ki kao funkcije od Q2, Q1 i Q0 u trenutku n i vršimo minimizaciju:

J2 Q1Q0

00 01 11 10

Q2 0 1 1 × ×

1 × × × ×

K2 Q1Q0

00 01 11 10

Q2 0 × × × ×

1 1 1 ×

Page 32: Digeldl zbirka z_cjelina12[2]

Brojila. 257

J1 Q1Q0

00 01 11 10

Q2 0 × ×

1 1 × ×

K1 Q1Q0

00 01 11 10

Q2 0 × × × ×

1 × × 1 ×

J0 Q1Q0

00 01 11 10

Q2 0 × × ×

1 1 × × ×

K0 Q1Q0

00 01 11 10

Q2 0 × × ×

1 × 1 ×

Shema sklopa:

J

K Q

Q

CP

J

K Q

Q

CP

J

K Q

Q

CP

CP

D0

D1

D2

1≥

&

1

1

Provjera rada za nespecificirana stanja: Ako je sklop u stanju 2: 010

012=QQQ . J2=1, K2=1, J1=0, K1=1, J0=0 i K0=1, zbog čega

će nakon djelovanja impulsa takta brojilo promijeniti stanje u 100012=QQQ , što je

stanje 4. Ako je sklop u stanju 3: 011

012=QQQ . J2=1, K2=1, J1=0, K1=1, J0=0 i K0=1, zbog čega

će nakon djelovanja impulsa takta brojilo promijeniti stanje u 100012=QQQ , što je

stanje 4. Ako je sklop u stanju 6: 110

012=QQQ . J2=1, K2=1, J1=0, K1=1, J0=1 i K0=1, zbog čega

će nakon djelovanja impulsa takta brojilo promijeniti stanje u 001012=QQQ , što je

stanje 1. Dakle, i ovako realiziran sklop će nakon prvog koraka sigurno ući u ciklus brojenja. Moguće loša stvar je činjenica da je ulazak u ciklus brojenja iz nespecificiranih stanja na različita mjesta.

Page 33: Digeldl zbirka z_cjelina12[2]

258 M. Čupić – Zbirka riješenih zadataka

11.7. Zadatak

Projektirati trobitno asinkrono brojilo koje broji u ciklusu sa 7 stanja. Analizirati da li sklop radi ispravno i predložiti rješenje uočenog problema. Za realizaciju brojila koristiti T bistabile s ulazom za postavljanje stanja.

Ako koristimo ulaze za postavljanje, tada je stanje 111(2)≡7 sigurno dio ciklusa brojanja jer djelovanjem na ove ulaze sklop odlazi u to stanje. Kako nam treba još 6 stanja, kompletan ciklus brojanja biti će: 7 → 0 → 1 → 2 → 3 → 4 → 5 → (6) → 7 Moramo detektirati stanje 6 i djelovati na ulaze za postavljanje. 6=110(2), pa je shema sklopa:

T

Q

Q

CP

B0

T

Q

Q

CP

B1

T

Q

Q

CP

B2

11 1

D0

D1

D2

ulaz

dS

dS

dS

&

Analizirajmo sada rad sklopa (sljedeća slika). Pretpostavimo da su u jednom trenutku svi bistabili postavljeni u 0, pa se brojilo nalazi u stanju 0. Nailaskom padajućeg brida ulaznog impulsa pokreće se promjena stanja bistabila B0. Međutim, ta se promjena događa tek nakon vremena kašnjenja bistabila (tdb), tako da je sve do isteka vremena kašnjenja bistabila brojilo još uvijek u stanju 0. Nakon vremena kašnjenja bistabila bistabil mijenja stanje i brojilo prelazi u stanje 1. Kako se je na izlazu B0 (ulazu B1) dogodio rastući brid, bistabil B1 ne reagira i došli smo u stabilno stanje. Nailaskom sljedećeg padajućeg brida na ulazu brojila opet se pokreće promjena stanja bistabila B0, koja se i dogodi nakon tdb, pa brojilo iz stanja 1 ulazi u stanje 0. No kako se je sada uslijed pada izlaza B0 sa 1 na 0 dogodio padajući brid, pokreće se promjena stanja bistabila B1, koja se dogodi nakon još jednog tdb. Time brojilo iz kratkotrajnog prijelaznog stanja 0 prelazi u stanje 2. Kako se je u tom trenutku na izlazu B1 dogodio rastući brid, nema nikakvog utjecaja na bistabil B2 pa je ovo stabilno stanje. Na sličan se način mogu analizirati i ostala stanja. Pogledajmo sada još kakav je odziv logičkog sklopa za detekciju stanja 6. Neka se brojilo nalazi u stanju 5. Nailaskom padajućeg brida na ulazu brojila pokreće se promjena stanja B0, koja se dogodi nakon tdb. Time brojilo dolazi u stanje 4. No budući da se je bistabil B0 prešao iz stanja 1 u stanje 0 (tj. dogodio se je padajući brid), reagira i bistabil B1 koji nakon još jednog tdb mijenja stanje u 1, čime brojilo iz prijelaznog stanja

Page 34: Digeldl zbirka z_cjelina12[2]

Brojila. 259

4 prelazi u stanje 6. No sada će na stanje 6 reagirati sklop za detekciju stanja 6, i nakon vremena kašnjenja logičkog sklopa (tdls) na izlazu će se pojaviti logička 0 koja se dovodi na ulaze za postavljanje bistabila. Bistabili će svi reagirati nakon vremena kašnjenja bistabila, i ući u stanje 7. Ovo će rezultirati nestankom stanja 6 koje detektira logički sklop pa će se nakon vremena kašnjenja logičkog sklopa na njegovom izlazu ponovno pojaviti neaktivno stanje. Time je završen nasilan prekid ciklusa brojanja. Prema dosadašnjoj analizi čini se da će ovo brojilo raditi bez problema, kao što je to prikazano na vremenskom dijagramu.

01 2 3 54

6 7 0 1 2 3

CP

Q0

Q1

Q2

R

6 4

0 02 4 0

Međutim, nastavimo analizu dalje. Brojilo je u stanju 7. Na sljedeći padajući brid signala na ulazu sklopa nakon 1 tdb prvi bistabil mijenja stanje, i dolazi u prijelazno stanje 110(2)≡6. No baš to stanje očitava i NI sklop, koji zatim generira impuls za postavljanje bistabila u stanje 7! Brojilo nikada više neće izaći iz stanja 7. Zapravo, kako zabranjeno stanje 6 traje točno tdb, a vrijeme potrebno za postavljanje bistabila također smo modelirali sa tdb, moguća je još gora situacija – bistabili se ponekad mogu postaviti, a ponekad mogu i ne reagirati na signal, pa dobijemo stohastičko ponašanje. Postoji više načina kako riješiti ovaj problem. U nastavku će biti opisana dva. Prvi način rješavanja problema je dovođenje dodatnog signala X na NI sklop, pri čemu je signal X definiran na sljedeći način: X je 0 od trenutka padajućeg brida (označimo to vrijeme sa tp) ulaznog signala minus vrijeme kašnjenja logičkog sklopa, dakle od tp-tdls, pa do trenutka dok ne završe sve prijelazne pojave unutar brojila plus vrijeme kašnjenja logičkog sklopa: tp+3*tdb+tdls, dok je u svim ostalim trenucima 1. Evo kako ovo rješava problem. U trenutku kada započnu prijelazne pojave signal X postaje 0. Zbog toga u trenutku kada brojilo iz stanja 7 uđe u prijelazno stanje 6 sklop za

CP

X

t

t

Maskiranje prijelaznih pojava

Page 35: Digeldl zbirka z_cjelina12[2]

260 M. Čupić – Zbirka riješenih zadataka

detekciju stanja 6 neće reagirati jer ga signal X inhibira. Tek kada završe sve prijelazne pojave, X će postati 1 i tada će sklop NI moći reagirati. Međutim, kako smo sada u stabilnom stanju 0, sklop neće reagirati, i problem je riješen. Negativna posljedica ovakvog rješenja je kasna reakcija na stvarno stanje 6. Naime, bez ove modifikacije sklop je detektirao stanje 6 nakon 1*tdb+1*tdls i postavio signal za postavljanje svih bistabila. Sa modifikacijom sklop za detekciju stanja 6 reagirati će tek kada mu to X dozvoli, a to je nakon (3*tdb+1*tdls)+1*tdls, što će rezultirati značajno duljim ostankom u nedozvoljenom stanju 6. Alternativa prethodnom rješenju je uporaba ulaznog signala kao signala X (tako da nam ne treba još jedan generator novog signala), ali tada treba uzeti u obzir da ulazni signal mora biti takvog oblika da vrijeme tijekom kojega je u nuli bude dovoljno dugo da maskira sve prijelazne pojave kao što je to radio signal X opisan prethodno.

11.8. Zadatak

Prikazati funkciju sklopa 74LS163. Opisati sklop ponašajnim VHDL-om.

Sklop 74LS163 jest asinkrono 4-bitno brojilo, čije je sučelje prikazano na slici.

• LD (load) i CLR (clear) djeluju sinkrono • Aktivan LD tijekom rastućeg brida signala takta učitava stanje

brojila s ulaza ABCD. • Aktivan CLR tijekom rastućeg brida signala takta briše brojilo (tj.

upisuje sve nule) • CLR nadjačava LD • LD nadjačava ENP i ENT • Ako je ENT=1 i ENP=1 brojilo se inkrementira • RCO = QD⋅QC⋅QB⋅QA⋅ENT, koristi se za kaskadiranje čipova

library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all;

ENTITY C74LS163 IS PORT ( CLK, CLR, LD : IN STD_LOGIC; ENP, ENT : IN STD_LOGIC; D : IN UNSIGNED (3 DOWNTO 0); Q : OUT UNSIGNED (3 DOWNTO 0); RCO : OUT STD_LOGIC ); END C74LS163;

ARCHITECTURE C74LS163_ARCH OF C74LS163 IS SIGNAL IQ : UNSIGNED (3 DOWNTO 0); BEGIN

PROCESS (CLK, ENT, IQ) BEGIN

IF (CLK'event AND CLK='1') THEN IF CLR='0' THEN

IQ <= "0000"; ELSIF LD='0' THEN

IQ <= D; ELSIF (ENT='1' AND ENP='1') THEN

Page 36: Digeldl zbirka z_cjelina12[2]

Brojila. 261

IQ <= IQ +1; END IF; END IF ; IF (IQ=15) AND (ENT='1') THEN

RCO <='1'; ELSE

RCO <= '0'; END IF;

Q <= IQ; END PROCESS;

END C74LS163_ARCH;

11.9. Zadatak

Uporabom SR bistabila projektirati 4-bitno prstenasto brojilo. Nacrtati potpuni dijagram prijelaza stanja. Da li je to brojilo sa sigurnim startom?

Četiribitno prstenasto brojilo je brojilo koje broji u sljedećem ciklusu: … → 1000 → 0100 → 0010 → 0001 → 1000 → … Karakteristika brojila je ciklus brojanja kroz n stanja, pri čemu je za realizaciju potrošeno n bistabila.

Trenutno stanje Sljedeće stanje Potrebna pobuda Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3 S0 R0 S1 R1 S2 R2 S3 R3 0 0 0 0 × × × × × × × × × × × ×

0 0 0 1 1 0 0 0 1 0 0 × 0 × 0 1

0 0 1 0 0 0 0 1 0 × 0 × 0 1 1 0

0 0 1 1 × × × × × × × × × × × ×

0 1 0 0 0 0 1 0 0 × 0 1 1 0 0 ×

0 1 0 1 × × × × × × × × × × × ×

0 1 1 0 × × × × × × × × × × × ×

0 1 1 1 × × × × × × × × × × × ×

1 0 0 0 0 1 0 0 0 1 1 0 0 × 0 ×

1 0 0 1 × × × × × × × × × × × ×

1 0 1 0 × × × × × × × × × × × ×

1 0 1 1 × × × × × × × × × × × ×

1 1 0 0 × × × × × × × × × × × ×

1 1 0 1 × × × × × × × × × × × ×

1 1 1 0 × × × × × × × × × × × ×

1 1 1 1 × × × × × × × × × × × ×

Minimizacijom slijedi:

23QS = ,

23QR =

12QS = ,

12QR =

01QS = ,

01QR =

30QS = ,

30QR =

Page 37: Digeldl zbirka z_cjelina12[2]

262 M. Čupić – Zbirka riješenih zadataka

Sklop koji je definiran ovim izrazima prikazan je na sljedećoj slici.

Q

Q

Q

Q

Q

Q

Q

Q

Analizom projektiranog sklopa dolazi se do sljedećeg potpunog dijagrama prijelaza stanja:

Prilikom dekodiranja stanja Q3 je promatran kao bit najveće, a Q0 kao bit najmanje težine. Iz dijagrama je vidljivo da ovo nije sklop sa sigurnim startom.

11.10. Zadatak

Uporabom SR bistabila projektirati 4-bitno Johnsonovo brojilo. Nacrtati potpuni dijagram prijelaza stanja. Da li je to brojilo sa sigurnim startom?

Četiribitno Johnsonovo brojilo je brojilo koje broji u sljedećem ciklusu: … → 0000 → 1000 → 1100 → 1110 → 1111 → 0111 → 0011 → 0001 → 0000 → … Karakteristika brojila je ciklus brojanja kroz 2⋅n stanja, pri čemu je za realizaciju potrošeno n bistabila.

Page 38: Digeldl zbirka z_cjelina12[2]

Brojila. 263

Trenutno stanje Sljedeće stanje Potrebna pobuda

Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3 S0 R0 S1 R1 S2 R2 S3 R3 0 0 0 0 1 0 0 0 1 0 0 × 0 × 0 ×

0 0 0 1 0 0 0 0 0 × 0 × 0 × 0 1

0 0 1 0 × × × × × × × × × × × ×

0 0 1 1 0 0 0 1 0 × 0 × 0 1 × 0

0 1 0 0 × × × × × × × × × × × ×

0 1 0 1 × × × × × × × × × × × ×

0 1 1 0 × × × × × × × × × × × ×

0 1 1 1 0 0 1 1 0 × 0 1 × 0 × 0

1 0 0 0 1 1 0 0 × 0 1 0 0 × 0 ×

1 0 0 1 × × × × × × × × × × × ×

1 0 1 0 × × × × × × × × × × × ×

1 0 1 1 × × × × × × × × × × × ×

1 1 0 0 1 1 1 0 × 0 × 0 1 0 0 ×

1 1 0 1 × × × × × × × × × × × ×

1 1 1 0 1 1 1 1 × 0 × 0 × 0 1 0

1 1 1 1 0 1 1 1 0 1 × 0 × 0 × 0

Minimizacijom slijedi:

23QS = ,

23QR =

12QS = ,

12QR =

01QS = ,

01QR =

30QS = ,

30QR =

Sklop koji je definiran ovim izrazima prikazan je na sljedećoj slici.

Q

Q

Q

Q

Q

Q

Q

Q

Zbog specifične realizacije, sklop je poznat i pod nazivom brojilo s ukrštenim prstenom. Analizom projektiranog sklopa dolazi se do sljedećeg potpunog dijagrama prijelaza stanja:

Page 39: Digeldl zbirka z_cjelina12[2]

264 M. Čupić – Zbirka riješenih zadataka

Prilikom dekodiranja stanja Q3 je promatran kao bit najveće, a Q0 kao bit najmanje težine. Iz dijagrama je vidljivo da ovo nije sklop sa sigurnim startom. ZADACI ZA VJEŽBU

1. Nacrtati 4 bitno asinkrono binarno brojilo unatrag izvedeno JK bistabilima. Ako je period signala koji se broji 100 ns, a kašnjenje bistabila 20 ns, nacrtati vremenski dijagram svih signala prilikom promjene stanja brojila iz 4 u 3.

2. Na raspolaganju su 2 D i 1 JK bistabil. Projektirati njihovom uporabom (i minimalnim brojem osnovnih logičkih sklopova) sinkrono brojilo koje broji u ciklusu 0 → 5 → 2 → 7 → 4 → 0. Da li je dobiveni sklop sklop sa sigurnim startom? Nacrtati potpuni dijagram prijelaza stanja. Prilikom rješavanja koristiti JK bistabil za pamćenje bita najmanje težine.

3. Na raspolaganju je 3 T bistabila i minimalni potreban broj osnovnih logičkih sklopova. Projektirati sinkroni sklop čiji je izlaz 2-bitni broj koji se mijenja u ciklusu: 0→1→2→3→2→1.

4. Brojilo je prikazano slikom. Nacrtati potpuni dijagram prijelaza stanja brojila. Da li je to brojilo sa sigurnim startom? Ako je poznato: tdb = 20 ns, tsetup = 20 ns, tdls = 10 ns, kolika je maksimalna frekvencija signala CP? Da li ovaj sklop pripada sinkronim ili asinkronim sklopovima?

Q

Q

Q

Q

Q

Q1≥

Page 40: Digeldl zbirka z_cjelina12[2]

Memorije. 309

13. Memorije.

13.1. Zadatak Prikazati osnovnu memorijsku ćeliju kod permanentne memorije izvedene diodnim poljem. Prikazati memoriju tipa 4×8 izvedenu ovom tehnologijom, u koju je upisan sljedeći sadržaj: ED, 2D, DA, AD.

Pohranjena logička nula Pohranjena logička jedinica

WL

BL

WL

BL

Pri tome WL označava liniju riječi (engl. Word Line) koja u aktivnom stanju ima logičku jedinicu, a BL označava liniju bita (engl. Bit Line) koja je preko otpora pritegnuta na masu.

WL[0]

WL[1]

WL[2]

WL[3]

BL[0] BL[1] BL[2] BL[3] BL[4] BL[5] BL[6] BL[7]

Sadržaj pohranjen u memoriju (raspisano po bitovima) definiran je tablicom prikazanom u nastavku.

Page 41: Digeldl zbirka z_cjelina12[2]

310 M. Čupić – Zbirka riješenih zadataka

LSB Sadržaj po bitovima MSB Lokacija Sadržaj

b0 b1 b2 b3 b4 b5 b6 b7 0 ED 1 0 1 1 0 1 1 1

1 2D 1 0 1 1 0 1 0 0

2 DA 0 1 0 1 1 0 1 1

3 AD 1 0 1 1 0 1 0 1

13.2. Zadatak

Prikazati osnovnu memorijsku ćeliju kod permanentne memorije izvedene MOSFET-om. Prikazati memoriju tipa 4×8 izvedenu ovom tehnologijom, u koju je upisan sljedeći sadržaj: ED, 2D, DA, AD.

Pohranjena logička nula Pohranjena logička jedinica

WL

BL

WL

BL

Pri tome WL označava liniju riječi (engl. Word Line) koja u aktivnom stanju ima logičku jedinicu, a BL označava liniju bita (engl. Bit Line) koja je preko "otpora" pritegnuta na napajanje ("otpor" je također izveden MOSFET-om).

+UDD

+UDD

+UDD

+UDD

+UDD

+UDD

+UDD

+UDD

WL[0]

WL[1]

WL[2]

WL[3]

BL[0] BL[1] BL[2] BL[3] BL[4] BL[5] BL[6] BL[7]

Page 42: Digeldl zbirka z_cjelina12[2]

Memorije. 311

13.3. Zadatak

Prikazati jednotranzistorsku MOSFET DRAM ćeliju. Objasniti način čuvanja, zapisivanja i čitanja informacije. Pretpostaviti da CS iznosi 50 fF, kapacitet linije bita CB

= 25⋅CS a logičkoj jedinici odgovara napon od 5V. Izračunati napon na liniji BL prilikom čitanja pohranjene logičke jedinice.

Jednotranzistorska MOSFET DRAM ćelija prikazana je na slici.

WL

BL

CS

US

, QS

Podaci se čuvaju na kondenzatoru preko naboja (na slici označeno s QS). Za odnos napona i naboja na kapacitetu vrijedi sljedeća relacija:

SSSUCQ ⋅=

Ako je US=0, tada je QS=0 te je pohranjena logička nula. Ako je US velik, tada je QS>0 te je pohranjena logička jedinica. Ćelija može raditi na tri načina: čuvanje, čitanje i pisanje. Kada ćelija čuva sadržaj, tranzistor je isključen (WL=0) čime se čuva naboj na kondenzatoru. Zapisivanje sadržaja obavlja se postavljanjem vrijednosti na liniju bita (logičko 0 ili logičko 1) te otvaranjem tranzistora (WL=1). Npr. ako zapisujemo logičko 1, na liniju bita dovodimo UDD i zatim otvaramo tranzistor. Kapacitet CS nakon nekog će se vremena nabiti na UDD, i tada možemo zatvoriti tranzistor i ukloniti podatak s linije bita. Čitanje podatka obavlja se dovođenjem jedinice na WL, te očitavanjem napona na liniji bita. Pretpostavimo da je u ćeliji zapisana logička jedinica. Tada će se naboj QS pohranjen na kapacitetu CS nakon otvaranja tranzistora podijeliti na kondenzatore CS i CB (CB je kapacitet same linije bita). Kako su oni spojeni paralelno, podjela će se obaviti tako da napon na oba kondenzatora bude jednak i iznosi UF, tj. vrijedit će sljedeće:

• Prije otvaranja tranzistora:

UB=0 V US>0 V,

SSSUCQ ⋅=

WL=1

BL

CS

CB

FBUU →

FSUU →

Page 43: Digeldl zbirka z_cjelina12[2]

312 M. Čupić – Zbirka riješenih zadataka

• Nakon otvaranja tranzistora: Napon paralele je UF. Prema zakonu o očuvanju naboja:

FBFSSUCUCQ ⋅+⋅=

Zamjenom QS slijedi:

FBFSSSUCUCUC ⋅+⋅=⋅

pa je konačni napon na paraleli tada jednak:

BS

S

SFCC

CUU

+

=

Uz zadane vrijednosti za UF se dobiva:

mVCC

CU

CC

CUU

SS

S

S

BS

S

SF192

251

15

25=

+

⋅=

⋅+

=

+

=

Da je u ćeliji bila zapisana logička nula, konačni napon bio bi jednak nuli, iz čega slijedi da se naponi na liniji bita dobiveni čitanjem nule ili jedinice razlikuju vrlo malo (manje od 1V) pa je za očitavanje tog napona potrebno osjetljivo pojačalo za čitanje. Razlog ovako malog napona jest omjer kapaciteta CS i CB, tj. CB>>CS. Osim toga, nakon čitanja sadržaja ćelije zapisani je podatak izgubljen (napon na CS je prilikom čitanja logičke jedinice pao na svega 192 mV) te je potrebno ponovno zapisati pročitani sadržaj (dakle, čitanje je destruktivno).

13.4. Zadatak

Procijeniti vrijeme čuvanja podatka MOSFET DRAM 1T ćelije. Pretpostaviti da je IL=1 nA, CS=50 fF a ∆US=1V.

Kada je tranzistor isključen, kapacitet CS se ipak izbija određenom strujom curenja IL, te će napon US polako padati.

WL=0

BL

CS

US(t), Q

S(t)

IL

US(t)

t

Umax

U1,min

th

Page 44: Digeldl zbirka z_cjelina12[2]

Memorije. 313

Neka logičkoj razini 1 odgovara napon Umax. Da bi se sadržaj ćelije ispravno očitao, napon na CS smije pasti najniže do napona U1,min, čime je određena razlika napona

min,1max UUUS

−=∆ . Za struju IL vrijedi:

dt

dUC

dt

dQI

S

S

S

L−=−=

Pretpostavimo li da su naponi Umax i U1,min relativno blizu, početak eksponencijale možemo linearizirati, te možemo promatrati da je IL u tom području konstantno. Tada slijedi:

h

S

h

S

S

SLt

UUC

t

UUC

t

UCI

min,1maxmin,1max

0

=−

−=∆

∆−=

odnosno

( )min,1max UU

I

Ct

L

S

h−⋅=

Uz podatke iz zadatka slijedi:

5011

50=⋅=∆⋅= V

nA

fFU

I

Ct

S

L

S

h µs.

13.5. Zadatak

Prikazati CMOS SRAM ćeliju i objasniti načine rada.

Idejno rješenje ćelije prikazano je na slici.

b b

WL

TA

TB

Q Q

Dva invertora povezana su u bistabilni element. Ćelija može raditi na tri načina rada:

• Čuvanje podatka – TA i TB su isključeni (WL=0), te se podatak čuva u bistabilu. • Zapisivanje podatka – TA i TB su uključeni (WL=1); novi podatak dovodi se na

linije b i b čime se mijenja stanje u bistabilu. Isključivanjem TA i TB ćelija čuva novoupisani podatak.

• Čitanje podatka – TA i TB su uključeni (WL=1); linije b i b očitavaju se na pojačalu za čitanje.

Page 45: Digeldl zbirka z_cjelina12[2]

314 M. Čupić – Zbirka riješenih zadataka

Pojačalo za čitanje spojeno je na linije b i b i generira izlaz 0 ako je b < b , odnosno 1 ako je b > b .

Svaki od invertora može se izvesti s 2 tranzistora (tj. tranzistorskim parom PMOS+NMOS), što daje osnovnu 6T ćeliju prikazanu na slici.

b b

WL

+UDD

T1

T2

T3

T4

T5

T6

Postoji i izvedba 4T ćelije, pri čemu su PMOS tranzistori zamijenjeni velikim otpornicima spojenim na UDD.

13.6. Zadatak

Prikazati barem dva načina organizacije memorije čiji je kapacitet 256 bitova, a duljina logičke riječi 8 bitova. Procijeniti duljine linije bita i linije riječi.

Pogledajmo prvo "prirodni" način organizacije memorije: memorijske ćelije koje čuvaju bitove iste logičke riječi smještene su jedna do druge, a pojedine riječi smještene su jedna ispod druge.

WL[0]Mem. riječ 0

Mem. riječ 1

Mem. riječ 2

Mem. riječ N-2

Mem. riječ N-1

WL[1]

WL[2]

WL[3]

WL[N-2]

WL[N-1]

Memorijska ćelija

(1 bit)

M bitova

Dekoder

A[0]

A[1]

A[K-1]

Podaci

Page 46: Digeldl zbirka z_cjelina12[2]

Memorije. 315

Kako je u ovom slučaju kapacitet memorije (C=256 bitova) određen umnoškom broja logičkih riječi (N) i broja bitova u jednoj logičkoj riječi (M), broj logičkih riječi jednak je:

328

256===

M

CN

Za adresiranje nam tada treba K adresnih bitova, pri čemu je K određen izrazom:

NK=2

pa slijedi:

532loglog22

=== NK Procijenimo još i duljine linije riječi i bita. Kao što je poznato, linija riječi (WL) se proteže do svih memorijskih ćelija koje čuvaju bitove iste memorijske riječi. Pretpostavimo li da su dimenzije memorijske ćelije kvadratne, tada će ukupna duljina biti zapravo proporcionalna broju ćelija do kojih linija dolazi, odnosno broju bitova. Linija bita se pak proteže do svih ćelija koje čuvaju isti bit u svakoj memorijskoj riječi. Tako kod ovakve organizacije memorije vrijedi da je duljina linije riječi ≈ 8, a duljina linije bita ≈ 32. Već iz ove niskokapacitetne memorije vidljiv je osnovni problem ovakve ogranizacije: duljina linije bita >> duljina linije riječi (a time je i parazitni kapacitet linije bita vrlo velik). Napomena: U knjizi [Peruško] ovakav način organizacije memorije poznat je kao 2D organizacija. Ukoliko se želi dobiti više informacija o ovom tipu (npr. Google), tada treba obratiti pažnju da je na većini stranih sveučilišta ovaj tip poznat kao 1D organizacija (jer su memorijske riječi organizirane uzduž jedne dimenzije; odozgo prema dolje). Drugi primjer organizacije memorije temelji se ne popravljanju odnosa duljina linija riječi i bita, i prikazan je na sljedećoj slici. Kod ovog pristupa jedna fizička memorijska riječ sadrži P logičkih riječi (svaka logička riječ je duljine M bitova). Cijela memorija pri tome sadrži K

N 2= logičkih riječi. Dekoder retka na temelju viših bitova adrese odabire adresiranu fizičku riječ, čime na ulaze dekodera stupca dolazi P⋅M pohranjenih bitova, tj. sadržaj P logičkih riječi. Dekoder stupca na temelju nižih bitova adrese odabire adresiranu logičku riječ. Dekoder stupca logički se može promatrati kao M multipleksora tipa P/1 gdje se na 0. multipleksor dovode 0. bitovi od P logičkih riječi, na 1. multipleksor dovode 1. bitovi od P logičkih riječi, itd. Proračunajmo sada sve potrebne veličine.

Page 47: Digeldl zbirka z_cjelina12[2]

316 M. Čupić – Zbirka riješenih zadataka

Logička riječ 0 Logička riječ 1 Logička riječ P-1

Logička riječ P Logička riječ P+1 Logička riječ 2P-1

Logička riječ 2P Logička riječ 2P+1 Logička riječ 3P-1

Logička riječ 3P Logička riječ 3P+1

M bitova M bitova M bitova

Fizička riječ 0

Fizička riječ 1

Fizička riječ 2

Memorijska ćelija

(1 bit)

Logička riječ (Q-2)P Logička riječ (Q-2)P+1 Logička riječ (Q-1)P-1

Logička riječ (Q-1)P Logička riječ (Q-1)P+1 Logička riječ QP-1

Fizička riječ Q-2

Fizička riječ Q-1

Dekoder stupca

Dekoder

retk

a

A[L]

A[L+1]

A[K-1]

LMPM 2⋅=⋅

A[0]

A[L-1]

LKQ

= 2

Podaci (M bitova)

Memorija iz zadatka imat će N logičkih riječi, pri čemu je N određen s:

328

256===

M

CN

Za adresiranje N=32 logičke riječi trebamo ukupno:

NK=2

adresnih bitova, pa slijedi:

532loglog22

=== NK Kako je kod ove organizacije ukupni broj logičkih riječi definiran umnoškom

QPN ⋅= gdje su N, P i Q cijeli brojevi, jedno rješenje koje zadovoljava prethodni izraz jest P=2, Q=16. Za adresiranje logičke riječi unutar fizičke riječi koristi se L bitova. Slijedi:

12loglog222

===⇒= PLPL

Dakle, jedan adresni bit dovodi se na dekoder stupca, a preostalih K-L=5-1=4 adresna bita dovode se na dekoder retka. Memorija u tom slučaju ima Q = 24 = 16 fizičkih riječi, gdje svaka fizička riječ sadrži dvije logičke riječi. Proračunajmo još i duljine linija riječi i bita. Jedna fizička riječ sadrži P⋅M=2⋅8=16 bitova, pa je duljina linije riječi ≈ 16. Memorija ima Q=16 fizičkih riječi pa je duljina linije bita ≈ 16.

Page 48: Digeldl zbirka z_cjelina12[2]

Memorije. 317

Napomena: U knjizi [Peruško] ovakav način organizacije memorije poznat je kao 2 ½ D organizacija. Ukoliko se želi dobiti više informacija o ovom tipu (npr. Google), tada treba obratiti pažnju da je na većini stranih sveučilišta ovaj tip poznat kao 2D organizacija (jer su logičke riječi organizirane u 2D matricu, a ne linearno). Za vježbu. Nacrtajte strukture memorija uz proračunate parametre. Drugi dio zadatka ima više mogućih rješenja (tj. jednadžba N=P⋅Q ima više rješenja u skupu cijelih brojeva). Pronađite sva rješenja. Proračunajte duljine linija riječi i bita za te slučajeve.

13.7. Pismeni ispit, 09. 02. 2004, 9. zadatak Zadana je uređena n-torka P=(8,1,5,2,3,3,12,14,7,2,0,1,6,6,2,4). Funkcija F(i) vraća i-ti element od P (npr. F(0)=8). Projektirati sklop koji ostvaruje ovu funkciju. Na raspolaganju su ispisna memorija 8×8 te 4 multipleksora 2×1. Prikazati sadržaj memorije po lokacijama, u heksadekadskom obliku.

Memorija koju imamo na raspolaganju pohranjuje riječi širine 8 bita, a za pohranu svakog broja koji trebamo vratiti nužna su samo 4 bita. Zbog toga ćemo na svaku memorijsku lokaciju pohranjivati po dva broja. Sadržaj memorije prikazan je u nastavku:

lokacija: Sadržaj memorije (hex)

0 1 8 1 2 5 2 3 3 3 E C 4 2 7 5 1 0 6 6 6 7 4 2

Sklop je prikazan na slici:

Page 49: Digeldl zbirka z_cjelina12[2]

318 M. Čupić – Zbirka riješenih zadataka

RAM

8 x 8

D7

D6

D5

D4

D3

D2

D1

D0

0101 0101

A2

A1

A0

I3

I2

I1

I0

O3

O2

O1

O0

13.8. Zadatak

Na raspolaganju je potreban broj memorijskih modula prikazanih na slici. Njihovom uporabom projektirati memoriju 512×3.

Kako memorijski modul ima 8 adresnih linija, očito je da može adresirati 256 memorijskih lokacija, svaka širine jednog bita. Budući da trebamo 512 memorijskih lokacija, morat ćemo iskoristiti 512/256=2 memorijska modula, kako bismo dobili memoriju koja može adresirati 512 memorijskih lokacija. Budući da memorijske riječi moraju biti široke 3 bita, trebat ćemo još 3/1=3 memorijska modula u paraleli. Ideja rješenja prikazana je na slici desno.

Svako polje predstavlja jedan memorijski modul. Analizom slike može se uočiti kako je razlika između gornjih i donjih modula u najvišem bitu: A8. I upravo ćemo taj bit koristiti za selekciju onog rezultata koji će se pojaviti na izlazu sklopa. Shema spajanja prikazana je na slici:

WR /

000

0FF

100

1FF

1. bit

000

0FF

100

1FF

2. bit

000

0FF

100

1FF

3. bit

Page 50: Digeldl zbirka z_cjelina12[2]

Memorije. 319

WR /

WR /

WR /

WR /

WR /

WR /WR /

Podatkovni izlazi gornjih i donjih memorijskih modula spojeni su preko ILI sklopa:

goreoutdoljeoutgoreoutdoljeout DDDD,,,,

+=⋅

Naime, ti su izlazi izvedeni s otvorenim kolektorom, a njihovim kratkim spajanjem i pritezanjem na napajanje ostvarili smo I logičku funkciju komplemenata izlaza. Kada to na kraju invertiramo, dobivamo ILI logičku operaciju. Kada je A8 jednak 0, donji moduli su onemogućeni (CE=0), a gornji su omogućeni. Zbog toga na izlaz prolaze podaci pohranjeni u gornjim modulima. Kada je A8 jednak 1, gornji moduli su onemogućeni (CE=0), a donji su omogućeni. Zbog toga na izlaz prolaze podaci pohranjeni u donjim modulima. ZADACI ZA VJEŽBU

1. Objasnite organizacije memorijskih čipova kod statičkih i dinamičkih poluvodičkih memorija. Navedite i objasnite tipične predstavnike istih.

2. Na raspolaganju je potreban broj modula ispisne memorije kapaciteta 16 4-bitnih riječi. Nacrtajte izvedbu memorije za pohranu 64 okteta (bajtova). Na raspolaganju je još i potreban broj multipleksora 2/1.

3. Kod jednotranzistorske MOSFET DRAM ćelije poznato je da CS iznosi 100 fF, kapacitet linije bita CB

= 25⋅CS a logičkoj jedinici odgovara napon od 5V. Izračunati napon na liniji BL prilikom čitanja pohranjene logičke jedinice.

4. Za jednotranzistorsku MOSFET DRAM ćeliju procijenite vrijeme čuvanja podatka. Pretpostaviti da je IL=1 nA, CS=50 fF a ∆US=1V.

5. Prikazati permanentnu memoriju tipa 4×8 izvedenu diodnim poljem, u koju je upisan tekst "ABBA" (odnosno ASCII kodovi).

6. Prikazati permanentnu memoriju tipa 4×8 izvedenu MOSFET-om, u koju je upisan tekst "ABBA" (odnosno ASCII kodovi).

Page 51: Digeldl zbirka z_cjelina12[2]