6 Registers In digitale systemen moeten we dikwijls gedurende een zekere tijd een bepaalde binaire informatie of codewoord kunnen opslaan en onthouden. Zo een digitale schakeling noemen we een "REGISTER". We verklaren deze definitie nader m.b.v. een voorbeeld. Als we op het toetsenbord van een rekenapparaat een getal invoeren, dan schuiven de ingetypte cijfers naar links op de uitleeseenheid. Zo zal bij het intypen van het getal 726, eerst het cijfer 7 uiterst rechts op het display zichtbaar worden. Na het intoetsen van het cijfer 2 schuift het cijfer 7 een plaats naar links op; het cijfer 2 staat nu uiterst rechts afgebeeld. Het getal 72 is zichtbaar. Na het intypen van het cijfer 6 is tenslotte het gehele getal zichtbaar op het display.
Fig. 6.1 voorstelling van de werking van een schuifregister
Dit voorbeeld toont 2 belangrijke eigenschappen van een register. • het is een tussentijds geheugen omdat het toelaat een aantal bits op te slaan; • het laat toe informatie naar links (of eventueel naar rechts) op te schuiven telkens een nieuw karakter op het toetsenbord wordt ingetypt. Deze geheugen- en schuiffuncties maken registers uiterst belangrijk in digitale systemen. Fig. 6.2 geeft het blokschema van een digitaal systeem waarin registers gebruikt worden.
Fig. 6.2 Voorbeeld van een digitaal systeem met registers.
Als we op het toetsenbord van een rekenapparaat of computer en bepaalde toets indrukken wordt een overeenstemmende binaire getallencode of ASCII-code gegenereerd. Dit codewoord moet in een register opgeslagen worden en gedurende een zekere tijd bewaard worden zodat de centrale )àpverwerkingseenheid van de computer over die informatie kan beschikken. Na verwerking moet de informatie worden opgeslagen om te decoderen en te worden uitgelezen op de displays.
6.1 Registerbouwsteen Een register is opgebouwd met flipflops. Een flipflop kan de informatie van 1 bit opslaan en doorschuiven van in- naar uitgang. Om een codewoord van 8 bits op te slaan zijn er 8 flipflops nodig in het register. Omdat in digitale systemen het opslaan van een bepaald codewoord altijd gebeurt op commando van een klokimpuls zijn registers sequentiële schakelingen. Een sequentiële schakeling is opgebouwd m.b.v. een aantal flipflops die flankgestuurd zijn of synchroon werken. Daarnaast is meestal een aantal poorten aanwezig in de schakeling die samen een combinatorische schakeling vormen. De opbouw van een sequentiële schakeling voor 1 flipflop is voorgesteld in fig. 6.3. 50
Fig. 6.3 Sequentiële schakeling met slechts 1 flipflop.
In de algemene opbouw van een sequentiële schakeling zien we dat de uitgangstoestand van de flipflop(s) op een bepaald moment (huidige toestand = state) mee bepalend is voor de volgende toestand (next state) van de flipflop(s). Dit is het gevolg van de terugkoppeling van het uitgangssignaal naar de ingangen. Hierdoor is het mogelijk dat bepaalde flipflops in de sequentiële schakeling wel veranderen van toestand en andere niet. Dit wordt bepaald door de combinatie van de ingangstoestanden en de huidige toestand van de flipflop(s). Een sequentiële schakeling die bv. 8 flipflops bevat is in staat een codewoord van 8 bits op te slaan en te bewaren. Hiermee kunnen dan 28 = 256 verschillende codewoorden opgeslagen en bewaard worden. Op het ritme van het kloksignaal kan de toestand van het register veranderen. Welke toestand het register zal aannemen bij een volgende klokimpuls wordt bepaald door het ontwerp van de schakeling. Eenmaal de schakeling gerealiseerd is kan in een register ieder willekeurig codewoord geladen worden afhankelijk van de ingangstoestanden. In sequentiele schakelingen is er altijd slechts 1 kloksignaal aanwezig. • Als dit kloksignaal gelijktijdig ALLE flipflops stuurt spreken we van een "SYNCHRONE SCHAKELING". • Als het kloksignaal NlET ALLE flipflops op hetzelfde moment stuurt spreken we van een "ASYNCHRONE SCHAKEL1NG". Hierop wordt uitvoerig ingegaan in het volgend hoofdstuk.
6.2 Bufferregister 6.2.1 Parallelregister Een parallelregister of bufferregister heeft tot doel een binair woord op te slaan en te bewaren. Fig. 6.4 toont de opbouw van zo'n register.
Fig. 6.4 Blokschema van een parallel in, parallel uit register.
Fig. 6.4 geeft de realisatie van zo'n bufferregister. Voor de eenvoud beperken we ons tot 4 D-flipflops.
51
Fig. 6.5 4-bits bufferregister met D-flipflops.
Aan de ingangen DD, DC, DB en DA wordt de binaire informatie aangesloten. Bij het optreden van de klokimpuls wordt het binair woord in de flipflops opgeslagen zodanig dat QD = DD, QC = DC, QB = DB en QA = DA of kortweg Q = D. Omdat de data aan de ingangen parallel aangeboden wordt en de data aan de uitgangen parallel beschikbaar is noemen we dit register een "PARALLEL IN PARALLEL UIT" register. Registers beschikken meestal ook over een "resetingang". In fig. 6.5 wordt de inhoud van het register "0" zodra de resetingang actief gemaakt wordt, in dit geval met een actief laag signaal. Het IEC-functiesymbool van een dergelijk register is gegeven in fig. 6.6.
Fig. 6.6 Functiesymbool van een 4-bits bufferregister.
Het symbool van een sequentiële schakeling wordt altijd opgesplitst in 2 afzonderlijke delen; het onderste deal voor de flipflops zelf en het bovenste deel voor de z.g. controle-ingangen. Het blok dat de flipflops voorstelt wordt hier verdeeld in 4 delen waardoor we enerzijds weten dat de schakeling gevormd wordt met 4 flipflops en anderzijds dat de schakeling synchroon werkt. Dit betekent dat er geen enkele verbinding is van de ene flipflop-uitgang naar een andere flipflop-ingang, m.a.w. dat de klokimpulsingang van de totale schakeling verbonden is met de klokimpulsingangen van alle flipflops. In het z.g. controleblok herkennen we een flankgestuurde klokingang die reageert op de 1-0 overgang van het signaal en een actief lage resetingang. Dat deze ingangen inwerken op alle flipflops weten we door het feit dat ze in het controleblok getekend staan. Om aan te geven dat de data slechts in het register opgenomen wordt op commando van de klokimpuls wordt, zoals bij de flipflopsymbolen, een cijfer bijgevoegd. Om een bufferregister te realiseren kunnen ook data-latch flipflops of J-K flipflops toegepast worden. In het functiesymbool is niet altijd te herkennen welk type flipflop toegepast wordt. 6.2.2 Parallel laadregister Het beschreven bufferregister is in een logisch systeem weinig praktisch omdat we als gebruiker geen vat hebben op het tijdstip waarop de data in het register opgenomen wordt. Een register in een sequentiële schakeling mag meestal niet bij iedere optredende klokimpuls geladen worden. Daarom 52
voegen we aan het register een z.g. "LAAD-INGANG" (load-input) toe waarmee we het tijdstip waarop de data ingelezen wordt zelf kunnen bepalen, m.a.w. we kiezen bij welke klokimpuls de ingangsinformatie opgenomen wordt. De werking van de laadingang is meestal als volgt: • zolang de laadingang laag is behoudt iedere flipflop de ingenomen informatie: • wordt de laadingang hoog dan wordt de ingangsinformatie in de flipflops opgenomen bij de eerstvolgende klokimpuls. Een dergelijke besturingsschakeling is principieel voorgesteld in fig. 6.7 voor een flipflop.
Fig. 6.7 Besturingsschakeling voor de laadingang.
Zolang L = 0 is wordt de informatie QA doorverbonden met de ingang D van de flipflop. We noemen dit de “houdmode” of “inhibit”. Zodra L = 1 volgt de uitgang QA de informatie aan de data-ingang DA. De werking van de controleketen kan voorgesteld worden m.b.v. de toestandentabel van fig. 6.8.
Fig. 6.8 Toestandentabel, KV-kaart en realisatie laadingang.
Uit de toestandentabel en het overeenstemmende KV-diagram kan de logische vergelijking afgeleid worden: D = L.DA + L.Q A De praktijkuitvoering laat zich eenvoudig realiseren zoals in fig. 6.8 getekend. Deze basisschakeling kan nu toegepast worden in een bufferregister waardoor een "PARALLEL IN PARALLEL UIT"register ontstaat zoals voorgesteld in fig. 6.9 Ook hier maken we gebruik van Dflipflops. Zolang de laadingang "0" is zal iedere flipflop zijn eigen uitgangstoestand overnemen bij het optreden van een klokimpuls omdat de bovenste EN-poorten open staan en alle onderste dicht. Het resultaat hiervan is uiteraard dat de uitgangstoestand hierdoor niet verandert. Zodra de laadingang logisch "1" gemaakt wordt, is de toestand van de EN-poorten juist tegengesteld; en wordt het aangesloten codewoord verbonden met de respectievelijke data-ingangen van de flipflops. Bij de eerstvolgende klokimpuls zal deze informatie in de flipflops opgeslagen worden.
53
Fig. 6.9 4-bits "Parallel laad parallel uit" register met D-flipflops.
Fig. 6.10 Functiesymbool van yen PIPU-register.
Dit is aanschouwelijk voorgesteld in de tijdvolgordediagrammen van fig. 6.11 voor een flipflop.
Fig. 6.11 Tijdvolgordediagrammen van het laadproces voor een 1-bits "PIPU"-register.
Het besproken register is een "SYNCHRONE"of "PARALLELLE" schakeling omdat alle flipflops gelijktijdig reageren op het commando van een en dezelfde klokimpuls. Enkel de resetingang is een asynchrone besturingsingang omdat hij onafhankelijk van het kloksignaal werkt en bovendien prioriteit bezit op de werking van de klokimpuls. Het functiesymbool van het besproken 4-bits register is getekend in fig. 6.10. Door de aanduiding 1,2D bij iedere data-ingang wordt aangegeven dat de signalen 1 en 2 beide moeten actief zijn om de datainformatie op te nemen. De 1 verwijst naar de klokingang C1. Hierin herkennen we een flankgestuurde ingang die reageert op de 1-0 flank van het kloksignaal. De 2 verwijst naar de load-ingang. Door de afwezigheid van een polariteitindicator, is dit een actief hoge ingang. 54
6.3 Schuifregister Een register dat de opgeslagen binaire informatie naar rechts of naar links kan schuiven noemen we een "SCHUIFREGISTER" of "SCHUIFREGISTER". Bij iedere klokimpuls verschuift de informatie van slechts een bitplaats, dit is naar de naburige flipflop. Het aantal klokimpulsen dat nodig is om een codewoord volledig in een register op te slaan is daarom gelijk aan het aantal bits waaruit het codewoord gevormd wordt. Het register moet tenminste zoveel flipflops bevatten als het codewoord bits bevat. Schuifregisters worden in digitale systemen vooral toegepast om seriële verwerking van de informatie mogelijk te maken. 6.3.1 Rechts schuivend register
Fig. 6.12 geeft het basisprincipe van een rechts schuivend register.
Fig. 6.12 Blokschema van een rechtsschuivend “Serie in Serie Uit” register.
a. Uitvoering Om een schuifregister te realiseren dat de aangeboden informatie bij iedere klokimpuls een stap naar rechts schuift zal het daarom volstaan de uitgang van iedere flipflop te verbinden met de data-ingang van iedere volgende flipflop. We schakelen a.h.w. de flipflops als een ketting aan elkaar. Fig. 6.13 toont een opstelling voor een 4-bits schuifregister waarin D-flipflops worden toegepast.
Fig. 6.13 Principe van een rechtsschuivend register.
b. Werking We nemen aan dat alle flipflops gereset zijn; het register staat dus in de stand QA.QB.QC.QD = 0000. Op de D-ingang, die we voortaan de serie-ingang noemen, sluiten we bit na bit het codewoord 1001 aan.We bestuderen de toestand van de schakeling voor een aantal klokimpulsen aan de hand van de tabel in fig. 6.14. Impuls 1: "1" aan de serie-ingang Flipflop A: "1" aan de data-ingang; QA wordt "1". Flipflop B: "0" aan de data-ingang; QB blijft "0". Flipflop C: "0" aan de data-ingang; QC blijft "0". Flipflop D: "0" aan de data-ingang; QD blijft "0". Na de eerste impuls wordt de uitgangstoestand van het register QA.QB.QC.QD = 1000.
55
Impuls 2: "0"aan de data-ingang Flipflop A: "0" aan de data-ingang; QA wordt "0". Flipflop B: "1" aan de data-ingang; QB wordt "1". Flipflop C: "0" aan de data-ingang: QC blijft "0". Flipflop D: "0" aan de data-ingang; QD blijft "0". Na de tweede impuls wordt de uitgangstoestand van het register QA.QB.QC.QD = 0100. Impuls 3: "0"aan de data-ingang Flipflop A: "0" aan de data-ingang; QA blijft "0". Flipflop B: "0" aan de data-ingang; QB wordt "0". Flipflop C: "1" aan de data-ingang; QC wordt "1". Flipflop D: "0" aan de data-ingang: QD blijft "0". Na de derde impuls wordt de uitgangstoestand van het register QA.QB.QC.QD = 0 0 0 . Impuls 4: "1"aan de data-ingang Flipflop A: "1" aan de data-ingang; QA wordt "1". Flipflop B: ''0" aan de data-ingang; QB blijft "0". Flipflop C: "0" aan de data-ingang; QC wordt "0". Flipflop D: "1" aan de data-ingang; QD wordt "1". Na de vierde impuls wordt de uitgangstoestand van het register QA.QB.QC.QD = 1001.
Geven we nu nog 4 impulsen waarbij we de serie-ingang op "0" houden dan krijgen we als uitgangstoestand achtereenvolgens: QA.QB.QC.QD = 0100 - 0010 - 0001 - 0000. c. Toestandentabel De toestandentabel van fig. 6.14 geeft een samenvattend overzicht van de werking van het 4-bits naar rechts schuivend register.
Fig. 6.14 Toestandentabel van een 4-bits rechtschuivend register.
d. Tijdvolgordediagrammen In fig. 6.15 zijn nog de tijdvolgordediagrammen getekend voor de eerste 4 klokimpulsen, deze verduidelijken de werking van een rechtsschuivend register.
56
Fig. 6.15 Tijdvolgordediagrammen voor een rechtsschuivend 4-bits register.
e. Besluiten Uit de beschrijving van de werking en het overzicht in de toestandentabel kunnen we een aantal besluiten formuleren i.v.m. de werking van een rechts schuivend register: • De aangeboden serie-informatie wordt bij iedere klokimpuls stap per stap in het register opgenomen. • Na een aantal impulsen gelijk aan het aantal flipflops (N) is de ingangsinformatie in dezelfde orde aanwezig in het register. De aangeboden "SERIE-INFORMATIE"die we bit na bit ingeschoven hebben is nu tezelfdertijd beschikbaar op de uitgangen van het register. De serie-informatie is dus omgezet naar "PARALLEL-INFORMATIE". • De aangeboden serie-informatie schuift naar rechts in het register. • Na 2N klokimpulsen heeft de laatste flipflop dezelfde volgordetoestand doorlopen als de aangeboden informatie. De serie-informatie heeft een vertraging ondergaan van N impulsen. Een schuifregister kan dus ook als vertragingsschakeling gebruikt worden. • De laatst aangeboden databit is ook als laatste beschikbaar op de uitgangen en zal als laatste uitgeschoven worden; we noemen dit proces "LAST IN LAST OUT". 6.3.2 Links schuivend register
a. Uitvoering Om een schuifregister te realiseren dat de aangeboden informatie bij iedere klokimpuls een slap naar links schuift, volstaat het de uitgang van iedere flipflop te verbinden met de data-ingang van iedere voorgaande flipflop. In fig. 6.16 is een basisopstelling voor een 4-bits linksschuivend register gegeven waarbij we opnieuw D-flipflops toepassen. 57
Fig. 6.16 Principe van een linksschuivend register.
Fig. 6.17 Toestandentabel van een 4-bits linksschuivend register.
b.Werking We nemen aan dat alle flipflops gereset zijn. Op de serie-ingang stuiten we bit per bit het codewoord 1001 aan. Aan de hand van de hoger gegeven uitleg kan de werking als volgt samengevat worden. • • • •
Na de eerste klokimpuls wordt de uitgangstoestand van het register QA.QB.QC.QD = 0001. Na de tweede klokimpuls wordt de uitgangstoestand van het register QA.QB.QC.QD = 0010. Na de derde klokimpuls wordt de uitgangstoestand van het register QA.QB.QC.QD = 0100. Na de vierde klokimpuls wordt de uitgangstoestand van het register QA.QB.QC.QD = 1001.
Geven we nu nog 4 klokimpulsen waarbij we de serie-ingang op "0"houden dan krijgen we als uitgangstoestand achtereenvolgens: QA.QB.QC.QD = 0010 - 0100 - 1000 - 0000. c. Toestandentabel De toestandentabel van fig. 6.17 geeft een samenvattend overzicht van de werking van het 4- bits linksschuivend register. Tijdvolgordediagrammen In fig. 6.18 zijn de tijdvolgordediagrammen getekend voor de eerste 4 klokimpulsen; deze verduidelijken op een andere manier de werking van een linksschuivend register.
58
Fig. 6.18 Tijdvolgordediagrammen voor een linksschuivend 4-bits register. e. Besluiten Uit de beschrijving van de werking en het overzicht in de toestandentabel kunnen we dezelfde besluiten formuleren i.v.m. de werking van een links schuivend register. De informatie schuift nu echter naar links bij iedere binnenkomende klokimpuls. 6.3.3 In- en uitvoer van informatie
In de uitleg van het bufferregister en van de schuifregisters is gebleken dat de data-informatie zowel serieel als parallel kan geladen worden. Hetzelfde is geldig voor de uitvoer van de informatie. Worden alle uitgangen op hetzelfde moment gelezen dan spreken we van parallel-uitvoer; wordt de informatie bit per bit op een uitgang gelezen dan spreken we van serie-uitvoer. Volledigheidshalve wordt in fig. 6.19 het blokschema voorgesteld van een register waarbij de informatie in parallel wordt ingeschoven en in serie wordt uitgevoerd.
Fig. 6.19 Blokschema van een register met parallel in veer en serie Invoer.
Fig. 6.20 toont het blokschema van een register met serie-invoer en paralleluitvoer. 59
Fig. 6.20 Blokschema van een register met serie-invoer en paralleluitvoer.
De 4 mogelijkheden kennen hun typische toepassingsgebieden. We noemen enkele voorbeelden. • • • •
Het "Parallel In Parallel Uit" register of bufferregister wordt meestal gebruikt om gedurende een zekere tijd een bepaald codewoord te bewaren. Dit is vaak het geval in computers en microprocessors. Schuifregisters in de "Serie In Serie Uit" mode kunnen gebruikt worden als vertragingsregister. De opgeslagen informatie zal aan de uitgang verschijnen met een vertraging van N impulsen. Het kan in die mode ook toegepast worden als bufferregister voor seriële informatie. Het "Parallel In Serie Uit" register vindt ook zijn toepassing in datatransmissie. De codewoorden worden parallel verwerkt of opgewekt maar serieel verstuurd. Denk ook hier aan een digitale afstandsbediening van zender naar ontvanger. Schuifregisters in de "Serie In Parallel Uit" mode vinden o.a. hun toepassing in datatransmissie. Denken we hier aan de afstandsbediening van ons T.V. toestel waar de informatie bit per bit in het toestel ontvangen wordt maar in de ontvanger parallel moet aanwezig zijn om de code te verwerken. Een andere toepassing vinden we terug in ons rekenapparaat waar de bits (eventueel codewoorden) een per ben verwerkt worden; het resultaat moet center parallel aanwezig zijn om het zichtbaar te maken op de displays.
6.4 Universeel schuifregister De principes van een bufferregister en een links- of rechtsschuivend register kunnen gecombineerd worden in een z.g. universeel register. 6.4.1 Data-informatie
Om een register parallel te laden, links of rechts te schuiven of in houdmode te stellen komt het er enkel op aan de juiste informatiebit aan de juiste data-ingang van iedere flipflop toe te voeren. De verschillende mogelijkheden zijn principieel voorgesteld in fig. 6.21 voor ben flipflop. voorstelling
Fig. 6.21 Principiële oplossing universeel register.
Fig. 6.22 Toestandentabel en stuurschakeling voor een universeel register voor 1 flipflop.
60
Realisatie De praktijkuitvoering is te realiseren m.b.v. een multiplexer met 4 data-ingangen. Het schema hiervan is gegeven in fig. 6.22. Als er J-K flipflops of S-R flipflops gebruikt worden in de schakeling wordt de D-uitgang uit fig. 6.21 rechtstreeks naar de J- of de S-ingang gestuurd; de K- of de R-ingang krijgt dan dezelfde informatie via een NIET-poort. In een 4-bits universeel register zijn 4 dergelijke schakelingen nodig. Merk op dat we voor de selectingangen 2 NIET-poorten schakelen om de belastingsfactor of de fan-in 1 te houden. 6.4.2 Asychroon laden
In sommige universele registers gebeurt het parallel laden niet m.b.v. de klokimpuls maar m.b.v. de asynchrone set- en resetingang van de flipflops. Het laden heeft dan absolute voorrang op alle andere schuifbewerkingen. Ook hiervoor zoeken we de te realiseren logische schakeling op. We werken met een actief hoge laadingang. De asynchrone set- en resetingang zijn zoals gebruikelijk actief lage ingangen.
Fig. 6.23 Toestandentabel, KV.-diagrammen en realisatie voor een actief hoge laadingang.
Logische vergelijkingen Realisatie De praktijkuitvoering wordt meestal gerealiseerd met NEN-poorten zoals gegeven in fig. 6.23.
6.5 De 74HC194 Als praktijkvoorbeeld bestuderen we de 74HC194. In het vademecum wordt de I.C. aangeduid als een "CMOS 4-BIT BIDIRECTIONAL SHIFT REGISTER". De I.C. is opgebouwd met D-flipflops; er zijn een asynchrone reset-ingang en 2 select-ingangen voorzien die toelaten de 4 verschillende modes in te stellen. We bestuderen alle mogelijkheden die de I.C. biedt m.b.v. het inwendig schema, de tijdvolgordediagrammen, de toestandentabel en het functiesymbool. Het is immers zo dat we m.b.v. 1 van de genoemde gegevens alle mogelijkheden van een sequentiële schakeling kunnen afleiden. Een grondige studio van het schema geeft ons natuurlijk het meest inzicht in de werking van de schakeling. 6.5.1 Schema
Het inwendig schema van de 74HC194 zoals de fabrikant het ons biedt is gegeven in fig. 6.24.
61
Fig. 6.24 Het inwendig schema van de 74HC194.
a. Klokingang De toegepaste flipflops zijn D-flipflops die reageren op de 0-1 overgang van het kloksignaal. Tussen de klokingangen van de flipflops en de aansluitpen van de LC. zijn 2 NIET-poorten geschakeld. Hierdoor weten we dat de schakeling zal reageren op de 0-1 flank van het aangesloten kloksignaal. Dit is een belangrijk gegeven omdat er in sequentiële systemen een groot tijdverschil kan bestaan tussen de 0-1 en de 1-0 flank van het kloksignaal. b. Resetingang De resetingang van de flipflops zelf is een actief lage ingang. Ook hier zijn 2 NIET-poorten geschakeld tussen de flipflops en de aansluitpen. De resetingang van de 74HC194 is daarom een actief lage ingang met voorrang op alle andere mogelijkheden omdat de asynchrone resetingang van de flipflops gebruikt wordt. Een logische "0" op de resetpen van de I.C. zal de vier flipflops op "0"zetten. Om die reden wordt deze ingang aangeduid met Clear. c. Uitgangen Tussen de uitgangen van de flipflops en hun respectievelijke aansluitpen zijn weer 2 NIET-poorten geschakeld. Deze poorten fungeren als buffertrappen zodat met de uitgang 10 TTL LS I.C.'s kunnen gestuurd worden. De 74HC-serie is immers compatibel met de 74LS-serie. Modes De verschillende mogelijkheden van het universeel register worden ingesteld met de 2 selectingangen S0 en S1. • S0.S1 = 00 In het detailschema van fig. 6.25 worden door deze combinatie van de selectingangen de lijnen ABCD = 1010. Hierdoor is aan de poorten 1, 2 en 3 tenminste 1 van de ingangen logisch "0"zodat deze NEN-poorten dicht staan en de uitgangstoestand van de poorten 5 hierdoor niet bepaald wordt. 62
Aan de NEN-poorten 4 zijn de 2 selectingangen logisch "1". De uitgang van deze poorten wordt daarom bepaald door de inverterende uitgang van de betreffende flipflop. Omdat de inverterende uitgang van de flipflop teruggekoppeld wordt en poorten 4 en 5 ook een inverterende werking geven kunnen we besluiten dat de inverterende data-ingang verbonden is met de inverse uitgang van de flipflop. Dit is hetzelfde als zou de Q-uitgang verbonden worden met een niet-inverterende D-ingang. Hierdoor komt het register in de "HOUDMODE".
Fig. 6.25 Detailschema van de 74H0794 voor de selectcombinaties.
•
S0.S1 = 10
Deze combinatie van de selectingangen brengt aan de NEN-poorten 2, 3 en 4 tenminste 1 van de ingangen op het logisch 0-niveau. Aan de NEN-poorten 1 komen 2 ingangen op het 1-niveau. Hierdoor wordt de SR-informatie doorgegeven naar de D-ingang van de flipflop. Bij de flipflops B, C en D zijn deze ingangen verbonden met de inverterende uitgang van de voorgaande flipflop. Door deze combinatie wordt het register in de "SHUIF RECHTS" mode geschakeld. •
S0.S1 = 01
Bij deze combinatie van de selectingangen worden de NEN-poorten 3 opengezet. Hierdoor wordt bij flipflop A de QB-uitgang met de data-ingang verbonden. Bij flipflop D is dit de SL-ingang. Het register is in de "SCHUIF LINKS" mode geschakeld. •
S0.S1 = 11
Uit fig. 6.25 blijkt dat nu de NEN-poorten 2 de D-informatie doorsturen naar de data-ingang van de flipflops. Hierdoor is het register in de "PARALLEL LAAD" mode geschakeld. 63
6.5.2 Toestandentabel
In fig. 6.26 is de toestandentabel gegeven van de 74HC194 zoals deze in het vademecum te vinden is. Uit de tabel kunnen we alle nodige gegevens putten om het register te kunnen toepassen in een digitaal systeem.
Fig 6.26 Toestandentabel van de 741-IC194.
• • • • • •
In regel 1 van de tabel wordt duidelijk gemaakt dat de clear-ingang een actief lage ingang is en dat hij voorrang heeft op alle andere combinaties. Bij het "0"maken van deze ingang worden alle uitgangen van het register "0". Regel 2 van de tabel leert ons dat het register niet reageert op de 1-0 overgang van het kloksignaal. Uit regel 3 weten we hoe het register parallel moet geladen worden. De aanduiding a, b, c en d staat voor alle mogelijke 16 combinaties. In regel 4 en 5 wordt de "SHIFT RIGHT" mode aangegeven. Regels 6 en 7 maakt de "SHIFT LEFT" mode duidelijk. Regel 8 tenslotte toont hoe de "HOUDMODE" of "INHIBIT" mode ingesteld wordt.
6.5.3 Tijdvolgordediagrammen
Ook de tijdvolgordediagrammen, die gegeven zijn in fig. 6.27(volgende pagina), bieden ons voldoende gegevens om met succes het register te kunnen schakelen in een praktijktoepassing. Op de horizontale as worden de verschillende instellingen van het register aangegeven. Om te weten welke signalen de verschillende modes instellen en hoe ze actief zijn hoeven we slechts de signalen te volgen.
64
Fig.6.27 Tijdvolgordediagrammen van de 741-1C194,
65
6.5.4 Functiesymbool
In fig. 6.28 is het I.E.C.-functiesymbool van de 74HC194 gegeven. Ook hieruit kunnen we voldoende gegevens afleiden om het I.C. te kunnen toepassen.
Fig. 6.28 Functiesymbool van do 741-1C 194.
•
•
• •
• •
• •
De aanduiding SRG4 (Shift Register 4-bit) maakt ons duidelijk dat dit symbool de voorstelling is van een 4-bits schuifregister. Dit is ten andere ook te merker aan het feit dat er 4 uitgangen en 4 data-ingangen aanwezig zijn. Omdat het blok van de flipflops zelf in 4 delen gesplitst is weten we dat het pier een synchroon werkende schakeling betreft. Het driehoekje bij de klokingang geeft aan dat de flipflops flankgestuurd zijn. Door de afwezigheid van een polariteitindicator buiten het symbool weten we dat de schakeling reageert op de 0-1 flank van het kloksignaal. Het cijfer 4 zal altijd aanwezig zijn waar een actie gebeurt op commando van het kloksignaal C. De polariteitindicator bij de resetingang leert ons dat deze ingang werkt met een actief laag signaal. Bij de selectingangen treffen we de cijfers 0 en 1 aan, dit is het gewicht van de ingangen om de verschillende modes aan te duiden. Daarbij vinden we de notatie M 0/3. Hiermee wordt aangegeven dat het register in 4 verschillende modes kan geschakeld worden: 0, 1, 2 en 3. Deze cijfers zullen uitsluitsel geven bij de interpretatie van de 4 mogelijke instellingen. Mode 0 (S0.S1 = 00). Omdat dit cijfer bij geen enkele ingang aangegeven wordt weten we dat dit de houdmode is bij schuifregisters. Mode 1 (S0.S1 = 10). Het cijfer 1 wordt toegepast bij een ingang van de eerste flipflop. Door de aanduiding 1,4D in flipflop A weten we dat dit de serie-ingang is om rechts te schuiven. Omdat het curter 4 erbij gevoegd is weten we dat het schuiven slechts gebeurt op commando van het kloksignaal. Mode 2 (S0.S1 = 01). Een gelijkaardige aanduiding vinden we terug bij een ingang aan flipflop D. Dit is daarom de serie-ingang voor het links schuiven. Mode 3 (S0.S1 = 11). Het cijfer 3 wordt aangegeven bij de data-ingangen van alle flipflops. Dit zijn dan de data-ingangen voor het parallel laden.
6.6 Ringteller Een ringteller is een schuifregister waarvan de uitgang van de laatste flipflop teruggekoppeld is naar de serie-ingang van de eerste flipflop. Hierdoor vormen de flipflops a.h.w. een gesloten ring, vandaar zijn benaming. In een ringteller is er op ieder tijdstip slechts één flipflop die de 1-toestand bezit, alle andere flipflops zijn in de 0-toestand. Een 4-bits ringteller neemt dus achtereenvolgens de volgende toestanden aan: 1000 - 0100 - 0010 - 0001 - 1000...
66
6.6.1 Realisatie
Met behulp van de geziene leerstof in dit hoofdstuk is het niet moeilijk een schema op te stellen die aan de voorwaarden van een ringteller voldoet. Fig. 629 geeft een basisschema van een 4- bits ringteller uitgevoerd met JK-flipflops.
Fig. 6.29 Basisschema van een 4-bits ringteller.
Na het resetten van de flipflops worden alle uitgangen van de ringteller "0". Bij iedere binnenkomende klokimpuls wordt de logische "0" die aanwezig is aan de serie-ingang van flipflop A in deze flipflop opgenomen. De "0" van flipflop A schuift door naar flipflop B, enz... Het is duidelijk dat op die manier de uitgangstoestand van iedere flipflop "0" zal blijven. Om de ringteller de juiste toestanden te doen doorlopen moeten in de schakeling één of meerdere flipflops geset worden. Een flipflop de logische toestand "1"doen aannemen kan o.a. m.b.v. de asynchrone setingang. Een tweede, meer gebruikelijke, methode van werken is een zgn. initialisatieimpuls op de serie-ingang te sturen via een OF-poort. Fig. 6.30 geeft hiervan het schema.
Fig. 6.30 Volledig schema van een 4-bits ringteller met initialisatie.
Deze methode van initialisatie geniet de voorkeur t.o.v. deze met de asynchrone ingang omdat nu het laden of initialiseren synchroon verloopt met het kloksignaal. De initialisatieimpuls moet een welbepaalde tijdsduur bezitten; er mag den en slechts den klokimpuls in die tijdspanne optreden. 6.6.2 Tijdvolgordediagrammen
In fig. 6.31 zijn de tijdvolgordediagrammen van een 4-bits ringteller gegeven die overeenstemmen met het schema van fig. 6.30. De diagrammen illustreren duidelijk de werking van de schakeling.
67
Fig. 6.31 Tijdvolgordediagrammen van een 4-bits ringteller met initialisatie.
6.6.3 Eigenschappen
•
Het aantal toestanden van een ringteller is beperkt tot het aantal flipflops waarmee de schakeling opgebouwd is. In een sequentiële schakeling van b.v. 4 flipflops zijn er 16 mogelijke verschillende combinaties. Om 2N woorden in een ringteller te genereren zijn er 2N flipflops nodig.
•
Een ringteller is "NIET ZELFSTARTEND". Met zelfstartend bedoelen we dat de schakeling bij het inschakelen van de voedingsspanning automatisch in een van de juiste toestanden komt. Bij een ringteller kan dit niet omdat niet alle combinaties gebruikt worden. Een ringteller kan m.b.v. een bijkomende bijzondere schakeling wel in een juiste toestand komen bij het opstarten. Dergelijke schakelingen worden verder besproken.
•
In een ringteller is het ook mogelijk dat b.v. 2 enen rondschuiven. Hiervoor volstaat het de initialisatieimpuls gedurende 2 klokimpulsen op 1 te houden.
6.6.4 Nut
Een ringteller wordt vooral toegepast in sequentiële systemen om tijdbepalende signalen te genereren. Van het kloksignaal worden immers andere tijdbepalende signalen afgeleid die verschillende bewerkingen in de gewenste volgorde doen plaatsgrijpen. Een dergelijke z.g. "VOLGORDEGENERATOR" of "SEQUENCE GENERATOR" kan o.a. met succes toegepast worden in machinesturingen. Verder in dit hoofdstuk bespreken we een praktijkvoorbeeld. Een ander typisch voorbeeld waar ringtellers als volgordegenerator kunnen toegepast worden zijn z.g. lopende lichten in lichtreclames.
6.7 Johnsonteller Een Johnsonteller is een ringteller waarvan de inverterende uitgang van de laatste flipflop teruggekoppeld wordt naar de serie-ingang van de eerste flipflop. Om die reden noemt men hem ook een gekruiste of getwiste ringteller. 68
6.7.1 Realisatie
In fig. 6.32 is het schema van een 4-bits Johnsonteller getekend die uitgevoerd is met D-flipflops.
Fig. 6.32 4-bits Johnsonteller met D-111pflops.
6.7.2 Werking
Met de kennis van een schuifregister en van een ringteller is het eenvoudig de werking van een Johnsonteller op te zoeken. Om de teller te initialiseren geven we gedurende een korte tijd op de resetingang een logische "0". Hierdoor neemt de schakeling de toestand QA.QB.QC.QD = 0000 aan. Dit brengt de data-ingang van flipflop A op het logisch 1-niveau. We geven nu een aantal klokimpulsen. Impuls 1: Flipflop A zal setten omdat zijn data-ingang de 1-toestand bezit. Alle andere flipflops behouden de 0toestand omdat hun data-ingang "0" is. De uitgangscombinatie wordt: QA.QB.QC.QD = 1000. Door deze uitgangstoestanden staat er een logische "1"op de data-ingang van flipflop A en B, en een logische "0" op die van flipflop C en D. Impuls 2: Flipflop A blijft geset omdat zijn data-ingang de 1-toestand bezit. Flipflop B zal setten omdat zijn data-ingang ook de 1-toestand bezit. De flipflops C en D behouden de 0-toestand omdat hun dataingang "0" is. De uitgangscombinatie wordt: QA.QB.QC.QD = 1100. Door deze uitgangstoestanden staat er een logische "1" op de data-ingang van flipflop A, B en C, en een logische "0" op die van flipflop D. Impuls 3: De flipflops A en B blijven geset, flipflop C zal setten en flipflop D blijft gereset. De uitgangscombinatie wordt: QA.QB.QC.QD = 1110. Door deze uitgangstoestanden staat er een logische "1"op de data-ingang van alle flipflops. Impuls 4: De flipflops A. B en C blijven geset, flipflop D zal setten. De uitgangscombinatie wordt: QA.QB.QC.QD = 1111. Door deze uitgangstoestanden staat er nu een logische "0"op de data-ingang van flipflop A en op alle andere flipflops een logische "1". Impuls 5: Flipflop A zal nu resetten omdat zijn data-ingang de 0-toestand bezit. Alle andere flipflops behouden de 1-toestand omdat hun data-ingang "1" is. De uitgangscombinatie wordt: QA.QB.QC.QD = 0111. Door deze uitgangstoestanden staat er een logische "0"op de data-ingang van flipflop A en B, en een logische "1"op die van flipflop C en D.
69
Impuls 6: Flipflop A blijft gereset omdat zijn data-ingang de 0-toestand bezit. Flipflop B zal resetten omdat zijn data-ingang ook de 0-toestand bezit. De flipflops B en C behouden de 1-toestand omdat hun dataingang "1" is. De uitgangscombinatie wordt: QA.QB.QC.QD = 0011. Door deze uitgangstoestanden staat er een logische "0"op de data-ingang van flipflop A, B en C, en een logische "1"op die van flipflop D. Impuls 7: De flipflops A en B blijven gereset, flipflop C zal resetten en flipflop D blijft geset. De uitgangscombinatie wordt: QA.QB.QC.QD = 0001. Door deze uitgangstoestanden staat er een logische "0"op de data-ingang van alle flipflops. Impuls 8: De flipflops A, B en C blijven gereset, flipflop D zal resetten. De uitgangscombinatie wordt: QA.QB.QC.QD = 0000. Door deze uitgangstoestanden staat er nu een logische "1"op de data-ingang van flipflop A en op alle andere flipflops een logische "0". Dit is de dezelfde combinatie als bij de begintoestand, dus..0 6.7.3 Toestandentabel
In de tabel van fig. 6.33 zijn de opeenvolgende toestanden van de besproken 4- bits Johnsonteller gegeven. Ook hier wordt als beginstand of initiële toestand gekozen voor de combinatie na het resetten.
Fig. 6.33 Toestandentabel van een 4-bits Johnsonteller.
6.7.4 Tijdvolgordediagrammen
De tijdvolgordediagrammen van fig. 6.34 illustreren nog duidelijker de werking van een Johnsonteller.
Fig. 6.33 Tijdvolgordediagrammen van een 4-bits Johnson teller.
70
6.7.5 Eigenschappen
•
Uit de werking van de schakeling blijkt dat een Johnsonteller met b.v. 4 flipflops 8 verschillende combinaties bezit. Een N- bits Johnsonteller bezit dus 2N verschillende toestanden. In vergelijking met een ringteller is er een efficiënter gebruik van het aantal flipflops, het nodige aantal is slechts de helft. • Een Johnsonteller gebruikt weinig energie in vergelijking met andere telschakelingen omdat er bij iedere klokimpuls slechts een flipflop is die verandert van toestand. • Een dergelijke teller zal heel rap schakelen omdat er geen poorten gebruikt worden in de schakeling. De vertragingstijd van de totale schakeling is gelijk aan de vertragingstijd van ben flipflop. • De teller is ook niet zelfstartend omdat er van de 16 mogelijke combinaties slechts 8 toegepast worden. Er is daarom ook een bijkomende schakeling nodig die ervoor zorgt dat één van de voorkomende uitgangscombinaties geïnitialiseerd wordt. Een dergelijke schakeling zoeken we op bij de berekening van tellers. Het kan echter ook door alle flipflops te resetten zoals uit de uitleg blijkt. Een Johnsonteller zal in digitale systemen het meest toegepast worden als teller zelf omdat hij zeer snel schakelt en omdat hij werkt in een éénwisselcode.
6.8 Toepassingen In dit hoofdstuk hebben we reeds de meest gebruikte toepassingen van een schuifregister, ringteller en Johnsonteller aangehaald. We bespreken nog een paar praktijkschakelingen waarin schuifregisters kunnen toegepast worden. 6.8.1 Volgordegeneratoren
Bij de studie van de ringteller hebben we vermeld dat deze schakeling vooral toegepast wordt als volgordegenerator. We bestuderen bier een universele schakeling die kan toegepast worden in alle systemen die volgens een bepaalde volgorde werken. Dit is o.a. het geval bij de sturing van verkeerslichten, stappenmotoren, machines, ... De schakeling van figuur 6.34 toont een gewone ringteller met een asynchrone initialisatie bij het starten van de schakeling. Hiervan weten we dat iedere flipflop in deze schakeling gedurende de tijd van 1 klokimpuls "1" is. Met behulp van een gewone S-R flipflop met actief hoge ingangen kan nu iedere verbruiker op een bepaald tijdstip gestart en gestopt worden. Door het in- of uitschakelen van een verbruiker op die manier uit to voeren ontstaat een universele schakeling die voor heel wet toepassingen kan ingezet warden. Enkel de frequentie van het klopsignaal moet eventueel aangepast worden.
Fig. 6.34: universele volgordegenerator
71
6.8.2 Digitaal codeslot
Toegangscontroles zijn tegenwoordig een veel toegepast beveiligingssysteem. Een van de mogelijkheden is het indrukken van een aantal toetsen in een welbepaalde volgorde. Met behulp van een schuifregister kunnen we reeds de basisschakeling van een dergelijk digitaal codeslot gemakkelijk realiseren. In figuur 6.35 is de schakeling van het systeem getekend. Zoek zelf eens de principes op waarop de schakeling gebaseerd is. Het is vanzelfsprekend dat de schakeling nog niet volledig is. Zo moeten we er c.a. nog voor zorgen dat er een alarmsysteem in werking gesteld wordt na een bepaald aantal keren indrukken van de toetsen. Omdat hiervoor tellers toegepast warden, zullen we deze schakeling verder uitbouwen naarmate we de leerstof bestuderen.
Fig. 6.35. Principe van een codeslot
6.8.3 Toetsenbord-encoder
Een toetsenbord-encoder wordt klassiek gerealiseerd met een schuifregister als ringteller geschakeld. We kiezen hier voor een eenvoudig toetsenbord van max. 64 toetsen in een zgn. matrix van 8 rijen en 8 kolommen. Het is duidelijk dat het basisschema kan uitgebreid of beperkt worden tot een willekeurig aantal toetsen. We kiezen voor 64 toetsen omdat we dan I.C.'s kunnen toepassen die we reeds kennen en veer de duidelijkheid van het schema. De volledige schakeling is getekend in figuur 15.42. De werking van de schakeling is vrij eenvoudig. Met behulp van een ringteller wordt rij per rij van de matrix logisch "0" gemaakt. Is op dit ogenblik een van de toetsen in die rij gesloten, dan wordt de overeenstemmende kolom ook logisch "0". Die logische "0" zorgt ervoor dat het rijnummer en het kolomnummer, die eerst binair gecodeerd worden, opgenomen worden in een geheugen. Als, op het ogenblik dat een rij "0" gemaakt wordt, geen enkele toets in de rij gesloten is, dan wordt die informatie niet opgeslagen in het geheugen. De inzet in de figuur verduidelijkt nog de beide mogelijkheden. Om de rijen of te tasten of te "scannen" maken we hier gebruik van 2 schuifregisters van het type 74LS194, als ringteller geschakeld. Bij het inschakelen van de voedingsspanning komen de 2 selectingangen S1.S0= 11. Dit is de laadmode van de registers waardoor Q7 logisch "0" gemaakt wordt en alle andere uitgangen logisch "1". Na een korte tijd is de condensator voldoende opgeladen zodat de selectingangen S1.S0 = 01 worden en de "schuif rechts mode ingesteld wordt. Vanaf dit moment warden de rijen gescand op het ritme van de klokoscillator die werkt op een frequentie van bv. 5 kHz. Hierdoor wordt rij per rij logisch "0" gemaakt om to scannen. Hierdoor wordt ook een ingang van de linkse BCD/BINencoder 74147 actief zodat de overeenstemmende binaire combinatie beschikbaar is aan de ingangen van een 8-bits parallel laadregister; hier een 74LS199. Als nu op dit ogenblik een bepaalde drukknop van de rij gesloten is, dan wordt de betreffende kolom ook logisch "0". Deze logische "0" wordt beschikbaar gesteld aan een tweede encoder zodat ook hiervan de binaire combinatie aan de ingangen van het register beschikbaar is. 72
De logische "0" van de kolom waar een drukknop gesloten is, maakt nu de uitgang van de NEN-poort logisch "1". Deze 0-1 overgang triggert 2 in serie geschakelde monostabiele multivibratoren. De uitgang van de tweede mono triggert het parallel laadregister zodat de binaire code die de plaats aangeeft van de gesloten drukknop, in het register wordt geladen. De uitgangen van het register zijn verbonden met een ROM geheugen dat de overeenstemmende ASCII-code van de druktoets aflevert. De uitgang van de eerste mono blokkeert nog de toevoer van klokimpulsen aan het systeem om to vermijden dat meerdere toetsen zouden gedetecteerd warden gedurende de tijd van het laden in het register. Als, op het moment dat een rij logisch '0" wordt, geen enkele toets gesloten is, dan gebeurt die werking niet vermits er geen 0-1 overgang ontstaat op de uitgang van de OF-poort.
Fig. 15.42: Toetsenbord-encoder
73
6.8.4 Afstandsbediening
De schakeling van de encoder kan ook toegepast warden om de verschillende codewoorden van een digitale afstandsbediening to genereren. Het is voldoende om de binaire code die het parallel laadregister of de ROM genereert in een tweede register to laden en dan to schuiven zodat de seriële informatie op een van de uitgangen beschikbaar is. Kan je zelf de schakeling aanvullen?
74