Signaalinkäsittelytekniikan laboratorio
Digitaalitekniikan perusteet - luento 8


Kiikut (engl. flip-flops)

Kiikkujen funktio on säilyttää niihin tuotu data kellojakson yli ja välittää se tämän jälkeen eteenpäin. Kiikut ovat olennainen osa aikariippuvaisia piirejä, käytännössä tarkoitamme näilä pelkästään synkronisia sekvenssipiirejä. (Asynkroniset sekvenssipiirit ovat erikoistapaus. Niitä ei käsitellä tällä kurssilla sen enempää.) Synkronisen sekvenssipiirin kiikut muodostavat yhdessä rekisterin, jossa säilytetään piirin tilaa. Salvat eivät sovellu tähän tarkoitukseen, koska niiden tila voi muuttua kesken kellojakson (kuten jo aiemmin opittiin). Synkronisessa sekvenssipiirissä tilamuutokset tapahtuvat vain kellosignaalin tahdissa.

Kiikku muuttaa tilaansa vain kellosignaalin muuttuessa: tällöin se tarkastelee piirin nykytilaa ja sen hetkisiä ottosignaaleita ja tallettaa näiden aiheuttaman tuloksen seuraavaan kellojaksoon saakka. Sanotaan, että kellosignaali liipaisee kiikun. Tällä tarkoitetaan sitä ominaisuutta, että kiikku tarkastelee ympäristöänsä vain kellosignaalin tietyllä reunalla. Kiikut luokitellaan liipaisutavan perusteella. Kiikkutyypit:


Pulssiliipaistava kiikku ottaa dataa sisään kellopulssin nousevalla reunalla ja antaa sitä ulos kellopulssin laskevalla reunalla.

Reunaliipaistava kiikku vaihtaa tilaansa kellopulssin aktiivisella reunalla, joka on kellosignaalin joko nouseva tai laskeva reuna. On siis olemassa erikseen kellopulssin nousevalla ja laskevalla reunalla liipaistavia kiikkuja. Tilanmuutos näkyy kiikun annossa joko heti tai kellosignaalin toisensuuntaisen muutoksen jälkeen. Jälkimmäisessä tapauksessa puhutaan viivästetystä annosta.

Käytännön digitaalisuunnittelussa käytetään lähinnä pelkästään reunaliipaistavia kiikkuja. Eri kiikkutyypit on kuitenkin hyvä tuntea, erikoistilanteiden varalta.

Kiikkujen ajoituksesta

Kiikkujen yhteydessä on otettava huomioon kaksi eri varoaikaa sekä kiikusta itsestään aiheutuva viive. Varoajat ovat niitä ajanjaksoja, jolloin kiikku ei huomaa muutoksia piirissä. Käytännössä varoajat ovat kiikulle merkityksellisen kellopulssin reunan molemmin puolin. (Setup time eli asetusaika ennen kellopulssin nousua sekä Hold time eli pitoaika nousun aikana sekä vähän sen jälkeen.) Tämä tarkoittaa sitä, että ottosignaalit eivät saa muuttua varoaikana tai piirin toiminta häiriintyy.

Toinen ajoituksessa huomioitava seikka on kiikusta aiheutuva etenemisviive (propagation delay): signaalilla kestää vähän aikaa kulkea kiikun läpi (tyypillisesti muutaman kymmenen nanosekunnin luokkaa). Allaolevassa kuvassa esitetään reunaliipaistavan D-kiikun kriittiset aikajaksot:


Huomattavaa:
Tästä eteenpäin esitellään eri kiikkutyyppejä niiden toiminnan mukaan. Tärkeimmät loogiset kiikkutyypit ovat D, JK, T ja SR. Näistä esitellään pulssi- ja reunaliipaistavia versioita. (Kannattaa siis huomata, että jokaisesta loogisesta päätyypistä (D, JK, T, SR) voidaan tuottaa sekä reuna-, että pulssiliipaistavia kiikkuja.)


Pulssilla määräytyviä salpoja

Pulssilla määräytyminen tarkoittaa sitä, että salpa lukee piirin tilan kellopulssin nousevalla reunalla ja antaa datan ulos kellopulssin laskevalla reunalla. Tässä esitellään esimerkkeinä pulssilla määräytyvistä salvoista D- ja JK -salvat. HUOM! Salpojen totuustauluissa olevista merkinnöistä:

Q(t) tarkoittaa salvan tilaa ennen kellopulssia.
Merkintä Q(t+1) tarkoittaa salvan seuraavaa tilaa ts. tilaa kellopulssin jälkeen (riippuu ottosignaaleista ja salpatyypistä)

Pulssilla määräytyvä D-salpa

Pulssilla määräytyvän D-salvan piirrosmerkki ja totuustaulu.


Pulssilla määräytyvän D-salvan rakenne. (Voidaan muodostaa kahdesta D-salvasta, joiden rakenne oli selvitetty jo aiemmin.)

Pulssin aikakaavio

Pulssilla määräytyvä JK -salpa

Pulssilla määräytyvän JK-salvan piirrosmerkki. Käytännössä salpa toimii kuten SR-salpa, mutta vaihtaa tilaansa aina edellisen tilan komplementtiin kun molemmat otot (J- ja K-otto) ovat ykkösiä.

JK-salvan totuustaulu

Pulssin aikakaavio

Huomaa, että J ja K-ottojen tulee pysyä stabiilina koko CLK-pulssin ajan


Reunaliipaistavia kiikkuja

Kiikun tilanmuutos tapahtuu, kun kellosignaali muuttaa tilaansa (kellosignaalin aktiivinen reuna). Vaihtoehdot ovat käytännössä, joko nousevalla tai laskevalla reunalla liipaisu tai vastakkaisreunoin liipaisu. Kuvissa kannattaa huomata viive. Esimerkkinä esitellään D- ja JK- kiikut.

Nousevalla reunalla liipaistava D-kiikku

Tilanmuutos tapahtuu, kun kellosignaali muuttuu nollasta ykköseen.

Piirrosmerkki


Totuustaulu

aikakaavio

Laskevalla reunalla liipaistava D-kiikku

Tilanmuutos tapahtuu, kun kellosignaali muuttuu ykkösestä nollaan.

Piirrosmerkki


Totuustaulu

aikakaavio


Vastakkaisreunoin liipaistava JK -kiikku (joka on siis käytännössä toiminnaltaan sama kuin pulssiliipaistava JK-kiikku)

Piirrosmerkki

Totuustaulu

Aikakaavio


Kiikkuyhteenveto

Tässä kerrataan vielä lyhyesti kaikki peruskiikut. Mukaan on liitetty yksi aiemmin esittelemätön kiikkutyyppi: T-kiikku. Kaikkia allaolevia kiikkuja käytetään kurssilla. Käytännön digitaalisuunnittelussa yleisin suunnittelijan näkemä kiikkutyyppi on D -kiikku. On kuitenkin huomattava, että suunnittelussa on tiettyjä perustilanteita, esimerkiksi niin sanottua 'edge detectoria' suunnitellessa, joissa on ehdottomasti käytettävä muita kiikkutyyppejä. Tämän vuoksi kaikkien kiikkutyyppien tuntemus on tärkeää. Samoin on osattava ja ymmärrettävä kiikkutyyppien toiminta.

T-kiikun toiminta on hyvin yksinkertainen. Kiikulla on kaksi ottoa: T ja CLK (kello). Jos T-ottoon tulee nollaa, säilyttää kiikku tilansa. Jos T-ottoon tulee ykköstä, komplementoi kiikku tilansa. Alla on esitetty nousevan reunan T-kiikun piirrosmerkki, sen totuustaulu ja aikakaavio.

Tilanmuutos tapahtuu, kun kellosignaali muuttuu nollasta ykköseen.

Piirrosmerkki


Totuustaulu

aikakaavio

Tällä kurssilla on osattava peruskiikut: D, JK, SR ja T. Näistä D ja JK -kiikut ovat tärkeimmät. Alla on esitetty kaikkien peruskiikkujen totuustaulut:

D-kiikku

T-kiikku

JK-kiikku

SR-salpa

Jos halutaan etsiä yhtäläisyyksiä ja eroavaisuuksia perheen kiikkujen välillä, voidaan huomiota kiinnittää mm. seuraaviin seikkoihin:


Esimerkkejä kiikkujen piirrosmerkeistä

D-salpa

Pulssilla määräytyvä D-salpa

Nousevalla reunalla liipaistava D-kiikku

Nousevalla reunalla liipaistava JK-kiikku

Laskevalla reunalla liipaistava JK-kiikku

Vastakkaisreunoin liipaistava JK-kiikku


Synkroniset sekvenssipiirit

Vanhan kertauksena:
Digitaaliset piirit jaetaan kahteen pääluokkaan: kombinaatiopiireihin ja sekvenssipiireihin. Kombinaatiopiireissä antosignaalien arvot riippuvat vain ottosignaalien samanhetkisistä arvoista. Sekvenssipiirit ovat aikariippuvaisia eli arvojen annot riippuvat piirin tilasta, joka on talletettuna piiriin ja mahdollisesti myös ottosignaaleista. Käytännössä tämä tarkoittaa sitä, että sekvenssipiiri sisältää muistavia joitain komponentteja, yleensä kiikkuja. Sekvenssipiirit jaetaan edelleen kahteen alaluokkaan: asynkronisiin ja synkronisiin sekvenssipiireihin. Asynkroninen piiri vaihtaa tilaansa, kun jokin sen ottosignaaleista muuttuu. Synkronisessa sekvenssipiirissä on yksi hallitseva otto: kello-otto. Synkroninen sekvenssipiiri vaihtaa tilaansa vain tämän oton tahdissa. Asynkronisten piirien suunnittelu ja analyysi on työlästä ja hankalaa. Tällä kurssilla käsitellään vain synkronisia sekvenssipiirejä. Näiden analyysi ja suunnittelu on suhteellisen suoraviivaista ja opettaa digitaalilaitteiden toiminnan perusperiaatteita.

Synkronisen sekvenssipiirin rakenne ja toiminta

Synkroninen sekvenssipiiri koostuu kombinaatiopiiristä ja tilarekisteristä. Piirin ottosignaalit tulevat kombinaatiopiiriosaan ja antosignaalit lähtevät siitä. Tilarekisteri on erillinen rivi kiikkuja. Tilarekisteriin menee kombinaatiopiiristä piirin uusi tila (new state, NS) ja siitä palaa kombinaatiopiiriin piirin nykytila (present state, PS):

Yhteen kiikkuun voidaan tallettaa yksibittinen tieto, joko 0 tai 1. Näin ollen kullakin kiikulla on kaksi erilaista tilaa. Tarvittava kiikkumäärä riippuu piirin tilojen määrästä: k:lla kiikulla voidaan toteuttaa 2k tilaa. Näin ollen kiikkujen ja tilojen välillä täytyy vallita seuraavanlainen suhde:

2k-1 < s =< 2k
missä s on piirin tilojen ja k tilarekisterin kiikkujen määrä.

Helpoin tapa muodostaa tilarekisteri on käyttää D-kiikkuja. Tällöin piirin uusi tila tuodaan suoraan D-kiikun ottoihin. Joskus käytetään myös JK -kiikkuja.

Periaatteessa kiikut uudistavat tilansa jokaisen kellopulssin aktiivisella reunalla: uusi tila menee kiikkuun ja sieltä saadaan nykytila. Käytännössä tässä täytyy kuitenkin muistaa kiikuista syntyvä viive. (Tilarekisterin annot muuttuvat vasta viiveen jälkeen.) Piirin ulkopuolella viiveet näkyvät tilasignaaleista riippuvien antosignaalien muutoksen viivästymisenä.

Synkronisten sekvenssipiirien pääluokat

Synkronisessa sekvenssipiirissä piirin antosignaalit voivat riippua pelkästään tilasta, jossa piiri on (MOORE). Toinen vaihtoehto on, että annot riippuvat sekä piirin tilasta, että ottosignaaleista (MEALY). Synkronista sekvenssipiiriä, jonka antosignaali ei suoraan riipu mistään ottosignaalista vaan pelkästään piirin tilasta sanotaan Mooren koneeksi. Mikäli yksikin antosignaali riippuu jostakin ottosignaalista, on kyseessä Mealyn kone. Mealyn koneen sellaista antosignaalia, joka riippuu suoraan yhdestä tai useammasta ottosignaalista sanotaan ehdolliseksi annoksi.

Yleensä tietyn määrittelyn mukainen piiri voidaan toteuttaa joko Mooren koneena tai Mealyn koneena. Tällöin Mooren kone -toteutuksessa on yleensä enemmän tiloja, mutta kombinaatiopiiri saattaa olla Mealyn kone -toteutusta yksinkertaisempi. Alla Mooren ja Mealyn koneen rakenteet:

Mooren kone:
Vain piirin nykytila vaikuttaa antoihin. Antosignaalit muuttuvat kellon tahdissa.


Mealyn kone:
Nykytila ja ottosignaalit vaikuttavat antosignaaleihin. Antosignaalit voivat muuttua kesken kellojakson.


Graafinen esimerkki synkronisesta sekvenssipiiristä

Tässä esitellään 4-tilaisen (=kaksi tilasignaalia) sekvenssipiirin lohkokaavio ja signaalien aikakaavio. Esitykset ovat suuntaa-antavia. Näiden kahden esityksen perusteella piirin toimintaa ei voida analysoida kokonaisvaltaisesti, koska molemmat jättävät liian paljon asioita avoimeksi. (Aikakaavio ei kuvaa signaalien kaikkia kombinaatioita, joten piirin toimintaan jää aukkoja.)

Esimerkin on tarkoitus tuoda aika- ja lohkokaavioita tutummiksi. Aikakaaviosta pitäisi pystyä ymmärtämään signaalien välisiä riippuvuussuhteita sekä viiveitä. Kummastakin tapauksesta on näkyvissä ainakin yksi selkeä esimerkki.

Viive näkyy aikakaaviossa tilasignaalien osalta parhaiten. Nykytilan signaalit (PS0 ja PS1) ovat viivästyneet hieman kun taas uuden tilan signaalit (NS0 ja NS1) ovat viivästyneet hieman enemmän. Mikäli viivettä ei olisi lainkaan tapahtuisi muutos näissä signaaleissa täsmälleen samaan aikaan kellopulssin (CLK) muutoksen kanssa. Nyt ei kuitenkaan ole näin.

Signaalien välinen riippuvuussuhde näkyy kun tarkastellaan aikakaaviota seuraavasti: Nousevalla kellonreunalla (CLK) piirin "tarkastaa" ottosignaalit (IN0 ja IN1), sekä piirin nykytilan (PS0 ja PS1). Näiden perusteella piiri muodostaa uuden tilan (NS0 ja NS1) sekä antosignaalit (OUT0, OUT1 ja OUT2) (Lisäksi voidaan havaita, että OUT0 on täsmälleen sama signaali kuin PS0. Se on vain viivästynyt hieman)

Lohkokaavio

Aikakaavio


Synkronisten sekvenssipiirien erikoistapauksia

Mealyn kone on kaikkein yleisin synkroninen sekvenssipiiri. Jopa toinen pääluokka, Mooren kone, voidaan esittää Mealyn koneen erikoistapauksissa. Tällä sivulla käsitellään (kytkentämalleiltaan) erityyppisiä sekvenssipiirejä. Näistä ehdottomasti tärkein ryhmä on erilaiset laskurit (counter). Muut voi lukaista yleissivistyksen vuoksi.

Peruslaskuri ja ohjattava laskuri

Peruslaskuri
Piirillä ei ole ottosignaaleja, se kiertää tilaketjua. Jokainen ketjun tila toistuu määrävälein esim. 0,1,2,0,1,2,jne..
Tilaketjun yksi kierros on laskentajakso,
tilojen lukumäärä = laskentajakson pituus.
Anto = piirin tila.

Ohjattava laskuri
Tilakierto on edelleen itsenäinen, ottosignaalit eivät vaikuta siihen. Antoon taas vaikuttaa sekä senhetkinen tila että ottosignaalit. (Tällöin antosignaalit eivät välttämättä toistu samanlaisina, vaikka piirin tilakierto on vakio kuten peruslaskurissa.)

Muita erikoistapauksia

Sekvenssipiirin rajatapaus
on piiri, jossa uusi tila riippuu vain ottosignaalien arvosta eikä nykytilasta. On epäselvää, onko tämä enää oikeaoppinen sekvenssipiiri. Antosignaaliin vaikuttavat sekä nykytila että otot. Erikoistapaus tästä piiristä on synkronoiva rekisteri.

Synkronoiva rekisteri:

Asynkronisia ottoja
Edellisen piirityypin erikoistapaus, synkronoiva rekisteri, lisätään usein piiriin, jossa on kellosignaalista riippumattomia eli asynkronisia ottoja. Tällöin synkronoiva rekisteri tahdistaa asynkroniset ottoa muuhun piiriin s.e. synkronoitavat signaalit tuodaan kiikkujen ottoihin ja niiden annoista saadaan synkronoidut signaalit.Siis asynkroniset signaalit muutetaan synkronisiksi signaaleiksi.


Synkronisen sekvenssipiirin toteutusvaiheet

Sekvenssipiirin toteutus jakaantuu vaiheisiin. Työn kuluessa voidaan joutua palaamaan uudelleen aikaisempiin vaiheisiin.

1. Määrittely

Aluksi määritellään piirin toiminta. Määrittely on yleensä sanallinen kuvaus piirin toiminnasta. Piiriä tarkastellaan ulkoa päin, eikä sen otto- ja antosignaaleja vielä määritellä tarkasti. Sanallinen määrittely voi olla yksinkertaisille piireille pari lausetta, mutkikkaille hyvinkin laaja. Määrittelyyn voidaan liittää vuokaavio, jos se auttaa asiaa.

2. Lohkokaavion piirtäminen

Määrittelyn pohjalta laaditaan piirin lohkokaavio. Lohkokaavio kuvaa piirin toiminnalliset osat, ei varsinaista toimintaa. Monimutkainen piiri jaetaan mielekkäisiin lohkoihin, koska monen pienen lohkon suunnitteleminen on helpompaa kuin yhden suuren. Lohkokaavioon merkitään näkyviin lohkojen väliset signaalit sekä piirin ulkoiset signaalit.

3. Lohkojen suunnittelu

Määritellään lohko ja piirretään siitä tilakaavio joko tavallisena tilakone-esityksenä tai ASM -kaaviona (opetetaan myöhemmin). Tämän jälkeen toteutetaan lohkot käytettävissä olevilla piireillä ja piirretään piirikaaviot. (Nykyään on käytössä myös laitteiston korkean tason kuvauskieliä. Tällainen on esimerkiksi VHDL -kieli. Mikäli lohko kuvataan VHDL:ää käyttäen, ei välttämättä tarvita ollenkaan tilakone- tai ASM -mallia, vaan tietokone laatii tarvittavan mallin kuvauksen perusteella.)

4. Piirin simulointi ja rakentaminen

Simuloidaan piiri käytettävissä olevilla simulaattoriohjelmilla. Ohjelma matkii piirin toimintaa ja tutkii sen toimintaa erilaisilla ottosignaalisekvensseillä. Näin pyritään selvittämään, toimiiko piiri määrittelyn edellyttämällä tavalla. Virheiden löytyessä palataan takaisinpäin toteutusvaiheissa ja korjataan virheet. Tämän jälkeen rakennetaan prototyyppi ja tutkitaan sen toimintaa mittalaitteilla. Sekä palataan taas taaksepäin korjaamaan lisää ilmenneitä virheitä. Nykyisin pyritään havaitsemaan virheet simulointivaiheessa, koska se on huomattavasti halvempaa ja nopeampaa. Simulointi- ja rakennusvaiheissa virheitä löytyy usein moneen kertaan, joten korjaus ja uudelleen testaus -vaiheita täytyy uusia.

Loppukevennyksenä poliitikon tilakone

Sekvenssipiirejä mallinnetaan siis tilakoneita piirtämällä. Näissä piirroksissa pyritään graafisesti esittämään, miten piirin toiminnan historia vaikuttaa piirin toimintaan tällä hetkellä tai tulevaisuudessa. Kansanomaisemmin ilmaistuna tilakaaviossa tarkastellaan kysymystä: Jos piiri aiemmin oli tietyssä tilanteessa (piirin nykytila) ja sai tietyn syötteen (ottosignaalit), niin minkälaiseen tilanteeseen piiri joutuu seuraavaksi (uusi tila) ja minne se tulee menemään, jollain tietyllä syötteellä?

Esimerkkinä tästä mallinnuksesta on alla poliitikon tilakone. Tässä tilanteessa tutkittavaa piiriä vastaa poliitikko. Poliitikko voi olla kolmenlaisessa eri tilanteessa (kierteessä, kateissa tai kuivilla). Piirin syötteitä (ottosignaalit) vastaavat vaimo ja UKK. Riippuen syötteistä poliitikko voi joko pysyä tilanteessa, jossa hän valmiiksi on tai siirtyä seuraavaan.



Paluu päävalikkoon

Tämän sivun sisällöstä vastaa aura@wooster.hut.fi
URL: http://signal.hut.fi/digis/printtaa/luento8/luento8.html
Sivua on viimeksi päivitetty 8.10.2008.