Dr.Godfried-Willem Raes
Kursus Experimentele Muziek: Boekdeel 2: Live electronics - Hardware
Hogeschool Gent - Departement Muziek en Drama
<Naar Inhoudstafel>
Decoders zijn schakelingen die worden ontworpen om bepaalde al dan niet programmeerbare bit-patronen op hun ingangen te herkennen en die bij herkenning een signaal, of een ander bitpatroon, uitsturen.
1.- Adresdecoders :
De belangrijkste toepassing in de digitale elektronika is de zgn. adreskomparator, ondanks zijn naam niet te verwarren met de analoge komparator, waarmee analoge signaalnivoos worden vergeleken. Hier gaat het om louter binaire numerieke vergelijkingen.
Een adreskomparator wordt gebruikt opdat een aangesloten toestel of schakeling zijn adres zou kunnen herkennen wanneer de microprocessor dit op de bus plaatst. Een adreskomparator heeft dan ook steeds N-bit ingangen waarop het variabel binair adres aangeboden wordt en N-bit ingangen waarop een (meestal) vast binair patroon wordt vastgelegd. Wanneer het patroon op de variabele ingangen identiek is aan dat op de vaste ingangen, wordt een uitgang van de schakeling logisch waar. Via afzonderlijke uitgangen kan vaak ook worden bepaald of het binair aangeboden getal groter is dan wel kleiner is dan het ingestelde getal.
Koerante chips toegepast als adresdecoders zijn : 7485, 74521, 74524, 74682, 74688
Voorbeeldchip: 74HCT688
Praktische toepassingen in de muziektechnologie zijn bvb. het 'herkennen' van een instelbaar status-byte uit een reeks midi bytes. (cfr. 2072, voor een uitgewerkte praktische toepassing), of, het herkennen van een bepaalde pin-kode alvoren een bepaalde aktie, zoals het inschakelen van een voedingskring, wordt ondernomen. Hardware oplossingen voor dit soort taken zullen steeds sneller zijn dan hun software implementaties.
2. -BCD- to decimal decoders
binary to decimal decoders ...
Dit zijn geintegreerde schakelingen waarmee diverse konventionele binaire kodes in andere konventionele kodes kunnen worden omgezet.
Zo wordt naast de gebruikelijke zuiver binaire voorstelling van getallen, ook vaak de zgn. binary coded decimal kode gebruikt. In deze kode staat een nibble telkens voor 1 enkel decimaal cijfer en wel alsvolgt:
decimaal |
binair |
BCD-code |
BCD-Hex |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
2 |
10 |
10 |
2 |
3 |
11 |
11 |
3 |
4 |
100 |
100 |
1 |
5 |
101 |
101 |
5 |
6 |
110 |
110 |
6 |
7 |
111 |
111 |
7 |
8 |
1000 |
1000 |
8 |
9 |
1001 |
1001 |
9 |
10 |
1010 |
0001 0000 |
10 |
11 |
1011 |
0001 0001 |
11 |
12 |
1100 |
0001 0010 |
12 |
13 |
1101 |
0001 0011 |
13 |
14 |
1110 |
0001 0100 |
14 |
15 |
1111 |
0001 0101 |
15 |
16 |
0001 0000 |
0001 0110 |
16 |
Men zal vlug doorhebben dat de hexadecimale lezing van BCD-gecodeerde decimale getallen, met deze laatste overeenkomt. Vandaar dat men spreekt van binair gekodeerde decimale getallen. Verwar dus niet door te denken dat het hier om een ander soort binair stelsel zou gaan ! Het is een louter decimaal stelsel dat hierdoor een direkte binaire voorstelling kan krijgen.
BCD-code wordt vooral daar gebruikt waar numerieke gegevens ten behoeve van de menselijke gebruiker getoond dienen te worden: cijfer-displays, beeldschermgeheugens... In vele gevallen gaat het daarbij overigens om pseudo-numerieke gegevens, waarop geen of slechts beperkte rekenkundige bewerkingen dienen te worden toegepast. Voorbeelden hiervan zijn tijd en datum informatie, huisnummers, postkodes, rekening- en telefoonnummers... Deze getallen worden bijna steeds in BCD kode opgenomen. Een BCD-to Decimal dekoder nu, is een geintegreerde schakeling die voor deze kodekonversie kan instaan, door elk nibble dat op de ingangen wordt aangeboden om te zetten in het 0 of 1 maken van een enkele van zijn tien uitgangen. Hiermee kan bvb. eenvoudig een sekwenser worden opgebouwd.
Chipvoorbeeld BCD-to decimal decoders :
7441, 7442, 7445, 74141, 74145, 74445
Chipvoorbeeld BCD-to Binary en Binary to BCD converters :
74184, 74185
Ook voor speciale doeleinden , zoals het al dan niet doen oplichten van de 7 segmenten waaruit de meeste LED of LCD displays zijn opgebouwd, werden chips ontwikkeld. Dit soort koderingen en dekoderingen kan immers steeds veel sneller op hardwarenivo worden verricht.
Chipvoorbeeld BCD-7 segment decoders/drivers:
7446 ,7447, 7448, 7449
Bij chips met BCD in of uitgangen worden deze in het aansluitschema ervan bijna steeds aangegeven als A B C D en dus niet als D0, D1, D2, D3 zoals dat geval zou zijn voor binaire in of uitgangen. Voor 7-segment display-chips noteert men a,b,c,d,e,f,g bij de overeenkomstige uitgangen van de chips.
Vaak worden de funkties van teller en/of deler, BCD encoder, bufferlatch, multiplekser en display driver in 1 enkele chip samengebracht, wat het ontwerpen van allerhande telschakelingen en meters erg eenvoudig maakt.
Voorbeeld aansluitschema 7441-chip :
3.- Multiplexers / demultiplexers
Multiplexing noemt men in het algemeen die schakeltechnische truuk waarbij men teneinde verbindingen te besparen, men die verbindingen om beurten voor verschillende doeleinden (datatransporten) gebruikt. Een eenvoudig voorbeeld is bvb. het aansturen van een display voor een teller met 12-digits. Elk 7-segmentsdisplay heeft normaal gezien 7 aansluitingen waarop het korrekte bitpatroon dient te blijven staan. Deze uitlezing zou dus normaal gezien gebruik moeten maken van 7 x 12 datalijnen = 84 lijnen! Multiplexing nu laat toe slechts 7 datalijnen te gebruiken naast een enkele datalijn die bepaald voor welk digit-display de data bestemd zijn. De multiplexer zorgt er nu voor dat alle displays om beurten de juiste data aangeboden krijgen. Bovendien gebeurt dit zo snel dat wij met het oog menen een stilstaande uitlezing te zien. In werkelijkheid flikkeren gemultiplexte displays echter steeds met frekwenties varierend tussen 25Hz en verschillende kiloherz. Een multiplexer-chip heeft dan ook een aantal dataingangen , een aantal adreslijnen ofwel een tellerpulsingang, een klokingang, en , datauitgangen.
Chipsvoorbeeld multipleksers :
74150, 74153, 74157, 74158
Wanneer we uit een gemultiplekst signaal, de gewenste data opnieuw tevoorschijn willen toveren, dan maken we gebruik van een demultiplekser of data-selektor.
Chipvoorbeeld data-selektors/ demultipleksers :
74138, 74139, 74154, 74155, 74156
4.- Priority encoders
Deze funkties zijn absoluut onontbeerlijk bij het ontwerpen van interfaceschakelingen en interaktieve systemen wanneer data van diverse niet-synchrone informatiebronnen naar eenzelfde komputer of randapparaat dienen te worden verzonden.
Met behulp van deze schakelingen kunnen immers data-botsingen worden vermeden. De prijs die we daarvoor dienen te betalen , is het invoeren van een strikte hierarchie onder de informatieleveranciers binnen ons systeem. Er zal immers bij het ontwerp vastgelegd dienen te worden welke informatiebron de hoogste luister-prioriteit dient te krijgen, zodat de aangesloten apparatuur slechts dan naar andere informatiebronnen luistert wanneer de hogere in de hierarchie geen informatie aan te bieden hebben. Deze behandelingswijze is een rechtstreeks gevolg van het feit dat komputers nu eenmaal sequentiele machines zijn en dat er geen echte gelijktijdigheid kan noch mag bestaan.
In de praktijk blijkt dat dit nadeel niet zo groot is dan het zo op het eerste zicht wel lijkt, zolang tenminste de snelheid waarmee informatie wordt geleverd vele malen kleiner is dan de verwerkingssnelheid van het luisterend apparaat.
Chipvoorbeeld priority encoders:
74147, 74148
Aansluiting 74148 :
Deze chip werkt met negatieve logika. Ingang 7 heeft de hoogste prioriteit. Wanneer deze ingang 0 wordt ( bij negatieve logika komt dit dus overeen met waar ), dan verschijnt op de A0-A2 uitgangen de binaire code 000, onafhankelijk van wat dan ook op de andere ingangen staat. Ingang 6 in ondergeschikt aan ingang 7: op de uitgang verschijnt de binaire code 001 dan en dan alleen als ingang 6, 0 is en ingang 7 niet ook 0 is ( m.a.w. 1 is).
In een praktische toepassing - waarbij we bij wijze van voorbeeld ervan uitgaan dat we 6 informatiebronnen hebben die hun informatie parallel uitsturen en daarbij gebruik maken van een strobe signaal - zullen we de zes strobe signalen aansluiten op de ingangen 7,6,5,4,3,2 . De datauitgangen kunnen we dan met behulp van een multiplekser die gestuurd wordt vanuit de uitgang van onze priority encoder, samenbrengen tot een enkele byte-brede databus. Het totaal aantal lijnen naar de komputer wordt dan 8 datalijnen + 3 adreslijnen.
In de software zal de komputer dan steeds dienen te kijken naar de adreslijnen en de te lezen data interpreteren in funktie van de adresdekodering.
Wanneer we willen vermijden dat er data van onderaan in de hierarchie staande informatieleveranciers verloren gaat, dan is het absoluut noodzakelijk buffergeheugens toe te passen. Hierdoor wordt evenwel steeds de real-time informatie aangetast, tenzij men ook daarvoor buffers toepast. Maar zelfs hiermee zijn de problemen niet van de baan, aangezien dan niet meer kronologisch korrekt kan worden geinterageerd. De enige werkelijke mogelijkheid tot volstrekt behoudt van kronologie en real-time interaktie , bestaat erin net zoveel informatieverwerkende toestellen toe te passen als er informatieverstrekkers zijn. Wanneer we deze verwerkers dan onderling data laten uitwisselen, dan verkrijgen we wat men een parallel komputersysteem heeft genoemd.
Terug naar inhoudstafel kursus: <Index-Kursus>
Naar homepage dr.Godfried-Willem Raes