Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Rekisterit ja laskurit

Samankaltaiset esitykset


Esitys aiheesta: "Rekisterit ja laskurit"— Esityksen transkriptio:

1 Rekisterit ja laskurit
HTOL Digitaalitekniikan perusteet Luku 14 Sivu 1 (32) Luentokalvoseloste Fe Rekisterit ja laskurit R C1 SRG4 R C1/ CTRDIV16 1R G2 2CT=15 G3 C1/2,3 + 1D 1D 3 CT

2 Johdanto Tässä luvussa
esitellään keskeiset salpoja ja kiikkuja mutkikkaammat yleiskäyttöiset sekvenssipiirielimet: rinnakkaisrekisterit, siirtorekisterit ja laskurit esitetään näiden piirielinten merkittävimpiä sovelluksia käydään läpi rinnakkaisrekisterityypit ja niiden ominaisuudet käydään läpi keskeiset siirtorekisterityypit ja niiden ominaisuudet esitetään tapoja synnyttää ajoituspulssisekvenssejä esitellään rinnakkais- ja sarjamuotoisen tiedonsiirron periaate käydään läpi keskeiset laskurityypit ja niiden ominaisuudet esitetään rinnakkaisrekisterin, siirtorekisterin ja laskurin VHDL-kuvaukset Luvun tavoitteena on saada näkemys keskeisistä sekvenssipiirielimistä ja niiden sovelluksista oppia suunnittelemaan ajoituspulssipiirejä ymmärtää rinnakkais- ja sarjamuotoisen tiedonsiirron periaate

3 1 1 1 1 REG Rekisterit Rekisterit ovat kiikuista muodostettuja piirejä
tallettavat kiikkumäärän mukaisen sanan tietoa esimerkki 8-bittisen rekisterin sisällöstä Rinnakkaisrekisterit useita erillisiä D-kiikkuja yhteinen kellosignaali ehkä yhteinen nollaussignaali Siirtorekisterit tieto siirtyy rekisterin bitistä seuraavaan kellopulssin aktiivisella reunalla Erillispiireinä saatavilla bittimäärä yleensä 4, 8 tai 16 Ohjelmoitavissa logiikkaverkoissa ja asiakaspiireissä rekisterit muodostetaan piirin sisäisistä kiikuista 1 1 1 1

4 REG Rinnakkaisrekisteri
Yksinkertaisin rekisterityyppi on rinnakkaisrekisteri Rinnakkaisrekisterissä on n kpl D-kiikkuja, joilla on yhteinen kellotulo ja ehkä nollaustulo Erillisissä rinnakkaisrekistereissä on 4, 6, 8, 10, 16 tai 18 kiikkua/paketti Esimerkki: 4-bittinen rinnakkaisrekisteri Piirikaavio R C1 1D Q0 Q1 Q2 Q3 D0 D1 D2 D3 CLK RES Piirrosmerkki RES R Toimintataulukko CLK C1 RES CLK Qi D0 1D Q0 X D1 Q1 D2 Q2 1 Di D3 Q3

5 Toiminnan sallintatulolla varustettu rinnakkais-rekisteri
Periaate C1 1D Qi Di CLK MUX G1 1 LOAD Lataus- eli sallintatulo LOAD LOAD = 0: rekisterin tila ei muutu LOAD = 1: normaali toiminta Esimerkki: 4-bittinen rekisteri ? 1 Q0 Q1 Q2 Q3 D0 D1 D2 D3 CLK LOAD Piirrosmerkki 2D G1 1C2 1 Toimintataulukko LOAD Qi (t+1) Qi (t) Di (t) REG

6 REG Nollaus- ja toiminnan sallintatulolla varustetun rinnakkaisrekisterin VHDL-kuvaus ENTITY par_reg_resn_load_8 IS PORT( d: IN BIT_VECTOR (0 TO 7); resn, load, clk: IN BIT; q: OUT BIT_VECTOR (0 TO 7)); END par_reg_resn_load_8; ARCHITECTURE behavior OF par_reg_resn_load_8 IS BEGIN PROCESS (resn, clk) BEGIN IF resn = '0' THEN q <= " "; ELSIF clk'EVENT AND clk = '1' THEN IF load = '1' THEN q <= d; END IF; END PROCESS; END behavior; q(0) q(1) q(2) q(3) d(0) d(1) d(2) d(3) clk load 2D G1 1C2 resn R q(4) q(5) q(6) q(7) d(4) d(5) d(6) d(7)

7 Rinnakkaisrekisterien käyttökohteet
REG Rinnakkaisrekisterien käyttökohteet ASM:n tilarekisteri ASM:n tulo- ja lähtösignaalien tallennusrekisteri Tulosignaalien tallennusrekisteri Lähtösignaalien tallennusrekisterit CLK INA ASM:n kombi- naatio- piiri OUTA G1 G1 1C2 1C2 2D OUTB INB 2D G1 C1 Tila- rekisteri 1C2 1D 2D OUTC Tulo- tai lähtörekisteri mikroprosessorilla toteutetuissa laitteissa

8 Siirtorekisterit Siirtorekisteri (shift register) koostuu D-kiikuista Ainakin ensimmäisen D-tulo SI ja viimeisen Q-lähtö SO on ulkoinen Kiikut ovat ketjussa: edellisen Q-lähtö on kytketty seuraavan D-tuloon Yhteinen kellosignaali Piirikaavio C1 1D Q0 SI CLK Q1 Q2 Q3 SO Aikakaavio CLK SI Q0 Q1 Q2 SO SR

9 Siirtorekisterityypit SISO ja SIPO
Piirrosmerkki SRG4 1D C1/ SI CLK SO SISO (serial in - serial out) 8 bittiä … tuhansia bittejä keskeiset sovellukset viivepiiri SO on SI:n viivästetty versio viive riippuu bittimäärästä ja kellotaajuudesta sarjamuisti tallettaa kiikkuihin SI:n bitit SIPO PO0 PO1 PO2 PO3 (SO) SI CLK RES Piirrosmerkki 1D R C1/ SRG4 SIPO (serial in - parallel out) erillisissä piireissä 4, 8 tai 16 bittiä keskeinen sovellus sarja-rinnakkaismuunnos käytetään tiedonsiirrossa tarvitaan sananpituuden mukainen siirtorekisteri

10 Nollaustulolla varustetun SIPO-siirtorekisterin VHDL-kuvaus
ENTITY sipo_resn_4 IS PORT( si, resn, clk : IN BIT; po: OUT BIT_VECTOR (0 TO 3)); END sipo_resn_4; ARCHITECTURE behavior OF sipo_resn_4 IS SIGNAL q: BIT_VECTOR (0 TO 3); BEGIN PROCESS (resn, clk) IF resn = '0' THEN q <= "0000"; ELSIF clk'EVENT AND clk = '1' THEN q(3) <= q(2); q(2) <= q(1); q(1) <= q(0); q(0) <= si; END IF; END PROCESS; po <= q; END behavior; po(0) po(1) po(2) po(3) si clk resn 1D R C1/ SRG4 Signaali q on sisäinen kiik-kujen tilasignaali. Se tarvi-taan, koska lähtösignaalin arvot eivät ole VHDL-kielessä tiedossa prosessin sisällä. Sijoitus po(3) <= po(2) jne. ei ole sallittu.

11 Siirtorekisterityypit PISO ja PIPO
PISO (parallel in - serial out) 4, 8 tai 16 bittiä keskeinen sovellus rinnakkais-sarjamuunnos PIPO (parallel in - parallel out) 4, 8 tai 16 bittiä korvaa minkä hyvänsä edellisen monipuolinen datan käsittely SO SI SHIFT RES 1,3D R C3/1 SRG4 LOAD CLK M1 M2 PI0 PI1 1,2,3D PI2 PI3 PIPO PO0 PO1 PO2 PO3 (SO) SI SHIFT RES 1,3D R C3/1 SRG4 LOAD CLK M1 M2 PI0 PI1 1,2,3D PI2 PI3 PISO

12 Kaksisuuntainen siirtorekisteri
1 S0 Toimintataulukko Toiminta Ei muutosta Siirto eteenpäin Siirto taaksepäin Rinnakkaislataus Siirto eteenpäin eli oikealle eli alas Siirto taaksepäin eli vasemmalle eli ylös Usein myös pysäytys tai rinnakkaislataus Toteutus tulovalitsimilla C1 1D POi PIi CLK POi -1 POi +1 MUX S0 S1 G 3 1 2 Fi Fi -1 Fi +1 SR 

13 Kaksisuuntainen siirtorekisteri, jatkoa
Esittele PIPO-rekisteri Kaksisuuntainen siirtorekisteri, jatkoa Toimintatavan valinta S0- ja S1-tuloilla toimitapariippuvuus (M) piirrosmerkissä M = 0: ei toimintaa M = 1: siirto oikealle M = 2: siirto vasemmalle M = 3: lataus Erilliset sarjatulot ja lähdöt SIR, SOR oikealle siirtoon SIL, SOL vasemmalle siirtoon Rinnakkaistulot ja -lähdöt Käytetään aritmeettisissa piireissä: siirto oikealle = :2 siirto vasemmalle = x2 Toinen sovellusesimerkki: bitti- järjestyksen kääntö SR  RES PO0(SOL) PO1 PO2 PO3 (SOR) SIR S0 1,4D R C4/1/2 SRG4 S1 CLK 1 PI0 PI1 3,4D PI2 PI3 M 3 SIL 2,4D

14 Rinnakkais- ja sarjamuotoinen datasiirto
Rinnakkaissiirto piirin ja laitteen sisäiseen siirtoon nopea lyhyillä etäisyyksillä yksinkertainen toteutus paljon johtimia (esim. 10 tai 18) siirron ohjaus kättelyllä (handshake) Sarjasiirto laitteen sisäiseen ja laitteiden väliseen siirtoon hidas (uudet sarjaväylät nopeita) mutkikas toteutus vain muutama johdin siirron ohjaus osana datavuota ? 2 PAR Piiri 1 CLK DACK DATA DASS Piiri 2 Laite 1 SER Laite 2 DATA12 CLK DATA21

15 Ajoitussignaalien synnyttäminen
Ajoitussignaaleja tarvitaan ajallisesti peräkkäisten toimintojen toteuttamisessa Ajoitussignaaleissa ei saa olla virhepulsseja  ne on otettava suoraan kiikkujen lähdöistä Toteutus siirtorekisterillä tai ASM:na Esimerkki: neljä ajoitussignaalia: CLK T0 T1 T2 T3

16 Ajoitussignaalien synnyttäminen siirtorekisterillä
Edullinen, jos signaalit ovat muuten samoja, mutta toisiinsa nähden siirtyneitä, kuten tässä esimerkissä Käytetään SIPO-siirtorekisteriä Aaltomuodosta saadaan ehto sarjatulon funktiolle SI SI = 1, kun T0 = T1 = T2 = 0, muulloin SI = 0 saadaan siis SI = T0 · T1 · T2 = T0 + T1 + T2 CLK T0 T1 T2 T3 ? 3 T0 T1 T2 T3 SI CLK 1D C1/ SRG4 1

17 CTR Laskurit Laskuri (counter) laskee siihen tuotujen kellopulssien määrän määrä saadaan lähtösignaalien arvoina maksimiarvon jälkeen laskuri nollautuu laskurin tilojen määrä on sen laskentajakso (modulus) Yleisin laskuri on binaarilaskuri (binary counter) laskentajakso on kahden kokonainen potenssi n-bittisessä binaarilaskurissa on n kiikkua ja n lähtöä laskentajakso on 2 n laskentasekvenssi on yleensä peräkkäiset binaariluvut, esim  0001  0010  0011  ...  1110  1111  erillispiireinä on saatavilla 4-, 8-, 12- ja 14-bittisiä binaarilaskureita, joiden laskentajaksot ovat 16, 256, 4096 ja 16384 Laskuri toimii myös taajuuden jakajana n-bittinen binaarilaskuri jakaa kellotaajuuden 2 n:llä pulssisuhde on 1:1 eli 1-osa ja 0-osa ovat yhtä pitkät Q0 Q1 Q2 Q3 4-bit CTR CLK

18 Dekadi- ja muut laskurit
Dekadilaskuria (decade counter) käytetään, kun halutaan laskentajaksoksi kymmenen potenssi dekadilaskurissa on neljä kiikkua / dekadi käytännössä on saatavilla 4- ja 8-bittisiä dekadilaskureita laskentajaksot ovat 10 ja 100 laskentasekvenssi on yleensä peräkkäiset NBCD-luvut, esim  0001  0010  0011   1000  1001  0000 … 4-bittinen dekadilaskuri jakaa kellotaajuuden kymmenellä jaettu taajuus ei ole symmetrinen eli pulssisuhde ei ole 1:1 vaan 1:4 Muut laskurit ja jakajat voidaan suunnitella ASM-menetelmällä laskuriin saadaan haluttu laskentajakso ja -sekvenssi jaettuun taajuuteen saadaan haluttu pulssisuhde Q0 Q1 Q2 Q3 DEC CTR CLK CTR

19 Asynkroninen binaarilaskuri
RCTR Asynkroninen binaarilaskuri 4-bittisen binaarilaskurin aikakaavio: CLK Q0 Q1 Q2 Q3 Muutos kellopulssin laskevalla reunalla 1 1 1 Muutos Q0:n laskevalla reunalla Muutos Q1:n laskevalla reunalla Muutos Q2:n laskevalla reunalla Laskuri saadaan laskevalla reunalla liipaistavista T-kiikuista käyttämällä kiikun kellona edellisen kiikun lähtöä ja kytkemällä T-tulo 1:een Voidaan käyttää myös JK-kiikkuja, joiden J- ja K-tulot on kytketty 1:een

20 4-bittinen asynkroninen binaarilaskuri
RCTR 4-bittinen asynkroninen binaarilaskuri Piirikaavio: Ratkaisu on erittäin yksinkertainen Bittimäärää voidaan helposti lisätä Taaksepäin laskeva laskuri saadaan käyttämällä nousevalla reunalla liipaistavia T- tai JK-kiikkuja 1T C1 CLK Q0 1 Q1 Q2 Q3 Q0 Q1 Q2 Q3 3 + CT=0 CT CLR CLK RCTRDIV16 Piirrosmerkki Asynkroninen nollaustulo tai RCTR4

21 Asynkronisten laskureiden ominaisuuksia
RCTR Viive-ero lähtöjen välillä mitä pitempi laskuri, sitä suurempi ero Pitkissä laskureissa suurin kellotaajuus alenee on odotettava, että kaikki lähdöt ovat varmasti muuttuneet koko järjestelmän toiminta voi hidastua Asynkronisten laskurien käyttöä on syytä välttää tai sitten on otettava heikkoudet huomioon suunnittelussa Taajuuden jakajana asynkroninen laskuri toimii hyvin pitkissä jakajissa (eli kun jakosuhde on suuri) yksinkertaisuudella on merkitystä ensimmäinen kiikku voi olla nopeampaa teknologiaa kuin muut edellytyksenä on, että jaettu taajuus saa olla alkuperäisestä viivästynyt ? 4

22 CTR Synkroniset laskurit ASM:eja: kaikkiin kiikkuihin sama kellopulssi
Toteutus D-, T- tai JK-kiikuilla Binaari- ja dekadilaskureita Laskureissa on yleensä nollassa aktiivinen nollaustulo CLR osassa synkroninen (laskuri nollautuu seuraavan kellopulssin jälkeen) osassa asynkroninen (laskuri nollautuu heti) Osassa laskureista on lataustulo laskuriin voidaan ladata haluttu binaariluku käytetään, kun tehdään binaarilaskurista laskuri, jonka laskentajakso on muu kuin kahden potenssi Laskuri voi olla eteenpäin eli ylös laskeva, taaksepäin eli alas laskeva tai kaksisuuntainen Binaarilaskurin piirrosmerkki Q0 Q1 Q2 Q3 3 C1/+ 1CT=0 CT CLR CLK CTR4

23 4-bittinen synkroninen binaarilaskuri
Lisä 4-bittinen synkroninen binaarilaskuri Tila- ja lähtötaulu Tulot Nykyinen tila Seuraava tila Lähtö CLR ENP ENT Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 CO 0 X X X X X X /1* 1 0 X Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 0/1* 1 X 0 Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 0 Ketjutusta varten laskurissa on laskennan sallintatulot ENP ja ENT: laskuri laskee, kun ENP = ENT = 1 laskuri täynnä -lähtö CO CTRDIV16 tai CTR4 CLR 1CT=0 ENT G2 2CT=15 CO ENP G3 CLK C1/2,3+ Q0 Piirros- merkki Q1 CT Q2 3 Q3 * CO = 1, jos ENT = 1 ja laskuri on täynnä

24 Laskureiden ketjuttaminen
Lisä Laskureiden ketjuttaminen Kahdesta 4-bittisestä binaarilaskurista 8-bittinen binaarilaskuri CTR Q0 Q1 Q2 Q3 3 C1/2,3+ 1CT=0 CT CLR CLK CTRDIV16 G2 G3 2CT=15 1 EN Q4 Q5 Q6 Q7

25 Kaksisuuntainen binaarilaskuri
CTR  Laskenta eteenpäin: 0123 ... 141501 … Laskenta taaksepäin: 01514 ... 21015 … Valintatulo DIR laskentasuunnalle Toinen toteutusvaihtoehto: erilliset kellot laskennalle eteenpäin ja taaksepäin Piirrosmerkki tai CTR4 Q0 Q1 Q2 Q3 3 C1/2+/2- CT DIR CLK CTRDIV16 M2 1CT=0 CLR CLR 1 DIR X Toimintataulukko Toiminta Nollaus Laskenta taakse Laskenta eteen

26 Ladattava binaarilaskuri
CTR Esittele laskuri Ladattava binaarilaskuri Laskennan tai latauksen valintatulo LOAD LOAD = 0  laskenta LOAD = 1  lataus D-tulot laskurin kiikkuihin ladattaessa kiikkuihin tallettuu seuraavalla kellopulssilla D-tulojen lataushetkinen arvo Piirrosmerkki tai CTR4 Q0 Q1 Q2 Q3 C2/1+ 2CT=0 CLR CLK CTRDIV16 M1 LOAD 1,2D [1] [2] [4] [8] D0 D1 D2 D3 CLR 1 LOAD X Toimintataulukko Toiminta Nollaus Laskenta eteen Lataus

27 Nollaus- ja lataustulolla varustetun laskurin VHDL-kuvaus
CTR Nollaus- ja lataustulolla varustetun laskurin VHDL-kuvaus ENTITY ctr_clrn_load_4 IS PORT( load, clrn, clk : IN BIT; d: IN INTEGER RANGE 0 TO 15; q: OUT INTEGER RANGE 0 TO 15); END ctr_clrn_load_4; ARCHITECTURE behav OF ctr_clrn_load_4 IS SIGNAL qi: INTEGER RANGE 0 TO 15; BEGIN PROCESS (clk) IF clk'EVENT AND clk = '1' THEN IF clrn = '0' THEN qi <= 0; ELSIF load = '1' THEN qi <= d; ELSE qi <= qi + 1; END IF; END PROCESS; q <= qi; END behav; CTRDIV16 clrn 2CT=0 load M1 clk C2/1+ d(0) 1,2D [1] q(0) d(1) [2] q(1) d(2) [4] q(2) d(3) [8] q(3) Signaali qi on sisäinen kiikkujen tilasignaali. Se tarvitaan, koska läh-tösignaalin arvot eivät ole VHDL-kielessä tiedossa prosessin sisällä. Sijoitus q <= q + 1 ei ole sallittu.

28 Dekadilaskurin toteutus ladattavalla binaarilaskurilla
Laskentajakso 10 Laskentasekvenssi NBCD-luvut: 0  1  2  3  ...  9  0  1  2 … Vastaavasti voidaan toteuttaa muukin kuin dekadilaskuri Laskentasekvenssin alku määrätään ladattavalla luvulla Laskentasekvenssin loppu määrätään latausehdolla CTR ? 5 CLK & Kun lasku- rissa on luku 9 (1001), ladataan 0 LOAD Q0 Q1 Q2 Q3 C2/1+ CTRDIV16 M1 1,2D [1] [2] [4] [8]

29 Ladattava dekadilaskuri
Lisä Ladattava dekadilaskuri CTR Laskentasekvenssi NBCD-luvut: 0  1  2  3  ...  9  0  1  2 … Laskennan tai latauksen valintatulo LOAD LOAD = 0  laskenta LOAD = 1  lataus D-tulot laskurin kiikkuihin ladattaessa kiikkuihin tallettuu seuraavalla kellopulssilla D-tulojen lataushetkinen arvo Ero binaari- laskuriin Piirrosmerkki Q0 Q1 Q2 Q3 C2/1+ 2CT=0 CLR CLK CTRDIV10 M1 LOAD 1,2D [1] [2] [4] [8] D0 D1 D2 D3 CLR 1 LOAD X Toimintataulukko Toiminta Nollaus Laskenta eteen Lataus

30 Muut synkroniset laskurit ja jakajat
Edellä esitetyistä poikkeava laskentajakso tai laskentasekvenssi tai erityinen pulssisuhde Voidaan usein tehdä ladattavasta binaarilaskurista Joskus voidaan tehdä siirtorekisteristä rengaslaskuri: esim. 3-bittinen: 100  010  001  100 … n-bittisen rengaslaskurin laskentajakso on n Johnson-laskuri: esim. 3-bittinen: 000  100  110  111  011  001  000 … n-bittisen Johnson-laskurin laskentajakso on 2n Ellei edellä mainituilla tavoilla saada haluttua toimintaa suunnitellaan ASM:na toteutetaan esimerkiksi ohjelmoitavalla logiikkaverkolla Jos jää kiellettyjä tiloja, on varmistettava niistä poistuminen SRGn 1D C1/ CLK SO Rengaslaskurin periaate SRGn 1D C1/ CLK SO Johnson-laskurin periaate CTR

31 Yhteenveto Rinnakkaisrekisteri koostuu useista D-kiikuista, joilla on yhteinen kellosignaali ja ehkä yhteinen nollaus- tai toiminnan sallintatulo Rinnakkaisrekistereitä käytetään ASM:n tilarekistereinä sekä signaalien arvojen tallennukseen Siirtorekisteri koostuu peräkkäin kytketyistä D-kiikuista Siirtorekisterityypit ovat SISO, SIPO, PISO ja PIPO; siirtorekisteri voi olla myös kaksisuuntainen Siirtorekistereitä käytetään mm. sarjamuotoisessa datasiirrossa Ajoitussignaaleja voidaan usein synnyttää siirtorekistereillä Laskurissa sama tila toistuu laskentajakson pituisin välein Laskuri toimii myöskin taajuuden jakajana Tärkeimmät laskurityypit ovat binaarilaskuri ja dekadilaskuri; laskuri voi olla myös kaksisuuntainen ja ladattava Laskuri voidaan toteuttaa joko asynkronisena tai synkronisena; synkronisia laskureita voidaan tarvittaessa ketjuttaa (lisäsisältöä) Rinnakkais- ja siirtorekisteri sekä laskuri voidaan esittää VHDL-kuvauksena


Lataa ppt "Rekisterit ja laskurit"

Samankaltaiset esitykset


Iklan oleh Google