Ontwerp van digitale systemen. in VHDL

Maat: px
Weergave met pagina beginnen:

Download "Ontwerp van digitale systemen. in VHDL"

Transcriptie

1 Ontwerp van digitale systemen in VHDL Luc Friant Inhoud - 1 -

2 Inhoud - 2 -

3 Inhoud Voorwoord 1. Hoofdstuk 1 Algemene structuur in VHDL 2. Hoofdstuk 2 De beschrijving van sequentiële logica in VHDL 3. Hoofdstuk 3 Reactie timercircuit 4. Hoofdstuk 4 Seriële Communicatie 5. Hoofdstuk 5 VGA interface met UP2 Education Kit 6. Hoofdstuk 6 Elektronische tellers 7. Hoofdstuk 7 S/PDIF-tester met MachXO 8. Hoofdstuk 8 Technologie van programmeerbare logica 9. Hoofdstuk 9 A/D- en D/A omvormers 10. Hoofdstuk 10 CPLD interface voor een ADC 11. Hoofdstuk 11 Een Matrix Keypad Encoder Systeem 12. Hoofdstuk 12 Geheugens 13. Hoofdstuk 13 Toepassingen in de markt 14. Appendix A Korte beschrijving van VHDL 15. Appendix B VHDL referentie 16. Appendix C Pinning van het ISP Starter Kit 17. Appendix D Parallel-JTAG-interface 18. Referenties Inhoud - 3 -

4 Voorwoord Dit handboek is bedoeld voor iedereen die wenst kennis te maken met het ontwerpen van digitale systemen met behulp van VHDL. Verder vind je hier heel wat uitgewerkte voorbeeldschakeling die beschreven zijn in VHDL. Na een grondige omschrijving van het ontwerp volgt een analyse en vereenvoudiging. Daarna werden de ontwerpen uitgetest en gesimuleerd met ontwikkelsoftware van Altera en/of Lattice. De ontwerpen werden op ontwikkelbordjes van deze fabrikanten uitgetest. Het boek is bedoeld voor studenten hoger onderwijs. Het is handig voor de lezer wanneer hij de basis gelegd heeft in digitale systemen wat betreft combinatorische en sequentiële schakelingen. Het is de bedoeling dat zowel de elektronicus als de ICT-georiënteerde technicus de basis kan leggen in het ontwerpen van digitale systemen met VHDL. Een aanrader is het handboek digitale systemen van Liesbeth Kenens en Kris de Backer. Het handboek wordt op het Internet vervolledigd met heel wat extra informatie. Zo vind je hier een korte samenvatting van de verschillende hoofdstukken, aangevuld met labproeven. De ontwikkelsoftware is voor studenten vrij beschikbaar bij fabrikanten zoals Lattice en Altera. Op de CD-ROM bij dit boek vindt u de meeste ontwerpvoorbeelden in VHDL. Uiteraard blijft het mogelijk dat u als lezer nog op- en aanmerkingen hebt of met de auteur van gedachten wilt wisselen. U bent daarbij van harte toe uitgenodigd. Zomer 2006 Luc Friant Inhoud - 4 -

5 1. Hoofdstuk 1 Algemene structuur in VHDL Inleiding Beschrijving van combinatorische logica Beschrijving van een eenvoudige combinatorische schakeling Entity std_logic Mode Type Architectuurblok Beschrijving van een 2 naar 4 decoder Gestructureerde beschrijving van een ontwerp Beschrijving van een 4 bit fulladder Hierarchy van het ontwerp Packages Syntax packages Concatenatie operator Generate statement Process statement IF THEN ELSE stuctuur CASE WHEN ELSE WITH SELECT Oefeningen Hoofdstuk 1 Algemene structuur in VHDL - 1 -

6 1. Hoofdstuk 1 Algemene structuur in VHDL 1.1 Inleiding. De standaard in de industrie voor de beschrijving van een digitale schakeling is VHDL. (VHSIC Hardware Description Language) VHSIC Very high speed integrated circuit Een elektronisch CAD pakket is in staat een VHDL beschrijving te aanvaarden en te produceren in het geval dat de gebruiker een schema zou ingegeven hebben. Dit brengt met zich mee dat VHDL ook een methode is om ontwerpen van het ene CAD pakket naar het andere over te brengen. VHDL is niet alleen een beschrijving van een systeem maar bevat ineens ook de oplossing. Deze oplossing evenwel is op een zodanig hoge manier beschreven dat de computer zelf nog heel wat werk heeft om daar een werkende schakeling voor samen te stellen. VHDL beschrijvingen kunnen ook steeds gesimuleerd worden, zodat men op voorhand een vrij goede controle heeft op het ganse ontwerp. Men zal VHDL gebruiken zowel voor het ontwerp van een PAL, CPLD, FPGA als het ontwerp van semi custom IC s. Daarom kan men zeggen dat VHDL een silicon compiler is. Het is de bedoeling om zelf de meeste VHDL beschrijvingen te lezen en te begrijpen en eventueel relatief kleine problemen in VHDL op te lossen. Tevens heeft de lezer al de nodige basiskennis verworven van de klassieke digitale systemen. 1.2 Beschrijving van combinatorische logica. Behandelende begrippen Entity: Beschrijving van alle in- en uitgangen Architecture: structuur dat de relatie geeft tussen de in- en uitgangen, signalen en de variabelen gebruikt in het ontwerp Port: De naam van de in- of uitgang van in entity Mode (of a port): geeft aan of het een in- of uitgang is Signal: Interne verbinding in een ontwerp Variabele: Een stuk intern geheugen Type: geeft aan welke waardes er kunnen gebruikt worden voor een poort, signal of variabele Library: een verzameling van reeds eerder gecompileerde VHDL bestanden Package: Een groep van VHDL bestanden dat kan gebruikt worden in een ontwerp IEEE Standard 1164: De standaard voor de verschillende VHDL types, bewerkingen, inclusief de STD_LOGIC and STD_LOGIC_VECTOR types. Concurrent: gezamenlijk, op hetzelfde moment Concurrent signal assignment: Een relatie tussen alle in- en uitgangen waarop alle uitgangen gezamelijk reageren idien er een verandering optreed op een ingang of een signaal. Hoofdstuk 1 Algemene structuur in VHDL - 2 -

7 Selected signal assignment statement: Een gezamelijke toekenning van een signaal waarvan de waarde van het signal dat toegekend wordt afhankelijk is van de waarde van een ander signaal of variabele. Comment: commentaar Vector: Een groep van digitale signalen of variabelen gewoonlijk genummerd van hoog naar laag en kan aangesproken worden als enkele multibit variabele. Bit string literal: Een groep van bits, of een vector waar een waarde wordt aan toegekend BV: ( ). Concatenatie: Toevoegen van een signaal aan een bus (vector) 1.3 Beschrijving van een eenvoudige combinatorische schakeling. door 1 & B1 ignition 1 buzzer sbelt 1 & B2 Figuur 1 Logische schema van buzzer Merk op dat de beschrijving in VHDL geen sequentiële beschrijving is maar een beschrijving is van de onderlinge verbindingen tussen de in- en uitgangen. (beschrijving van de hardware) Het is geen taal waar er een programma wordt uitgevoerd instructie per instructie, zoals bij een microcontroller in assembler. Hoofdstuk 1 Algemene structuur in VHDL - 3 -

8 Het vereenvoudigen van de combinatorische vergelijking hoeft niet meer te gebeuren met Karnaugkaarten maar gebeurt door de compiler zelf. 1.4 Entity Na het oproepen van libraries staat in de entity de beschrijving van de in- en uitgangen. De naam van de entity is willekeurig maar gezien het ontwerp zinvol gekozen. De naam van het bestand is hetzelfde als de naam van de entity. (buzzer.vhd) 1.5 std_logic Alle in- en uitgangen van het type std_logic Het STD_Logic (standard logic) type, ook genoemd IEEE Std Multi-Valued Logic, geeft een range van verschillende output waardes meer dan alleen maar 0 en 1. Elke poort, signaal, of variabele van het type STD_LOGIC of STD_LOGIC_VECTOR kan onderstaande waarden bevatten. U, Uninitialized X, Forcing Unknown 0, Forcing 0 1, Forcing 1 Z, High Impedance W, Weak Unknown L, Weak 0 H, Weak 1 -, Don t care De "dwingende" niveaus worden geacht om het equivalent van een output aan te nemen. De "zwakke" niveaus zijn gespecificeerd door een pull-up of pull-down weerstand. De `Z ' wordt gebruikt als hoog impedante tristate buffer. De meerderheid van toepassingen kan door X ', 0 ', 1 ', en Z ' waarden worden behandeld. Om STD_LOGIC in een VHDL- ontwerp te gebruiken, moet u de volgende verwijzing gebruiken: De bibliotheek VHDL roept IEEE en het pakket std_logic_1164 aan voor de beschrijving van de entity. LIBRARY ieee; USE ieee.std_logic_1164.all; Hoofdstuk 1 Algemene structuur in VHDL - 4 -

9 1.6 Mode De verschillende modes van een poort zijn: - in: voor een ingangssignaal - out: voor een uitgangssignaal - inout: voor een bidirectioneel signaal. Dit zijn signalen (pennen) die zowel input- als outputpennen kunnen zijn. Een typisch voorbeeld is een databus van een geheugencomponent. - buffer: een signaal dat op één plaats in de VHDL beschrijving een waarde krijgt, maar dat op (eventueel meerdere) plaats(en) in dezelfde beschrijving als input gebruikt wordt en dat ook output is voor het volledige ontwerp. 1.7 Type Het type van een poort, signaal, of variabele geeft aan welke waardes er kunnen gebruikt worden. Bijvoorbeeld een signaal van het type bit kan alleen de waarde 0 en 1 toegekend krijgen. Een signaal van het type integer kan om het even welke waarde zijn, de waarde wordt gelimiteerd naar computersysteem en VHDL compiler. Type Values How written BIT 0, 1 Single quotes STD_LOGIC U, X, 0, 1, Z, W, Single quotes (see Section 1.6.1) L, H, - INTEGER Integer values No quotes BIT_VECTOR Multiple instances of 0 and 1 Double quotes ( ) STD_LOGIC_VECTOR Multiple instances of U, X, Double quotes ( 11ZZ00 ) 0, 1, Z, W, L, H, - Het type std_logic is een belangrijk type. Het is evenwel geen standaard VHDL, maar een type dat door IEEE als standaard gedefinieerd is. De meeste VHDL implementaties supporteren dan ook dit type, op voorwaarde dat men op de eerste lijnen deze bibliotheek aanduidt door middel van volgende bevelen. Library ieee; Use ieee.std_logic_1164.all; Waarom wordt het type std_logic het meeste toegepast desondanks dat het ontwerp alleen maar een 1 en een 0 gebruikt? Men gebruik dit type omwille van de compatibiliteit met andere bibliotheken, (Altera library lpm) daar wordt dit type ook het meeste toegepast. Nadat men de beschrijving heeft gegeven van de entity, geeft men de beschrijving van de functie van de schakeling in het architectuurblok. Hoofdstuk 1 Algemene structuur in VHDL - 5 -

10 1.8 Architectuurblok. Voorbeeld 1: (buzzer.vhd) Opmerkingen: - Er zijn meerdere architecturen mogelijk voor één ontwerp. Vandaar de naam van de architectuur. - In het ontwerp buzzer kan men evenwel gebruik maken van de signalen: B1 & B2, echter deze zijn niet zichtbaar voor de buitenwereld. - Alle statements zijn concurrent, dit wil zeggen dat ze in het digitaal systeem gelijktijdig zullen uitgevoerd worden. Een rechtstreeks gevolg daarvan is dat de volgorde van de statements in het architectuurblok geen rol speelt. - Indien er haakjes geschreven worden, worden deze van links naar rechts uitgevoerd. - De operatoren and, or, nand, xor en not zijn standaard. Merk op dat nand, nor en not niet associatief zijn: a nand b nand c is niet gelijk aan (a nand b) nand c. - Tekst die na - - staat is commentaar. door 1 & B1 ignition 1 buzzer sbelt 1 & B2 Figuur 2 Logische schema van buzzer Hoofdstuk 1 Algemene structuur in VHDL - 6 -

11 1.9 Beschrijving van een 2 naar 4 decoder. D1 D0 1 1 & Y0 & Y1 & Y2 & Y3 Figuur 3 2 naar 4 decoder Voorbeeld 2: Met behulp van afzonderlijke variabelen (decode1.vhd) Voorbeeld 3: Met behulp van vectoren (decode2.vhd) Hoofdstuk 1 Algemene structuur in VHDL - 7 -

12 In voorbeeld 3 wordt de breedte van de in- en uitgangen beschreven met een vectornotatie: STD_LOGIC_VECTOR (3 downto 0); Er bestaat ook de volgende mogelijkheden: STD_LOGIC_VECTOR (0 to 3); STD_LOGIC_VECTOR (1 to 4); STD_LOGIC_VECTOR (4 downto 1); Opgelet! Probeer consequent te zijn in het gebruik van vectoren, en maak er geen mengeling van wat dat leidt tot syntax fouten! Voorbeeld 4: In- en uitgangen die als groep worden behandeld. geselecteerde signaal toekenning (decode2a.vhd) Men maakt één uitgang hoog voor elke binaire combinatie van de ingangen d0 en d1. Kies dan een signaal y dat de binaire waarde van de ingangen aanneemt. De defaultwaarde is dat alle uitgangen laag zijn. Bovenstaande beschrijving noemt men een geselecteerde signaal toekenning. Simulatie van een 2 naar 4 decoder Figuur 4 Simulatie van een 2 naar 4 decoder Hoofdstuk 1 Algemene structuur in VHDL - 8 -

13 1.10 Gestructureerde beschrijving van een ontwerp. Met behulp van eenvoudige componenten is het mogelijk om in een ander ontwerp deze component te gebruiken. Men bekomt alzo een gestructureerde beschrijving. Voorbeeld: ontwerp van een n bit fulladder Door het ontwerp van een n bit fulladder te herleiden tot een 1 bit fulladder bekomt met een gestructureerde beschrijving. Vergelijkingen van een 1 bit fulladder: sum = (A B) C carry = AB + C(A B) Waarheidstabel a b c carry sum Beschrijving van een 1 bit fulladder: (fulladder.vhd) Figuur 5 Blokschema van entity FULLADDER Hoofdstuk 1 Algemene structuur in VHDL - 9 -

14 Het is nu de bedoeling om bovenstaand ontwerp een 1 bit fulladder te gebruiken als component in het ontwerp van een 4 bit fulladder. Figuur 6 Schema van een 4 bit fulladder 1.11 Beschrijving van een 4 bit fulladder (fourbitadd.vhd) Merk op dat in het ontwerp de in- en uitgangen als een vector worden voorgesteld. Zorg ervoor dat bij het gebruik van vectoren daar waar mogelijk is ze voor te stellen van hoog naar laag (downto). Met het statement component wordt de 1 bit fulladder ingevoegd in het ontwerp. Elke concretisering van een component vereist een component concretisering statement. Poorten worden expliciet toegekend met behulp van de => operator. Poorten worden impliciet toegekend met behulp van de overeenkomstige naam van de poort in de declaratie van de component zelf. Hoofdstuk 1 Algemene structuur in VHDL

15 Men gebruikt hiervoor het statement port map. In bovenstaand ontwerp hebben we gekozen voor een impliciete toekenning van de poorten in het ontwerp. De declaratie van de component gebeurd zoals in onderstaande beschrijving. In software ontwikkeltools is het mogelijk om de hiërarchie van het ontwerp weer te geven Hiërarchie van het ontwerp. Figuur 7 Hiërarchie van FOURBITADD Blokschema van de 4 bit fulladder Figuur 8 Blokschema van FOURBITADD Simulatie van een 4 bit fulladder Figuur 9 Simulatie van een 4 bit fulladder Hoofdstuk 1 Algemene structuur in VHDL

16 1.13 Packages. Een package is een ongecompileerde verzameling van VHDL beschrijvingen die kunnen gebruikt worden in verschillende entiteiten. (entitys) De naam van een library moet reeds in het begin van een VHDL file voor de beschrijving van de entiteit worden gedeclareerd. We kunnen in het geval van het ontwerp van een 4 bit fulladder een package aanmaken met een component 1 bit fulladder Syntax packages. LIBRARY library_name; USE library_name._package_name.all; Voorbeeld van de beschrijving van een package Merk op dat de package geen body bevat. De package body is een optioneel gedeelte dat we in dit handboek niet gebruiken. De de beschrijving van een 4 bit fulladder door gebruik te maken van bovenstaande package. (fourbitadd.vhd) Hoofdstuk 1 Algemene structuur in VHDL

17 Men heeft dus drie bestanden nodig: fulladder.vhd; hier staat de beschrijving van de component fulladder_package.vhd; hier worden de entitys van de componenten beschreven fourbitadd.vhd; het ontwerp In het ontwerp wordt met het statement use work.fulladder_package.all de package aangesproken. In de architectuur van het ontwerp komt dan het statement component fulladder te vervallen. In het ontwerp wordt gebruik gemaakt van een impliciete beschrijving van de component zelf Concatenatie operator. De concatenatie operator wordt gebruikt om signalen samen te bundelen in een bus. Voorbeeld: Wanneer we aan een 2 naar 4 decoder een enable ingang toevoegen, dan kunnen we met de concatenatie operator & de ingang En toevoegen aan de vector w. En w(1) w(0) & Y(0) & Y(1) & Y(2) & Y(3) Figuur 10 Logische schema van een 2 naar 4 decoder Enw <= w & En; EN wordt rechts toegevoegd inputs outputs w(1),w(0),en y(3),y(2),y(1),y(0) x x Hoofdstuk 1 Algemene structuur in VHDL

18 VHDL beschrijving van een 2 naar 4 decoder met een hoog actieve enable En gebruik makend van concatenatie. (dec2to4.vhd) Figuur 11 Simulatie van een 2 naar 4 decoder Hoofdstuk 1 Algemene structuur in VHDL

19 1.16 Generate statement. Een generate statement wordt gebruikt om met meerdere concretiseringen tot een bepaalde hardwarestructuur te komen. Men baseert zich op de waarde van één of meerdere indexvariabelen om het vereiste aantal herhalingen tot stand te brengen. Voorbeeld van een 4 bit fulladder. G1 is een label, en de naam van de component is fulladder. De volledige beschrijving van een 4 bit fulladder met behulp van een generate statement (fourbitadd.vhd) Door toevoeging van een integer waarde is het mogelijk om nu een n bit fulladder te beschrijven. Men hoeft in de beschrijving nog enkel integer waarde n aan te passen. Men gebruikt het statement generic om een integer variabele te declareren. Hoofdstuk 1 Algemene structuur in VHDL

20 Voorbeeld van een n bit fulladder met behulp van Generate statement (nbitadd.vhd) 1.17 Process statement. Een process is een stuk VHDL code dat sequentieel zal worden uitgevoerd. Dit is dus in tegenstelling met de statements die buiten een process staan IF THEN ELSE stuctuur. We nemen het voorbeeld van een mulitplexer. Figuur 12 Principe van een multiplexer Afhankelijk van de waarde van S krijgt de uitgang f de waarde van W 0 of W 1. Figuur 13 Het schema van mux2to1 in de Amerikaanse symboliek. Men heeft hier gekozen voor een som van producttermen. Hoofdstuk 1 Algemene structuur in VHDL

21 Door gebruik te maken van een process kan men deze eenvoudige multiplexer beschrijven. (mux2to1.vhd) Het process wordt vooraf gegaan door een label proc1. Dit is facultatief. Welke ingangen afhankelijk zijn in het process wordt weergegeven tussen haakjes in een sensitivitylijst. Het zijn de ingangen w 0, w 1 en s. Het process wordt uitgevoerd wanneer een signaal die in de sensitivitylijst voorkomt tussen de haakjes verandert. De beschrijving wordt weergeven met een IF THEN ELSE structuur. Wordt bovenstaande beschrijving gecompileerd dan bekomt men een circuit volgens volgende combinatorische vergelijking. F = (not s and w 0 ) or (s and w 1 ) Een foutief alternatief om deze multiplexer te beschrijven, want de compiler geeft hierop een warning. Hoofdstuk 1 Algemene structuur in VHDL

22 Binnen het process heeft men een dubbele toekenning van f. Enkel de laatste toekenning heeft effect op de uitgang. f <= w1; Deze beschrijving kan soms tot triviale circuits leiden. Men geeft de voorkeur aan onderstaande beschrijving. Voorbeeld van een multiplexer die geen echte multiplexer is! Omdat w0 en w1 zijn weggelaten in de sensitivitylijst. De wijziging van w0 en w1 worden pas weergegeven wanneer s van waarde veranderd. Het is eveneens op te merken dat een IF tatement moet worden afgesloten met een END IF en niet met een ENIF. Omwille van het sequentiële karakter van een IF, is een IF bevel alleen toegelaten binnen een process! 1.19 CASE Een case is een statement net zoals een IF statement dat alleen toegelaten is binnen een process. Voorbeeld: Hoofdstuk 1 Algemene structuur in VHDL

23 Voorbeeld van een case structuur om een 2-to-4 binary decoder te beschrijven. (dec2to4.vhd) En w(1) w(0) & Y(0) & Y(1) & Y(2) & Y(3) Figuur 14 Logische schema van een 2 naar 4 decoder met ingang enable Hoofdstuk 1 Algemene structuur in VHDL

24 Voorbeeld van een BCD naar 7-segmentdecoder door gebruik te maken van een case statement WHEN ELSE Bij conditie afhankelijke signalen wordt de waarde van een poort of een signaal toegekend afhankelijk van een conditie. Men gebruikt de WHEN ELSE structuur maar dan buiten een process. Voorbeeld: Hoofdstuk 1 Algemene structuur in VHDL

25 1.21 WITH SELECT Een WITH SELCT is een alternatief voor een case, maar dan buiten een process, net zoals de WHEN ELSE. Voorbeeld VHDL operatoren Hoofdstuk 1 Algemene structuur in VHDL

26 1.22 Oefeningen. Oefening 1 Programmeer een 2 bit naar 7 segment omvormer door gebruikt te maken van gestructureerde beschrijving. Oefening 2 1 dobbelsteen en 1 comparator: Als we op de drukknop drukken zal de digitale dobbelsteen een waarde genereren van 1 tot 6. De digitale dobbelsteen zal een waarde van 1 t.e.m. 6 doorsturen naar een comparator. Als de comparator aan staat ("En = 1"), zal de uitgang F hoog worden als de waarde op de input groter is dan drie. Is de input waarde kleiner dan drie zal er een rood lichtje branden. dobbelsteen a b c compare >3 En <=3 F Rood Opgave 1 Programmeer bovenstaande comparator voor 1 dobbelsteen. Een kansspel met 4 dobbelstenen. dobbelsteen dobbelsteen dobbelsteen S0 S1 S2 S3 dobbelsteen Enable c(0)b(0)a(0) F(0) c(1)b(1)a(1) F(1) c(2)b(2)a(2) F(2) compare compare compare c(3)b(3)a(3) compare a >3 a >3 a >3 a >3 b b b b c c c c En <=3 En <=3 En <=3 En <=3 jackpot Rood0 Rood1 Rood2 Rood3 Men gaat vervolgens 4 comparatoren met elkaar verbinden en elke comparator voorzien van een digitale dobbelsteen. Hoofdstuk 1 Algemene structuur in VHDL

27 Men drukt op S1 waardoor de eerste dobbelsteen een waarde geeft. Is deze waarde hoger dan 3 zal de tweede dobbelsteen geactiveerd worden waardoor je op S2 kan drukken. Is de waarde van de tweede dobbelsteen groter dan 3 zal de derde dobbelsteen geactiveerd worden waardoor we op S3 kunnen drukken. Is de waarde van de derde dobbelsteen groter dan 3 zal de vierde dobbelsteen geactiveerd worden waardoor we op S4 kunnen drukken. Is de waarde van de vierde dobbelsteen groter dan 3 zal de uitgang Jackpot oplichten. Opgave2 Programmeer de jackpot en gebruik packages Een.vhd file van 1 comparator (1 dobbelsteen) Een.vhd file van de package Een.vhd file van het top design ( ons jackpot spel ) dobbelsteen dobbelsteen dobbelsteen S0 S1 S2 S3 dobbelsteen Enable c(0)b(0)a(0) F(0) c(1)b(1)a(1) F(1) c(2)b(2)a(2) F(2) compare compare compare c(3)b(3)a(3) compare a >3 a >3 a >3 a >3 b b b b c c c c En <=3 En <=3 En <=3 En <=3 jackpot Rood0 Rood1 Rood2 Rood3 Oefening 3 Ontwerp in VHDL een kwadratische codeomvormer. Geef twee oplossingen. 1. door de som van de productermen op te schrijven 2. met de structuur: output <= '1' when input = "1010" or input = "1001" else '0'; Een kwadratische omvormer wordt dikwijls gebruik bij debietmetingen waar het debiet wordt bepaald door een verschildruktransmitter. Hoofdstuk 1 Algemene structuur in VHDL

28 Oefening 4 Ontwerp een 4-to-1 multiplexer Ontwerp een 16-to-1 multiplexer met behulp van een PACKAGE. Gebruik in het ontwerp een GENERATE Statement Gebruik onderstaande ENTITY Gebruik onderstaand schema Hoofdstuk 1 Algemene structuur in VHDL

29 Oefening 5 1. Ontwerp een 2 naar 4 binary decoder. w0 1 w1 1 & y0 & y1 & y2 En & y3 2. Ontwerp een 4-to-16 binary decoder met behulp van PACKAGES. 3. Ontwerp een 4-to-16 binary decoder met behulp van een GENERATE statement. Oefening 6 Ontwerp een 12-bit adder door gebruik te maken van een GENERATE statement. Laat het resultaat zien op drie 7-segmentdisplay s. Hoofdstuk 1 Algemene structuur in VHDL

30 Hoofdstuk 1 Algemene structuur in VHDL

31 2. Hoofdstuk 2 De beschrijving van sequentiële logica in VHDL Inleiding Beschrijving van geheugens. (flipflops) Beschrijving van tellers in VHDL Ontwerp van een 2 digit BCD-teller Ontwerp van een 8-bit bidirectionele teller met parallelle load Registers Bufferregisters Schuifregisters Toepassingen van schuifregisters Beschrijiving van een register Beschrijving van een schuifregister Alternatieve beschrijving voor een schuifregister Beschrijving van een 4-bit schuifregister Het dender vrij maken van een schakelaar VHDL-code van een dendervrije schakelaar Oefeningen Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 1 -

32 2. Hoofdstuk 2 De beschrijving van sequentiële logica in VHDL 2.1 Inleiding. Onder de noemer van sequentiële logica vallen de schakelingen die gebruik maken van een kloksignaal. Men gebruikt hiervoor volgende basis componenten zoals: flipflops, tellers, registers, schuifregisters,.. Het is in dit hoofdstuk de bedoeling om een aantal basis schakelingen te beschrijven in VHDL om alzo een aantal bijzonderheden in deze programmeertaal te demonstreren. Nadien worden er een aantal praktische toepassingen beschreven in de volgende hoofdstukken. Behandelende begrippen D-flipflop: basis van een statische geheugencel Sensitivitylijst: geeft aan welke signalen worden behandelt in een process Asynchrone reset: heeft voorrang op de klok Binaire teller: is een teller die alle combinaties af gaat Bidirectioneel: is in twee richtingen Register: dient om informatie tijdelijk in op te slaan Schuifregister: dient om informatie serieel te verwerken IEC: Int. Electro - technical Commission BCD: Binary Coded Decimal Modulo teller: tot een bepaalde waarde tellen Figuur 1 D-flipflop op experimentele print Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 2 -

33 2.2 Beschrijving van geheugens. (flipflops) (d_flipflop.vhd) Voor de entity d_flipflop kan met vele architecturen schrijven. Voorbeeld van de entity d_flipflop: Enkele voorbeelden zijn hier op z n plaats. Nieuw in bovenstaande beschrijving is dat er geen sensitivitylijst is gebruikt. Dat wil zeggen dat het process altijd loopt. In het process staat evenwel een wait bevel. Het process zal daar wachten tot dat: Clk event: event is een attribuut en is true wanneer clk van waarde verandert en clk = 1. Beter is onderstaande beschrijving van een d_flipflop: Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 3 -

34 Meeste ontwerpers geven de voorkeur om het statement: if clk'event and clk = '1' te gebruiken, omdat men dan in de declaratie van het process nog andere signalen kan mee nemen in de sensitivitylijst. Indien men gebruik maakt van het statement: wait until (clk'event and clk='1'); is er geen sensitivitylijst van toepassing. Aan te raden is om consequent bij meerdere processen het statement: if clk'event and clk = '1' te gebruiken. Voorbeeld van een D-flipflop met een asynchrone reset: (asyn_d_flipflop.vhd) Voorbeeld van een D-flopflip met een synchrone reset: (syn_d_flipflop.vhd) Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 4 -

35 2.3 Beschrijving van tellers in VHDL. Binaire tellers: Er zijn in VHDL verschillende mogelijkheden om tellers te ontwerpen. - Zelf zoeken naar de Booleaanse vergelijkingen met Karnaugh Kaarten. We gebruiken een CASE statement om het toestandsdiagram van de teller te beschrijven. - Gebruik een voor gedefinieerde teller uit een bibliotheek van een fabrikant zoals Altera; MAX+PLUS II Library (LPM) (Library of Parameterized Modules) en map de poorten in de poorten van het VHDL ontwerp Voorbeeld van een eenvoudige 8-bit binaire teller met asynchrone clear. (ct_simp.vhd) Wanneer er een verandering van een signaal dat in de sensitivitylijst staat plaats vindt, dan wordt het proces uitgevoerd. Nadien wordt elke actie synchroon uitgevoerd met het signaal van de klok. Indien eerder de clear wordt bediend heeft deze actie voorrang op de klok. Met andere woorden de klok is asynchroon. De berekende waarde van de teller wordt bijgehouden in variabele count dat van het type integer is met een range van 0 tot 255. De teller beschikt trouwens over 256 verschillende toestanden. Het is een lokale variabele welke we binnen het process hebben gedefinieerd. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 5 -

36 De waarde count wordt opnieuw vernieuwd met behulp van het IF statement van de vorm: De regel (IF (clear= 0 ) THEN) resulteerd in een asynchrone clear onafhankelijk van de klok, de clear zet variabele count terug op 0. Tot slot moet de waarde van count overgedragen worden aan de uitgangen van het ontwerp. Dit gebeurt met de regel: q<=count. Merk op dat we hier twee verschillende toekenning gebruiken: - een variabele wordt met operator := toegekend - een signaal of output wordt met operator <= toegekend Figuur 2 Simulatie van een 8-bit binaire teller Indien men 100 klok signalen willen tellen (van 0 tot 99) voegen we volgend statement toe in het process. Het gaat hier over een modulo 100-teller In onderstaande simulatie is het getal 63H (99D) de hexadecimale voorstelling van de teller. Men ziet ook duidelijk in de simulatie het effect van de asynchrone clear. Figuur 3 Simulatie van een modulo 100-teller Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 6 -

37 2.4 Ontwerp van een 2 digit BCD-teller. (BCDcount.vhd) Indien men een 2 digit BCD-teller wenst te ontwerpen moeten we de uitgang van de teller opsplitsen in 2 vectoren namelijk BCD0 en BCD1. Wanneer men voor de uitgangen mode buffer kiest hoeft men in architecture geen gebruik te maken van signalen. D.w.z. dat deze uitgangen terug als ingang kunnen gebruikt worden in het ontwerp. Het is dan tevens mogelijk om de teller uit te lezen met behulp van twee 7-segment decoders. We gebruiken onderstaande entiteit (entity) Men bekomt dan onderstaand blokschema. Figuur 4 Blokschema van BCDCOUNT De teller begint te tellen als ingang E (Enable) 1 is en de clear is synchroon. Beschrijving van het proces om een 2-digit 99-teller in BCD-code te bekomen. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 7 -

38 Simulatie van een 2 digit BCD teller. Figuur 5 Simulatie van een 2 digit BCD teller Merk op dan Enable en Clear synchroon zijn. De volledige beschrijving van een 2-digit BCD-teller. (BCDcount.vhd) Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 8 -

39 2.5 Ontwerp van een 8-bit bidirectionele teller met parallelle load. Figuur 6 Blokschema van een 8-bit bidirectionele teller met parallelle load De teller begint te tellen als COUNT-ENA = 1. De teller kan asyncroon worden gereset met de ingang CLEAR. Met de ingang DIRECTION kunnen we de teller laten begingen vanaf een vooraf ingestelde waarde op ingangen P[7..0] en de asynchrone ingang LOAD. De uitgangen zijn 8 bit breed QD[7..0] De uitgang MAX_MIN is hoog actief. Men gebruikt onderstaande entity om de teller te beschrijven. De functies clear en load zijn asynchroon en maken deel uit van de sensitivitylijst in het process. Iedere keer dat er zich een verandering voordoet aan de ingangen clk, clear en load wordt het process uitgevoerd. Ingangen clear en load worden gecontroleerd met het IF STATEMENT en zijn onafhankelijk van de klok. Vandaar dat zij ook in het begin van het PROCESS worden gecontroleerd. De teller wordt met één verhoogd op voorwaarde dat clk EVENT true is, count_ena 1 is & direction 1 is. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL - 9 -

40 De teller wordt met één verlaagd op voorwaarde dat clk EVENT true is, count_ena 1 is & direction 0 is. De count waarde wordt aan de uitgangen van de outputs toegekend met behulp van een signaal toekenning De mogelijke resultaten op de toekenning van het signaal zijn: qd _ 0 (clear _ 0), qd _ p (load _ 1 AND clear _ 1), increment qd (count_ena _ 1 AND direction _ 1), decrement qd (count_ena _ 1 AND direction _ 0), or geen verandering op qd (count_ena _ 0). Op het einde wordt de teller gedecodeerd naar een MAX_MIN uitgang die: Hoog actief is bij het optellen en de teller op 255 of FFH staat. Hoog actief is bij het aftellen en de teller op 0 = 00H staat. Figuur 7 Simulatie van 8-bit bidirectionele teller met parallelle load Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

41 De bidirectionele functie van het ontwerp wordt gesimuleerd. Merk op dat de eerste puls op de MAX_MIN uitgang een MAX is en dat de tweede puls een MIN is! Controlleer dit bij de overgang van 1 naar 0 bij direction. De volledige beschrijving van een 8-bit bidirectionele teller met parallelle load. Clear en load zijn asynchroon. (pre_ct8a.vhd) Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

42 Op eenvoudige wijze kan met de beschrijving van een 8-bit bidirectionele teller met parallelle load aanpassen naar een synchrone clear en load. Het PROCESS statement heeft maar één ingang in de sensitivitylijst staan. De load en clear worden maar één keer geëvalueerd in het PROCESS, namelijk nadat CLK EVENT AND CLK true is. De volledige beschrijving van een 8-bit bidirectionele teller met parallelle load. Clear en load zijn synchroon. (pre_ct8s.vhd) Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

43 Simulatie van 8-bit bidirectionele teller met parallelle load Asynchrone clear en load. Figuur 8 Simulatie van 8-bit bidirectionele teller met parallelle load Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

44 2.6 Registers. In digitale systemen moet vaak gedurende een zekere tijd binaire informatie of codewoord worden opgeslagen. Dit gebeurt dan in een register. Het register heeft zoveel flipflops als dat er bits zijn in de binaire informatie. Soms is het nodig om de informatie in het register één bit te verplaatsen. Dergelijk register noemen we dan een schuifregister. De informatietoevoer en -afvoer in het register kan serieel of parallel gebeuren. Het algemeen IEC-symbool van een 4-bitregister is voorgesteld in Figuur 9. De vier gelijke blokjes stellen de vier flipflops voor. Het bovenste blokje stelt de bijkomende logica voor. Registers kunnen gebruikt worden als schuifregisters, tellers, serie-parallel omvormer, codegeneratoren, enz. Figuur 9 Het IEC-symbool van een 4-bitregister 2.7 Bufferregisters. Bufferregisters hebben tot doel een binair woord op te nemen en voor een bepaalde tijd te houden. Aan de ingangen van Figuur 9 X0, X1, X2, en, X3 wordt het binaire codewoord aangesloten. Bij het optreden van de klokimpuls wordt het binaire woord in de flipflops opgeslagen zodanig dat Q3 = X3, Q2 = X2, Q1 = X1 en Q0 = X0 wordt. Dit is een asynchrone reset omdat deze ingang onafhankelijk is van het kloksignaal C1. Door de clear-ingang laag te maken worden alle flipflops gereset zodat het ingeschreven woord Q = 0000 is. Wordt nu de clear ingang op hoog gezet, dan is het register klaar om een bepaald woord in geheugen op te nemen. De gemeenschappelijke besturingssignalen (R, S, C1 en L) voor al de D- flipflops bevinden zich in het besturingsblok. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

45 Met de load (L) kan het register al of niet geladen worden. De load is hoog actief. Met de reset (R) kan het volledige register op nul gezet worden. De reset is laag actief. Met de set (S) kan het volledige register op één gezet worden. De set is laag actief. Wordt de load ingang op "1" gezet, dan wordt de X informatie doorgespeeld naar de respectievelijke D-ingangen. Wordt de laod ingang op "0" gezet dan wordt de Q informatie doorgespeeld naar de respectievelijke D ingangen. Klokimpuls C1 leert ons dat alle D-ingangen hierop reageren. Hier is dit op de 0-1 flank of de stijgende flank. Bij de load-ingang (L) is geen polariteit indicator getekend vandaar dat deze ingang hoog actief is, in tegenstelling tot de reset- en de set ingang. Figuur 10 Het IEC-symbool van een 4-bitregister 2.8 Schuifregisters. Een schuifregister dient om informatie dat het bevat één of meerdere posities naar links of naar rechts te verschuiven. De verschuiving gebeurt slechts één positie ineens; bij iedere klokimpuls verschuift de informatie slechts over één naburige flipflop. Het aantal schuifimpulsen of klokimpulsen dat nodig is om de volledige informatie in het geheugen op te nemen is daarom gelijk aan het aantal flipflops dat het register bevat. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

46 2.9 Toepassingen van schuifregisters. Schuifregisters worden in digitale schakelingen, en vooral in de computertechniek, zeer veel gebruikt. We noemen hier enkele toepassingen op. Bufferregisters worden gebruikt om gedurende een bepaalde tijd een binair codewoord te bewaren. Schuifregisters in de serie in- serie uit mode kunnen gebruikt worden als vertragingsregister. De opgeslagen data zal aan de uitgang verschijnen met een vertraging van N impulsen. In die mode kan het schuifregister ook gebruikt worden als tijdelijke opslag van informatie. Een bijzondere toepassing in de serie in- serie uit mode is de "Ringteller" en "Johnson teller". Schuifregisters in de parallel in- parallel uit mode vinden toepassing bij karakter- en codegeneratoren. Voor een herhaling van de code wordt de schakeling gecombineerd met een ringteller die het rondschuiven verzorgt. Uiteraard kan een dergelijk schuifregister gebruikt worden als buffer- of geheugenregister. Schuifregisters in de serie in- serie uit mode worden o.a. gebruikt bij data-transmissie. Dit zal het geval zijn waar de bewerking of verwerking van de digitale signalen bit per bit gebeurt (serieel) en bv. het zichtbaar maken van de informatie parallel moet zijn. Denken we hier bijv. aan het uitvoeren van rekenkundige bewerkingen en het zichtbaar maken van het resultaat op een display. Schuifregisters in de serie in- serie uit mode worden o.a. gebruikt bij datatransmissie. Dit zal het geval zijn waar de digitale informatie over een lange afstand moet overgebracht worden. Denken we hier o.a. aan de digitale afstandsbediening van ons T.V. toestel en teletext. A/D omvormers S.A.R. (Successive approximation register) Het dendervij maken van een schakelaar Het weg filteren van ruis in een kloksignaal Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

47 2.10 Beschrijiving van een register. Onderstaande code is een beschrijving van een 8-bit register met asynchrone clear. (reg8.vhd) Het blokschema van een 8-bit register Figuur 11 Blokschema van REG8 Beter is een beschrijving te geven waarvan het aantal bit van het register afhankelijk wordt gemaakt van een integer value. Men maakt dan gebruik van het statement: Het aantal in- en uitgangen is dan afhankelijk van de integer value N. Om ervoor te zorgen dat het register op 0 wordt gezet, onafhankelijk van het aantal bits, gebruikt men onderstaand statement: Bovenstaand statement is equivalent aan onderstaand statement: Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

48 De volledige beschrijving van een n-bit register. (regn.vhd) Het blokschema van een n-bit register waarbij N=16. Figuur 12 Blokschema van REGN 2.11 Beschrijving van een schuifregister. Volgens onderstaand schema wordt een 4-bit schuifregister beschreven. Figuur 13 Het schema van een 4-bit schuifregister Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

49 Een subcircuit bestaande uit een D- flipflop en een 2 naar 1 multiplexer wordt gebruikt. De entity van dit subcircuit is muxdff en wordt als component gebruikt in de beschrijving van het 4-bit schuifregister. (muxdff.vhd) Afhankelijk van ingang sel wordt ofwel D0 ofwel D1 vergrendeld op de uitgang Q. Onderstaande hardwareschakeling geeft dit weer. Figuur 14 Logisch schema van muxdff Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

50 Door gebruik te maken van 4 maal een muxdff kan men een 4-bit schuifregister bekomen zoals in ondertaande digitale schakeling. Figuur 15 Logische schema van een 4-bit schuifregister Men gebruikt muxdff als component. (shift4.vhd) Let op de volgorde van de beschrijving van de in- en uitgangen van component muxdff. Merk op dat er voor uitgang Q mode buffer is gekozen. Zo vermijd men in de architecture een signaal. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

51 Handig is het wanneer de beschrijving wordt uitgebreid naar een n-bit schuifregister. Men maakt dan gebruik van een GENERATE statement. In dit voorbeeld bekomt men dan een 4-bit schuifregister. Door een integer waarde aan te passen naar 32 bekomen we en 32-bit schuifregister. (shiftn.vhd) Hiërarchie van een n-bit schuifregister Figuur 16 Hiërarchie van een n-bit schuifregister Q(3) Q(2) Q(1) Q(0) W L Clock D1 D0 Sel Q Clock D1 D0 Sel Q Clock D1 D0 Sel Q Clock D1 D0 Sel Q R(3) R(2) R(1) Figuur 17 Logische schema van een 4-bit schuifregister R(0) Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

52 2.12 Alternatieve beschrijving voor een schuifregister. (shift4.vhd) Wanneer er een signaal dat beschreven staat na WAIT UNTIL heeft het signaal invloed op de uitgangen van de D-FF s. De parallelle load wordt met onderstaand statement beschreven: Het schuiven wordt met onderstaand statement beschreven en is synchroon met de klok. De volgorde van de regels speelt geen rol, alles wordt in het PROCESS op hetzelfde moment uitgevoerd. (concurrent) Men kan dus ook onderstaand statement gebruiken: Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

53 Men kan de alternatieve beschrijving ook uitbreiden naar een n-bit schuifregister. (shifta.vhd) In bovenstaande beschrijving wordt een loop statement gebruikt. VHDL kent twee types loop statements: - FOR-LOOP - -WHILE LOOP Syntax: Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

54 2.13 Beschrijving van een 4-bit schuifregister. (shiftreg.vhd) Blokschema Figuur 18 Blokschema van SHIFTREG Beschrijving Merk op dat met onderstaand statement het schuifregister al is beschreven. De vier uitgangen van het signaal shift worden op de vier uitgangen van het ontwerp(entity) gezet. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

55 Men kan vorige beschrijving ook uitbreiden naar een n-bit schuifregister. (shgiftregn.vhd) Voorbeeld van een 8-bit schuifregister Merk op dat voor de uitgang q mode buffer is gekozen. Zo moet er voor dat het process wordt beschreven geen signaal worden gedefinieerd. We kunnen het schuifregister gebruiken om ruis, reflecterende pulsen, of timing hazards weg te filteren. Een veel gebruikte toepassing is het dendervrij maken van een schakelaar. Bij deze toepassing wordt de laatste beschrijving van een schuifregister toegepast Het dender vrij maken van een schakelaar. Dender op een schakelaar wordt geproduceerd elke keer een schakelaar wordt bediend. De knip van de schakelaar veroorzaakt geen stabiel signaal op een digitaal programmeerbaar systeem. Het bedienen van de schakelaar kan meerdere impulsen genereren op een systeem wanneer hij wordt bediend. Figuur 19 Het dender vrij maken van een schakelaar Er komen als het ware meerdere stijgende en dalende flanken voor op de uitgang van een schakelaar. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

56 Figuur 20 Het dender vrij maken van een schakelaar De dender blijft ongeveer 20 ms aanwezig op de uitgang van een schakelaar. Dit alles is weergegeven in de twee volgende figuren. Figuur 21 Het dender vrij maken van een schakelaar Figuur 22 Het dender vrij maken van een schakelaar Men kan de dender van een schakelaar weg filteren met behulp van een 4-bit schuifregister. Voor dat de schakellaar op 1 werd gezet stond er nog een 0 op Din van het schuifregister, zodat de uitgang van de andpoort op 0 staat. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

57 Figuur 23 Het dender vrij maken van een schakelaar Na ongeveer 20 ms is de dender op de schakelaar verdwenen en na vier stijgende flanken van het kloksignaal staan de vier uitgangen van het schuifregister op 1 zodat de uitgang van de andpoort ook op 1 komt te staan. Figuur 24 Het dender vrij maken van een schakelaar Voor dat de dender op de schakelaar is verdwenen krijgen we onderstaande situatie. Figuur 25 Het dender vrij maken van een schakelaar In 20 ms dat er dender zit op de schakelaar wordt dit signaal via de seriële ingang van het schuifregister vier maal ingeklokt. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

58 Figuur 26 Het dender vrij maken van een schakelaar Klokimpuls 1 Figuur 27 Het dender vrij maken van een schakelaar Klokimpuls 2 Figuur 28 Het dender vrij maken van een schakelaar Klokimpuls 3 Figuur 29 Het dender vrij maken van een schakelaar Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

59 Klokimpuls 4 Figuur 30 Het dender vrij maken van een schakelaar Pas na 4 klokimpulsen zal de uitgang van de andpoort op 1 komen te staan. Figuur 31 Het dender vrij maken van een schakelaar In het geval dat de schakelaar terug naar 0 gaat. Figuur 32 Het dender vrij maken van een schakelaar Vanaf de eerste stijgende flank wordt de uitgang van de andpoort 0. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

60 Figuur 33 Het dender vrij maken van een schakelaar Bij de volgende stijgende flank blijft de uitgang van de andpoort 0 staan. Figuur 34 Het dender vrij maken van een schakelaar Bij de volgende vier stijgende flanken blijft de uitgang van de andpoort op 0 staan. Figuur 35 Het dender vrij maken van een schakelaar Figuur 36 Het dender vrij maken van een schakelaar Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

61 Figuur 37 Het dender vrij maken van een schakelaar Figuur 38 Het dender vrij maken van een schakelaar Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

62 2.15 VHDL-code van een dendervrije schakelaar. Blokschema: Figuur 39 Blokschema van DEBOUNCE Beschrijving (debounce.vhd) Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

63 2.16 Oefeningen Oefening 1 Ontwerp volgens onderstaand schema een switch debouncer voor een normaal geopende drukknop. De drukknop bedient een logische nul. Gebruik onderstaande entity. Figuur 40 Switch debouncer voor een normaal geopende drukknop Oefening 2 Ontwerp in vhdl met behulp van een schuifregister onderstaande ringteller. Q(3) Q(2) Q(1) Q(0) Clock w Clock D1 D0 Q Clock D1 D0 Q Clock D1 D0 Q x Clock D1 D0 Q Sel Sel Sel Sel 1 0 L 1 Figuur 41 Ringteller Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

64 Zorg dat de teller zelfstartend is. Met L kiezen we op- of aftellen. L = 1 dan is x de shift-input. (shift left) L = 0 dan is w de shift-input. (shift right) Zorg ervoor dat onderstaande timing wordt gerespecteerd. Figuur 42 Timing ringteller Maak daarna een uitbreiding voor een n-bit ringteller. Hoofdstuk 2 Beschrijving van sequentiële logica in VHDL

65 3. Hoofdstuk 3 Reactie timercircuit Inleiding Sturing van het timercircuit Uitlezing en sturing van het timercircuit Het timercircuit in VHDL Realisatie van het timercircuit met behulp van isplever Oefening: Hoofdstuk 3 Reactie timercircuit - 1 -

66 3. Hoofdstuk 3 Reactie timercircuit. 3.1 Inleiding. We ontwerpen een circuit dat de reactietijd van een persoon kan meten. Het circuit doet een led branden bij een actieve input op actie. Met behulp van een drukknop moet de persoon in kwestie dan zo snel mogelijk reageren. De tijd tussen het starten (actie) en het stoppen van de meting (reactie) wordt weergegeven met behulp van een timer. Het princiepschema wordt in Figuur 1 weergegeven. Figuur 1 princiepschema van het reactie timercircuit De meting wordt gestart door input actie even op 1 te zetten. Hierdoor wordt met behulp van een multiplexer de D-flipflop geset waardoor het ledje gaat branden. Input enable wordt 1 waardoor de teller begint te tellen. De tijd begint te lopen en wordt gestopt van zodra de D-flipflop wordt gereset. Het resetten van de D-flipflop gebeurt met druknop reactie. Met behulp van een BCD-99 teller wordt de reactietijd gemeten. Deze teller wordt geklokt met een kloksignaal van exact 10 Hz. Men kan alzo de reactietijd meten tot op een nauwkeurigheid van 0,1 seconde. Indien we willen meten met een nauwkeurigheid van 0,01 seconde dan moet er gekozen worden voor een kloksignaal van 100 Hz. Hoofdstuk 3 Reactie timercircuit - 2 -

67 3.2 Sturing van het timercircuit. Elektronisch kan de schakeling met D-flipflop, multiplexer, ledje en drukknoppen er uit zien zoals in Figuur 2. Figuur 2 sturing van het reactie timercircuit In de plaats van een teller te kiezen met een enable-ingang wordt er hier gekozen voor een telpoort. Het 10 Hz signaal wordt aangeboden aan een telpoort die wordt open gezet van zodra de D-flipflop op 1 staat. Met drukknop reset wordt het reactie timercircuit terug opnieuw klaar gezet voor een volgende nieuwe meting. De uitlezing van de gemeten tijd kan gebeuren via onderstaande traditionele componenten; - 2 BCD-tellers (bv: 74xx160) - 2 BIN/7-SEG omvormers (bv: 74xx47) Figuur 3 geeft de teller wee. Figuur 4 geeft het volledige ontwerp weer. Het is nu de bedoeling om de volledige schakeling te ontwerpen in een programmeerbare component, bv: een CPLD M4A5-64/32 van Lattice, of een CPLD EPM128S van Altera. Hoofdstuk 3 Reactie timercircuit - 3 -

68 3.3 Uitlezing en sturing van het timercircuit. Figuur 3 De uitlezing van het reactie timercircuit Figuur 4 Het volledige schema van het reactie timercircuit Hoofdstuk 3 Reactie timercircuit - 4 -

69 3.4 Het timercircuit in VHDL. Indien de klok een frequentie heeft van 25 MHz moet deze nog gedeeld worden naar bv. 10Hz. Om het geheel te programmeren gebruiken we de entity REACTION en twee componenten: - SEG7 - BCDCOUNT Entity REACTION Figuur 5 Blokschema van REACTION Component SEG7 Figuur 6 Blokschema van SEG7 Component BCDCOUNT Figuur 7 Blokschema van BCDCOUNT Beschrijving entity van component SEG7: Beschrijving entity van componenet BCDCOUNT: Beschrijving van entity REACTION: Hoofdstuk 3 Reactie timercircuit - 5 -

70 Beschrijving van component SEG7: (seg7.vhd) Beschrijving van component BCDCOUNT: (bcdcount.vhd) Hoofdstuk 3 Reactie timercircuit - 6 -

71 In de beschrijving van architecture reaction wordt gebruik gemaakt van signaal q. Dit signaal wordt gebruikt om de frequentie van 25 MHz te delen door om een frequentie te bekomen van 10Hz. Het proces deler_25mhz wordt hier onder beschreven: We kiezen voor actief lage drukknoppen. De beschrijving van de sturing van het reactie timercircuit gebeurt in het proces flipflop. De concretisering van de componenten SEG7 en BCDCOUNT gebeurt in onderstaande beschrijving: Het signaal q zorgt voor een klok van 10Hz en BCDCOUNT telt als signaal LED 1 is. Simulatie van het reactie timer circuit: Figuur 8 Simulatie van het reactie timercircuit Hoofdstuk 3 Reactie timercircuit - 7 -

72 De volledige beschrijving van het reactie timercircuit: (reaction.vhd) Hoofdstuk 3 Reactie timercircuit - 8 -

73 3.5 Realisatie van het timercircuit met behulp van isplever. Men kan het ontwerp uittesten op een ontwikkelbordje van Lattice. We gebruiken een CPLD M4A5-64/32. Figuur 9 geeft onderstaande projectnavigator van isplever weer en laat het ontwerp met de verschillende processen zien. Figuur 9 De verschillende processen van het reactie timercircuit actie reset reactie Figuur 10 Het ontwikkelbordje met een CPLD van Lattice Hoofdstuk 3 Reactie timercircuit - 9 -

74 Met behulp van de constraint editor kan men de in- en uitgangen voorzien van de juiste pinnummers die overeen komen met de PCB van het bordje. Figuur 11 De constraint editor van isplever 3.6 Oefening: Maak een uitbreiding van de toepassing reactie timercircuit met een uitlezing van 4 digits; Digit3, Digit2, Digit2, Digit0. Hoofdstuk 3 Reactie timercircuit

75 4. Hoofdstuk 4 Seriële Communicatie Interface van een PS/2 toetsenbord Scancodes van een PS/2 toetsenbord Maak- en verbreek codes van een PS/2 toetsenbord Het PS/2 serieel Date Transmissie Protocol Scancode Set 2 voor een PS/2 Toetsenbord PS/2 interface in VHDL Oefening: Hoofdstuk 4 Seriële Communicatie - 1 -

76 4. Hoofdstuk 4 Seriële Communicatie 4.1 Interface van een PS/2 toetsenbord. Figuur 1 Een PS/2 toetsenbord Een PS/2 poort bestaat uit 6 pinnen: - VDD pin 4 - Ground pin 3 - Data pin 1 - Klok pin 5-2 niet gebruikte pinnen Figuur 2 Een PS/2 poort Figuur 3 Een PS/2 poort Figuur 4 Een PS/2 poort Hoofdstuk 4 Seriële Communicatie - 2 -

77 Klok en datalijn zijn open collector en bidirectioneel. De klok wordt normaal gecontroleerd door het toetsenbord, maar kan ook worden gecontroleerd door het systeem zelf, in ons geval de programmeerbare component. De programmeerbare component kan de datatransmissie van het toetsenbord stoppen. De datalijn bevat dus de gegevens (data) tussen het systeem en het toetsenbord. Het toetsenbord en het systeem kunnen verschillende boodschappen en commando s tussen elkaar uitwisselen. Tabel 1 Commando s van een PS/2 toetsenbord Tabel 2 Boodschappen van een PS/2 toetsenbord 4.2 Scancodes van een PS/2 toetsenbord. Het toetsenbord wordt geëncodeerd door de toetsen van het toetsenbord te plaatsen in een matrix van rijen en kolommen. Alle rijen en kolommen worden periodiek op een hoge frequentie getest door een encoder die controleert of de status van een toets verandert. De data van een toets wordt serieel verzonden naar de computer om de scancode te achterhalen. Elke toets die wordt ingedrukt genereert een unieke scancode gebaseerd op een adres identificatie in de switch matrix. Er zijn verschillende variëteiten mogelijk op het gebied van scancodes, en deze zijn afhankelijk van het type toetsenbord. Hoofdstuk 4 Seriële Communicatie - 3 -

78 Het PS/2 toetsenbord heeft twee sets scancodes. De default scancode wordt gezet wanneer de computer wordt opgestart, tenzij er door de computer een commando wordt verzonden naar het toetsenbord voor een alternatieve scancode. Om een interface in VHDL te programmaren tussen het toetsenbord en een programmeerbaar systeem is het makkelijkst om te kiezen voor de default scancode zodat het programmeerbaar system geen commando s hoeft te genereren. 4.3 Maak- en verbreek codes van een PS/2 toetsenbord De scancodes van een toetsenbord bestaan uit een maak- en verbreek codes. Een maak code wordt verzonden telkens men een toets heeft ingedrukt. Een verbreek code wordt verzonden telken men een toets loslaat. Voor de meeste toetsen, is de verbreek code een bitstroom van F0 gevolgd door de maak code van de toets. Zo kan u controleren of er meer dan één toets is ingedrukt. Het laat u tevens toe te controleren welke toets het eerst is losgelaten. Ook wanneer er een toets continu wordt ingedrukt zendt het toetsenbord op een typische snelheid de code tot dat de toets wordt los gelaten en de verbreek code wordt gezonden. 4.4 Het PS/2 serieel Date Transmissie Protocol. De scancode wordt serieel verzonden in 11 bits op de bidirectionele datalijn. Indien de datalijn in rust is, (geen data over de datalijn) dan is de data- en de klok lijn hoog actief. Onderstaande figuur laat de transmissie zien van één enkele toets: 1. startbit 2. 8 data bits bestaande uit de toets scancode van LSB naar MSB 3. Oneven pariteit bit berekend uit de 8 databits zodat de som van het aantal bits inclusief de parity bit oneven is. 4. Een stopbit ( 1 ) Beschrijving van gebeurtenissen gedurende het verzenden van data of comado s van het toetsenbord. 1. Het toetsenbord controleert of beide lijnen data & klok niet actief zijn (lijn in rust). Een niet actieve lijn wordt als een 1 herkend. Indien beide lijnen niet actief zijn is het toetsenbord klaar om een startbit ( 0 ) te verzenden. 2. Het toetsenbord trekt de klok gedurende 35 µs laag. Om een startbit te verzenden. 3. Het toetsenbord zendt dan de overige 10 bits met een klok van ongeveer KHz. De seriële data bestaande uit 8 bits wordt gevolgd door een oneven pariteitbit en een stopbit ( 1 ). Indien het toetsenbord meerdere karakters wenst te versturen, dan volgt er onmiddellijk opnieuw een startbit gevolgd door 8 databits een pariteitbit en een stopbit. Hoofdstuk 4 Seriële Communicatie - 4 -

79 Figuur 5 Serieel datatransmissie protocol Wanneer men bovenstaan algoritme gaat implementeren in een programmeerbare component is het nodig om het kloksignaal te filteren. Trouwens wanneer men een elektrische impuls verstuurd over een elektrische snoer, (twisted pair) wordt deze vervormd. Tevens ontstaan er reflecties. Sommige PS/2 toetsenborden hebben meer last van reflecties dan andere en zijn niet in staat goede klokimpulsen af te leveren aan het systeem. (programmeerbare component) Onderstaande schakeling biedt hiervoor een oplossing. clock_25mhz KEYBOARD-CLK 8-bit shifregister CLK SI LD +5V D7 D6 D5 D4 D3 D2 D1 D0 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 & keyboard_clk_filtered Figuur 6 Schema voor het weg filteren van reflecties Men past het principe toe van het dender vrij maken van een schakelaar, dat reeds eerder is besproken in één van vorige hoofdstukken. Door gebruik te maken van een 8-bit schuifregister en een andpoort worden storingen, reflecties, ruis uit het kloksignaal KEYBOARD_CLK weggefilterd. Deze filter is geïntegreerd in de VHDL beschrijving van KYBOARD dat later zal worden besproken. Zoals in Figuur 7 is te zien is het ook mogelijk om commando s te zenden naar het PS/2 toetsenbord vanuit de PC of een programmeerbaar systeem. Hoofdstuk 4 Seriële Communicatie - 5 -

80 Figuur 7 Serieel datatransmissie protocol voor commando s 1. Het systeem (PC of programmeerbare component) stuurt de kloklijn laag ( 0 ) gedurende 60 µs om nieuwe data komende van het toetsenbord te blokkeren. 2. Het systeem stuurt de datalijn laag ( 0 ) en geeft de kloklijn vrij om aan te geven dat het data voor het toetsenbord ter beschikking heeft. 3. Het toetsenbord zal dan zelf kloksignalen genereren om het commando van het systeem in te lezen. 4. Nadat de stopbit is gegenereerd door het toetsenbord ( 1 ) wordt de datalijn terug vrij gegeven. Als antwoord op elk bevel zal het toetsenbord een acknowledge (ACK) signaal generen, FAH als teken dat de data goed is ontvangen. Indien het systeem de datalijn niet vrij geeft, blijft het toetsenbord een klok genereren als antwoord en zendt een re-send command signaal, FEH of FCH naar het systeem. Zie hiervoor naar de tabel 2. Op een gemiste stopbit of een fout op pariteit wordt ook met een re-send command signaal vanuit het toetsenbord gereageerd. Hoofdstuk 4 Seriële Communicatie - 6 -

81 4.5 Scancode Set 2 voor een PS/2 Toetsenbord. PS/2 toetsenborden zijn beschikbaar in verschillende talen met verschillende karakters weergegeven op de toetsen. In twee stappen is de scancode terug te vinden. Een toets nummer wordt gebruikt om in de tabel de scancode terug te vinden. Het nummer van de toets en de scancode is in volgende tabel terug te vinden samen met een afbeelding van een Engels toetsenbord. Figuur 8 Een PS/2 toetsenbord men scancode Tabel 3 De scancode voor een PS/2 toetsenbord Hoofdstuk 4 Seriële Communicatie - 7 -

82 Vervolg tabel met de scancode voor een PS/2 toetsenbord Tabel 4 De scancode voor een PS/2 toetsenbord Elke toets zendt een maakcode wanneer een toets wordt ingedrukt en een verbreekcode als de toets wordt los gelaten. Wanneer verschillende toetsen op hetzelfde moment worden ingedrukt worden er verschillende maak codes voor een verbreekcode verzonden. Wanneer de spanning wordt opgezet gebruikt het toetsenbord bovenstaande code als default. Met behulp van commando s kan het toetsenbord in een andere scancode set worden gezet. De PC zendt met een initialisatie commando het toetsenbord in een andere scancodeset. De interface die we gaan beschrijven in VHDL is eenvoudiger indien er gebruik wordt gemaakt van het default scancode set. Hoofdstuk 4 Seriële Communicatie - 8 -

83 4.6 PS/2 interface in VHDL. Figuur 9 Blokschema van KEYBOARD Beschrijving van de entity: In het voorbeeld worden er geen commando s naar het toetsenbord gestuurd, men gebruikt de power-on default waardes van het toetsenbord. Om toch commando s te verzenden is er een complexe bidirectionele tristate klok & data interface nodig. Wanneer de spanning word aangezet zendt het toetsenbord een testcode AA en 00 naar de programmeerbare chip. Onderstaande signalen worden gebruikt in het ontwerp. De klok van het toetsenbord wordt gefilterd door het process Clock_filter. Dit process gebruikt een 8-bit schuifregister en een Andpoort om reflecterende pulsen, ruis of timing hazards bij sommige toetsenborden te elimineren. De uitgangssignaal keyboard_clk_filtered zal enkel veranderen indien het inputsignaal keyboard_clk, hoog of laag is voor acht opéénvolgende 25 Mhz clokcs. [(1/ )*8=320 ns] Dus gedurende 320 ns worden alle storingen van Keybord_clk signaal weg gefilterd. Ruis, reflecterende pulsen, of timing hazards die in de kabel van een toetsenbord kunnen worden weggefilterd. Hoofdstuk 4 Seriële Communicatie - 9 -

84 Zo kunnen er geen onechte kloksignalen worden gegenereerd op de programmeerbare component. Voorstelling van het Klok_filter process clock_25mhz KEYBOARD-CLK 8-bit shifregister CLK SI LD +5V D7 D6 D5 D4 D3 D2 D1 D0 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 & keyboard_clk_filtered Figuur 10 Schema van het Klok_filter process De VHDL-beschrijving wacht op een startbit en converteert de acht volgende seriële data bits naar parallel, en bewaart het input karakter in een signaal charin, en set flag scan_ready, om aan te duiden dat een nieuw karakter is ingelezen. Het scan_ready signaal of ready flag input is een handshake signaal dat nodig is om er zeker van te zijn dat er maar één keer per aanslag van een toets een nieuwe scancode wordt ingelezen. Scan_ready wordt geset elke keer er een nieuwe scancode is ontvangen. Het input signaal read reset het scan_ready handshake singaal. Het process read_the_key_scan_code wacht tot dat scan_ready hoog gaat. Het process read_the_key_scan_code leest vanaf dat moment een nieuwe waarde voor scan_code. Men gebruikt een 9 bit schuifregister, een bitteller INCNT om het aantal bits te tellen. De teller INCNT wordt met onderstaande beschrijving op gereset. Met onderstaande beschrijving wordt er getest of er een startbit op nul staat. Hoofdstuk 4 Seriële Communicatie

85 Het inschuiven van een scancode gebeurt met een 9 bit schuifregister op het ritme van een gefilterde klok.: Na negen gefilterde klokimpulsen wordt de waarde van het schuifregister overgedragen aan de uitgang scan_code en worden de nodige handshake signalen READ_CHAR gereset, ready_set geset en de bitteller INCNT gereset. Er worden geen commando s naar het toetsenbord gestuurd en men gebruikt de default waardes van het toetsenbord. Indien men commando s wil sturen naar het toetsenbord moeten de lijnen klok en data bidirectioneel worden uitgevoerd. De parity bit wordt ook niet getest. Men kan met een CAD oplossing de beschrijving KEYBOARD uittesten door de uitgang SCAN_CODE op twee zeven segment displays te zetten. Zie onderstaande CAD tekening. Hoofdstuk 4 Seriële Communicatie

86 Beschrijving van de module KEYBOARD: (keyboard.vhd) Beschrijving van: - de entity - de signalen - het process read_set - het process klok_filter Hoofdstuk 4 Seriële Communicatie

87 Beschrijving van: - het process read_the-key_scan_code: 4.7 Oefening: 1. Gebruik de keyboard module als input module om de animatie van een willekeurig looplicht aan te passen. 2. Gebruik de keyboard module als input module om een pulsbreedte gemoduleerd signaal aan te passen. 3. Gebruik de keyboard module als input module voor een video game. Hoofdstuk 4 Seriële Communicatie

88 Hoofdstuk 4 Seriële Communicatie

89 5. Hoofdstuk 5 VGA interface met UP2 Education Kit Inleiding Technologie van een video display De VGA industrie standaard 640 x 480 pixel mode Opbouw van een beeld op een monitor VGA interface in VHDL Beschrijving van de synchronisatiesignalen in VHDL Een verticale lijn op het scherm Beschrijving van component VGA_SYNC Video voorbeelden Een karakter gebaseerd ontwerp op een VGA interface Hoofdstuk 5 VGA interface met UP2 Education Kit - 1 -

90 5. Hoofdstuk 5 VGA interface met UP2 Education Kit 5.1 Inleiding. Een VGA videosignaal bestaat uit 5 signalen. Twee zijn TTL compatibel, de horizontale synchronisatie en de verticale synchronisatie voor het synchroniseren van het videosignaal. Drie analoge signalen met een peak-to-peak niveau van 0,7 1,0 V worden gebruikt voor de kleuren. De kleuren zijn Rood, Groen en Blauw. Zij worden dikwijls samen gebruikt in één woord RGB-signaal. Door het analoog niveau van elk der kleuren Rood, Groen en Blauw te wijzigen ontstaat er een andere kleur op het scherm van de monitor. 5.2 Technologie van een video display. De technologie die wordt gebruikt om een beeld op een computerscherm te zetten stuurt de videosignalen aan. De hoofdcomponent die hiervoor wordt gebruikt is een CRT of een Cathode Ray Tube. Figuur 1 geeft de opbouw van een CRT weer. Figuur 1 CRT of een Cathode Ray Tube Een CRT bestaat uit: A. cathode B. geleidende coating C. anode D. phosphor-coated scherm E. RGB-elektronenstraal F. shadow mask Hoofdstuk 5 VGA interface met UP2 Education Kit - 2 -

91 Met behulp van een elektronenkanon gevormd met de cathode & anode van de CRT worden er 3 elektronenstralen afgevuurd op het scherm van de monitor. De geleidende coating zorgt voor de afvoer van de elektronen die op het scherm botsen. Elk van de drie elektronenstralen botsen op een phoshporcoated deeltje op het scherm. Met behulp van het shadow mask ontstaat er een gekleurde pixel op het scherm van de monitor. Figuur 2 laat een detail van een phoshpor-coated scherm zien. A. phoshpor-coated deeltje B. shadow mask C. glas Figuur 2 Detail zien van een phoshpor-coated scherm Een RGB elektronenbundel schrijft het beeld op het scherm bestaande uit een aantal horizontale lijnen. Een beeld kan bijvoorbeeld gevormd worden door 480 lijnen van 640 pixels. Figuur 3 Een beeld van 640 maal 480 pixles Hoofdstuk 5 VGA interface met UP2 Education Kit - 3 -

92 Iedere lijn word gevormd door 640 pixels. (640 pixels in een rij) Een beeld bestaat uit 480 lijnen. (480 pixels in een colom) 60 Maal per seconde (60 Hz) wordt een volledig scherm op het beeld van de monitor gezet om flikkering te voorkomen. Het menselijk oog detecteert een flikkering met een refreshrate van 30 Hz. Om interferentie van de fluoriserende lichtpuntjes met het shadow mask te reduceren kiest men voor een refreshrate van 60 Hz. De sturing van een horizontale lijn wordt gesynchroniseerd met HSYNC. De sturing van een volledig beeld wordt gesynchroniseerd met VSYNC. Figuur 4 Het HSYNC- en het VSYNC TTL-signaal Figuur 5 Een volledig videoframe Omdat een RGB-elektronenbundel een zekere tijd nodig heeft om terug te keren(row en guard bands) duurt de scanline time 31,77µs. Dit komt overeen met us * = 800 pixels/line. Hoofdstuk 5 VGA interface met UP2 Education Kit - 4 -

93 5.3 De VGA industrie standaard 640 x 480 pixel mode. De horizontale synchronisatie bestaat uit een videosignaal en een HSYNCsignaal zoals in Figuur 6. Figuur 6 Horizontale timing Horizontal Timing 640 Horizonal Dots Horiz. Sync Polarity NEG Scanline time (A) us * = 800 pixels/line Sync pulse length (B) 3.77 us Back porch (C) 1.89 us Active video (D) us Front porch (E) 0.94 us De verticale synchronisatie bestaat uit een videosignaal en een VSYNCsignaal zoals in Figuur 7. Figuur 7 Verticale timing Vertical Timing in ms Vert. Sync Polarity NEG Vertical Frequency 60Hz Total frame time (O) ms Sync length (P) 0.06 ms Back porch (Q) 1.02 ms Active video (R) ms Front porch (S) 0.35 ms Elke lijn heeft: - 8 pixels front porch - 96 pixels horizontal sync - 40 pixels back porch Hoofdstuk 5 VGA interface met UP2 Education Kit - 5 -

94 - 8 pixels left border pixels video - 8 pixels right border Totaal 800 pixels per lijn Elk beeld heeft: - 2 lines front porch - 2 lines vertical sync - 25 lines back porch - 8 lines top border lines video - 8 lines bottom border Totaal 525 lijnen per beeld. 800 x 525 x 60 Hz = 25,2 MHz Een pixel neemt ongeveer 1/25,2 MHz = 40 ns in beslag. In Figuur 8 worden de verschillede tijden van de horizontale- en de verticale timing weergegeven volgens de VGA industrie standaard 640 x 480. Bron: Figuur 8 Tijden van de horizontale- en de verticale timing Hoofdstuk 5 VGA interface met UP2 Education Kit - 6 -

95 5.4 Opbouw van een beeld op een monitor. Elke VGA monitor heeft een interne klok waarbij elke pixel wordt geupdated. (25,175 MHz). De periode van één pixel is dan 39,72 ns afgerond 40 ns. Een VGA monitor wordt gerefreshed met behulp van een verticale en een horizontale synchronisatie. De timing hiervan wordt beschreven in de VGA industrie standaard. In het linkse boven gedeelte van het scherm wordt de refreshcycle gestart. Nadat het eerste pixel wordt gerefreshed, refreshed de monitor de resterende pixels in de rij. Wanneer de monitor een horizontale refreshimpuls ontvangt start de volgende refreshcycle van een rij. Dit proces wordt herhaald tot de laatste rij van het scherm. Wanneer het laatste pixel van de laatste rij is gerefreshed wordt met een nieuwe verticale synchronistatie-impuls een nieuw scherm gestart. Om nu in VHDL een interface te beschrijven voor een VGA interface hebben we een tweetal tellers nodig, countx- en county. Blokschematisch wordt deze synchronisatie met behulp van de twee tellers weergegeven zoals in Figuur 9. CountX generator krijgt z n kloksignaal van 25,125MHz. Met HSync wordt countx gereset. Figuur 9 countx- en county generator Bij het schrijven van een volledige lijn wordt met HSync tellery één positie verder gezet. Met VSync wordt county gereset. Hoofdstuk 5 VGA interface met UP2 Education Kit - 7 -

96 5.5 VGA interface in VHDL. Beschrijving van countx en county in VHDL. (count_xy.vhd) We gebruiken een 10-bit teller (2 10 = 1024) omdat we respectievelijk moeten kunnen tellen tot 600 en 800. Hoofdstuk 5 VGA interface met UP2 Education Kit - 8 -

97 5.6 Beschrijving van de synchronisatiesignalen in VHDL. Rekening houdend met eerder beschreven VGA industrie standaard 640 x 480 kunnen we het synchronisatiegedeelte beschrijven. We gebruiken de entity SyncGen. (syncgen.vhd) Beschrijving van de architectuur van syncgen: VGA interface met UP2 Education Kit - 9 -

98 5.7 Een verticale lijn op het scherm We kunnen nu de interface uittesten door een verticale lijn te schrijven op het scherm van een PC-monitor zoals in Figuur 10. Figuur 10 Een verticale lijn op het scherm We realiseren de entity LINE: Figuur 11 Blokschema van LINE We gebruiken de eerder beschreven componenten count_xy, syncgen, en debounce. Figuur 12 De structuur van het ontwerp LINE Met component debounce kunnen we de verticale lijn naar rechts bewegen. De component lpm_add_subb is een Library of Parameterized Module die wordt toegevoegd omdat er rekenkundige bewerkingen worden uitgevoerd in het ontwerp. VGA interface met UP2 Education Kit

99 Beschrijving van component debounce. Figuur 13 Blokschema van DEBOUNCE Logische schema van component debounce. Figuur 14 Schema van component debounce Beschrijving van de entity debounce. Met uitgang hit laten we een verticale lijn op het scherm naar rechts bewegen. (go_right) VGA interface met UP2 Education Kit

100 Volledige beschrijving van component DEBOUNCE: (debounce.vhd) VGA interface met UP2 Education Kit

101 Volledige beschrijving van het ontwerp LINE. (line.vhd) VGA interface met UP2 Education Kit

102 VGA interface met UP2 Education Kit

103 5.8 Beschrijving van component VGA_SYNC. Figuur 15 Blokschema van VGA_SYNC Het Altera UP1 ontwikkelbord beschikt over een VGA-interface zoals te zien is in Figuur 16.. Figuur 16 Het Altera UP1 ontwikkelbord De volgende code genereert de horizontale- en verticale synchronisatieimpulsen door gebruik te maken van een 10-bit teller, H_count voor de horizontale teller en V_count voor verticale teller. H-count en V-count geeft een pixel rij- en kolomadres dat kan gebruikt worden als input in andere processen. De gebruiker kan deze x en y coördinaten gebruiken om de positie te bepalen van een pixel op het scherm. Het pixeladres wordt gebruikt om een beeld in RGB kleur op het scherm te zetten. Het bordje beschikt over een klok van 25,175 MHz om de nodige synchronisatiesignalen te generen volgens de VGA industrie standaard 640 x 480 en volgens de timing in Figuur 8. VGA interface met UP2 Education Kit

104 Volledige beschijving van het ontwerp VGA_SYNC. (VGA_SYNC.vhd) VGA interface met UP2 Education Kit

105 Om RGB data uit te zetten (off) wordt gebruik gemaakt van het signaal video_on. Video_on wordt via een and-poort gestuurd om de RGB outputs te sturen. Video_on is laag gedurende de tijd dat de beam wordt gereset bij de start van een nieuwe lijn of beeld. Voor het genereren van video op het scherm wordt onderstaande code gebruikt: VGA interface met UP2 Education Kit

106 Alle signalen, RGB en de sync. signalen komen rechtreeks van de uitgang van een flipflop. Een kleine vertraging van enkelen nanoseconden resulteert in een troebel beeld. Slechts indien alle uitgangssignalen synchroon komen van een flipflop zullen deze op hetzelfde moment veranderen en resulteert dit in een scherp beeld. De pinnen van de component FLEX EPF 10K20 worden weergegeven in Figuur 17. Figuur 17 De pinnen van component FLEX EPF 10K20 Met behulp van assign interface kunnen de pinnen van component FLEX EPF 10K20 worden toegekend. Figuur 18 Toekenning van de pinnen via assign interface VGA interface met UP2 Education Kit

107 5.9 Video voorbeelden. Een simpel video voorbeeld van interface VGA_SYNC wordt in onderstaand schema weergegeven. Het is in principe een voorbeeld van een LED die wordt bediend als men op drukknop PB1 drukt. Als je PB1 bediend wijzigt de kleur van het scherm van zwart naar rood. Figuur 19 VGA_LED.gdf VGA_SYNC beschikt over de uitgangen pixel row- en column. Eén van deze uitgangen kunnen gebruikt worden als ingang om bijvoorbeeld op een bepaald pixeladres de kleur van het beeld te veranderen. Figuur 20 VGA_BAR.gdf Er ontstaat een beeld op het scherm bestaande uit 8 verschillende verticale kleurenbalken. Figuur 21 Beeld van 8 verschillende verticale kleurenbalken VGA interface met UP2 Education Kit

108 5.10 Een karakter gebaseerd ontwerp op een VGA interface. Figuur 22 Voorbeeld van karakters op een scherm met VGA interface De bedoeling is om in deze applicatie karakters te schrijven op het scherm van een monitor door gebruik te maken van eerder beschreven interface VGA_SYNC. Om deze applicatie mogelijk te maken is het nodig om al de mogelijke karakters op te slaan in een geheugen van de programmeerbare component van Altera FLEX 10K20. Deze programmeerbare component beschikt over SRAM cellen. (statische RAM) Dit geheugen bevindt zich in het zogenaamde Embedded array block (EAB). De inhoud van het geheugen kan geladen worden met behulp van een memory-initialistie-file, *.mif. Vanwege het beperkte geheugen in de component beperken we ons tot 40 karakters op 30 lijnen. Elk karakter is een pixel georiënteerd beeld op een font van 8 bij 8 dot. Om het karakter te vergroten op het scherm neemt één dot 2 pixels in beslag zodat een karakter 16 bij 16 pixels groot is. Dit is realiseerbaar door de LSB van de rij- en kolom teller niet te gebruiken. Tevens biedt dit het voordeel dat er geen extra hardware in de component wordt ingenomen. Met de rij- en kolom tellers wordt de kleur van een pixel beïnvloed. Inhoud van het geheugen voor het karakter A : Adres: font data 010 : ; % ** % 011 : ; % **** % 012 : ; % ** ** % 013 : ; % ****** % 014 : ; % ** ** % 015 : ; % ** ** % 016 : ; % ** ** % 017 : ; % % VGA interface met UP2 Education Kit

109 Figuur 23 Blokschema van het karaktergeheugen De kolomteller selecteert elke font bit van links naar rechts in het woord van het font geheugen als het videosignaal over de rij van het scherm beweegt. De waarde van pixel data ( 0 of 1 ) wordt gebruikt als logisch niveau van het RGB signaal. De laagste 3 bits (rij adres) van het adres selecteert de volgende geheugenplaats van het karakter-font geheugen wanneer de display beweegt naar de volgende rij. Een 3-bit kolom-adres samen met een multiplexer wordt gebruikt om een overeenkomstige bit uit het geheugen te halen voor een RGB-pixel. Onderstaande entity CHAR_ROM wordt gebruikt als karakter ROM. Figuur 24 Blokschema van CHAR_ROM In de VHDL-beschrijving declareert men de grote van het geheugen met de functie LPM_ROM en gebruikt men tcgrom.mif bestand om de inhoud van het geheugen vast te leggen. VGA interface met UP2 Education Kit

110 Beschrijving van de entity CHAR_ROM (char_rom.vhd) Tabel 1 Geheugenmap van 64 karakters op een font van 8 X 8 char adress char adress char adress char 00 P 20 Space A 01 Q 21! B 02 R 22 " C 03 S 23 # D 04 T 24 $ E 05 U 25 % F 06 V 26 & G 07 W H 10 X 30 ( I 11 Y 31 ) J 12 Z 32 * 52 A 70 K 13 [ B 70 L 14 Dn arrow 34, 54 C 70 M 15 ] D 70 N 16 Up arrow E 70 O 17 Lft arrow 37 / 57 F 70 VGA interface met UP2 Education Kit

111 Onderstaand schema genereert een testpatroon van 40 karakters over 30 lijnen op het display van een monitor met een VGA-interface. Figuur 25 Schema van een karkater gebaseerd ontwerp op een VGA interface Door gebruik te maken van de RGB-inputs van entity VGA_SYNC bekomen we witte karakters (111=RGB) op een rode achtergrond (100=RGB). Elk karakter gebruikt een 16 x 16 pixel gebied in een 640 x 480 display gebied. Omdat LSB in het pixel rij en kolom adres wordt overgeslagen neemt elk font van het karakter een 16 x 16 pixel gebied in beslag. Nochtans gebruiken we een 8 x 8 font geheugen. VGA interface met UP2 Education Kit

112 VGA interface met UP2 Education Kit

113 6. Hoofdstuk 6 Elektronische tellers Inleiding Principe van elektronische tellers Oefening Principe van een digitale voltmeter Hoofdstuk 6 Elektronische tellers - 1 -

114 6. Hoofdstuk 6 Elektronische tellers 6.1 Inleiding Met elektronische tellers bedoelen we de schakelingen die gebruikt worden in frequentiemeters, toerentellers, tijdsmeters, digitale V-meters enz... Bij elektronische tellers willen we weten hoeveel impulsen een bepaald signaal bezit in één seconde, m.a.w. we willen de frequentie kennen van het signaal. De digitale frequentiemeter is daarom de basisschakeling van alle digitale tellers. In alle toestellen moet de te meten grootheid omgezet worden in een pulstrein waarvan het aantal impulsen per seconde evenredig is met de grootte van het onbekende signaal. In een digitale gelijkspanningsvoltmeter bijvoorbeeld zal een spanning van 1 V een pulstrein geven van 1000 Hz, 2 V betekent dan 2000 Hz, enz. Hieronder volgen een aantal basisprincipes. 6.2 Principe van elektronische tellers. Onderstaand blokschema geeft het principe van een 2-decaden elektronische teller. Figuur 1 Blokschema van een 2-decaden elektronische teller. Hoofdstuk 6 Elektronische tellers - 2 -

115 De werking van de schakeling kunnen we als volgt samenvatten. Gedurende een vaste gekende tijd wordt de telpoort open gezet door het kloksignaal FN. In die tijd telt de teller het aantal impulsen dat FX via de poort in de teller stuurt. Het moment dat de teller dicht gaat behoudt de teller zijn telstand. Door het latchimpuls (L) op het tussengeheugen wordt de tellerinhoud in het geheugen gebracht en bewaard. Hierdoor komt de stand van de teller zichtbaar op het display. De teller zelf mag nu gereset worden (R) zodat alles klaar staat voor een volgende meting. Het logisch schema voor de timing van een eenvoudige frequentiemeter kan eruitzien zoals in Figuur 2. Figuur 2 Logische schema v.d. timing van een eenvoudige frequentiemeter Men gebruikt een tijdsbasis van 1 Hz (FN) een meettijd van 1 seconde. Wanneer we gedurende 1 seconde 1000 impulsen hebben geteld (FX) dan is de onbekende frequentie gelijk aan 1000 Hz. Een D-flipflop wordt gebruikt als deler door 2 zodat de telpoort exact 1 seconde open staat en 1 seconde dicht staat. Figuur 3 Timing van een eenvoudige frequentiemeter Hoofdstuk 6 Elektronische tellers - 3 -

116 Wanneer de telpoort wordt gesloten zorgen we ervoor dat de waarde van de teller wordt vergrendeld in een tussengeheugen (latch). Signaal Latch zorgt hiervoor. Daarna kan de teller gereset worden met signaal Reset. Figuur 4 Principe van een frequentiemeter Wanneer we het blokschema uitbreiden naar een 9999-teller is het mogelijk om frequenties op (fx) te meten tot 1 khz, als de telpoort 1 seconde open staat. 6.3 Oefening Realiseer het algoritme van een eenvoudige frequentiemeter in VHDL. Zorg voor een meetbereik van 100 Hz met een tijdbasis van 1 seconde. Hoofdstuk 6 Elektronische tellers - 4 -

117 6.4 Principe van een digitale voltmeter. Blokschema van een digitale voltmeter. Figuur 5 Blokschema van een digitale voltmeter Aan de ingang van de DVM voorzien we een spanning naar stroomomvormer die op zijn beurt de stroom omvormt naar een impulstrein van een bepaalde frequentie. Hoofdstuk 6 Elektronische tellers - 5 -

118 Figuur 6 Spanning naar frequentieomvormer Deze frequentie kunnen we dan meten met een frequentiemeter. Men gebruikt bijvoorbeeld een 2000 teller met tussengeheugen. (latch) Figuur 7 Een 2000 teller met tussengeheugen (latch) We regelen de spanningen naar frequentieomvormer af voor een ingang van 0 tot 2 V en een uitgang van 19,99 khz. Deze afregeling heeft consequenties met betrekking tot de timing van de frequentiemeter. Wanneer we gedurende een tiende van een seconde (0,1 sec.) een meting uitvoeren, heeft de teller bij een frequentie van 19,99 KHz maar 1999 impulsen geteld. Figuur 8 Timing van de frequentiemeter Hoofdstuk 6 Elektronische tellers - 6 -

119 7. Hoofdstuk 7 S/PDIF-tester met MachXO Opbouw van het S/PDIF-signaal Digitale audio-tester Werking van de digitale audio-tester Blokschema en implementatie van de digitale audio-tester ISPLever implementatie van de digitale audio-tester: Het volledige schema van de digitale audio-tester Samenvatting Hoofdstuk 7 S/PDIF-tester met MACHXO - 1 -

120 7. Hoofdstuk 7 S/PDIF-tester met MachXO 7.1 Opbouw van het S/PDIF-signaal Geschiedenis De digitale audio-interface bij apparatuur zoals CDspelers en DATrecorders werd oorspronkelijk onder de aanduiding AES/EBU (Audio Engineering Society, European Broadcasting Union) ingevoerd, die vervolgens voor omroepzenders werd gespecificeerd. In EBU-document Tec van november 1985 werd een interface met een sample-frequentie van 48 khz (of 32kHz) en 24 audio-bits per kanaal gespecificeerd. Met de groei van het aantal CDspelers ontstond een consumentenversie van de AES/EBU die door Sony en Philips werd gespecificeerd en daardoor als Sony/Philips Digital Interface (S/PDIF) werd aangeduid. De professionele AES/EBU-interface en de consumenten- S/PDIF-versie werden later door de IEC (International Electrotechnical Commission) in de standaard IEC 958 samengevoegd. De belangrijkste verschillen tussen de professionele en de S/PDIFinterface liggen niet in de codering van de audio-gegevens, maar onder andere in de overdracht van extra informatie in het Channel Status Block. Hierin geeft het eerste bit aan of er sprake is van professionele of S/PDIF-structuur. De opbouw van de frames en de audio-codering is voor beide versies volledig identiek. Subframes De datastroom van een IEC-958-interface bestaat uit subframes, frames en blokken. Elk subframe bevat een sample van het audio-signaal en heeft een lengte van 32 bits. De eerste vier bits (bit0...3) vormen een preamble voor de synchronisatie. Hierbij zijn drie verschillende bitcombinaties mogelijk: B, M en W. Preamble B geeft aan dat het hier gaat om het eerste woord van een blok, dat is altijd het linkerkanaal. Preamble M duidt op een normaal subframe van het linker audio-kanaal. Tenslotte is er nog preamble W voor het rechter kanaal. De audio-informatie is opgeslagen in de daaropvolgende 24 bits. Worden niet alle 24 bits gebruikt, dan worden de meest significante bits op nul gezet (bij 16 bits: bit vast op 0 en bit gevuld met de sample-waarde). Het subframe wordt afgesloten met de bits validity flag, user data, channel status en parity. De validity flag maakt het mogelijk om ongeldige samples aan te geven, die worden dan niet verder verwerkt. Hoofdstuk 7 S/PDIF-tester met MACHXO - 2 -

121 Het bit user data geeft met een bit per subframe extra informatie zoals bijvoorbeeld tekst. Het channel status bit geeft ook met een bit per subframe extra informatie over het transport. Hierbij gaat het bijvoorbeeld om zaken als sample-rate, audio- of datamode en professionele of consumenten-mode. Tenslotte is er nog een parity-bit voor het herkenen van transportfouten. Er worden geen herstelwerkzaamheden uitgevoerd aan eventuele foutieve sample-waarden, de fouten worden door interpolatie opgelost. Figuur 1 Opbouw van een S/PDIF-signaal a) subframe b) frame en blok c) biphase-mark-signaal. Frame en blok Een frame heeft net zoveel subframes als er audio-kanalen zijn. Bij de gebruikelijke stereosignalen heeft een frame dus altijd twee subframes (linker en rechter kanaal). De frames moeten met de samplefrequentie worden getransporteerd. Hoofdstuk 7 S/PDIF-tester met MACHXO - 3 -

122 Bij een CDspeler met een samplefrequentie van 44,1 khz en een stereo signaal is de transportsnelheid dus: 2 kanalen x 32 bits per subframe x 44,1 khz = 2,8224 Mbit/s Een aantal frames is weer samengevat in een blok. Een zo n blok bevat 192 frames, dus 192 samples per kanaal. Een blok heeft voor de audio-gegevens geen betekenis, maar er ontstaat zo een structuur in de extra informatie van user data bit en channel status bit. Doordat het begin van een blok herkend kan worden middels preamble B kan men die informatie met slechts een bit per subframe eenduidig coderen. In totaal ontstaat er een veld met 384 bits (2 x 192 bij stereo). Zoals eerder is opgemerkt, is de structuur van de channel status verschillend voor de professionele en S/PDIF-interface. Het eerste bit geeft dan ook aan of het gaat om professionele audio of consumenten audio. Biphase-mark-code (BMC) Elektrisch gezien bestaat de S/PDIF-interface uit een 75-.-coaxkabel die middels een cinch-steker verbonden is met de bron en de ontvanger. De bron levert normaal gesproken een signaalspanning van 500 mvtt. De ontvanger moet genoeg hebben aan een spanning van 200 mvtt om ook gevoed te kunnen worden uit een coaxkabel van 10 m. Voor het transport van de gegevens wordt gebruik gemaakt van een biphase-mark-code, die voor elke logische één twee wisselingen van de polariteit geeft en voor elke logische nul slechts één wisseling. Het signaal bevat geen gelijkspanningscomponent, zodat een capacitieve koppeling mogelijk is. De professionele IEC-958-interface maakt gebruik van een hoger signaalniveau ( Vtt), een andere kabelimpedantie en een symmetrische aansluiting. De bron en de ontvanger moeten galvanisch gescheiden worden om aardlussen te voorkomen. 7.2 Digitale audio-tester. Deze kleine schakeling kan gebruikt worden voor een snelle test van de digitale audio-uitgang van CDspelers, DATrecorders en MiniDisc-spelers. Er zijn maar weinig onderdelen nodig in dit ontwerp, omdat we gebruik maken van een MachXO640C van Lattice. MachXO Digital Audio is compatibel met alle digital audio CD bronnen die gebruik maken van een S/PDIF of TOSLNK verbinding. (volgens AES/EBU) Hoofdstuk 7 S/PDIF-tester met MACHXO - 4 -

123 Het ontwerp toont de uitstekende prestaties van de programmeerbare component MachXO aan: De signaaloverdracht is digitaal van in- tot uitgang Eén enkele voedingspanning en interne klok Compatibel systeem mat alle digital audio-bronnen (S/PDIF/Toslink) Figuur 2 EV-Board voor LCMXO640C-3TN144C Eigenschappen EV-Board voor LCMXO640C-3TN144C TQFP-144 witch 0,5 mm Finepitch external Power-Supply (5-20 V) linear 3V3-Voltage Regulator 25 MHz Oscillator (3V3) 8 LEDs - one Port linear 2V5-Voltage Regulator for LVDS 2 SMA-Connectors for LVDS (not assembled) Power-LED Push Button Switch Reverse Voltage Protection JTAG programming interface (10pol + 8pol) Afmetingen: 83 * 61 mm Lattice-Software ISPstarter freeware Benodigdheden: MachXO EV-Board TORX147PL Toslink receiver Hoofdtelefoon actieve luidsprekers Hoofdtelefoon plug Toslink fiber optic kabel Hoofdstuk 7 S/PDIF-tester met MACHXO - 5 -

124 7.3 Werking van de digitale audio-tester. Figuur 3 De verschillende aansluiting op het EV-Board De CDspeler wordt aangesloten aan het EV-bordje met behulp van een Toslink fiber optic kabel. De spanning wordt opgezet en led1 gaat nog niet branden omdat er nog geen data wordt ingelezen. Wanneer de CDspeler wordt gestart gaat led1 branden als teken dat er data wordt ingelezen. De muziek die gegenereerd wordt door de CDspeler is te beluisteren via een hoofdtelefoon of actieve luidsprekers. Met leds D3-D8 wordt het geluidsniveau van het muziekstuk weergegeven. Wanneer met op drukknop SW drukt wordt een digital filter bediend die het stemgeluid uit het muziekstuk haalt, standaard staat de filter in de mode stereo. Als Toslink receiver wordt een TORX147PL van Toshiba gebruikt. Figuur 4 Toshiba TORX147PL Hoofdstuk 7 S/PDIF-tester met MACHXO - 6 -

125 De aansluiting van de hoofdtelefoon kan rechtstreeks op de pinnen 76, 78 en GND. Figuur 5 Aansluiting hoofdtelefoon Wanneer gebruik wordt gemaakt van actieve luidsprekers is het nodig om capaciteiten en weerstanden te gebruiken om het POP-effect in te luidsprekers weg te halen wanneer de spanning wordt opgezet. C9/C10 = 3,3µF en R9/R10 = 100K Houd er rekening mee dat het audio-signaal een spanningsniveau heeft van: -1,72 V tot +1,72 V en niet mag aangesloten worden op een high end audioketen. Figuur 6 Aansluiting actieve luidsprekers 7.4 Blokschema en implementatie van de digitale audio-tester. Blokschema van de digitale audio-tester Figuur 7 blokschema van de digitale audio-tester Hoofdstuk 7 S/PDIF-tester met MACHXO - 7 -

126 De volgende blokken worden gebruikt: Reset Inverter Klokgenerator Manchester decoder + Sync. Detect AES/EBU Deframer Data aligner en digitaal filter PWM generators (Puls With Modulation) Reset Inverter: Figuur 8 Reset Inverter Dit blok inverteert het actief lage nreset signaal naar een actief hoog Reset signaal. Het voorziet TORX147PL van een 3,3 V voeding via pin 2. Klokgenerator: Figuur 9 Klokgenerator Dit gedeelte activeert de interne oscillator (17-24 MHz) en verdubbelt de frequentie (32-48 MHz) omdat de decoder minstens een klok nodig heeft van 23 MHz. Manchester decoder + Sync. Detect: Figuur 10 Manchester decoder + Sync. Detect Hoofdstuk 7 S/PDIF-tester met MACHXO - 8 -

127 S/PDIF gebruikt biphase-mark-code voor het transport van gegevens. Voor elke logische 1 ontstaan er twee wisselingen van polariteit en voor elke logische 0 slechts één wisseling. Figuur 11 Biphase-mark-code Manchester decoder + Sync. Detect zorgt voor: Detectie oversampeling van binnenkomende data. Meten van de tijd tussen polariteitwisselingen wat neerkomt op een korte/medium/lange pulsdetectie. Hiervoor moet de decoder beschikken over een klokoscillator van voldoende hoge frequentie. Lange pulsen duiden op synchronisatiepatronen (preamble). Korte pulsen duiden op actuele databits (muziek). Een preamble wordt vertaald naar: X: start van kanaal A (links) Y: start van kanaal B (rechts) Z: start van kanaal A + start van een block Figuur 12 Preamble Forms Hoofdstuk 7 S/PDIF-tester met MACHXO - 9 -

128 AES/EBU Deframer: Figuur 13 AES/EBU Deframer Module AES/EBU Deframer zorgt voor het binnen lezen van de data van de decoder. Figuur 14 Frame/block Format Module AES/EBU Deframer zorgt tevens voor het uitpakken van de audiosamples. Figuur 15 Sub-frame Format Hoofdstuk 7 S/PDIF-tester met MACHXO

129 Data aligner + digitaal filter: Figuur 16 Sample aligner + digitaal filter Deze module buffert de audio-samples en vormt ze om naar parallel als input voor de PWM-modules. De module werkt in twee modes selecteerbaar via een switch. In default-mode geeft de data aligner 8bit stereo uit naar de PWM-modules. Een digitale filter gebruikt een algoritme om de stem van het muziekstuk te filteren naar een 8-bit mono-signaal voor de PWM-modules. PWM generators (Puls With Modulation): Figuur 17 PWM audio-generators Deze module gebruikt twee PWM s die werken op MHz (int clk x 2) om de audio-signalen te genereren. De bekomen frequenties van de PWM s zijn ongeveer 172 KHz, hoog genoeg voor een samplerate van 44,1 KHz die gebruikt wordt door de decoder. Een PWM-frequentie van 172 KHz laat ons toe om geen filters te gebruiken op de PWM-uitgangen. 3 de harmonische is 57 KHz 5 de harmonische is 34 KHz 7 de harmonische is 24 KHz 9 de harmonische is 19 KHz en dit is de eerste harmonische in het audiofrequentiebereik. Hoofdstuk 7 S/PDIF-tester met MACHXO

130 7.5 ISPLever implementatie van de digitale audio-tester: Figuur 18 ISPLever implementatie BUFBA en OSCC staan aangeduid met een vraagteken, maar het zijn harde macroblokken die in de MachXO devices zitten maar die niet 'zichtbaar' zijn in de code. Je kan dit vergelijken met een C-programma waar een stukje assembly instaat. BUFBA is een echte buffer die men aanroept om een delay in te lassen voor de verdubbeling van de interne klok. OSCC is de interne oscillator die in de MachXO beschikbaar is. De 'Place and Route' (PAR) tool weet waar hij deze items moet vinden in het device. Hoofdstuk 7 S/PDIF-tester met MACHXO

131 Deframer en Rugged_cdr zijn zogenaamde Black Boxes. Van deze functionele blokken wordt geen source code gebruikt maar wel een netlist. Bij elk van deze black boxes hoort een file met de extensie.ngo (de netlist) die je onder de documents vindt in het project, en een.sym (symbool voor in schematic) die gewoon in de projectdirectory terug te vinden zijn. Het voordeel hiervan is dat complexe Intellectual Property (IP) aan gebruikers kunnen geven worden om te evalueren, maar toch de eigenlijke rechten en source kunnen behouden blijven bij Lattice. Als gebruiker kan je toch volledig gebruik maken van deze blokken, in elke device van de desbetreffende familie, ongeacht van package. Je kan tevens de functionaliteit en timing simuleren met Modelsim simulatie. Figuur 19 Sources in Project met Deframer en Rugged_CDR.ngo Hoofdstuk 7 S/PDIF-tester met MACHXO

132 7.6 Het volledige schema van de digitale audio-tester Figuur 20 Ontwerp van de digitale audio-tester linker gedeelte Figuur 21 Ontwerp van de digitale audio-tester rechter gedeelte PCB van lay-out van EV-Board voor LCMXO640C-3TN144C Hoofdstuk 7 S/PDIF-tester met MACHXO

133 Figuur 22 PCB van lay-out van EV-Board voor LCMXO640C-3TN144C Specifieke eigenschappen van de MachXO: Toepasbaar als niet vluchtige component Sleep mode: met 100 x minder vermogenverbruik TransFR: logica is heerprogrammeerbaar tijdens werking van het systeem Embedded memory: Ram blokken tot 27K Programmeerbare I/O buffers naar verschillende technologieën toe zoals; LVCMOS 3.3/2.5/1.8/1.5/1.2, LVTTL, PCI, LVDS, Bus-LVDS, LVPECL, RSDS Programmeerbare oscillator met PLLs aan boord IEEE standaard Boundary Scan Voeding 3,3 V, 2,5 V, 1,8 V of 1,2V Hoofdstuk 7 S/PDIF-tester met MACHXO

134 7.7 Samenvatting S/PDIF of S/PDIF staat voor Sony/Philips Digital Interface Format, ook wel IEC 958 type II genoemd en maakt deel uit van de IEC standaard. Dit is een collectie van hardware en low-level protocolspecificaties voor het transporteren van digitale stereo PCM-signalen tussen verschillende apparaten en stereo componenten. S/PDIF is de consumentenversie van de standaard die ook wel bekend is als AES/EBU. Deze standaard voorziet in kleine veranderingen in het gebruikte protocol en kan gebruikt worden i.c.m. goedkopere hardware. Toepassingen S/PDIF wordt hoofdzakelijk gebruikt bij CD-spelers en DVD-spelers die CDs afspelen, maar is ook gangbaar geworden bij andere audiocomponenten zoals MiniDiscs en moderne geluidskaarten in computers. S/PDIF is ook populair in auto audio, waar een grote hoeveelheid kabels vervangen kan worden door een enkele glasvezelkabel. Het voordeel van een optische datatransmissie is, dat die immuun is voor elektrische stoorsignalen. Een andere veel gebruikte toepassing van de S/PDIF-interface is het transporteren van gecomprimeerde digitale audio zoals gedefiniëerd in de standard IEC Deze modus wordt gebruikt om een DVD-speler aan een home theater receiver te verbinden die Dolby Digital of DTS surround sound ondersteund. Hardwarespecificaties De "S/PDIF" specificatie staat verschillende typen kabels en connectors toe. De elektrische kabels worden meestal aangeduid met "coaxiaal" en "RCAconnector". De optische variant wordt meestal "optisch" of "TOSLINK" genoemd, maar soms ook EIAJ optisch. Er bestaan omvormers om een elektrische RCA S/PDIF connector om te zetten naar TOSLINK en omgekeerd, echter meestal maar in één richting. Alle omvormers vereisen een externe voeding. De optische versie is toepasbaar in brede variëteit van applicaties door z'n immuniteit voor elektrische stoorsignalen. S/PDIF is ontwikkeld van een standaard die gebruikt wordt in het gebied van de professionele audio, ook wel bekend als AES/EBU welke gebruikt wordt bij de Digitale Audio Tape (DAT) systemen en voor datatransmissie in professionele studio-opnamen. S/PDIF is indentiek op protocolniveau, maar de connectors zijn gewijzigd van XLR naar, of de elektrische coaxiale RCAconnector of de optische TOSLINK connector. Beide zijn goekoper en makkelijker in gebruik dan de XLR-connector. De kabel is ook gewijzigd van een kabel met een impedantie van 110 Ω (Ohm) met gebalanceerde twisted pair in de al reeds meer gangbare en dus goedkopere 75 Ω coaxiale kabel i.c.m. de RCA connector i.p.v. de "F" connector zoals gebruikelijk bij kabeltelevisie. S/PDIF is, in alle opzichten, een consumenten versie van het AES/EBU formaat. Hoofdstuk 7 S/PDIF-tester met MACHXO

135 Protocol specificaties S/PDIF wordt gebruikt om digitale signalen te versturen in verschillen formaten. De meest gebruikte formaten zijn het 48kHz formaat dat bij DAT wordt gebruikt en het 44.1kHz formaat dat wordt gebruikt voor CD audio. Om beide systemen te kunnen ondersteunen en ook andere, indien nodig, heeft het formaat geen gedefinieerde data rate. In plaats daarvan wordt de data verstuurd d.m.v. Biphase Mark Code, welke één of twee overgangen heeft per bit, zodat de originele word klok van het signaal kan worden afgetrokken. S/PDIF is bedoeld voor het verzenden van 20 bit audiostromen plus ander gerelateerde informatie. Het aantal bits kan worden verlaagd tot 16 bits door het toevoegen van voorloopnullen of tot 24 bits door de extra informatie na te sturen. Het low-level protocol is bijna hetzelfde zoals bij de AES/EBU standaard en wordt beschreven in het AES/EBU artikel. Het enige verschil is het "kanaalstatusbit". De kanaalstatusbitt in de S/PDIF Er is één kanaalstatusbit in elke subframe, waarbij elk audioblok een 192 bits lang is. Dit betekent dat er 192/8 = 24 bytes beschikbaar zijn in elk audioblok. De betekenis van het kanaalstatusbit is compleet verschillend bij AES/EBU en de S/PDIF. Bij de S/PDIF is het 192 bit woord verdeel in 12 woorden van elk 16 bits. De eerste 6 bits van het eerste woord is een controlecode. De betekenis van de bits in het controlecode zijn weergegeven in onderstaande tabel: Hoofdstuk 7 S/PDIF-tester met MACHXO

136 Hoofdstuk 7 S/PDIF-tester met MACHXO

137 8. Hoofdstuk 8 Technologie van programmeerbare logica Inleiding Voordelen bij het gebruik van PLD s PLD s zijn (her)programmeerbaar Een PLD bespaart ruimte op de printplaat Een PLD is verenigbaar met discrete componenten We kunnen de inhoud beveiligen tegen spiekers Een PLD schakelt relatief snel Opbouw van programmeerbare logische bouwstenen Bipolaire fuse-based verbindingen Floating gate verbindingen Static-RAM verbindingen PAL-architectuur (Programmable Array Logic) De macrocellen van een PAL De macrocellen van de 22CV10A De Security Cell De elektronische handtekening MACH 4 CPLD FAMILY Product-term array: Logic Allocator: Macrocell: Output Switch Matrix: Input Switch Matrix: isp-technologie De JTAG-interface en het Boundary Scan-proces Interfaces bij isp-componenten De LSC Lattice interface Wire ispjtag Interface volgens IEEE isp-design en implementatie Design flow Dataformaat, JEDEC-bestand Commerciële producten CPLD s en FPGA s Hoofdstuk 8 Technologie van programmeerbare logica - 1 -

138 8.7.1 Het CPLD-concept van Altera MAX familie Het CPLD-concept van Lattice Field-Programammable Gate Arrays Altera FLEX 10K als FPGA Het FPGA-concept van Lattice Samenvatting: Oefeningen Hoofdstuk 8 Technologie van programmeerbare logica - 2 -

139 8. Hoofdstuk 8 Technologie van programmeerbare logica 8.1 Inleiding In de digitale elektronica beschikt men over een brede keuze aan componenten om logische schakelingen te ontwikkelen. De conventionele IC s uit de standaard logica, ook wel discrete logica genoemd (TTL, CMOS) voeren een vaste functie uit, gedefinieerd door de fabrikant van de component. De gebruiker dient een aantal verschillende componenten met elkaar te verbinden om de gewenste schakeling op te bouwen. Deze werkwijze heeft het voordeel van zijn populariteit. Wanneer men enkel de componenten in rekening brengt, kan ze goedkoop worden genoemd. Een nadeel is dat men, zelfs voor een relatief eenvoudige schakeling, snel een grote hoeveelheid componenten en de overeenkomstige ruimte op de gedrukte schakeling (PCB) nodig heeft. Elke wijziging van het ontwerp resulteert in een aanpassing van de PCB layout. De ontwikkelingstijd voor dergelijke schakelingen is vrij lang met een vanzelfsprekende invloed op de kostprijs. Een ASIC (Application Specific Integrated Circuit) is een IC waarvan de functie eveneens specifiek is voor een toepassing, maar bepaald wordt door de gebruiker. ASIC s zijn opgebouwd uit een groot aantal logische cellen: poorten, flipflop s, en zelfs meer complexe functie s zoals controllers, RAM enz.. De realisatie van een ASIC vergt echter productietechnieken die enkel door een gespecialiseerde fabrikant kunnen worden uitgevoerd. Ondanks de hoge integratiegraad kunnen ook hier de ontwikkelingstijden vrij lang zijn, zeker indien tijdens de ontwerpfase fouten worden gemaakt en de IC s opnieuw geproduceerd moeten worden. Om rendabel te zijn dienen deze bouwstenen in grote aantallen te worden aangemaakt. Een programmeerbare logische bouwsteen of PLD (Programmable Logic Device) is een IC dat door de gebruiker zelf kan geconfigureerd worden om een bepaalde logische functie uit te voeren. PLD s vervangen meestal een hele reeks discrete componenten. Zij bestaan uit cellen samengesteld uit poorten en (eventueel) flipflop s die via een bepaalde procedure intern aan elkaar worden gekoppeld tot een schakeling met de door de gebruiker gewenste functionaliteit. Dit proces is dikwijls omkeerbaar. Een geconfigureerde (geprogrammeerde) PLD kan dan in zijn oorspronkelijke toestand hersteld worden. Dit betekent dat de verbindingen tussen de logische cellen gewist worden en door andere kunnen vervangen worden, zodat een IC-bouwsteen met een nieuwe functie ontstaat. Dit is vooral belangrijk tijdens de ontwerpfase, zodat fouten snel kunnen gecorrigeerd worden. Hoofdstuk 8 Technologie van programmeerbare logica - 3 -

140 Een PLD koppelt de voordelen van discrete componenten aan de voordelen van ASIC s: Eenvoud in ontwerp en productie, zonder tussenkomst van een gespecialiseerd fabrikant. De grote verscheidenheid van de op de markt zijnde componenten voor programmeerbare logica betreffende werkingssnelheid en verbruik van energie laat de gebruiker toe een gepaste keuze te maken in functie van de te realiseren toepassing(en). Eenvoudige gedrukte schakeling. De PCB is sterk vereenvoudigd omdat het aantal bouwstenen vermindert. Bovendien bieden PLD s een vrij grote flexibiliteit in het plaatsen van in- en uitgangspinnen. Daar de meeste functies van de schakeling intern worden gerealiseerd, kan men beginnen met het ontwikkelen van de PCB lay-out op het ogenblik dat de in- en uitgangen gekend zijn. De werkelijke details van het inwendige van een PLD kunnen dan onafhankelijk van het eindontwerp worden uitgewerkt. Noodzakelijke aanpassingen kunnen uitgevoerd worden binnen de PLD en hebben geen invloed meer op de PCB lay-out. Snelheid is één van de hoofdredenen waarom ontwerpers PLDbouwstenen gebruiken. De PLD-elementen kunnen dikwijls betere prestaties leveren dan de snelste discrete logica. De looptijd van de signalen is kort vanwege de zeer korte verbindingen binnen de bouwsteen. Daar PLD s worden gebruikt om meerdere discrete schakelingen te vervangen, zal het energieverbruik van een ontwerp zeker lager zijn dan dat van de gecombineerde discrete componenten samen. De betrouwbaarheid is een gebied waar meer en meer zorg aan besteed wordt. De ontwerpen worden steeds groter en complexer en dit heeft meerdere chips voor gevolg. Meerdere chips betekenen een kleinere betrouwbaarheid van het ontwerp, er zijn "meer dingen die verkeerd kunnen gaan". Een oplossing om het aantal chips in een systeem te reduceren zal bijdragen tot een grotere betrouwbaarheid. Een benadering met programmeerbare logica kan een betrouwbaarder oplossing bieden, daar het ontwerp een kleiner aantal elementen vereist. Door een vermindering van het aantal chips kan men kleinere PCB's gebruiken. Dit vermindert overspraak en andere potentiële stoorbronnen waardoor het hele ontwerp mooier en betrouwbaarder wordt. Hoofdstuk 8 Technologie van programmeerbare logica - 4 -

141 Voor ieder praktisch ontwerp moeten de kosten binnen de perken blijven. De kost is bijna altijd een factor bij het overwegen van een nieuw ontwerp of bij een ontwerpverandering. Maar, een berekening van de totale ontwerpkost kan misleidend zijn als men niet alle aspecten ervan beschouwt. Veel van de kosten zijn moeilijk in te schatten. Het is bijvoorbeeld moeilijk het marktverlies van het product, te wijten aan een te late introductie, te beoordelen. De grootste voordelen tegenover een discreet ontwerp bekomt men door het feit dat een enkele PLD verschillende discrete chips kan vervangen. De ingenomen ruimte op een gedrukte schakeling wordt gemiddeld met 25% verminderd als men met PLD's werkt. De manier van ontwerpen wordt sterk vereenvoudigd door de ontwerpmiddelen die nu op de markt zijn. Ontwerpsoftware en programmeerbare componenten laten toe ontwerpen te implementeren met een minimum aan tijdverlies. Simulatie laat ons toe het ontwerp functioneel te testen vooraleer het element geprogrammeerd wordt. Om al deze redenen zal de programmeerbare logica meer en meer de voorkeur krijgen boven de klassieke oplossingen met discrete componenten. Wat de verdere indeling van de programmeerbare logische bouwstenen in PLD s, FPGA s (Field Programmable Gate Arrays) en CPLD s (Complex Programmable Logic Devices ) betreft onthouden we enkel dat dit te maken heeft met de interne structuur, de oplopende inwendige complexiteit en het steeds groter wordende aantal logische cellen per IC in de vermelde volgorde van PLD, over FPGA tot CPLD. Deze indeling kan nog meer worden verfijnd en verschilt soms per fabrikant. Digitale logica Standaard Logica Programmeerbare Logica ASIC TTL - 74xx CMOS 4xxx PLD s FPGA s CPDL s Hoofdstuk 8 Technologie van programmeerbare logica - 5 -

142 8.2 Voordelen bij het gebruik van PLD s PLD s zijn (her)programmeerbaar We kunnen logica ontwerpen aan de hand van een programmeertaal zoals ABEL-HDL, AHDL, VHDL, waardoor het ontwerp veel sneller vordert. Laten we hierbij eens een steekje vallen, dan kan de component meestal opnieuw geprogrammeerd worden. Programmeren duurt enkele seconden Opnieuw te programmeren types vinden we terug in de window-versie (voorzien van een venstertje) of als elektrisch te wissen PAL. De types met een venstertje worden met UV-licht gewist en deze laten dan enkele minuten op zich wachten Een PLD bespaart ruimte op de printplaat Omdat PAL technologie verschillende soorten poorten en allerhande andere logica in zich draagt, kan een volledige schakeling in één PAL worden ondergebracht Een PLD is verenigbaar met discrete componenten Een PAL is meestal van huize uit een CMOScomponent. Hij is voorzien van de nodige stuurlogica om de gekende andere technologieën te kunnen vervangen. We moeten echter wel rekening houden met zijn fan-in en fan-out We kunnen de inhoud beveiligen tegen spiekers Een PAL biedt de mogelijkheid om een protect bit of security bit aan- of uit te zetten. Het wordt hierdoor eenvoudiger om een digitaal ontwerp te beschermen tegen ongewenst kopiëren Een PLD schakelt relatief snel Normalerwijze bouwen we met een PAL in feite enkele twee lagen structuur op, waardoor de totale doorlooptijd van het signaal beperkt blijft. Uiteraard zal deze tijd beduidend verhogen wanneer we uitgangssignalen gaan teruglussen omdat bijvoorbeeld de gewenste functie te complex is voor verwerking in één stap. Hierdoor gaat dan ook de twee lagen structuur verloren. Hoofdstuk 8 Technologie van programmeerbare logica - 6 -

143 8.3 Opbouw van programmeerbare logische bouwstenen Men kan de programmeerbare logische bouwstenen volgens allerlei criteria indelen. We beperken ons hier tot een indeling volgens de technologie waarmee de interne logische cellen met elkaar worden verbonden tot een schakeling. Bij PLD's worden de logische functies gerealiseerd door de "op elektrische wijze" doorverbinden (al dan niet omkeerbaar) van de cellen die in de chip aanwezig zijn. Dit kan echter ook gebeuren door het verbreken van bestaande, niet gewenste verbindingen. Men onderscheidt daarbij een aantal verschillende verbindingsvormen Bipolaire fuse-based verbindingen Bij deze techniek worden de functies geprogrammeerd door alle niet gewenste verbindingen op elektrische wijze "door te smelten" zoals een zekering. De eventueel te verbreken verbindingen zijn gerealiseerd als weerstandselement of als PN-overgang (diode, transistor). Dit onomkeerbare principe vindt men onder andere terug bij PROM s en PAL's (Programmable Array Logic). Figuur 1 Basic PAL Architecture Hoofdstuk 8 Technologie van programmeerbare logica - 7 -

144 8.3.2 Floating gate verbindingen In dit geval gebruikt men erasable (wisbare) cellen (zoals bij bepaalde geheugen-ic s) om de interne verbindingen te realiseren. Correctie van fouten of het maken van een nieuwe toepassing met dezelfde chip is hier eenvoudig. Bij de EPLD s (Erasable Programmable Logic Device) wordt de oorspronkelijke toestand hersteld door belichting met UV-licht ( zoals bij EPROM geheugens). Bij de EEPLD s ( Electrically Erasable PLD s) gebeurt dit langs elektrische weg (zoals bij EEPROM geheugens) en kan het (her)configureren of (her)programmeren eventueel zelfs gebeuren terwijl het IC in de (niet actieve) schakeling is opgenomen (in-circuit programming) Static-RAM verbindingen Bij sommige PLD's worden de verbindingen gerealiseerd door de toestanden (0 of 1) van statische RAM-geheugencellen. Dit geeft geheel nieuwe mogelijkheden. Door dergelijke PLD's samen met een microcontroller of microprocessor in een schakeling op te nemen, is het mogelijk deze schakeling dynamisch aan te passen aan de toepassing. De logica kan zeer snel van aard veranderen, zonder dat er ook maar één enkele wijziging aan de bedrading gebeurt. De logicaschakeling wordt geladen vanuit een (eventueel extern) processorgeheugen en zal onmiddellijk de nieuwe functie realiseren. Figuur 2 Basis Pal Architecture Hoofdstuk 8 Technologie van programmeerbare logica - 8 -

145 8.3.4 PAL-architectuur (Programmable Array Logic) Bij nadere studie van het grote aanbod PLD's, die vaak slechts op enkele details verschillen, blijkt dat het in feite gaat om een beperkt aantal concepten en varianten daarvan. De databoeken van PLD-leveranciers tonen de interne opbouw van de componenten in de vorm van een principeschema. De kunst bestaat er in om, in deze steeds complexere schema's, een basisconcept en de daarop aangebrachte extra voorzieningen te herkennen. We beperken ons tot het veel gebruikte PAL-concept. In onderstaande figuur lijken de EN-poorten slechts één ingangslijn te hebben. Figuur 3 PAL 18CV8 Deze lijn refereert echter naar de productlijn. De lijnen die loodrecht op de productlijnen van de EN-poorten staan vormen de mogelijke ingangen. Deze figuur toont een PAL-cel met 8 mogelijke producttermen met 36 mogelijke ingangen, afkomstig van 18 ingangspinnen. Er wordt hier, symbolisch, slechts één ingang van de cel voorgesteld. Een PLD bevat steeds meerdere van dergelijke cellen, ook wel macrocellen genoemd, met gemeenschappelijke ingangslijnen. De PAL-architectuur wordt veel toegepast, onder andere in EPLD s en EEPLD s. Bij deze architectuur is de EN -matrix (AND-array) programmeerbaar. Op elke EN-poort worden alle ingangsvariabelen aangeboden. Met behulp van de te maken of te verbreken verbindingen kan, door programmering, worden bepaald welke signalen door een EN-poort gebruikt worden. De uitgang van elke EN-poort komt op een OF-poort terecht (som van producttermen = sum of products = SOP). De producttermen zijn dus gegroepeerd als vaste ingangen van een OFpoort. Het aantal ingangen van de OF-poort beperkt het maximale aantal te sommeren producttermen. In een PLD met PAL-architectuur worden dus door de programmering de gewenste producttermen vastgelegd. Alle producttermen die dan aanwezig zijn worden naar buiten gevoerd. Het inverteren van ingangsvariabelen gebeurt dadelijk na het bufferen van de ingang. We hebben dus alle logische elementen in huis om een volwaardige combinatorische schakeling op te bouwen. Dikwijls is een PAL nog voorzien van instelbare macrocellen, vlak achter de of-poort, om een uitgangtype te kiezen of om sequentiële circuits te kunnen blazen. Hoofdstuk 8 Technologie van programmeerbare logica - 9 -

146 Merk op dat de en-poorten welke we in hun geheel niet nodig hebben, de schakeling niet zullen beïnvloeden. Wanneer we immers alle ingangen van deze poorten intact laten, dan geldt: A. /A = 0 De desbetreffende en-poort zal hierbij dus nooit een 1 produceren op de ingang van de of-poort waarmee ze verbonden is. We merken even op dat het aantal en-poorten per of-poort bij het type 18CV8 vast ligt op 8 en deze symmetrisch opgebouwd zijn. Bij het type 22CV10A is dit aantal variabel naargelang welke uitgang men kiest en de en-poorten zijn asymmetrisch opgebouwd. Sommige uitgangen bevatten of-poorten waar vrij veel en-poorten mee gekoppeld zijn, andere bezitten heel wat minder en-poorten. Wanneer de PAL asymmetrisch is opgebouwd houdt men best rekening met de complexiteit van de te realiseren functie. Is deze vrij groot, dan kiest men best een uitgang met veel en-poorten aan de of-poort. Is de te realiseren functie vrij eenvoudig, dan kiest men best een uitgang welke minder en-poorten bezit aan de of-poort. Hierdoor wordt de bezetting van de PAL efficiënter en zul je hem zo volledig mogelijk kunnen benutten. De ontwikkeltool isplever van Lattice gebeurt dit automatisch en worden de producttermen automatisch optimaal gekozen, zodat er complexere schakeling kunnen ontworpen worden in een vrij kleine PLD die de 22CV10 is. Zie onderstaande figuur. Figuur 4 PAL 22CV10 Hoofdstuk 8 Technologie van programmeerbare logica

147 8.4 De macrocellen van een PAL Meestal bevat een PAL tegenwoordig macrocellen. Een macrocel kan men in feite beschouwen als een digitale schakeling vlak achter de uitgang van de of-poort voor het realiseren van een uitgang. Deze macrocel bevat één of meerdere multiplexers, waarvan de adreslijnen worden bepaald door speciale programmeerbare configuratiebits. De configuratiebits worden gezet of terug gezet d.m.v. zogeheten attributen. Deze vinden we in elke geschikte HDL-taal terug onder de keywords of identifiers die eigen zijn aan de HDL-taal. Door dus deze attributen te declareren in de broncode, worden de configuratiebits juist gezet, welke de adreslijnen van de multiplexers besturen. Hierdoor creëren we in feite de gewenste signaalweg vanaf de uitgang van een of-poort tot aan de uitgangspin van onze PAL. Bij het doorlopen van de gekozen signaalweg kunnen we onze functie nog verder laten beïnvloeden. Hiervoor zijn inverters, flipflops, set, reset, terugkoppelingen naar de en-matrix, enz voorzien in de macrocel vooraleer we onze PAL echt via een uitgangspin verlaten. Uiteraard moeten de digitale componenten die het signaal moeten beïnvloeden wel hiervoor aanwezig zijn in onze macrocel. We dienen hiermee rekening te houden bij de keuze van een PAL De macrocellen van de 22CV10A Situering van de macrocel De eigenlijke macrocel bevindt zich in het kader met dikke zwarte rand. Links hiervan vinden we de of-poort waarvoor de macrocel een functie moet routeren. Per functie hebben we een of-poort met bijhorende macrocel. Aan de verschillende ingangen van onze of-poort vinden we de uitgangen terug van de verschillende en-poorten die met onze of-poort zijn verbonden. Het is eigenlijk vlak vóór de poorten dat we de diodematrix terugvinden die de programmeerbare zekeringen bevat. Figuur 5 Macrocell PAL 22CV10A Hoofdstuk 8 Technologie van programmeerbare logica

148 Signalen die de macrocel binnenkomen We zien dat de uitgang van de of-poort de macrocel binnengaat en vindt ook een output enable -stuursignaal om de uitgangsbuffer op ingang of uitgang te configureren. De en-poort voor dit output enable (FEN) signaal kunnen we aanspreken vanuit onze broncode m.b.v. een sleutelwoord. Dit is ook zo voor Synchronous Preset (SP) voor het zetten van de flipflop en de Asynchronous Clear (AC) voor het terugzetten van de flipflop. Het kloksignaal (Clk), noodzakelijk voor de werking van de flipflop, kunnen we hardwarematig aanleggen op pin 1 van de pal. Merk ook op dat een pal steeds werkt met D-flipflops welke niet afzonderlijk te klokken zijn. Het laatste ingangssignaal dat mogelijk is, komt van onverwachte zijde, de I/O-pin. Wanneer we immers de output buffer uitschakelen met output enable, dan kunnen we via de bijhorende I/O-pin een signaal de macrocel binnen sturen naar onze enmatrix, om daar mee te spelen bij het bepalen van uitgangstoestanden. We spreken hier van External Feedback (EF). Merk op dat hiervoor de ingangsselector juist moet staan. Dit signaal komt op de en-matrix binnen via een true / complement buffer. Hierdoor wordt elk stuursignaal naar de pal gebufferd om de signaalbron niet te belasten. De ingangsselector laat hier enkel nog toe de gevormde functie uit de matrix rechtstreeks terug de matrix in te sturen via registered feedback (RF). Bij het type 18CV8, is ook nog rechtstreekse combinatorial feedback mogelijk. Signalen die de macrocel verlaten Wanneer we de uitgangsbuffer niet actief zetten door output enable uit te zetten, dan kan er geen enkel signaal de macrocel nog uit. De uitgang van de macrocel heeft dan een zeer hoge impedantie, die het mogelijk maakt om een pal te gebruiken op een gemeenschappelijke bus zoals een adresbus, controlebus, e.d. Activeren we de uitgangsbuffer wél met een output enable signaal, dan zijn er verschillende signaalwegen mogelijk. We kunnen een combinatorisch gevormde functie door de macrocel leiden via de bovenste signaalweg van de uitgangslector. Er zal op deze wijze niets aan de functie wijzigen. Hierdoor komt het signaal naar buiten zoals het gevormd was aan de uitgang van de of-poort. De functie blijft combinatorisch en zal ook niet van teken veranderen, ze komt actief hoog naar buiten Combinatorial High, CH. Uiteraard mag aan de nu gebruikte I/O-pin géén ingangssignaal liggen, omdat de uitgangsbuffer signalen vanuit de pal naar buiten zal sturen! Wanneer we het combinatorisch gevormde signaal één ingang lager in de uitgangslector sturen, wordt onze functie omgekeerd nadat ze door de ofpoort gevormd werd. Het signaal blijft wel combinatorisch Combinatorial Low, CL. We kunnen onze combinatorische functie vanuit de of-poort door een flipflop sturen, waardoor ze één klokperiode later op de uitgangen van de flipflop verschijnt. Kiezen we m.b.v. de uitgangslector voor de normale uitgang van de flipflop, dan verschijnt het signaal Registered High (RH) aan de uitgang van de macrocel. Kiezen we via de uitgangslector voor de inverse uitgang Hoofdstuk 8 Technologie van programmeerbare logica

149 van de flipflop, dan verschijnt het signaal Registered Low (RL) aan de uitgang van de macrocel. Merk op dat het latchen van de data gebeurt op de stijgende flank van de klok. Besturen van de macrocel De macrocel kan op verschillende wijzen bestuurd of geconfigureerd worden. Om de flipflop te gebruiken leggen we op pin 1 van de pal een kloksignaal op TTL- niveau, net zoals de voedingsspanning van de pal. De frequentie van dit kloksignaal mag oplopen tot ongeveer 33 MHz. Uiteraard hangt het precieze cijfer af van het type pal dat men kiest. Merk op dat bij een pal de het kloksignaal meestal gemeenschappelijk is voor alle aanwezige macrocellen wat bij een (E)PLD dikwijls niet zo is. De data-ingang van de D-flipflop hangt rechtstreeks aan de of-poort die de macrocel vooraf gaat. Het signaal op de D-ingang is dus via de en-matrix te programmeren. De synchronous preset en de asynchronous clear zijn te programmeren via hiervoor gereserveerde sleutelwoorden in de HDL-taal die men gebruikt. Het asynchroon zetten van de flipflop kan op elk willekeurig tijdstip gebeuren. Het terugzetten gebeurt normalerwijze synchroon, dus op de volgende stijgende flank van de klok. Willen we het karakter van deze besturingslijnen wijzigen, dan moeten we dit expliciet zo programmeren. Wanneer we de output enable willen programmeren en hierdoor dus de uitgangsbuffer willen besturen, dan kan dit ook via hiervoor gereserveerde sleutelwoorden in de HDL-taal. Deze output enable kan dynamisch gebruikt zeer handig zijn om de pal bruikbaar te maken op een gemeenschappelijke bus of bestuurbaar te maken door een busmanager. We kunnen deze controlelijn eveneens statisch gebruiken. Wanneer we immers de I/O-pin achter de macrocel als uitgang wensen te gebruiken, dan zetten we output enable actief. Uiteraard mag er nooit een ingangssignaal op de I/O-pin staan als output enable actief is! Moet de I/O-pin dienen als ingang, dan zetten we output enable non-actief. Verder zijn er nog twee configuratiebits (A en B) beschikbaar die we eveneens kunnen programmeren vanuit onze HDL-taal. We maken hiervoor gebruik van zogenaamde attributen, welke pal-afhankelijk zijn. In de sourcecode of broncode wordt immers steeds aangegeven over welk type pal het gaat. Hierdoor kent de HDL-compiler de eigenschappen van de gebruikte pal en zal hij dus ook de beschikbare attributen kennen van de gebruikte component. Door gebruik van deze attributen worden de configuratiebits op éénduidige wijze ingesteld. Hierdoor zullen de adreslijnen van de ingangsselector en de uitgangsselector bepaald worden, waardoor beide multiplexers in een bepaalde stand worden geprogrammeerd. Daarmee is de uiteindelijke signaalweg vanaf de of-poort tot aan de I/O-pin bepaald. Merk op dat output enable, synchronous preset en asynchronous clear dynamisch programmeerbaar zijn, terwijl de configuratiebits d.m.v. de attributen enkel Hoofdstuk 8 Technologie van programmeerbare logica

150 statisch worden gebruikt. Volgende tabel laat zien hoe het gesteld is met de twee configuratiebits van de 22CV10A: Tabel 1 Mogelijke instellingen van een macrocell PAL 22CV10 Merk op dat we beschikken over 2 bits, dus 2 2 = 4 mogelijke configuraties, welke hier volledig voorzien zijn. Bit B wordt echter voor beide multiplexers gebruikt, waardoor deze adreslijn niet volledig onafhankelijk meer werkt. We zien dat we voor de ingangsselector maar één bit ( B ) over houden. Hierdoor is er maar keuze tussen twee manieren van terugkoppelen: RF of EF. Bij het type 18CV8 hadden we meer terugkoppelmogelijkheden. De uitgang blijft echter even soepel instelbaar. Soorten Programmable Array Logic: Hierover kunnen we in principe vrij kort zijn. Normalerwijze geven de eerste letters van het type een identificatie van de fabrikant. De cijfers vooraan in het typenummer geeft het totaal aantal mogelijke ingangen weer. In het midden van het type krijgen we een identificatie van de inwendige technologie en de aard van de pal. De cijfers die hierop volgen geven het totaal aantal mogelijke uitgangen weer. Meestal volgt hierop een streepje, gevolgd door een cijfer. Dit laatste cijfer is meestal een kenteken voor de te verwachten propagation delay time en vormt dus onrechtstreeks een indicatie van de snelheid. Enkele voorbeelden: 10H8 16L8 20R6 PEEL 18CV8 PEEL 22V10-25 isp22cv10a-5 Een ouder type met max. 10 ingangen en max. 8 uitgangen, welke actief Hoog zijn, nog in TTL-technologie. De C voor CMOS technologie ontbreekt. Een ouder type met max. 16 ingangen en max. 8 uitgangen, welke actief Laag zijn, nog in TTL-technologie. Een ouder type met max. 20 ingangen en max. 6 uitgangen, voorafgegaan door een flipflop. R betekent: Registered. Een modern type van fabrikant ICT met max. 18 ingangen en max. 8 uitgangen, voorzien van macrocellen (V) in (C)MOS technologie. Een modern type van ICT met max. 22 ingangen, max. 10 uitgangen, voorzien van macrocellen (V), toch nog in TTL technologie met propagation delay van max. 25 ns. Een zelfde type, deze keer van Lattice, voorzien van isp-technologie, gebouwd in CMOS met 5 ns propagation delay. Hoofdstuk 8 Technologie van programmeerbare logica

151 Block diagram van de PAL 22CV10 Figuur 6 Blokschema van een PAL 22VC10 Pin Configuration Figuur 7 Verschillende behuizingen Hoofdstuk 8 Technologie van programmeerbare logica

152 Figuur 8 PAL22CV10 Logic Array Diagram Hoofdstuk 8 Technologie van programmeerbare logica

153 Figuur 9 Spec s van de PEEL22CV De Security Cell Om te voorkomen dat een uitgeleverde (dus in de applicatie gemonteerde) ispgal wordt uitgelezen en gekopieerd, kan de zogeheten Security Cell gezet worden. Als dat eenmaal is gebeurd, kan niemand de inhoud van de ispgal uitlezen. Deze mogelijkheid kan van pas komen wanneer het IC in een dongle als kopieerbeveiliging voor (dure) software wordt toegepast. Om die reden beveelt Lattice overigens aan om bij het programmeren van een isp-ic via een printerpoort aangesloten download-kabel een eventueel al aanwezige dongle te verwijderen om te voorkomen dat die per ongeluk wordt gewist. Een ispgal-ic kan, ook als de Security Cell gezet is, opnieuw worden geprogrammeerd waarbij de Security Cell al dan niet opnieuw kan worden gezet. Door dat herprogrammeren wordt de oorspronkelijke inhoud onherroepelijk gewist. Het is dus absoluut onmogelijk de inhoud van een beveiligd IC te kraken De elektronische handtekening In een ispgal is een geheugenbereik van 64 bits gereserveerd voor de opslag van willekeurige (applicatiespecifieke) gegevens bijvoorbeeld versienummer, aanmaakdatum, klantnummer enz.. Deze elektronische handtekening kan te allen tijde worden uitgelezen, ook wanneer de Security Cell gezet is. Ook kan dit geheugenbereik op elk moment opnieuw worden geprogrammeerd. Wanneer de gehele ispgal opnieuw wordt geprogrammeerd, dan wordt daarbij eveneens de elektronische (signature) gewist om te voorkomen dat na het programmeren nog gegevens staan die bij een andere versie horen. Zoiets kan immers tot tragische misverstanden leiden! Hoofdstuk 8 Technologie van programmeerbare logica

154 8.5 MACH 4 CPLD FAMILY (Complex Programmable Logic Device) Features: E2CMOS 3.-V & 5-V CPLD Flexible architecture High speed 32 tot 256 macrocells; 32 tot 384 registers 44 tot 256 pin in PLCC, TQFP en BGA behuizingen Programmeerbaar met isplever van Lattice M4-64/32 bevat: 64 Macrocells 32 I/O Pins Functionele beschrijving: De MACH4 family bestaat uit verschillende PAL-blocks verbonden met een Centrale Switch Matrix. Figuur 10 CPLD MACH4 Een PAL-block bevat: Product-term array Logic allocator Macrocells Output switch matrix I/O cells Input switch matrix Clock generator Hoofdstuk 8 Technologie van programmeerbare logica

155 8.5.1 Product-term array: De product-term array bavat de basislogica. De inputs naar de AND gates komen van de central switch matrix (Table5). Tabel 2 Pal Block Inputs Figuur 11 Product-term aray Hoofdstuk 8 Technologie van programmeerbare logica

156 8.5.2 Logic Allocator: De Logic Allocator verdeelt de producttermen naar de verschillende macrocells in product term clusters. Figuur 12 Logic Allocator Macrocell: De macrocel bestaat uit een: geheugencel routing resources een clock multiplexer initialisatie control De marcrocell werkt in twee modes, synchroon & asynchroon Hoofdstuk 8 Technologie van programmeerbare logica

157 De macrocell in de synchrone en asynchrone mode Figuur 13 De macrocell in de synchrone en asynchrone mode De flipflop kan geconfigureerd worden als: D-type, T-type latch, S-R register, J-K register. De prioriteitsingangen van de flipflops (RESET & Preset) zijn afhankelijk van de mode, synchrone- of asynchrone mode. Hoofdstuk 8 Technologie van programmeerbare logica

158 8.5.4 Output Switch Matrix: De Output Switch Matrix stuurt de uitgang van de Macrocell naar de I/Opins. Figuur 14 Output Switch Matrix Input Switch Matrix: De Input Switch Matrix optimaliseert de routing van de inputs doorheen de central switch matrix. Figuur 15 Input Switch Matrix Hoofdstuk 8 Technologie van programmeerbare logica

159 Block Diagram M4-64/32 Figuur 16 Block Diagram M4-64/32 Hoofdstuk 8 Technologie van programmeerbare logica

160 8.6 isp-technologie In System Programmability, de mogelijkheid om de logica van een component te voorzien of te wijzigen voor, tijdens of na aanmaak in zijn definitieve werkomgeving. Isp is stilaan uitgegroeid tot een standaard in programmeerbare hardware op systeem- en componentniveau. Deze componenten zijn dus zeer snel en flexiebel aan te passen, wat zeer handig is bij hardwarefouten en upgraden via floppy of per telefoonlijn. Hierdoor zijn ook op vrij eenvoudige wijze multifunctionele toestellen te ontwerpen, waar men steeds vertrekt van een zelfde hardware basisconfiguratie. De componenten worden immers meestal rechtstreeks op de printplaat bevestigd. Geen kromme of afgebroken pootjes meer, inpluggen en uittrekken van componenten uit een IC voet. De isp-componenten zijn vervaardigd uit UltraMOS E²CMOS. Wissen en herprogrammeren gebeurt in enkele luttele seconden. Er zijn geen speciale protocollen of toestellen nodig om deze componenten te programmeren. Een voedingsspanning van +5V is meestal wel voorhanden in b.v. een PC. Er hoeft enkel nog een 5-aderige interface voorzien te zijn om isp-componenten te programmeren op de printplaat waar ze hun normale taak zullen verrichten. Men kan zelfs de stimuli (test-vectoren) laten opwekken om de rest van de printplaat te testen De JTAG-interface en het Boundary Scan-proces Figuur 17 De JTAG-interface en het Boundary Scan-proces Boundary Scan volgens IEEE Standaard van Philips is eveneens mogelijk. Hierbij kan de test verlopen d.m.v. een TAP of Test Access Port. Deze bevat een seriële verbinding en enkele controlelijnen. Over het algemeen zijn de componenten bedoeld om te werken in een temperatuurbereik van 0 C tot 70 C zoals de meeste commer ciële componenten. Ze zouden minstens maal te programmeren en te wissen zijn en hebben een verwachte levensduur van minstens 20 jaar. UltraMOS E²CMOS is niet vluchtig geheugen, dus geen backup batterijen of geheugenverlies na powerdown. Er is eveneens een security cell voorzien om de inhoud te beschermen Hoofdstuk 8 Technologie van programmeerbare logica

161 tegen kopiëren. Men kan echter zelfs bij een beveiligde component nog wel de functiecodes en de identificatie uitlezen. Het programmeren kan gebeuren via PC, programmeertoestel, embedded controller, Bij het programmeren wordt de fuse map uit een JEDEC-bestand geconverteerd naar een dataformaat. Dit wordt serieel de component binnengeschoven, samen met de bijhorende adressen en commando's (b.v. isp- STREAM ) Het programmeren gebeurt onder controle van een fabrikant afhankelijke interne tri-state statusmachine in de isp-component. Soms kan men hiervoor ook kiezen voor een IEEE Std Boundary Scan Test Access Port interface. De isp-instructies zoals PROGRAM, BULK ERASE, ADDRESS SHIFT en dergelijke worden uitgevoerd via de instructieregisters van de component en de interface. Figuur 18 JTAG-interface en het Boundary Scan-proces Figuur 19 Print met JTAG-interface ISP Starter Kit Hoofdstuk 8 Technologie van programmeerbare logica

162 Over het algemeen worden de conventionele componenten geprogrammeerd met specifieke programmeertoestellen, omdat de programmeerspanningen meestal liggen tussen +12 tot +24V. Bij isp-componenten zijn spanningen tussen +3.3V en +5V gangbaar. De programmeersignalen kunnen betrokken worden uit de normale TTLpoorten. Voor het programmeren van isp-componenten bestaan eenvoudige hulpmiddelen, denken we maar aan b.v. ispvm System van fabrikant Lattice Semiconductor Corporation. Deze gebruikt dan de parallelle poort van de PC. Figuur 149 geeft een gedeeltelijk overzicht van de isp-componentenreeks van isp-fabrikant Lattice: Figuur 20 De isp-componentenreeks van isp-fabrikant Lattice Figuur 21 De interface van ispvm System van fabrikant Lattice met keuze van de Cable and I/O Port Setup Hoofdstuk 8 Technologie van programmeerbare logica

163 8.6.2 Interfaces bij isp-componenten Deze interfaces zijn 4- of 5-aderig uitgevoerd naargelang de gebruikte component. Via de seriële interface kunnen instructies als PROGRAM, VERIFY en ERASE worden meegegeven. De meest voorkomende signalen zijn: Serial Data In (SDI), MODE select (MODE), Serial Data Out (SDO) en Serial ClocK. (SCLK) Bij sommige uitvoeringen vinden we bovendien een laag actieve ispen, om nog 4 andere controlesignalen mogelijk te maken. Is deze pin niet actief, dan worden de extra 4 pinnen als dedicated (vaste) ingangen beschouwd De LSC Lattice interface Deze interface maakt gebruik van interne een tri-state statusmachine van Lattice: MODE : MODE CONTROL SDI : SERIAL DATA IN SDO : SERIAL DATA OUT SCLK : SERIAL CLOCK MODE en SDI zijn controle signalen. SDI en SDO zorgen voor het dataverkeer naar en van het schuifregister. SCLK levert het kloksignaal. De grotere isplsi-componenten bezitten ook nog een actief lage ispen lijn, welke laag staat als de component in programmeermode staat. Een hoge ispen laat user defined functies toe tijdens de normale werking Figuur 22 De LSC Lattice interface Hoofdstuk 8 Technologie van programmeerbare logica

164 8.6.4 Wire ispjtag Interface volgens IEEE Boundary Scan TAP (Test Access Point) TMS : Test Mode Select (vergelijk met MODE) TDI : Test Data In (vergelijk met SDI) TDO : Test data Out (vergelijk met SDO) TCK : Test ClocK (vergelijk met SCLK) Bij de TAP wordt de statusmachine echter enkel bestuurd door TMS. TDI wordt hier dus enkel gebruikt voor het binnenschuiven van adressen of instructies. Ook hier bezitten de complexere isplsi componenten een actief lage ispen lijn, welke laag staat in programmeermode. Wanneer deze lijn hoog staat, kunnen user defined functies worden uitgevoerd. Er kan bovendien nog een optionele actief lage TRST lijn aanwezig zijn, waarmee de TAP controller asynchroon teruggezet kan worden. Figuur 23 Wire ispjtag Interface volgens IEEE Figuur 24 Wire ispjtag Interface volgens IEEE Hoofdstuk 8 Technologie van programmeerbare logica

165 8.6.5 isp-design en implementatie Figuur 25 isp-design en implementatie In bovenstaande figuur zien we hoe een ontwerp uiteindelijk op een PCB terecht komt. Om een ontwerp in te geven, werken we met logic design tools. Hierin vinden we onder andere een softwarepakket om een ontwerp in te geven. Het ingeven van een schema, een gewenste golfvorm of de broncode van een ontwerp, noemt men in het Engels design entry. Onder de logic design tools hoort meestal ook een fitter. Dit is een software pakket dat ons ontwerp minimaliseert en eventueel opsplitst, wanneer het ontwerp binnen een gekozen component niet meer zou passen. Deze fitter kan men eventueel ook de keuze van een component toevertrouwen. Meestal bezit deze fitter ook de software voor compilatie. Bij compilatie wordt het schema, de golfvorm of de broncode verwerkt en omgezet naar de eigenlijke code die in de component moet worden binnengeschoven. Het uiteindelijke resultaat hiervan vinden we meestal terug in een JEDEC bestand. Dit JEDEC bestand bevat alle gegevens die in de component moeten worden geprogrammeerd. Een JEDEC kan je beschouwen als normale leesbare tekens en je kunt deze dus als tekst naar een programmeertoestel doorsturen. Zit het ontwerp gedefinieerd in het JEDEC-bestand, dan gaan we de programming tools gebruiken om de eigenlijk component te programmeren. FiguFiguur 25 toont hiervoor twee pakketten, namelijk ispdaisychaindownload en ispcode. Hoofdstuk 8 Technologie van programmeerbare logica

166 ISPDaisyChainDownload is een softwarepakket dat met behulp van de parallelle poort van een PC het programmeren van isp-componenten verzorgt, welke op een PCB zijn aangebracht. Desondanks de parallelle poort gebruikt wordt, gaat het tóch om een seriële verbinding, met een volledig eigen protocol dat gebruik maakt van een ketting. Alle isp-componenten die voorkomen in deze ketting kunnen serieel worden aangesproken en geprogrammeerd of getest worden. Het pakket werkt hierbij dus op een vrij ongebruikelijke wijze met de parallelle poort van de PC. De isp-componenten kunnen echter ook op parallelle wijze worden geprogrammeerd. ispcode is een softwarepakket dat kan gebruikt worden om de broncode van de isp-componenten te schrijven in C. Na compilatie zal de werkwijze verder verlopen zoals hierboven beschreven. Het P.C.Board stelt enkel het PCB voor dat we ontwerpen, met daarop de isp-componenten waarmee we het PCB wensen te voorzien Design flow Figuur 26 Design flow Design entry gebeurt d.m.v. CAD software. Na het eigenlijke ingeven van het ontwerp, gebeurt de compilatie, eveneens door de CAD software. De fitting controleert het ontwerp en probeert dit te laten passen binnen de gekozen component. Als alles in orde is wordt een JEDEC bestand ( fuse map ) aangemaakt. Het ingeven van een ontwerp kan door combinatie van ABEL of VHDL, schema, logische vergelijkingen, statusmachines of waarheidstabellen. Hierin verschilt isplever van Lattice in niets van de traditionele ontwerptechnieken. Na het aanmaken van een JEDEC bestand, kan men m.b.v. programmeersoftware de isp-componenten gaan programmeren, denken we maar aan b.v. ispvm System van fabrikant Lattice Semiconductor Corporation. Hoofdstuk 8 Technologie van programmeerbare logica

167 8.6.7 Dataformaat, JEDEC-bestand In een programmeerbare IC kunnen elektronische verbindingen worden gemaakt of verbroken. Bij de eerste programmeerbare componenten werden deze verbindingen, die fuse ( zekeringen ) werden genoemd, door middel van kortdurende stroompulsen doorgebrand. De informatie over welke fuses wel en welke niet doorgebrand moesten worden, stond toen en staat nog steeds in een zogenaamde JEDEC-bestand. Dat bestand wordt door de programmeersoftware gegenereerd conform de schakeling van het te programmeren IC. Bij het feitelijke programmeren van het IC wordt het JEDEC-bestand door de programmeersoftware ingelezen en doorgegeven aan de programmeerhardware die er vervolgens zorg voor draagt dat de juiste verbindingen in het programmeerbare IC worden gemaakt of verbroken. JEDEC is een acroniem voor Join Electronic Devices Engineering Council; dit is een standaardiseringorganisatie binnen de EIA (Electronic Industries Association- de club van elektronicaproducenten in de Verenigde Staten). Door de JEDEC is het Standaard Data Transfer Format between Data Preparation System an Programmable Logic Device Programmer gedefinieerd, dus het data-overdrachtsprotocol tussen de programmeersoftware en de programmeerhardware. Deze standaard heet JESD3-C en kan via het Internet gratis worden gedownload van In de JEDEC-standaard 3-C is het te gebruiken dataformaat exact voorgeschreven. De voorschriften betreffen een programmeerdataveld en een stestdataveld met de bijbehorende variabelen. Aan de hand van het eenvoudige voorbeeld simple in paragraaf 3 wordt een JEDEC-bestand weergegeven. - eerste teken STX (Start of Text) - dataveld ASCII-karakters - laatste teken ETX (End of Text) Elk volgende veld begint steeds met een bepaalde letter (identifier), gevolgd door een reeks data en afgesloten met een asterisk. Er zijn verschillende identifiers gedefinieerd. Hierna noemen we enkele belangrijke identifiers C L QV QF QP G Fuse Checksum controlegetal voor het gehele L-veld Dit getal controleert of de gehele dataoverdracht correct is verlopen Fuse List bevat de te programmeren data; eerst wordt in decimale vorm het beginadres van het te programmeren geheugenbereik opgegeven ( het nummer van de eerste fuse), gevolgd door een uit 0 en 1 bestaande datareeks. Maximum Numbers of Test Vectors Number of Fuses in Device aantal fuses in de de component Number of Device Package Pins werkelijk aantal pennen van het IC; ook ongebruikte pennen worden meegeteld Security Fuse Hoofdstuk 8 Technologie van programmeerbare logica

168 Na het ETX-karakter volgt nog een 16-bit controlegetal dat is gevormd uit alle verzonden ASCII-tekens (inclusief STX en ETX) zodat het programmeerapparaat eventuele overdrachtsfouten kan herkennen. In de JEDEC-standaard 3-C zijn nog veel meer identifiers gedefinieerd en beschreven; hierboven hebben we slechts een indruk willen geven van het dataformaat. JEDEC-bestand van het eenvoudig ABEL voorbeeld simple in hoofdstuk 8.2. <STX>ispLEVER 3.1 Lattice Semiconductor Corp. JEDEC file for: P22V10G V9.0 Created on: Thu Aug 26 23:47: eenvoudig ABEL voorbeeld * QP24* QF5892* QV8* F0* X0* NOTE DEVICE NAME: GAL22V10B-10LP* NOTE Table of pin names and numbers* NOTE PINS A1:1 A2:2 A3:3 N1:4 N2:5 N3:6 AND:14 NAND:23* L * L * L * L * L * N test and gate* V XXXXXXXXNXLXXXXXXXXXN* V XXXXXXXXNXLXXXXXXXXXN* V XXXXXXXXNXLXXXXXXXXXN* V XXXXXXXXNXHXXXXXXXXXN* N test nand gate* V0005 XXX000XXXXXNXXXXXXXXXXHN* V0006 XXX100XXXXXNXXXXXXXXXXHN* V0007 XXX010XXXXXNXXXXXXXXXXHN* V0008 XXX111XXXXXNXXXXXXXXXXLN* C15B6* <ETX>D26F Hoofdstuk 8 Technologie van programmeerbare logica

169 8.7 Commerciële producten CPLD s en FPGA s Onderstaande tabel geeft een globaal overzicht van verschillende fabrikanten die programmeerbare componenten produceren. Tabel Het CPLD-concept van Altera MAX familie Het concept van Altera is een multiple array matrix (MAX)-architectuur. Altera maakt gebruik van een electrically erasable programmable logic device (EEPLD). Figuur 27 Altera MAX 7000 Men gaat uit van een ruggengraat bestaande uit een programmable interconnect array (PIA), dat voor de onderlinge verbindingen naar en van logic array blocks (LAB) moet zorgen. Elke LAB bestaat telkens uit een groep van bijvoorbeeld 16 macrocellen. Globale inputs zoals de voedingen, klok, clear Hoofdstuk 8 Technologie van programmeerbare logica

170 en output-enable worden naar alle LAB s, en dus naar de macrocellen, doorverbonden. Functies en bouwblokken worden zo mogelijk binnen een LAB gerealiseerd. Mocht het nodig zijn in verband met de complexiteit van een te realiseren bouwblok of omdat er binnen een LAB niet voldoende reserveruimte meer is om meer dan één LAB te gebruiken, dan kan de onderlinge bedrading van de LAB s via de PIA worden doorgelust. Naburige LAB s kunnen elkaar ook aansturen. Figuur 28 laat het interne schema zien van een LAB. Een LAB is opgebouwd uit een macrocel-array met daarin de 16 macrocellen. Een I/O-block zorgt voor de communicatie van de macrocellen met de buitenwereld en de communicatie van de buitenwereld met de PIA. Voor de optimalisatie van het ontwerp zorgt een expander-productterm-array. Figuur 28 Macrocel MAX 7000 Elke macrocel op zijn beurt bestaat uit een PAL-opbouw met vijf 4-input- AND-poorten. De functie kan door de gebruiker desgewenst worden geïnverteerd door via een AND-poort een EXOR aan te sturen. Door drie multiplexers aan te sturen kan er worden gekozen uit een globale klok of een lokale klok, een globale reset of een lokale reset en of de functie al dan niet registered, geklokt via een flipflop, naar de outputklem wordt gestuurd. De expander-product-terms worden gevoed door de globale inputs, door de inputbus, door de PIA, door de I/O-terugkoppeling en door de macrocelterugkoppeling. De EPT s sturen elke afzonderlijke macrocel in het gehele systeem aan. De I/O-control vindt plaats door een AND-poort een tri state-enable aan te laten sturen. Als het enable-signaal laag is wordt de klem als onafhankelijke inputklem toegepast. De pin krijgt het uitgaande niveau van een macrocel als het enable-signaal hoog is. Hoofdstuk 8 Technologie van programmeerbare logica

171 8.7.2 Het CPLD-concept van Lattice Eerder werd al de MACH 4 CPLD besproken in dit hoofdstuk. Figuur 29 laat nogmaals blokschematisch het concept zien van een CPLD van Lattice. Figuur 29 Het CPLD-concept van Lattice De CPLD bestaat uit een Central Switch Matrix met daar rond vier Pal Block s. Logic Allocator: De Logic Allocator verdeelt de producttermen naar de verschillende macrocells in product term clusters. Macrocell: De macrocel bestaat uit een: geheugencel, routing resources, een clock multiplexer, en een initialisatie control. De marcrocell werkt in twee modes, synchroon & asynchroon De Output Switch Matrix: De Output Switch Matrix stuurt de uitgang van de Macrocell naar de I/Opins. Input Switch Matrix: De Input Switch Matrix optimaliseert de routing van de inputs doorheen de central switch matrix. Hoofdstuk 8 Technologie van programmeerbare logica

172 Pal Block Clock Generation: Elke MACH 4 component heeft vier pinnen die kunnen geconfigureerd worden als input of clock-input. Output/ Buried Macrocells. Zijn ongebruikte Macrocells. Deze komen tot stand indien men niet toekomt met het aantal beschikbare producttermen per macrocel. Deze informatie is beschikbaar in een list-file na het compileren van uw source-code Field-Programammable Gate Arrays Gates zijn bij moderne ontwerpen lang niet voldoende meer. Om meer schakelingen te kunnen ontwikkelen in één chip is men genoodzaakt om nieuwe technologie te ontwikkelen. Het concept van een Field-Programammable Gate Arrays kan meerdere complexe digitale ontwerpen op zich nemen in één chip. Het concept bestaat uit een matrix bestaande uit: een aantal Logic Blocks, Intercennection Switches en I/O blocks. Figuur 30 geeft de structuur van een FPGA weer. Figuur 30 Structuur van een FPGA Hoofdstuk 8 Technologie van programmeerbare logica

173 De logica wordt gerealiseerd in een zogenaamde lookup table (LUT) Een LUT is een statisch geheugen van 16 bits. Vier ingangen worden gebruikt als adres voor het LUT-geheugen. De waarheidstabel voor het gewenste netwerk wordt tijdens het programmeren van de component in het geheugen van de LUT opgeslagen. Wanneer de spanning van de component wegvalt gaan de gegevens voor de logische schakeling verloren. Vandaar dat de data van de schakeling, een JEDEC-bestand of een POFbestand in een appart geheugen staat. Meetstal wordt hiervoor een serieel geheugen gebruikt. Men noemt zo een geheugen een Boot PROM. Als eenvoudig voorbeeld laten we een LUT zien met twee adresingangen. Figuur 31 Een LUT met 2 adresingangen Volgende logische schakeling kan worden geprogrammeerd: f1 = /x1./x2+x1.x2 Men bekomt dan volgende inhoud in de LUT: Figuur 32 inhoud in de LUT Hoofdstuk 8 Technologie van programmeerbare logica

174 Voorbeeld van een LUT met drie adresingangen. Figuur 33 Een LUT met drie adresingangen Voorstelling van een FPGA logisch block met een flipflop en een LUT. Figuur 34 Een flipflop in een FPGA Tot slot laten we een eenvoudig voorbeeld zien van een FPGA met een aantal LUT s die zijn voorgeprogrammeerd. Er zijn drie ingangen aangesloten, x1, x2, en x3 die de functie f realiseren. De rode pijlen laat zien hoe de functie tot stand komt. In een klein serieel geheugen staat de data van de verschillende verbindingen. Bij het opzetten van de voedingsspanning wordt de inhoud van dit serieel geheugen gedownload naar de programmeerbare component. Hoofdstuk 8 Technologie van programmeerbare logica

175 Figuur 35 Een gedeelte van een voorgeprogrammeerde FPGA Altera FLEX 10K als FPGA Als voorbeeld laten we de structuur zien van een FPGA van Altera, namelijk de FLEX 10K. Deze heeft een logic element met een LUT bestaande uit vier adresingangen. Dit alles wordt weergegeven in Figuur 36. De volledige structuur van een FPGA wordt weergegeven in Figuur 37, het is namelijk een FLEX 10K. De FLEX 10K bestaat uit een verzameling van logische array blocks (LABs). Elk logische element bevat een lookup table (LUT). De structuur van een logic array block wordt in Figuur 38 weergegeven. In de chip worden nog zogenaamde embedded aaray blocks toegevoegd (EAB). Dit is extra geheugen dat kan gebruikt worden om data op te slaan (bv. ASCII-karakters). Zie bijvoorbeeld de toepassing CHAR_ROM van hoofdstuk 5. In de VHDL-beschrijving declareert men de grote van het geheugen met de functie LPM_ROM en gebruikt men een tcgrom.mif bestand om de inhoud van het geheugen vast te leggen. Dat extra geheugen kan op verschillende manieren worden geconfigureerd, bv: 256x8, 512x4, 1024x2,of 2048x1. Bijvoorbeeld in zo een FLEX 10K kan een microcontroller voor een eindgebruiker worden geprogrammeerd. (bv. De Altera Nios processor) Hoofdstuk 8 Technologie van programmeerbare logica

176 Figuur 36 Logic element met een LUT bestaande uit vier adresingangen Figuur 37 FLEX 10K FPGA Hoofdstuk 8 Technologie van programmeerbare logica

177 Figuur 38 FLEX 10K logic array block Tabel 4 Mogelijkdeden van de FLEX 10K Hoofdstuk 8 Technologie van programmeerbare logica

178 8.7.5 Het FPGA-concept van Lattice Het PGA-concept van Lattice heeft als belangrijkste eigenschap t.o.v. de concurrenten dat telkens door middel van twee daarvoor gereserveerde aansluitpennen het programmeren, respectievelijk het herprogrammeren, van de component wordt mogelijk gemaakt terwijl de component gewoon op de PCB blijft zitten. Het is het in-system-programmable- (isp) of het incircuit- programmable-concept (icp) dat onmiskenbare voordelen biedt voor de ontwerper van prototypen van complexe digitale systemen. Lattice heeft, net als een aantal concurrenten de Boudary Scan architectuur in het concept opgenomen, zodat het testen van PCB s eenvoudiger kan worden. Bovendien kan de isp-pga niet allen via de door de fabrikant geleverde software maar ook via deze boudary-scan-architectuur worden ge(her)programmeerd. Figuur 39 Het FPGA-concept van Lattice De Lattice-architectuur is opgebouwd rond een Global Routing Pool (GRP). De GRP is een zeer omvangrijke Programmable Interconnect Array (PIA) zoals die bij Altera wordt toegepast. Aan de randen van Figuur 40 zijn met I/O de verbindingen met de buitenwereld aangegeven. De signalen van elke I/O-pen gaan via een inputbus naar de Global Routing Pool (GRP). Vanuit deze grote verbindingsmatrix worden de ingangssignalen, de daaruit gevormde producttermen en de uitgangen naar de Generic Logic Blocs gevoerd (GLB). Op de uitgangen van de Global Routing Pool zijn de Generic Logic Blocs aangesloten, elk van die blocks is in feite een klein GAL-blok. Hier worden de logische combinaties gemaakt. Hoofdstuk 8 Technologie van programmeerbare logica

179 Figuur 40 De Lattice-Architectuur met de Global Routing Pool De I/O-cell is vergelijkbaar met die van andere PLD s. Elke klem kan naar keuze als input-klem of als output-klem worden gebruikt. Bij het gebruik van zowel input-klem of als output-klem kan de functie al dan niet geklokt worden verwerkt. Door in een GLB de functies met drie, vier, vijf of zeven producttermen met elkaar te combineren zijn ook functies mat acht, negen, tien, elf, twaalf, veertien, zestien of negentien producttermen te verkrijgen. Nog grotere aantallen moeten door combinaties over meerdere GLB s worden samengesteld. Door het gebruiken van intelligente software zal het programmeertoestel een zuinige combinatie van producttermen voor complexe functies realiseren. Om een indruk te geven omtrent de omvang van de complexiteit van de te programmeren ISP gegeven we hierbij de volgende oriënterende vergelijking: Elk GLB kan vier relatief eenvoudige functies bevatten. Laten we veronderstellen dat er gemiddeld per GLB twee redelijk complexe functies en één eenvoudige functie gerealiseerd kunnen worden. Er zijn 32 GLB s en daarmee 64 tamelijk complexe functies en nog 32 eenvoudige functies. Dat geeft ongeveer een grootorde van 96 functies ofwel ruim 9 stuks 22V10 s. Tot slot fabrikanten zullen onderling de parameterspecificaties van hun eigen bouwstenen systematisch overwaarderen en tegelijkertijd die van de concurrenten onderwaarderen. Hoofdstuk 8 Technologie van programmeerbare logica

180 8.8 Samenvatting: PLD-architecturen Een PLD is de verzamelnaam voor programmeerbare componenten. Elke digitale schakeling is opgebouwd uit combinatorische logica en, voor de opslag van bits, verschillende soorten flipflops. Beide bestaan op hun beurt weer uit booleaanse AND-, OR- of NOT-elementen of zelfs alleen NANDpoorten (NOT-AND). Het aantal van die poorten ('gates') is een ruwe maat voor de complexiteit van het IC, maar de functionaliteit wordt bepaald door de aanwezige verbindingen. In een normale chip liggen die vast, maar in een PLD (programmable logic device) is een groot aantal wissels ('switches') aangebracht. Hierdoor kunnen verbindingen worden gemaakt of verwijderd en wordt het IC configureerbaar. Als die wissels in SRAM zijn uitgevoerd, is de functionaliteit zelfs als een bitstroom van een pc te downloaden of van een ROM te booten, net als bijvoorbeeld systeemsoftware. Het verschil is dat bij een PLD de schakeling zelf geconfigureerd wordt. Het 'programma' hiervoor kan op hoger niveau in een HDL (hardware description language) zijn geschreven. Er zijn ruwweg drie gangbare PLD-architecturen met een oplopend niveau van complexiteit. 1. De eenvoudigste wordt wel SPLD (simple programmable logic device) genoemd en bestaat uit een aantal lijnen die via NOT-, AND- en OR-poorten een combinatorische functie leveren die eventueel in een register kan worden opgeslagen. Bij een PAL is de and-array programmeerbaar. Bij een PLA is de or-array programmeerbaar. 2. In een CPLD (complex pld) zijn meerdere SPLD's gecombineerd in logische blokken rondom een centraal gebied met ook weer programmeerbare connecties. Complex programmable logic device (of ook wel: CPLD) is een programmeerbare logica-chip. Een CPLD bestaat uit een aantal in de chip vastgelegde poortjes en flipflops die door het IC een andere programmering te geven, op een andere manier met elkaar verbonden worden. Hierdoor is er telkens weer een andere digitale logische schakeling mee te realiseren. Fabrikanten van CPLD's zijn onder andere Lattice Semiconductors, Altera en Xilinx. Een grote tegenhanger van de CPLD is de FPGA. Hoofdstuk 8 Technologie van programmeerbare logica

181 3. FPGA staat voor Field Programmable Gate Array. In een FPGA (field programmable gate array) tot slot zijn logische blokken en hun instelbare verbindingen omringd door aparte in/uitvoerblokken. Het aantal pinnen kan tot een paar honderd oplopen. Huidige FPGA's kunnen meerdere miljoenen poorten bevatten en hebben de capaciteit om een volledige CPU of DSP (digital signal processor) met perifere logica te implementeren. Een FPGA valt onder de programmeerbare logica. Hieronder verstaat men geïntegreerde circuits (chips) waarvan de functie na de fysieke productie door de klant kan worden geconfigureerd. FPGA's zijn ontstaan uit de behoefte om grote digitale schakelingen in relatief kleine aantallen te realiseren. Vóór het FPGA-tijdperk moest alles met logische bouwstenen samengesteld worden, hetgeen erg veel tijd en printruimte kostte. Sinds de komst van de programmeerbare logica kan een elektronicus zo'n schakeling als een soort programma schrijven (in bijvoorbeeld VHDL of Verilog), waarna het voor de chip gecompileerd wordt en in de chip "geladen". Op dezelfde manier is de schakeling ook weer eenvoudig te wijzigen. Het schrijven en testen van deze code is echter nog steeds arbeidsintensief. De basis van een FPGA is een array van identieke cellen welke op een aantal gedefinieerde manieren geconfigureerd kan worden. Zo'n cel bevat altijd tenminste een geheugenplaats (flipflop) voor 1 bit aan informatie met daarbij enkele logische poorten (AND, OR) welke de inhoud van deze of andere geheugenplaatsen controleren/bepalen. Door nu verschillende cellen aan elkaar te knopen kunnen verschillende functies worden gerealiseerd. De uiteindelijke functie van de FPGA wordt bepaald door de configuratie van iedere cel en de onderlinge verbindingen. Op deze manier kunnen zeer complexe digitale functies worden verkregen, van videocontrollers tot CPU's (bv. Xilinx MicroBlaze of Altera Nios processor). De belangrijkste spelers op de FPGA-markt: Xilinx, Altera, Lattice, QuickLogic, Actel. Hoofdstuk 8 Technologie van programmeerbare logica

182 8.9 Oefeningen 1. Is het aantal producttermen per macrocell van programmeerbare componenten altijd constant? Geef een verklaring. 2. Tel het aantal input lijnen van onderstaande AND/OR Logic Array. 3. Wat is een JTAG-interface en wat is Boundary Scan? 4. Met welk dataformaat (file) worden programmeerbare componenten geprogrammeerd? 5. Wat is het verschil tussen een PAL en een PLA? 6. Wat is het verschil tussen een PAL en een CPLD? 7. Wat is het verschil tussen de security Cell en de elektronische handtekening? 8. Wat kan je vertellen over onderstaand blokschema, en waarvoor dient de Logic Allocator? Hoofdstuk 8 Technologie van programmeerbare logica

183 9. Geef de definitie van een PAL, een PLA en een ROM. 10. War wordt bedoeld met SPLD? 11. Wat wordt bedoeld met fuse programmable en electrically programmable? 12. Beschrijf het PGA-concept van Lattice 13. Beschrijf het MAX-concept van Altera. 14. Wat wil output/buried macrocell zeggen? 15. Waarvoor dient het extra geheugen in een FLEX 10K, en waarvoor kan het gebruikt worden? 16. Bespreek de samenstelling van een LUT. 17. Wanneer blijft een applicatie permanent in een programmeerbare component als de voedingspanning wegvalt? 18. Wat is het verschil tussen een CPLD en FPGA? 19. Noem een aantal fabrikanten van programmeerbare componenten. Hoofdstuk 8 Technologie van programmeerbare logica

184 Hoofdstuk 8 Technologie van programmeerbare logica

185 9. Hoofdstuk 9 A/D- en D/A omvormers Inleiding Digitaal-analoog omvormers De ideale D/A omvormer Digitale verzwakkers Unipolaire omvormer Bipolaire codes Multiplying D/A omvormer Praktische uitvoering van D/A omvormers De binair gewogen D/A omvormer D/A omvormer met R/2R ladder D/A parameters en definities Resolutie Statische fouten bij DAC's Lineariteit of relatieve nauwkeurigheid Differentiële lineariteit en monotoniciteit Insteltijd (Settling-time) Schakelsnelheid (Slewing rate) Update rate Bruikbare resolutie Ingangscodes Vierkwadrant vermenigvuldiging Analoog-digitaal omvormers Teller principe (Single digital ramp) Omvormer met enkelvoudige integratie Omvormer met dubbele integratie Omvormer met viervoudige integratie A/D omvormer van het opéénvolgend-benaderingstype Bespreking van het blokschema van de ADC Digitaal geluid A/D omvormer van het paralleltype De pipeline omvormer De sigma-delta-omvormer Samenvatting Oefeningen Hoofdstuk 9 A/D- D/A omvormers - 1 -

186 9. Hoofdstuk 9 A/D- en D/A omvormers 9.1 Inleiding Het doel van interfacing is twee of meer toestellen met elkaar verbinden zodanig dat zij in optimale werkingsomstandigheden met elkaar kunnen communiceren. Dit veronderstelt schakelingen die de in en- of uitgangssignalen van het ene toestel compatibel maken voor het andere. De meeste fysische processen leveren ons na omzetting met sensoren analoge signalen. De conversie van analoge naar digitale signalen, en omgekeerd, vervult dus een belangrijke rol in de huidige stand van de techniek. Deze conversies heeft geleid tot de fabricatie van geëigende bouwstenen, de A/D- en D/A omvormers. Bij D/A omvormers wordt de digitale informatie omgezet in een equivalente informatie. Een typisch voorbeeld hiervan vinden we bij de sturing van de pen van een schrijver. In zeker opzicht is een D/A omvormer een decoder, daar hij verbonden is met de uitgang. Bij de A/D omvormers wordt de analoge informatie omgezet in een equivalent digitaal signaal. Zo worden de analoge signalen van opnemers (bij meting van temperatuur, druk,...) omgezet in digitale signalen, klaar voor verdere verwerking in de digitale eenheid. De A/D omvormer is vergelijkbaar met een encoder-schakeling. D/A omvormer ---- decoder ---- per binaire waarde één eenduidig uitgangssignaal. A/D omvormer ---- encoder ---- het analoog ingangssignaal wordt geëncodeerd naar een binair gecodeerde uitgang. Figuur 1 Interfacing met AD & DA omvormers Hoofdstuk 9 A/D- D/A omvormers - 2 -

187 AD & DA omvormers worden in alle takken van de industrie toegepast. Bijvoorbeeld: Een industriële drukomvormer. Figuur 2 Een industriële drukomvormer Figuur 3 Blokschema van een industriële drukomvormer De gegevens van de A/D omvormer wordt verwerkt in een microcontroller. Hoofdstuk 9 A/D- D/A omvormers - 3 -

188 9.2 Digitaal-analoog omvormers De ideale D/A omvormer Figuur 4 De unipolaire omvormer 2n combinaties geeft 2n niveaus Figuur 4 stelt een ideale D/A omvormer voor. De input bestaat uit een digitaal signaal D en een referentiewaarde R (spanning, stroom, lading...). De output is een analoog signaal A (spanning, stroom, lading...), dat aan de volgende betrekking voldoet: A = R x D Het signaal D is een digitaal signaal beschreven door de bits B1, B2,... Bn. De n-bits kunnen 2 n combinaties vormen die voor één gegeven R signaal 2 n analoge output niveaus kunnen geven. Met n = 8 kunnen 256 verschillende niveaus gegenereerd worden. De fractionele code wordt gedefinieerd als: (met B1 = MSB en Bn = LSB) R = Vref = 1 zodat 0 D 1- n 2 Hoofdstuk 9 A/D- D/A omvormers - 4 -

189 In de meeste gevallen is R een referentiespanning, Vref = 10V als voorbeeld. Voor Vref > 0 en D 0 wordt A 0 en spreekt men een unipolaire omvormer met positieve referentie (UPR). Voor Vref<0 en D 0 wordt A 0 en spreekt men van een unipolaire omvormer met negatieve referentiespanning (UNR). Als voorbeeld geeft men een ideale 3 bit D/A. Een drie-bit omvormer heeft 2 3 = 8 discrete gecodeerde niveaus. Dus een totaal van acht verschillende inputs en acht corresponderende outputs, gaande van 0 tot 7/8 van de volle schaal. Figuur 5 Idiale 3 bit D/A omvormer 1LSB = FS/8 (FS=Full Scale) Het verschil tussen twee opéénvolgende uitgangsniveaus kan uitgedrukt worden in een absolute waarde. Met deze driebit omvormer en een referentiespanning van 10V, kan men stellen dat iedere uitgangswaarde dus (1/2 3 ).10V = 10V/8 groter is dan de vorige uitgangswaarde. Diezelfde driebit omvormer kan natuurlijk evengoed met een een 5 V referentie werken zodat de onderlinge afstand tussen twee opéénvolgende uitgangen slechts 5/8 V bedragen. Meestal wordt de onderlinge afstand relatief uitgedrukt. Men zegt dat deze 1 LSB (last significant bit) bedraagt. FS 1LSB = n 2 Hoofdstuk 9 A/D- D/A omvormers - 5 -

190 Voorbeeld: n = 8 10 FS = 10V wordt: 1LSB = 2 Merk op dat de maximale uitgang van de D/A omvormer nooit de referentie R is, maar steeds Amax = R - 1 LSB. Voor n = 8 en FS=10V wordt dit: 10V 255 A max = 10V =.10V Het aantal discrete uitgangsniveaus die kunnen weergegeven worden noemt men de resolutie. Ze kan uitgedrukt worden als de "n bit resolutie". Anderzijds definieert men de afwijking van de uitgang ten opzichte van de verwachte waarde als de nauwkeurigheid. Deze resolutie (of onderscheidingsvermogen) is dus in het geval van een FS = 10 V en vier bits ongeveer gelijk aan 600 mv (10 V/16) = 625mV. Maar ieder niveau kan wel nauwkeurig zijn tot op bijvoorbeeld 10 mv. De 10 mv duidt de nauwkeurigheid (of accuracy) aan, anders uitgedrukt zegt men 10 V/10 mv = 1000 is ongeveer 2 10 of een 10 bit nauwkeurigheid. 8 = Figuur 6 De nauwkeurigheid t.z.v. de resolutie Voor het cijfervoorbeeld is de afstand tussen twee niveaus 600 mv en de fout op ieder niveau 10 mv. Het heeft dus geen zin om de resolutie te verkleinen (aantal bits laten toenemen) als de nauwkeurigheid groter is dan de resolutie. Ideaal is een nauwkeurigheid van 1/2LSB. VB: 10bit resolutie 1/1024 is ongeveer gelijk aan0,1% nauwkeurigheid moet dan < 0,05%. Hoofdstuk 9 A/D- D/A omvormers - 6 -

191 9.2.2 Digitale verzwakkers Tabel 1 De verzwakking in functie van het aantal bits Figuur 7 Digitale verzwakkers Voor 1 LSB aan de ingang is de verzwakking (in db) gelijk aan: 20 log A/R VB: n = 4 R = 10V 1LSB = 0,625V 20 log 0,625/10 = -24,1 db Ofwel 20 log 2 -n 20 log 2-4 = -24,1dB Dus voor een 4bit omvormer is de maximale verzwakking = -24,1dB. Zie hiervoor tabel 1. Hoofdstuk 9 A/D- D/A omvormers - 7 -

192 9.2.3 Unipolaire omvormer Tabel 2 De relatie tussen de digitale ingang en de uitgang van een 8-bit omvormer Scale 10 V FS Staight Binary Complementary Binary FS-1LSB 9, /4FS 7, /2FS 5, /4FS 2, /8FS 1, LSB 0, , Figuur 8 Transferfunctie van een unipolaire omvormer Merk op dat dit een unipolaire omvormer is, dit wil zeggen dat de uitgang enkel positieve (of enkel negatieve) waardes kan aannemen. De eenvoudige (straight) binaire code gaat van ( )2 tot ( )2 en bestrijkt de zone 0 V tot (Vref -1 LSB). Merk op dat met ( )2 niet Vref maar (Vref -1 LSB) gegenereerd wordt. Soms wordt ook de complementaire of 1-c code gebruikt, bijgevolg worden alle bits geïnverteerd. Hoofdstuk 9 A/D- D/A omvormers - 8 -

193 9.2.4 Bipolaire codes Naast de unipolaire D/A omvormers bestaan er ook bipolaire D/A omvormers die zowel positieve als negatieve signalen leveren. De meest gebruikte codes zijn: bipolaire codes - tekenbit + absolute grootte - offset binary - 2's complement. Tekenbit + absolute grootte Bij de tekenbit gevolgd door de absolute grootte bevat de meest beduidende bit het teken terwijl de volgende bits de grootte leveren. Zo is : 0100 = +4 en : 1100 = -4 Offset binary Met de offset binary schrijfwijze gaat het om een verschoven binaire code waarbij de helft van de maximale code overeenkomt met een uitgangssignaal van 0 volt. De code wordt verder uitgewerkt in tabel 3. Tabel 3 Verschillende offset binary codes De laagste digitale code ( )2 stelt dus het laagste uitgangsniveau voor, nl. -FS, terwijl ( )2 overeenkomt met +FS - 1 LSB. 2's Complement. De 2-c methode is dezelfde als de binary code uitgenomen dat de MSB gecomplementeerd is. Dit heeft voor gevolg dat de digitale input ( )2 overeenkomt met de analoge 0-waarde. Deze code wordt het meest aangewend omdat digitale tekensystemen eveneens in de 2-c mode werken. Hoofdstuk 9 A/D- D/A omvormers - 9 -

194 Transferfunctie van bipolaire codes: Offset binary 2 s complement Sign + magnitude (tekenbit + absolute waarde) Figuur 9 Transferfunctie van een bipolaire omvormer Tabel 4 BCD code Binair gecodeerde decimalen (BCD) worden ook veel gebruikt zoals weergegeven in tabel 4. In BCD worden de 4 digits gebruikt om elk decimaal cijfer weer te geven. Deze code kan ook gebruikt worden voor bipolaire waarden indien een extra tekenbit voorzien wordt. Tabel 5 De verschillende codes voor een 4bit omvormer Hoofdstuk 9 A/D- D/A omvormers

195 Men kan ook een UPR 4bit D/A omvormer ombouwen tot een 3bit bipolaire werking. Dit gebeurt door een dubbele referentie te gebruiken, R' = 2R en door de nul te verschuiven tot op de helft van het volledig bereik (d.w.z. 1/2 full scale aftrekken van de D/A uitgang). Uit tabel 5 volgt dat een 2'complement DAC verkregen wordt door bij de offset binary DAC eenvoudig de tekenbit te inverteren. Men kan dus schrijven dat: Men kan ook stellen dat voor : D = 0 A' = 0 A = -R D = 1/2 A' = R A = 0 D = 1-1 LSB A' = 2R - 1 LSB A = R - 1 LSB Hoofdstuk 9 A/D- D/A omvormers

196 9.2.5 Multiplying D/A omvormer Indien bij een bipolaire DAC Rref positief is dan spreekt men van een bipolaire omvormer met positieve referentie (BPR). Is Rref negatief dan wordt dit een bipolaire omvormer met negatieve referentie (BNR). Indien nu de vaste referentiespanning vervangen wordt door een analoog variërend ingangssignaal met -FS R + FS en de omvormer is bipolair dan kan de DAC beschouwd worden als een 4 kwadrant vermenigvuldiger. De analoge output is het product van de digitale input D en de analoge ingang. Een dergelijke omvormer wordt een "multiplying DAC" genoemd (MDAC), die kan gebruikt worden als een digitaal gecontroleerde veranderlijke verzwakker, ideaal bestemd voor microprocessor gecontroleerde verzwakkers, filters enz. Figuur 10 Multiplying D/A omvormer 9.3 Praktische uitvoering van D/A omvormers In de huidige stand van de technologie heeft het nog weinig zin de verschillende realisatiemethoden grondig te bespreken. De constructeurs leveren ons immers D/A omvormers in één behuizing. Een zekere basiskennis is echter gewenst om de specifieke gegevens van de fabrikant te begrijpen en om een goede keuze te kunnen maken uit het marktaanbod. Hoofdstuk 9 A/D- D/A omvormers

197 9.3.1 De binair gewogen D/A omvormer. Figuur 11 laat het principe zien van een binair gewogen D/A omvormer. Is de schakelaar gesloten dan komt dit overeen met de toepassing van de desbetreffend bit (een logische 1 ). Is de schakelaar open, dan stemt deze toestand overeen met een logische 0. Figuur 11 De binair gewogen D/A omvormer De operationeel versterker is geschakeld als inverterende somversterker. De opéénvolgende versterkingen zijn dus: -1, -1/2, -1/4, en -1/8. Kiezen wij als referentiespanning bijv. 5 V, dan is de uitgangsspanning: Uu = -(1x5+1/2x5+1/4x5+1/8x5)V = -9,375V Uiteraard doet zich dat voor als alle schakelaars gesloten zijn m.a.w. voor de binaire ingangscode De spanning -9,375V komt overeen met de max-waarde. (Amax = FS - 1LSB) Hieruit kunnen we ook afleiden dat 1LSB gelijk is aan -9,375/15 = -0,625 V. De resolutie in % wordt dan gelijk aan 0,625 / 9,375 * 100% = 6,6% Algemeen kunnen we stellen dat we de resolute in % kunnen bepalen op twee manieren: 1LSB 1 Resolutie in % = x100% =.100% FS - 1SLB 2 n 1 Opmerkingen: 1. Een BCD D/A omvormer bezit uiteraard dezelfde overdrachtfunctie als de binaire omvormer. De maximum uitgangsspanning is uiteraard voor de code Hoe kleiner de waarde van de ingangsweerstanden, hoe hoger de nauwkeurigheid. 3. De nauwkeurigheid van de omzetting wordt mede bepaald door de nauwkeurigheid van de referentiespanning. 4. De weerstand van de (elektronische) schakelaar moet uiteraard klein zijn t.o.v. de waarde van de weerstand R. Hoofdstuk 9 A/D- D/A omvormers

198 9.3.2 D/A omvormer met R/2R ladder Figuur 12 is een interessante variante op het voorgaande schema de D/A omvormer met R/2R laddernetwerk. Hierin worden slechts twee verschillende waarden van weerstanden gebruikt. Figuur 12 D/A omvormer met R/2R ladder Belangrijk is verder dat het laddernetwerk niet belast wordt door de versterker, gezien hij geschakeld is als spanningsvolger. Hierbij is Uu = Ui. Wij berekenen de uitgangsspanning aan de hand van enkele opéénvolgende stappen. Voor de eenvoud van de berekeningen kiezen we een 3-bit omvormer zoals getekend is in Figuur 13. Figuur 13 3-bit omvormer Voor S2S1S0 = 000 De uitgangsspanning is dan gelijk aan 0 V. Hoofdstuk 9 A/D- D/A omvormers

199 Voor S2S1S0 = 001 Het laddernetwerk kunnen wij tekenen zoals voorgesteld in Figuur 14. Opéénvolgende toepassing van de stelling van Thévenin brengt ons naar het eindresultaat. Figuur 14 Voor S2S1S0 = 001 Voor S2S1S0 = 010 Figuur 15 illustreert de berekeningen. Figuur 15 Voor S2S1S0 = 010 Hoofdstuk 9 A/D- D/A omvormers

200 Voor S2S1S0 = 011 Uit de twee voorgaande berekeningen volgt: 001 geeft Uu = Ur/8 = Ct geeft Uu = Ur/4 = (Ur/8).2 = Ct.2 Dus 011 geeft: Ct.1 + Ct.2 = Ct.3 Voor S2S1S0 = 100 De waarde van Uu volgt uit de schema's van Figuur 16. Figuur 16 Voor S2S1S0 = 100 Opmerkingen: De opbouw van de schakeling bevat méér weerstanden dan de binair gewogen D/A omvormer. De schakelaars moeten dubbelpolig uitgevoerd zijn. Door de schakeling van de Op-Amp. te wijzigen kan de uitgangsspanning gemakkelijk aangepast worden. Praktische uitvoering: Als voorbeeld van een R/2R laddernetwerk nemen we de component ZN428 van Plessey Semiconductors. Dit is een 8-bit microprocessor compatible DAC. Figuur 17 ZN428 van Plessey Semiconductors Hoofdstuk 9 A/D- D/A omvormers

201 Figuur 18 R2R laddernetwerk van ZN428 van Plessey Semiconductors Hoofdstuk 9 A/D- D/A omvormers

202 9.4 D/A parameters en definities Resolutie De resolutie is de kleinste verandering van het uitgangssignaal als gevolg van de kleinste verandering van het digitale ingangssignaal. Wij kunnen ook zeggen: Het is de kleinste aangroei van de uitgangsspanning (of -stroom) die men kan onderscheiden. De resolutie is op de eerste plaats functie van het aantal bits, ze wordt kleiner naarmate het aantal bits toeneemt. Meestal wordt de resolutie in % weergegeven: 1LSB 1 Resolutie in % = x100% =.100% FS - 1SLB 2 n 1 Voor een 4-bits D/A omvormer met een UFS van 10 V is de resolutie 0,625 V of 6,66%. Voor een 8-bits DAC worden deze cijfers resp. 0,03906 V of 0,392 %. Hieruit blijkt duidelijk dat de resolutie snel afneemt met de woordlengte. Het is ook mogelijk de resolutie uit te drukken door de woordlengte, zo spreekt men bijv. van een 8-bits resolute. Minder gebruikelijk is de uitdrukking dynamiek in plaats van resolutie. Hiermee wordt bedoeld: D (dynamiek) in db = 20. log(ufs/1lsb) = 20 log 2 -n Signaal-ruisverhouding = 20 log 2 -n = kwantiseringsfout In Figuur 19 is de overdrachtkarakteristiek van een ideale 3-bits DAC voorgesteld. Voor elk van de acht ingangscodes staat een discrete waarde van de uitgangsspanning voorgesteld door een punt op de grafiek. Figuur 19 De overdrachtkarakteristiek van een ideale 3-bits DAC Hoofdstuk 9 A/D- D/A omvormers

203 De ideale DAC geeft stappen van exact 1 LSB per codestap en geen fout noch bij zero-uitgang, noch bij volle schaaluitgang. Hij schakelt oneindig snel van de ene naar de andere stap zonder overgangsfouten. Hij geeft ook geen verandering door de tijd of door de temperatuur. Merk wel op dat de werkelijke overdrachtkarakteristiek discontinu is en weergegeven wordt door de trapkromme. Tussen het nulpunt en de FS-waarde wordt veelal een rechte lijn getekend om het ideale verloop van de DAC weer te geven. In de praktijk blijkt echter dat verschillende foutbronnen oorzakelijk zijn van een afwijking van het ideale verloop Statische fouten bij DAC's D/A omvormer vertonen 4 fundamentele statische fouten: Zero offset Dit is het foutsignaal dat optreedt als digitale ingangscode nul volt vereist aan de uitgang. (zie Figuur 20) Deze fout is aanwezig bij alle codes en in dezelfde toegevoegde waarde. De fout kan steeds gecorrigeerd worden door de zogenaamde nulregeling. Versterkingsfout (Schaalfactor) Bij een dergelijke fout zal de werkelijke helling van de overdrachtkarakteristiek afwijken van de verwachte ideale karakteristiek. De fout treedt ook op bij alle codes en in evenredige mate. Ze kan ook bijgeregeld worden. (zie Figuur 20) Figuur 20 De offset en de versterkingsfout Hoofdstuk 9 A/D- D/A omvormers

204 9.4.3 Lineariteit of relatieve nauwkeurigheid Deze specificatie vergelijkt de werkelijke uitgangsspanning met de theoretische en wordt uitgedrukt als een procent van de maximum uitgangsspanning. Deze fout is niet te compenseren. De lineariteit van een DAC wordt geïllustreerd in Figuur 21. Als de maximum uitgangsspanning van een DAC bijv. 10 V is, met een nauwkeurigheid van 0,2%, dan is de max. foutspanning die kan optreden 20 mv. Resolutie en nauwkeurigheid zijn eigenschappen die nauw met elkaar samenhangen. Inderdaad: ideaal zou een DAC, in het slechtste geval, een fout in nauwkeurigheid mogen bezitten van ± 1/2 van de LSB. Een 10-bits omvormer bijv. heeft een resolutie van 1/1024 of ong. 0,1%. De nauwkeurigheid zou dus kleiner moeten blijven dan 0,05%. Figuur 21 Lineariteit of relatieve nauwkeurigheid Het heeft dan ook geen zin om in het gegeven voorbeeld de nauwkeurigheid sterker op te drijven naar bijv. 0,01%, wat alleen de kostprijs doet stijgen terwijl de eigenschappen van de bouwteen als dusdanig er niet bij winnen. Anderzijds heeft het ook geen zin de resolutie op te drijven, als de nauwkeurigheid slecht is. Dit leidt enkel tot een niet-efficiënt gebruik van de ingangsbits. De nauwkeurigheid van een D/A omvormer is op de eerste plaats afhankelijk van de tolerantie van de weerstanden. Verder spelen de juistheid van de referentiespanning en de versterking van de operationele versterker een rol. Hoofdstuk 9 A/D- D/A omvormers

205 Onder absolute nauwkeurigheid van een DAC verstaan we het verschil tussen de verwachte analoge uitgangsspanning voor een welbepaalde ingangscode en de gemeten waarde voor diezelfde code. Uiteraard heeft het meten van de absolute nauwkeurigheid slechts zin in welbepaalde standaardvoorwaarden Differentiële lineariteit en monotoniciteit Differentiële lineariteit is het verschil tussen de werkelijke stapgrootte en de ideale stapgrootte. Het is de maximale afwijking in LSB uitgedrukt tussen de werkelijke en de ideale waarde van een stap indien de ingangscode met 1 bit verandert. Indien een stap precies 1 LSB verschilt van de vorige, is de differentiële lineariteit fout = 0. Deze fout kan niet gecompenseerd worden. Figuur 22 geeft hiervan een voorbeeld. Figuur 22 Differentiële lineariteit en monotoniciteit Nemen we als voorbeeld een 10-bits DAC met een UFS van 10 V. 1 LSB is dan 9,7 mv. Als nu de werkelijke verandering van de uitgangsspanning slechts 2 mv is, is de differentiële lineariteit gelijk aan: 10 mv - 2 mv = 8 mv, dit is een afwijking van 4/5 LSB. Dit is een procentuele afwijking t.o.v. UFS van : % 0,08% 10 = Hoofdstuk 9 A/D- D/A omvormers

206 Monotoniciteit vereist van de omvormer een steeds groter wordende uitgangsspanning voor een oplopende digitale code. Niet monotoniciteit is een gevolg van een te grote differentiële lineariteitsfout (> -1 LSB). Dit is eveneens voorgesteld in Figuur 22. Een DAC zal zeker monotoon zijn als de specificatie van niet-lineariteit kleiner is dan ±1/2 LSB. In het slechtste geval is de stapgrootte dan nul; namelijk als de 2 aangrenzende punten een lineariteitsfout hebben van respectievelijk +1/2 LSB en -1/2 LSB. Het feit dat een DAC monotoon is betekend echter niet dat zijn lineariteit beter is dan ±1/2 LSB. Dit wordt weergegeven in Figuur 23. Merken we hierbij op dat voor de meeste toepassingen in regeltechniek (gesloten lussen) de monotoniciteit een absolute vereiste is i.v.m. het z.g. "hunting" - effect. (terugkoppeling) Figuur 23 Monotoniciteit Opmerking: Een omvormer met een differentiële niet-lineariteit van ±1/2 LSB max. is strenger gespecificeerd dan een omvormer met gegarandeerde monotoniciteit. Hoofdstuk 9 A/D- D/A omvormers

207 9.4.5 Insteltijd (Settling-time) Dit is de tijd die nodig is om een uitgangsspanning te bereiken die + of - 1/2 LSB van de uiteindelijke spanningswaarde is. Deze tijd ligt tussen 25 ns en 100 µs Schakelsnelheid (Slewing rate) De schakelsnelheid wordt gedefinieerd uit de stijgsnelheid. Uu (V/µs) t Update rate Deze eigenschap geeft aan met welke snelheid de ingangsdata kan ingegeven worden. Ze wordt uitgedrukt in khz of MHz Bruikbare resolutie Het is altijd mogelijk om een n-bits DAC te gebruiken als een (n-1), (n-2),... DAC door de ingangen van lagere orde met de logische "0" te verbinden. De resolutie wordt uiteraard verhoogd. De lineariteitsfouten blijven dezelfde breukwaarde van de oorspronkelijke stapwaarde behouden. Hierdoor kan een niet-monotone n-bits D/A omvormer herleid worden tot een monotone (n-1) D/A omvormer Ingangscodes Naast de natuurlijke binaire ingangscodes worden nog andere binaire codes gebruikt zoals de BCD-code, de 2 -complementcode (uitstekend geschikt voor bipolaire werking), de offset binaire code, enz. Deze laatste code wordt bekomen door het uitgangssignaal van de DAC bipolair te maken. Dit kan eenvoudig bereikt worden door het uitgangssignaal een negatieve halve schaalwaarde te geven. Het uitgangssignaal zal dan negatief zijn voor alle codes waarvoor het MSB "0" is en positief als het MSB "1" is Vierkwadrant vermenigvuldiging Door de referentiespanning instelbaar te maken kan een vermenigvuldiging van variabelen uitgevoerd worden (ingangscode x referentiespanning). Kan de referentiespanning zowel positief als negatief zijn en is de uitgang bipolair, dan zegt men dat de DAC een vierkwadrant vermenigvuldiging kan uitvoeren (MDAC). Hoofdstuk 9 A/D- D/A omvormers

208 9.5 Analoog-digitaal omvormers Bij ADC's is het de bedoeling om een analoog ingangssignaal om te zetten in een digitale code die een voorstelling is van dit analoog ingangssignaal. In dit hoofdstuk beperken wij ons tot de bespreking van enkele gangbare types, om daardoor de specificaties en het gebruik beter te leren kennen Teller principe (Single digital ramp) Figuur 24 is een eenvoudig blokschema van een ADC getekend volgens het tellerprincipe. Figuur 24 Teller principe (Single digital ramp) Door het startsignaal wordt de klok doorgegeven naar de digitale binaire teller, waardoor een reeks opéénvolgende codes opgewekt worden. Het uitgangssignaal van de teller stuurt een D/A omvormer die de opgewekte code omzet in een evenredig analoog uitgangssignaal Ur. Dit Ur-signaal wordt in een comparator vergeleken met het oorspronkelijk analoog ingangssignaal Ui. Zodra deze twee signalen aan elkaar gelijk zijn zal de controle-eenheid de teller stoppen. Het digitaal getal in de teller is dan equivalent aan Ur, en in sterke benadering ook aan Ui, uiteraard binnen de grenzen van de resolutie en de nauwkeurigheid. De bouwsteen is eenvoudig en goedkoop te realiseren, bezit een goede nauwkeurigheid, maar een lange conversietijd. De meettijd is afhankelijk van de grootte van de te meten analoge ingangsspanning. Hoofdstuk 9 A/D- D/A omvormers

209 De schakeling in Figuur 25 illustreert meer precies de samenstelling van een dergelijke omvormer. Ieder klokimpuls verhoogt de binaire teller met 1. Dit duurt tot Ur = Ui is. Figuur 25 Voorbeeld van een teller principe (Single digital ramp) De werking van de A/D omvormer kan als volgt nader omschreven worden: Een positieve startimpuls zet de binaire teller op 0 en belet de doorgang van de klokimpuls door de and-poort. Door het feit dat de teller op "0" staat is de uitgangsspanning van de DAC 0V (Ur =V). Hierdoor is Ui > Ur zodat de uitgangsspanning van de comparator hoog is. Zodra de startimpuls "0" wordt, worden de klokimpulsen doorgelaten en naar de teller gestuurd. De uitgangsspanning van de DAC (Ur) neemt toe is stappen gelijk aan de resolutie. Dit proces gaat verder tot Ur dezelfde waarde bereikt als Ui. Op dit moment wordt de uitgang van de comparator laag waardoor de teller stopt. Hoofdstuk 9 A/D- D/A omvormers

210 9.5.2 Omvormer met enkelvoudige integratie. We beschouwen het blokschema van Figuur 26. Figuur 26 Omvormer met enkelvoudige integratie De conversie-impuls start een lineaire zaagtand en set tevens een flipflop zodanig, dat klokimpulsen aan een teller (binair, BCD enz.) kunnen worden toegevoerd. Op het moment dat de zaagtandspanning de analoge ingangsspanning juist overtreft, zal de comparator omkippen, evenals de flipflop, en worden de klokimpulsen geblokkeerd. De telleruitgang is weer een maat voor de analoge ingangsspanning. Dit type van A/D omvormer kenmerkt zich door: lage snelheid, gering aantal bits, beperkte nauwkeurigheid, vooral omwille van de gebruikte zaagtandgenerator, frequentie van de klokgenerator moet stabiel zijn. Hoofdstuk 9 A/D- D/A omvormers

211 9.5.3 Omvormer met dubbele integratie. De omvormer met dubbele integratie is gebaseerd op dezelfde principes als het voorgaande type, maar elimineert de meeste nadelen ervan. Figuur 27 geeft het blokschema weer van een omvormer met dubbele integratie. Figuur 27 Omvormer met dubbele integratie In deze omvormer wordt het analoge ingangssignaal via een elektronische schakelaar (S) toegevoerd aan een integrator. Op hetzelfde moment wordt de teller gestart en krijgt deze de klokimpulsen. Na een vooraf ingestelde vaste tijd t1 wordt weer via de schakelaar een referentiespanning (Ur) met tegengestelde polariteit als Ui aan de integrator gelegd. Gelijktijdig wordt ook de teller op nul gezet en weer gestart. De uitgangsspanning van de integrator neemt nu af met een vaste helling, bepaald door: Ur RC Wanneer zijn uitgangsspanning nul wordt, wat met een comparator wordt nagegaan, zal de teller weer stilgezet worden. Mede uit Figuur 28 kan men afleiden dat: Ui.t1 = Ur.t2 t2 Ui =.Ur t1 Hoofdstuk 9 A/D- D/A omvormers

212 Figuur 28 Werking omvormer met dubbele integratie Aangezien Ur en t1 constant zijn, zal t2 een maat zijn voor Ui. Daar nu deze tijdsduur ook de telleruitgang bepaalt, zal dus ook de digitale uitgang evenredig zijn met Ui. Figuur 29 Werking omvormer met dubbele integratie als de frequentie daalt Hoofdstuk 9 A/D- D/A omvormers

213 Deze A/D omvormer heeft een aantal belangrijke voordelen: De nauwkeurigheid wordt niet meer beïnvloed door de klokfrequentie en de integrator (vooral C), zolang deze maar stabiel blijven binnen de conversietijd. De nauwkeurigheid en stabiliteit worden nu vooral bepaald door die van de referentiespanning. Voorbeeld van een dalende oscillatorfrequentie: Daalt de frequentie met bijv. 5%, dan zal de eerste helling 5% toenemen in vergelijking met de verwachte waarde. De tweede helling zal dan ook 5% meer tijd nodig hebben om tot nul te dalen. Gezien de klokimpulsen geteld worden gedurende het beschreven tijdsinterval t2, klokimpulsen die zelf 5% trager zijn, zal het uiteindelijk resultaat juist zijn. Figuur 29 laat de werking hiervan zien bij een dalende oscillatorfrequentie. Wel moet er veel belang gehecht worden aan het constant houden van de ontlaadstroom Omvormer met viervoudige integratie. Een A/D omvormer met viervoudige integratie (quad slope omvormer) heeft twee cycli van dubbele integratie, respectievelijk met ingang nul en met het om te zetten analoog signaal. De uitgang die men bij de eerste omzetting bekomt (fout) wordt digitaal afgetrokken van het resultaat dat men bij de tweede cyclus bekomt. Men beschikt aldus over een uiterst nauwkeurige, trage omvormer. Vb. AD Hoofdstuk 9 A/D- D/A omvormers

214 9.5.5 A/D omvormer van het opéénvolgend-benaderingstype In tegentelling met voorgaande typen, waar steeds gebruik gemaakt wordt van een teller, is deze A/Domvormer gebaseerd op een "weegschaalprincipe". Figuur 30 geeft het blokschema weer van een A/D omvormer van het opéénvolgend- benaderingstype. Figuur 30 A/D omvormer van het opéénvolgend-benaderingstype De analoge ingangsspanning wordt ook hier in een comparator vergeleken met de spanning, geleverd door een interne D/A omvormer. Het geheel wordt eerst gereset en na de startimpuls wordt de MSB-uitgang van de D/A omvormer (bv. 5 V) vergeleken met Ui. Is de ingang groter dan de MSB, dan blijft deze laatste behouden en verschijnt als een "1" aan de uitgang van het register. Is integendeel de ingangsspanning kleiner dan de MSB-waarde, dan wordt deze laatste als een "0" ervaren en wordt de vergelijking met de daarop volgende bit geprobeerd enz. Dit systeem van vergelijken kan zo doorgevoerd worden tot de LSB, waarbij dan tevens het register volzet is. Men krijgt zo een digitale uitgang (serie of parallel, naargelang van de opbouw van het schuifregister), die de analoge ingangsspanning in "gewicht" heeft gecodeerd. De kenmerken van dit type zijn: Hoge resolutie (mogelijk tot 16 bits). Snel, gezien de vaste conversietijd per bit (bv. 100 ns); bij een 10-bitsuitvoering is een conversiefrequentie van 1MHz bereikbaar. De omvormer kan gesynchroniseerd worden met een uitwendige klokgenerator. De nauwkeurigheid hangt in grote mate af van de stabiliteit van de referentiebron, de D/A omvormer en de comparator. Dit type A/D omvormer leent zich goed voor microcontroller-interfaces. Hoofdstuk 9 A/D- D/A omvormers

215 Figuur 31 Werking A/D omvormer van het opéénvolgend-benaderingstype De ADC0804 van National Semiconductor. Figuur 32 De ADC0804 van National Semiconductor. Hoofdstuk 9 A/D- D/A omvormers

216 9.5.6 Bespreking van het blokschema van de ADC0804 De spanning die het laddernetwerk geeft, wordt ingesteld met behulp van analoge schakelaars in het IC. Het meest significante bit wordt het eerst "getest" en na acht vergelijkingen (64 klokimpulsen) staat aan de acht uitgangen van het laddernetwerk een binaire code die de waarde van het ingangssignaal vertegenwoordigt ( = volle schaal). Die code wordt vervolgens overgebracht naar de uitgang (output latches). Op dat moment wordt een interruptsignaal gegeven via een INTR-FF.. Er zijn twee ingangen waarmee de omvormer kan worden geactiveerd, /WR en /CS. Eerst moet het IC "geselecteerd" met een "0" op /CS. Als de /WR-ingang van "1" naar "0" gaat, worden de interne SARtussengeheugens gereset. Zolang /CS en /WR hierna "0" blijven, blijft de omvormer in een reset-toestand. De omzetting begint pas tussen 1 en 8 klokperiodes na dat minstens één van deze ingangen hoog is geworden. De reset-toestand (/CS en /WR beide nul) houdt het volgende in: De start-ff. wordt geset, waardoor de interrupt-ff. gereset wordt. In D-FF 1 wordt een "1" gezet en deze staat na één klokpuls op de ingang van het acht-bits schuifregister. Die "1" wordt ook doorgegeven naar de NAND-poort G1 en die levert dan in combinatie met het kloksignaal een reset-signaal voor de start-ff. Als daarna op één van de ingangen /CS en /WR een "1" verschijnt, wordt de start-ff. gereset en kan het schuifregister de "1" van de D-FF. inlezen, waardoor de omzetting wordt gestart. Nadat de "1" door het hele schuifregister is geklokt, verschijnt hij aan de Q- uitgang van dit register ten teken dat de omzetting kan worden beëindigd. Via G2 zorgt het "1"-signaal ervoor dat de digitale niveaus worden ingelezen in de output latches. Bij de volgende klokimpuls wordt de "1" in D-FF. 2 gelezen en dat heeft tot gevolg dat de interrupt-ff. wordt geset en via een invertor een "0" aan de /INTR-uitgang verschijnt. Bij het lezen van de data zorgt de combinatie van /CS en /RD dat de interruptff. weer wordt gereset en dat de data in de outputlatches aan de uitgang verschijnen (gewoonlijk zijn die uitgangen hoogohmig). Hoofdstuk 9 A/D- D/A omvormers

217 9.5.7 Digitaal geluid Digitaal geluid staat voor een digitale voorstelling van geluid. Digitale opslag van geluid dus, wat nodig is om geluid te verwerken met behulp van een computer. Digitale opslag van geluid werd (door Sony ) voor het eerst commercieel toegepast in 1982 door het op de markt brengen van de CD of Compact Disc. Voor 1982 was het al mogelijk in de huiskamer digitaal geluid op te nemen met een PCM-adaptor. Een PCM-adaptor is een elektronisch apparaat dat analoog geluid omzet naar digitaal geluid dat weer wordt omgezet naar een pseudo-video signaal, dat kan worden opgeslagen op videoband. De samplefrequentie, 44.1 khz, die wordt gebruikt in de Compact Disc is ontleend aan zo'n PCM-adaptor. Hoewel de term vaak gebruikt wordt is het belangrijk te vermelden dat hij niet rechtstreeks met geluid te maken heeft, aangezien het hier niet om geluid gaat maar om een gedigitaliseerde vorm ervan. Deze digitale voorstelling van geluid kan van oorsprong: a) volledig handmatig ingevoerd zijn (bijvoorbeeld door toetsen op een klavier aan te slaan), bestandsformaten van dit type : MIDI b) een écht geluid zijn, dat gedigitaliseerd werd. Bestanden van deze oorsprong noemt men bitstroom bestanden, bestandsformaten van dit type : wave, mp3, ogg, c) een combinatie zijn van de 2 voorgaande. Deze bestanden noemt men modules,bestandsformaten van dit type : xm, s3m, mod, it,... Dit resulteert in een groot aantal verschillende types bestandsformaten voor digitaal geluid. Het verschil tussen modules en MIDI zit hem voornamelijk in de manier waarop instrumenten worden opgeslagen. Bij MIDI wordt enkel een nummeraanduiding opgeslagen per instrument. Bij modules wordt per instrument een geluidsmonster (bitstroom-formaat) van dat instrument opgeslagen. Een analoog signaal (bv:stem) kan met een analoog naar digitaal omvormer omgezet naar samples, digitale getallen (0 en 1). Dit gebeurt meestal in groepjes van 16 bits (2 bytes) per meting. De snelheid waarmee men meet, noemt met de sample rate. Hoe dikwijls per seconde dit gebeurt noemt men de samplefrequentie. Figuur 33 Een gedigitaliseerd analoog signaal Hoofdstuk 9 A/D- D/A omvormers

218 Voorbeeld: Voor de ADC0804 van National Semiconductor bedraagt de klokfrequentie 1 fclk = 1,1RC de conversietijd = 64 * de periode van de klok de conversietijd = 64 * 1,1 RC 1 Sample rate = 1,1RC.64 Volgens Nyquist moet de samplerate 2 maal zo groot zijn als de hoogste in de informatie voorkomende frequentie aan de ingang. Hoogste frequentie van het analoog signaal is de helft van de samplerate! geluid in speelgoed 4 khz telefoon 8 khz x 8bit adc 64kbs voor 1 isdn-channel AM radio 11 khz CD 44,1kHz DVD 96 khz Voor telefonie, CD & DVD: Voor telefonie (stem) wordt normaal 14 bit gebruikt. Praktisch 8bit en logaritmisch vertikaal volgens de µwet. Dwz dat er in het begin meer samples worden genomen dan op het einde. Dit komt de spraakherkenning bij telefonie bij 8bit ten goede. Voor CD is de bitdepth 16bit 16bit ADC per bit 6 db ½ 20log 0,5 = - 6dB dynamiek 16 x 6 = 96 db (Tabel 1 De verzwakking in functie van het aantal bits) Voor audio-dvd samplerate van 96 khz met een bitdepth = 24bit dynamisch bereik van 144 db 20 log 2n 20 log 224 = 144,5 db dus per bit komt er 6dB bij Hoeveel liedjes kunnen er op een CD? 1 s samplen met 16 bits per meting, in CD-kwaliteit (44100 metingen/s) en in stereo (L + R = 2 kanalen) Aantal bytes data voor 1 s muziek = 1 s x 16 bits/meting x metingen/s x 2 kanalen (L+R) = bits Er gaan 8 bits in één byte: bits = / 8 = bytes 1 liedje met een tijdsduur van 3 min vraagt dus plaats voor: 3 min = 3 x 60 s = 3 x 60 x bytes = bytes of ong. 32 MB Een gewone cd heeft plaats voor 650 MB en kan dus 650 MB / 32MB = ong. 20 liedjes van 3 min bevatten. Hoofdstuk 9 A/D- D/A omvormers

219 9.5.8 A/D omvormer van het paralleltype De A/D omvormer van het paralleltype (Simultaneous or flash omvormers, Parallel comparators) bezitten de snelste conversietijd. De schakeling is opgebouwd rond een aantal vergelijkers. Door een resistieve potentiometerschakeling worden de inverterende ingangen vast ingesteld. Het te digitaliseren analoge ingangssignaal wordt aangesloten aan alle niet-inverterende ingangen. Hierdoor zullen die comparatoren schakelen waarvan de Ui hoger is dan Ur. Hierdoor wordt, na encodering, een binair signaal opgewekt. Het blokschema hiervan is getekend in Figuur 34. Figuur 34 A/D omvormer van het paralleltype Nemen wij als voorbeeld, in het schema, een referentiespanning van 8 V. De spanningen aan de inverterende ingangen zijn dan resp. 2 V, 4 V en 6 V. Voor een analoog ingangssignaal dat kleiner is dan 2 V nemen alle comparatoren een laag niveau aan (C2C1C0 =000). De binaire uitgangscode wordt dan B1B0 = 00. Voor signalen tussen 2 V en 4 V wordt de onderste comparator hoog en de andere blijven laag (C2C1C0 = 001). De uitgangscode wordt B1B0 = 01. Voor Ui tussen 4 V en 6 V worden de signalen: C2C1C0 = 011 en B1B0 =10. Hoofdstuk 9 A/D- D/A omvormers

220 Voor Ui hoger dan 6 V krijgen we: C2C1C0 = 111 en B1B0 = 11. Uit het bovenstaande weten we dat een 2-bits ADC 3 comparatoren nodig heeft (2 2-1). Zo heeft een n-bits omvormer 2 n -1 comparatoren nodig. Het is nu juist dit groot aantal comparatoren die een ernstig nadeel zijn voor dit type omvormer. De conversietijd is slechts afhankelijk van de vertragingstijd van de comparatoren en de encoderingspoorten. Op de markt zijn parallel omvormers te bekomen met 16 tot 256 verschillende uitgangstoestanden (4-bits tot 8-bits) De pipeline omvormer De pipeline omvormer is wat minder snel, heel wat minder eenvoudig, maar al veel nauwkeuriger dan de flash omvormer. Om het principe van de pipeline omvormer uiteen te zetten geven we hierbij een pipeline-adc die een analoog signaal omzet naar een zes bit binair signaal. De pipeline bestaat uit drie trappen. Elke trap verzorgt twee bits van de outputcode. Het idee van de pipeline omvormer is gebaseerd op het achtereenvolgens, in een aantal trappen, berekenen van één of meer bits van de uitgangscode, te beginnen bij de m.s.b.'s. Daarna wordt via een DAC de analoge tegenwaarde van de reeds berekende code teruggekoppeld naar, c.q. afgetrokken van, het analoge ingangssignaal. Van het resterende verschil wordt dan telkens in een volgende trap het minder significante deel van de uitgangscode berekend. Figuur 35 De pipeline omvormer Hoofdstuk 9 A/D- D/A omvormers

221 De pipeline-adc is te beschouwen als een digitaal systeem dat moet worden bestuurd door een controller. De controller is dan een sequentiële machine. Het analoge ingangssignaal wordt toegevoerd aan een sample and hold-circuit. De hierin getekende schakelaars zijn in de praktijk MOS-FET's die door de controller op het juiste moment, in tegenfase, moeten worden aangestuurd. Het in ruststand gesloten contact zet het analoge ingangssignaal op de condensator C. Zolang het contact gesloten blijft is de momentele waarde van de spanning over de condensator dus identiek aan het ingangssignaal. Als de controller het moment bepaalt waarop het analoge ingangssignaal geconverteerd moet worden, dan wordt het verbreekcontact geopend en tegelijkertijd het maakcontact gesloten. Vanaf dat moment verandert de spanning over de condensator niet meer. De lading op de condensator kan namelijk nergens meer naartoe. De ingangsimpedantie van de OpAmp is oneindig groot, omdat de ingangen rechtstreeks gates van FET's zijn. Als we ervan uitgaan dat op de uitgang van de volledig teruggekoppelde OpAmp een spanning staat die precies gelijk is aan de spanning over de condensator. De OpAmp zal bij het belasten van de uitgangsspanning de benodigde energie leveren en ervoor zorgen dat de uitgangsspanning precies gelijk blijft aan de sample-spanning. De uitgangsspanning wordt met het flash-principe omgezet naar een binaire code van twee bits. Zo worden de twee m.s.b.'s van het binaire uitgangssignaal bepaald. Als de twee m.s.b.'s berekend zijn gebeuren er twee dingen: Om te beginnen worden de twee bits toegevoerd aan en 2-bit-DAC. De DAC zet de code 00, 01, 10 of 11 om in een analoog signaal. De grootte van het analoge signaal hangt af van de code en van het referentiesignaal. We trekken nu het berekende analoge uitgangssignaal van de DAC af van het oorspronkelijke analoge signaal. Het verschil van deze beide signalen bevat de informatie waarmee de overige bits van de output-code moeten worden berekend. We zijn nu zo handig om het verschilsignaal te vermenigvuldigen met het exacte vermenigvuldigingsgetal 4. Daarmee bereiken we dat het signaal voor de volgende twee bits opnieuw kan worden vergeleken met de oorspronkelijke referentiespanning. We zetten de twee m.s.b.'s bovendien op de ingangen van een twee bit breed schuifregister. Op de positive edge van het kloksignaal worden de twee m.s.b.'s in het schuifregister ingeklokt. Tegelijk met het inklokken van de twee m.s.b.'s wordt door de controller de sample and hold-schakeling van de tweede trap geactiveerd. Vervolgens worden de twee volgende bits berekend, op de ingangen van een tweede schuifregister gezet, omgezet in een volgend 2-bit-DAC naar een analoog signaal en afgetrokken van het restant van het analoge signaal. Hoofdstuk 9 A/D- D/A omvormers

222 Bij de tweede positieve edge van het kloksignaal worden de twee m.s.b.'s in het eerste register een positie opgeschoven naar rij 2 en tegelijkertijd worden de beide volgende bits in de eerste rij van het tweede schuifregister ingeklokt. De controller activeert nu bovendien de sample and holdschakeling van de derde trap. Daarna worden de twee l.s.b.'s berekend en op de ingangen van een derde schuifregister gezet. Aangezien we in ons voorbeeld slechts tot zes bits gaan, hoeven we verder geen verschilsignalen meer te berekenen en om te zetten naar volgende bits. Bij de derde positieve edge van het kloksignaal worden de twee m.s.b.'s in het eerst register één positie opgeschoven naar rij 3, de twee bits in het tweede schuifregister naar rij 2 en tegelijkertijd worden de beide l.s.b.'s in de eerste rij van het derde schuifregister ingeklokt. Op de uitgangen van de drie schuifregisters staat nu de gevraagde binaire code van het uitgangssignaal. Wanneer er een groter aantal bits in de uitgangscode vereist wordt, moeten er meer conversietrappen in de pipeline worden opgenomen. De lengte van het shuifregister moet daarbij ook worden vergroot. Voor veertien bits zijn er zo zeven trappen nodig en bovendien zeven schuifregisters met een lengte afnemend van zeven rijen naar één rij. Voor trappen van drie bits moet de versterkingsfactor van de OpAmp 8 zijn. De binaire code komt dan sneller, met minder klokimpulsen, op de uitgangen ter beschikking. Om bijvoorbeeld met één extra klokimpuls de acht bits van een flash omvormer tot zestien te verdubbelen, zouden we een exacte versterkingsfactor 256 nodig hebben. Dit blijkt in de praktijk niet haalbaar. We hebben nu gezien dat er met de flash omvormer in één enkele klokimpuls een uitgangscode van acht bits haalbaar is. Er zijn pipeline omvormers in de handel die: met twee trappen van elk vijf bits een uitgangscode van tien bits, met vier trappen van elk drie bits een uitgangscode van twaalf bits, met zeven trappen van elk twee bits een uitgangscode van veertien bits en met zestien trappen van elk één bit een uitgangscode van zestien bits realiseren. Voor elke trap is er een extra klokimpuls nodig om voor die trap de output-code te berekenen. We zien dus dat we voor een grotere nauwkeurigheid moeten betalen in de benodigde tijd voor de conversie. Als we een sinusvormig signaal van 25 KHz wensen om te vormen en elke sinus viermaal per periode bemonsteren, dan moeten we iedere 10 µs een sample nemen. Dit komt overeen met een samplefrequentie van 100 KHz. Stel dat de signalen met een amplitude van 1 van het referentiesignaal nog gedetecteerd moeten kunnen worden, dan moet 0,5 l.s.b. 1 zijn. Bij tien bits geldt: 1 l.s.b. = 1/1024. Een omvormer van tien bits voldoet dus net niet. Daarom kiezen we een omvormer van twaalf bits. Voor de conversie van die twaalf bits hebben we met de pipeline omvormer vier trappen, en dus vier klokimpulsen nodig. De klokfrequentie moet dus 400 KHz zijn. Hoofdstuk 9 A/D- D/A omvormers

223 De sigma-delta-omvormer Tot slot van de pipeline omvormer bespreken we nog een materiaalbesparende versie. Deze staat bekend als deσ ADC converter. Het is een versie met slechts één circuit met comparators, één DAC en één versterker die exact een factor 4 moet versterken. Bovendien wordt de binaire code in slechts één schuifregister ingeschoven en telkens in zijn geheel in een memory geschreven. Verder zijn er drie sample and hold-schakelingen. Figuur 36 De (sigma-delta-omvormer) Σ ADC converter De eerste sample and hold neemt de analoge ingangsspanning over en zorgt na het aansturen van het signaal 'fb' first Bit, voor de conversie van het m.s.b.-paar. De twee overige sample and holdschakelingen houden om beurten de even en oneven om te vormen signalen vast, waardoor de des- Hoofdstuk 9 A/D- D/A omvormers

224 betreffende bit-paren kunnen worden berekend, terwijl de andere telkens het versterkte verschilsignaal tot op de capaciteit laat komen. Als de omvormer een analoog signaal Vin moet gaan omvormen, dan stuurt de controller voor de eerste twee m.s.b.'s het signaal 'fb=1' aan, waardoor: a) de analoge ingangsspanning Vin, die tot dan toe op de condensator stond, gesampled en tijdens de gehele klokperiode vastgehouden wordt; b) de tweebits flash-schakeling de twee m.s.b.'s berekent; c) de verschilspanning van Vin en de analoge tegenwaarde van de berekende m.s.b.'s nu, na de exacte vermenigvuldiging met 4, op de ingangen van de sample and hold-schakeling voor zowel de even bit-paren als de oneven bit-paren staat. Op de eerstvolgende negatieve edge van het kloksignaal: d) worden de berekende twee m.s.b.'s in de eerste rij van het schuifregister ingeklokt; e) stuurt de controller 'fb'-signaal weer in de stand 'fb=0', waardoor de analoge Vin weer tot op de condensator van de sample and hold komt; f) stuurt de controller het signaal 'even=1' aan. Het met exact 4 vermenigvuldigde verschilsignaal tussen Vin en de tegenwaarde van de twee m.s.b.'s uit c wordt gesampled en tijdens de gehele klokperiode vastgehouden; g) berekend de tweebits flash-schakeling het eerste even bit-paar; h) krijgt nog slechts de oneven sample and hold-schakeling de volgende exact met 4 vermenigvuldigde, verschilspanning toegevoerd. Uit de nieuwe verschilspanning kunnen de resterende bits van het binaire uitgangssignaal worden berekend. Bij de tweede negatieve edge: i) wordt inmiddels berekende eerste even bit-paar in de eerste rij van het schuifregister ingeklokt; j) schuift het m.s.b.-paar naar de tweede rij; k) stuurt de controller het signaal 'odd=1' aan. Het volgende paar oneven bits kan weer worden berekend; l) stuurt de controller het signaal 'even=0' aan, zodat de volgende verschilspanning weer tot op de condensator komt, enz. enz. De sample and hold-circuits worden, zoals gezegd, om beurten gebruikt voor een gesampelde waarde of voor het doorgeven van de versterkte verschilspanning. Na afloop van de cyclus staat de binaire uitgangscode paar voor paar in de rijen van het schuifregister, wordt met het 'write'-signaal naar het geheugen geschreven en kan tijdens het berekenen van de volgende uitgangscode worden uitgelezen. Hoofdstuk 9 A/D- D/A omvormers

225 9.6 Samenvatting Een digitaal naar analoog omvormer (kortweg DAC genoemd) zet een digitaal signaal om naar een analoog signaal. Een DAC doet het tegenovergestelde van de AD-omvormer. Eigenschappen Bereik: minimale en maximale uitgangsspanning of -stroom. Bemonsteringsfrequentie: aantal wijzigingen in signaalniveau per seconde. Resolutie: aantal verschillende signaalniveaus (meestal in bits uitgedrukt). De notatie van bemonsteringsfrequentie met resolutie wordt meestal weergegeven in de volgende vorm: Bemonsteringsfrequentie/Resolutie n108mhz/12bit Toepassingen DA-omvormers worden onder meer toegepast in: CD- en DVD- spelers. Procesautomatisering Meetapparatuur in elektronica: Signaalgeneratoren Geluidskaarten in PC's Een AD-omvormer of Analoog-Digitaal-omvormer (ADC) zet een analoog signaal, bijvoorbeeld een spraaksignaal, om in een digitaal signaal. Een AD-omvormer is de tegenhanger van de DA-omvormer. Deze zet digitale signalen om een analoog signaal. Een analoog signaal is per definitie een signaal wat continu in tijd en in amplitude is (de resolutie is oneindig). Wanneer een analoog signaal digitaal gemaakt wordt betekend dit dat het signaal in tijd en in amplitude gediscretiseerd moet worden. Een discreet (digitaal) signaal is de tegenhanger van een continu signaal, een signaal wat altijd bestaat en alle mogelijke waarden aan mag nemen. Om het signaal digitaal te maken zal er dus met vaste tussenpozen (bemonsteringsfrequentie) een monster genomen moeten worden waarna ook dit monster gediscretiseerd wordt. Om de zoveel tijd wordt er dus een sample genomen welke opgeslagen wordt als een digitaal getal. Dit digitale getal is eindig in resolutie (discreet) en kan dus niet zoals een analoog getal alle waarden voorstellen. Ter illustratie een korte uitleg hoe het signaal door de AD-omvormer loopt. Als eerste bewerking wordt een laagdoorlaatfilter ingezet om aliasing tegen te gaan. Vervolgens neemt de ADC op regelmatige tijdstippen een signaalmonster (sample); dit houdt in dat op een bepaald moment wordt gekeken wat de exacte signaalwaarde is. Bij spraaktelefonie wordt in de meeste systemen 8000 keer per seconde een signaalmonster genomen (bemonsteringsfrequentie is 8 khz) waarmee de maximaal verwerkbare frequentie 4000Hz wordt (Nyquist criterium). Ieder monster wordt dan een woord dat uit meerdere bits bestaat. Het aantal bits bepaalt hoe exact het signaal gereproduceerd wordt. Door deze omzetting naar bits wordt elk signaalmonster gekwantiseerd in amplitude; kwantiseren is het afronden naar een zekere waarde, afkomstig uit een eindig waardenbereik. Analoge signalen kunnen immers een oneindig aantal waarden aannemen. Doordat per monster het waardenbereik waarnaar wordt Hoofdstuk 9 A/D- D/A omvormers

226 afgerond eindig is, is er per monster een eindig aantal symbolen (bijvoorbeeld bits) voldoende om de afgeronde waarde te representeren. Kwantisatie leidt tot een vervorming van het signaal. Het verschil tussen het originele signaal en het gekwantiseerd signaal wordt wel kwantisatieruis genoemd. Hoe fijner de kwantisatie, des te hoger het aantal benodigde bits om het gekwantiseerd signaal vast te leggen, des te lager de kwantisatieruis. Bij audiocd's worden 16 bits per monster gebruikt, waardoor kwantisatieruis bij gemiddeld signaalniveau doorgaans niet hoorbaar is. Na bemonsteren en kwantiseren zegt men dat het signaal digitaal is geworden. Voorbeeld: bij een spraaksignaal wordt vaak gewerkt met een bemonsteringsfrequentie van 8 khz en met 256 mogelijke niveaus per signaalwaarde. Om 1 signaalniveau aan te duiden zijn 8 bits voldoende. Op deze manier wordt een spraaksignaal omgezet naar een digitaal signaal van 8000*8=64000 bits per seconde. Nyquist-frequentie In, onder meer, de telecommunicatie en de elektronische signaalverwerking is de Nyquist-bemonsteringsfrequentie de theoretisch minimaal benodigde bemonsteringsfrequentie waarmee een gegeven, in bandbreedte begrensd signaal volledig kan worden gerepresenteerd, m.a.w. op betrouwbare wijze kan worden gereconstrueerd vanuit de bemonsterde waardes. Als de hoogste in het signaal voorkomende frequentie f0 is, dan is de Nyquistbemonsteringsfrequentie 2f0. Omgekeerd, bij een gegeven bemonsteringsfrequentie f, is de maximale frequentie f/2 die uit het bemonsterde signaal correct kan worden gereconstrueerd de Nyquist-frequentie. Als een signaal wordt bemonsterd met bemonsteringsfrequentie f, dan is iedere aanwezige signaalcomponent boven een frequentie f/2 niet betrouwbaar reconstrueerbaar vanuit de signaalmonsters. De frequentie f/2 staat bekend als de Nyquist-frequentie, onder verwijzing naar het Nyquist- Shannon bemonsteringstheorema. De frequentiecomponenten die boven de Nyquist-frequentie liggen gaan niet verloren, maar worden gemengd met de componenten van een lager frequnetie. Na bemonstering is deze vermenging niet meer ongedaan te maken. Dit ongewenste effect wordt aliasing genoemd. Bijvoorbeeld, Compact Disc-geluid met een bemonsteringsfrequentie van Hz kunnen geen frequenties die hoger zijn dan Hz opgeslagen worden. Opmerking 1: De feitelijke bemonsteringsfrequentie die nodig is om het originele signaal te kunnen reconstrueren moet in de praktijk enigszins hoger zijn dan de Nyquist-bemonsteringsfrequentie omdat filters een eindige overgang hebben. Opmerking 2: De Nyquist-bemonsteringsfrequentie is ook de maximale frequentie waarbij ideale pulsen door een ideaal laagdoorlaat-kanaal kunnen worden gestuurd. M.a.w.: als het kanaal alle frequenties doorlaat van W (in Hz) of lager, dan is het mogelijk om door dit kanaal 2W pulsen/sec te transporteren. Evenals in opmerking 1, is de feitelijk haalbare pulsherhalingsfrequentie enigszins lager, vanwege niet-perfecte pulsvormen en filters die in praktisch realiseerbare systemen worden toegepast. Hoofdstuk 9 A/D- D/A omvormers

227 9.7 Oefeningen Oefening 1 Van een 8-bits D/A omvormer is de analoge uitgangsspanning gelegen tussen 0 V en +10 V. Hoveel volt bedraagt elke stap. Oefening 2 Hoe groot wordt de stap in oefening 1, als de uitgangsspanning gelegen is tussen -8 V en +8 V? Oefening 3 Een DAC moet een uitgangsspanning kunnen afgeven tussen -10 V en +10 V. De resolutie moet ten minste 0,01 V zijn. Hoeveel digitale ingangen zijn er nodig. Oefening 4 Als de DAC 0800 voorzien is om een uitgangsspanning te leveren tussen - 10V en +10 V, hoeveel is dan de uitgangsspanning voor de digitale ingangsinformatie en ? Oefening 5 Wat is een D/A omvormer? Verklaar het principe. Toon aan, dat de nauwkeurigheid van een D/A omvormer evenredig is met het aantal bits. Welke voordelen heeft een D/A omvormer met R-2R-laddernetwerk t.o.v. een eenvoudig type? Welke specificaties zijn van belang bij D/A omvormers? Oefening 6 Een 8-bits-omzeter (single digital ramp) wordt gestuurd door een klokoscillator met een frequentie van 500 khz. De D/Aomvormer levert een maximum uitgangsspanning van 5,12V. Bepaal: - De maximum conversietijd. - De gemiddelde conversietijd. - De resolutie van de omvormer. - De digitale code van een uitgansspanning van 1,4 V. - De maximum conversiesnelheid. Hoofdstuk 9 A/D- D/A omvormers

228 Oefening 7 Teken het verloop van Ur samen met Ui, de uitgang van de comparator, en het kloksignaal van een 8-bits-omzeter (single digital ramp) Figuur 37 een 8-bits-omzeter (single digital ramp) Oefening 8 Onwerp de encodeerschakeling van een 2-bit A/D omvormer van het paralletype. Oefening 9 1. Wat is een D/A omvormer? Verklaar het principe. 2. Toon aan, dat de nauwkeurigheid van een D/A omvormer evenredig is met het aantal bits. 3. Welke voordelen heeft een D/A omvormer met R-2R-laddernetwerk t.o.v. een eenvoudig type? 4. Welke specificaties zijn van belang bij D/A omvormers? 5. Wat is een A/D omvormer? Geef een overzicht van de belangrijkste typen. 6. Hoe komt het dat ook bij A/D-omzetting de nauwkeurigheid toeneemt met het aantal bits? 7. Welk type van A/D omvormer geeft de snelste omzetting? Waarom? 8. Naar welk type van A/-omzetting gaat de voorkeur voor computerkoppelingen? 9. Welke specificaties zijn van belang bij A/D omvormers? 10. Geef het blokschema van een A/D omvormer die werkt volgens het teller principe, en verklaar de werking. Hoofdstuk 9 A/D- D/A omvormers

229 11. Een omvormer van het opéévolgend-benaderingstype bezit een 4- bits register en een Ur van 16V. Beschrijf de opéénvolgende stappen die uitgevoerd worden om een analoge ingangsspanning van 3,2V om te zetten in een digitaal uitgangssignaal. 12. Geef een blokschema van een ADC die werkt met een dubbele helling en gebruik maakt van een 10-bits teller. De klokfrequentie bedraagt 100 khz en de referentiespanning is 5V. Waaraan wordt de binaire uitgangscode gelijk voor een analoge ingangsspanning van 3V? Oefening 10 Bepaal aan de hand van onderstaand schema het theorema van Nyquist. Oefening 11 Geef, voor elk van de punten in de overdrachtkarakteristiek van onderstaande figuur, de lineariteitsfouten en de differentiële lineariteitsfouten. Hoofdstuk 9 A/D- D/A omvormers

230 Hoofdstuk 9 A/D- D/A omvormers

231 10. Hoofdstuk 10 CPLD interface voor een ADC Toestandsmachines Toestandmachines zonder controle ingang Toestandsmachines met controle- in- en uitgangen CPLD interface voor een Analoog naar Digitaal omvormer Een CPLD gebaseerd data acquisitie netwerk Oefeningen Hoofdstuk 10 CPLD interface voor een ADC - 1 -

232 10. Hoofdstuk 10 CPLD interface voor een ADC 10.1 Toestandsmachines Een toestandsmachine (fine state machine) is een digitale schakeling, waarbij de uitgangen een eindig aantal unieke toestanden doorlopen. Het doorlopen van de toestanden gebeurt op het ritme van een klok Toestandmachines zonder controle ingang. Bijvoorbeeld een 3-bit Gray Code Counter. Figuur 1 Toestandsdiagram van een 3-bit Gray Code Counter We zien dat hier 8 toestanden zijn benoemd. S0 tot en met S7. De overgang van de éne toestand naar de andere toestand gebeurt op het ritme van een klok, en aan de overgang moet geen voorwaarde worden voldaan. In VHDL worden de verschillende toestanden gedefinieerd met een opgesomd type (enumerated type). Voorbeeld: Beschrijving van de entity van een 3-bit Gray Code counter: Figuur 2 Blokschema van entity GRAY_CT1 Hoofdstuk 10 CPLD interface voor een ADC - 2 -

233 De architectuur van een 3-bit Gray counter: (gray_ct1.vhd) Hoofdstuk 10 CPLD interface voor een ADC - 3 -

234 Men kan de uitgangen ook rechtstreeks beschrijven in de toestand (state). Bv: Toestandsmachines met controle- in- en uitgangen. Een toestandsmachine kan ook beschikken over een aantal in- en uitgangen. Men kan dan gaan van de éne toestand naar de ander toestand op voorwaarde van een bepaalde conditie. Een voorbeeld: Figuur 3 Toestandsdiagram Om te gaan van toestand start toestand continue moet in1 laag zijn. Als in1 hoog is dan blijven we in toestand start zitten. Om van toestand continue toestand start te gaan moet er aan geen voorwaarde worden voldaan. We spreken dus van conditie afhankelijke overgangen en conditie Hoofdstuk 10 CPLD interface voor een ADC - 4 -

235 onafhankelijke overgangen. Figuur 4 Timing van de toestandsmachine VHDL beschrijving van toestandsmachines met controle-ingangen en uitgangen. In principe is de beschrijving ongeveer hetzelfde als toestandsmachines zonder controle ingangen. De toestanden zullen worden gedefinieerd met behulp van een CASEstatement en de voorwaarden worden met het IF THEN-statement beschreven. Figuur 5 Blokschema van entity STATE_X1 Beschrijving van de entity STATE_X1 Hoofdstuk 10 CPLD interface voor een ADC - 5 -

236 Volledige beschrijving van toestandsmachines met controle-ingangen en uitgangen. Simulatie van de toestandsmachine STATE_X1 Figuur 6 Simulatie van de toestandsmachine STATE_X1 Hoofdstuk 10 CPLD interface voor een ADC - 6 -

237 10.2 CPLD interface voor een Analoog naar Digitaal omvormer. Het is de bedoeling om een data-acquisitie-netwerk te ontwerpen met een ADC0808. De ADC0808 beschikt over een 8 kanaalanaloge multiplexer met ingangen IN0 tot IN7. Deze ingangen zijn te selecteren via een analoog kanaal select input, of adres bestaande uit 3 bits. ADD A tot ADD C met ADD C de msb. van het adres. Voor dat een analoog signaal wordt omgezet moet het adres vergrendeld worden in het adresregister van de omvormer met behulp van ALE (Adres Latch Enable) Figuur 7 ADC0808 Het conversieproces start op de stijgende flank van START. START en ALE kunnen samen worden aangesloten. Figuur 8 Timing van een analoog naar digitaal omvormer Hoofdstuk 10 CPLD interface voor een ADC - 7 -

238 End-of-conversion is een teken dat de omzetting is afgelopen, EOC wordt laag. Het omzettingsproces werk op het ritme van een klok. Na een EOC kan de digitale uitgang gelezen worden door Output Enable hoog te zetten (OE). Wanneer OE laag is dan bevinden de digitale uitgangen zich in hoog impedante toestand. Men kan een toestandmachine ontwerpen dat de ADC controleert en de digitale uitgang vergrendelt in een 8-bit latchregistger. Figuur 9 Een ADC Interface met één uitgangskanaal en een manuele selectie van de analoge ingang Hoofdstuk 10 CPLD interface voor een ADC - 8 -

239 De controller is een toestandsmachine die een laag actieve impuls accepteert om de ingang go zodat één geselecteerde analoge ingang wordt omgezet naar een 8-bit digitale waarde, en deze vergrendelt in een 8-bit latch. De selectie van de analoge ingang gebeurt manueel met behulp van dipswitches aangesloten op ingangen ADD A tot ADD C. De volledige toestandmachine kan worden geprogrammeerd in een CPLD bv. EPM7128SLC84-7 van Altera. Met gegeven toestandsdiagram kan men de controller ontwerpen. Figuur 10 Toestandsdiagram voor de controller van de ADC We gebruiken 2 synchrone ingangen go en eoc. De asynchrone reset zet de controller in de idle toestand, dit is niet te zien in het toestandsdiagram. Volgende uitgangen worden gebruikt, sc (start conversion), oe (output enable), en en (latchenable) Hoofdstuk 10 CPLD interface voor een ADC - 9 -

240 De toestanden zijn de volgende: idle Wacht op go = 0 (PB bedient). Alle uitgangen zijn laag. start Wacht op go = 1 (PB is los). Volgende toestand is wait1 en maakt sc =1 (start/ale puls). De andere uitgangen zijn laag. wait1 Wacht op eoc = 0 (EOC is laag gedurende, en niet boor de omzetting is gestart) eoc mag niet getest worden op 1 na de omzetting. Alle uitgangen zijn laag. wait2 Wacht op eoc = 1 (omzetting is afgelopen) Wanneer de omzetting is afgelopen is de volgende toestand read. Uitgangen oe = 1 en en = 1. read Enable ADC output (oe = 1) en maak de latch transparant (en = 1). store Houd de ADC output enabled, zet de latch in mode geheugen (en = 0) De waarde van de ADC staat nu bewaard in output latch. De frequentie van de klok op de ADC0808 moet liggen tussen 10kHz en 1280kHz. De oscillator op het UP1 board bedraagt 25,175 MHz en moet dus gedeeld worden. Een 5-bit teller kan hiervoor dienst doen. 25,175 MHz/32 = 786,7 khz Figuur 11 5-bit teller om de klok te delen door 32 Wanneer we toestand Idle verwijderen uit het toestandsdiagram dan gaat het ontwerp continu de analoge ingang omzetten naar een digital waarde. Het toestanddiagram ziet er dan uit zoals in Figuur 12. Er moet dus niet telkens op de drukknop go gedrukt worden. De schakeling van het ontwerp blijft ongewijzigd. Hoofdstuk 10 CPLD interface voor een ADC

241 Figuur 12 Toestandsdiagram voor continu ADC-omzetting met een ADC-controller Voor de berekening van de hoogste frequentie van het analoog ingangssignaal dat nog kan omgezet worden gaan we als volgt tewerk. Voor een klok van 787kHz. Een conversiecyclus neemt 64 klokimpulsen in beslag. (zie datasheets van de ADC0808) De controller neemt ongeveer 13 klokimpulsen in beslag plus 2µsec. De ADC0808 heeft 2µsec. nodig om zijn inwendig register te updaten. 1 TS = x77klokimpulsen + 2µsec = 99,8x x 10 klokimpulsen/seconde 1 fs = = 10,02kHz -6 99,8x10 s Volgens het theorema van Nyquist is de maximale frequentie aan de analoge ingang beperkt tot 5,01kHz. 6 seconden Hoofdstuk 10 CPLD interface voor een ADC

242 10.3 Een CPLD gebaseerd data acquisitie netwerk Onderstaand schema laat een CPLD gebaseerd data-acquisitie-netwerk zien. Het bestaat uit een controller, decoder, deler door vier en vier 8-bit registers. Er worden vier analoge ingangen gedigitaliseerd. Figuur 13 Een CPLD gebaseerd data acquisitie netwerk De controller, decoder, deler door vier en vier 8-bit registers worden geprogrammeerd in een CPLD. De 2-bit teller (deler door vier) selecteert steeds één analoge ingang van de ADC0808. Nadat een analoge waarde is omgezet en is overgedragen in één van de vier 8-bit latches, moet de teller met één worden verhoogd om een volgende analoge ingang te selecteren. Figuur 14 laat een bijkomende toestand zien in het toestandsdiagram. De bijkomende toestand krijgt de naam incr. Hoofdstuk 10 CPLD interface voor een ADC

243 Nadat de waarde van de ADC is weggeschreven in een latch gaat CTN_EN hoog welke de teller toelaat na een volgend kloksignaal te incrementeren zodat men van toestand store in toestand incr terecht komt. Figuur 14 Toestandsdiagram van een 4-kanaals data acquisitie netwerk Om de verschillende toestanden van het data-acquisitie-netwerk in één CPLD te programmeren moet deze over voldoende I/O beschikken. Men heeft 32 outputs nodig (vier 8-bit latches) omdat men maar vier analoge kanalen gebruikt. Indien men alle 8 analoge kanalen van de ADC0808 gebruikt heeft men 64 outputs nodig. Men kiest dan voor een krachtiger CPLD met meer pinnen bv: EPM7128SQC100; 100-pin quad flat-pack Oefeningen Oefening 1 Programmeer een looplicht door gebruik te maken van toestandsmachines. Voorzie de mogelijkheid om met ingangen verschillende variaties te selecteren. Oefening 2 Programmeer een modulo n-teller door gebruik te maken van toestandsmachines. Voorzie de mogelijkheid om met ingangen verschillende modes te selecteren. Hoofdstuk 10 CPLD interface voor een ADC

244 Hoofdstuk 10 CPLD interface voor een ADC

245 11. Hoofdstuk 11 Een Matrix Keypad Encoder Systeem Inleiding Uitlezing van een matrix keypad Uitlezing van een matrix keypad bij aanslag van een toets Oefening:... 5 Hoofdstuk 11 Een Matrix Keypad Encoder Systeem - 1 -

246 11. Hoofdstuk 11 Een Matrix Keypad Encoder Systeem 11.1 Inleiding Figuur 1 Een matrix keypad encoder systeem Een toetsenbord onder de vorm van een matrix keypad encoder systeem is georganiseerd in de vorm van een matrix. Bovenstaande matrix bestaat uit vier rijen en vier kolommen. We kunnen dus in dit voorbeeld 16 verschillende karakters gebruiken op het toetsenbord. Wanneer een bepaalde toets wordt ingedrukt dan maakt een overeenkomstige kolom contact met een overeenkomstige rij. Bijvoorbeeld als toets 0 wordt ingedrukt dan zorgt het contact dat rij nul verbonden is met kolom 0. Hoofdstuk 11 Een Matrix Keypad Encoder Systeem - 2 -

247 11.2 Uitlezing van een matrix keypad Om een matrix keypad uit te lezen kan men gebruikt maken van een 2 naar 4 decoder, een 4 naar 1 multiplexer, een 16-bit teller en een vier bit dataregister samen met een BCD naar 7-segmentdecoder. Figuur 2 Uitlezing van het keypad als er geen toets wordt ingedrukt. Met een 4-bit binaire teller worden alle kolommen en rijen gecontroleerd. Met een 2 naar 4 decoder worden de kolommen gecontroleerd. Met de 4 naar 1 multiplexer worden de rijen gecontroleerd. Wanneer er geen toets wordt ingedrukt dan doven alle segmenten van het 7-segmentdisplay omdat: I0 tot en met I3 van de mux. op 1 staan en de uitgang Z op 1 staat zodat het data register gedisabled is. Hoofdstuk 11 Een Matrix Keypad Encoder Systeem - 3 -

248 11.3 Uitlezing van een matrix keypad bij aanslag van een toets Wanneer nu bijvoorbeeld toets 5 wordt ingedrukt wordt met behulp van de desbetreffende schakelaar kolom 2 verbonden met rij 2. (O1 & I1) Figuur 3 Uitlezing van een matrix keypad De bedoeling is dat er een 5 op het 7-segmentdisplay komt te staan. Zolang de uitgangen van de binaire teller niet gelijk zijn aan de kolomwaarde en de rijwaarde van de desbetreffende toets blijft de uitgang van de multiplexer gelijk aan 1. Zie Figuur 3. Hoofdstuk 11 Een Matrix Keypad Encoder Systeem - 4 -

249 Vanaf het moment dat de binaire teller op 0101 komt te staat wordt O1 en Z laag. De klok wordt geblokkeerd en het binaire getal 0101 = 5 wordt in het dataregister vergrendeld. Figuur 4 geeft de uitlezing van een matrix keypad weer. Figuur 4 Uitlezing van een matrix keypad 11.4 Oefening: Programmeer het Matrix Keypad Encoder System in een CPLD of een FPGA. Hoofdstuk 11 Een Matrix Keypad Encoder Systeem - 5 -

250 Hoofdstuk 11 Een Matrix Keypad Encoder Systeem - 6 -

251 12. Hoofdstuk 12 Geheugens Inleiding Random Access Memory Statische RAM K4-RAM type 2114 in het IEC symbool Dynamic Random Access Memory Dynamische RAM De dynamische RAM Single Inline Memory Module Dual Inline Memory Module ROM Programmable Read Only Memory Erasable Programmable Read Only Memory Electrically Erasable Programmable Read Only Memory Flashgeheugen Embedded memory in Altera FPGA s Het niet vluchtig geheugen in FPGA s van Lattice Oefeningen Hoofdstuk 12 Geheugens - 1 -

252 12. Hoofdstuk 12 Geheugens 12.1 Inleiding Het geheugen van een computer bestaat uit een groot aantal kleine eenheden van dezelfde grootte. Elk van deze eenheden is toegankelijk via een uniek nummer. Dit wordt een geheugenadres (Eng: memory address) genoemd. Byte De adresseerbare eenheden van het geheugen zijn meestal bytes (8 bits). Alleen voor hele simpele processoren, zoals die in toetsenborden gebruikt worden, worden wel 4-bits processoren gebruikt. Woord De fysieke geheugeneenheden (woorden) zijn tegenwoordig meestal groter, namelijk 32-bits (4 bytes) of 64-bits (8 bytes). Dit heet de woordbreedte van een computer. Er bestaan computers met woordbreedtes van meer dan 64 bits. Vroeger heeft men wel computers gemaakt met een woordbreedte van 12 en 48 bits, maar dit is tegenwoordig niet meer gebruikelijk. Adresruimte Zulke adressen worden doorgaans geschreven in hexadecimale vorm. Bijvoorbeeld, een geheugen van 64kB kan geadresseerd worden door met de adressen van tot en met FFFF 16. Dit is een 16-bits adres. De 8-bits processoren uit de jaren 80 hadden doorgaans een adresruimte van deze grootte. Tegenwoordig is een adresruimte van gigabytes gebruikelijk, en dit neemt alsmaar toe. Voor het adresseren van 4 gigabyte is een 32-bits adres nodig. Adresbus De microprocessor heeft aan de buitenkant een aantal verbindingen die de adresbus heten. Op deze verbindingen (32 stuks in het geval van een 32- bits adresbus) komt het adres te staan waarvan de processor de waarde uit het geheugen wil lezen of schijven. De data wordt via de databus uitgewisseld. De grootte hiervan is gelijk aan de woordbreedte van de computer. Swapping De adresbus van de processor is tegenwoordig niet rechtstreeks verbonden met de geheugenchips. De memory manager zit hier nog tussen. Deze vertaalt de geheugenadressen zoals de processor ze ziet naar de fysieke adressen zoals die in de geheugenchips staan. Het belangrijkste doel hiervan is dat weinig gebruikte stukken geheugen tijdelijk op de harde schijf bewaard kunnen worden. Dit mechanisme wordt swapping genoemd. Het Hoofdstuk 12 Geheugens - 2 -

253 geheugen dat op deze manier wel te adresseren is, maar niet echt bestaat (omdat het naar de schijf geswapt is) heet virtueel geheugen. Von Neumann Computers die met het systeem van een adresseerbaar geheugen werken (dit zijn bijna alle computers) heten Von Neumann computers. Zowel het uit te voeren programma als de gegevens staan in dit geheugen. Het gegeven dat minder informatie over de databus gestuurd kan worden dan de microprocessor kan verwerken heet de Von Neumann bottleneck. Computers die niet volgens de Von Neumann architectuur werken zijn machines als neurale netwerken. Er bestaat ook een zogenaamde Harvard architectuur, maar dat is slechts een variant op Von Neumann 12.2 Random Access Memory Random Access Memory (RAM) is geheugen waarvan iedere geheugenplaats even snel toegankelijk is (in tegenstelling tot bijvoorbeeld een harde schijf waarbij gewacht moet worden tot de betreffende plek onder de leeskop doordraait). Daarnaast kan RAM-geheugen zowel gelezen als geschreven worden. De eerste elektronische computers hadden soms naast de relais en buizenschakelingen een zogenaamd trommelgeheugen, bestaande uit een grote trommel bedekt met een magnetiseerbare laag die ongeveer 100 keer per seconde ronddraaide en die op enkele tientallen regels een honderdtal woorden had staan. Elke regel werd afgelezen door een eigen leeskop. Op een trommelgeheugen kwam elke geheugenplaats dus ongeveer elke 10 milliseconde een keer langs, en kon dan gelezen of geschreven worden. Maar dit was dus geen RAM. Na het trommelgeheugen kwam het werkgeheugen in de vorm van magnetiseerbare ringetjes (ringkern geheugen). Dit was wel RAM. Gedurende de jaren 70 van de 20e eeuw kwamen geïntegreerde geheugenschakelingen op de markt. In 1974 dacht men nog dat het nooit mogelijk zou zijn om meer dan 8kB op één chip te maken (de chip brandt zichzelf binnen enkele minuten kapot), in 2003 zijn er chips op de markt die elk een GB kunnen bevatten. (1 GB = 1024 MB = kb = bytes = bits) Inmiddels worden kleinere 8MB chips "gestackt" op 1 grote chip. Ze worden dan als het ware op elkaar geplakt. Hierdoor kunnen er wel 32 of zelfs 64 chips in 1 chip-package zitten. Het werkgeheugen van de moderne computer bestaat uit twee soorten RAM: DRAM (dynamische RAM), en het nog snellere maar duurdere SRAM (statische RAM). Een bit in dynamisch RAM bestaat effectief uit een kleine condensator dat een aantal keren per seconde opnieuw moet worden gevuld om de inhoud niet kwijt te raken. Voor elke geheugencel is maar één transistor nodig om die ene nul of één te bewaren. Hoofdstuk 12 Geheugens - 3 -

254 Elk bit in statisch RAM bestaat uit een transistorschakeling die zijn staat zelfstandig onthoudt zolang er een voedingsspanning is. De transistorschakeling die een nul of één kan onthouden heet een flipflop, en daar zijn twee transistors voor nodig. In tegenstelling tot ROM is RAM niet alleen zeer snel te lezen maar ook te schrijven (in ongeveer enkele nanoseconden) Statische RAM Deze IC's bestaan uit FF's. opgebouwd uit vier transistoren. De geheugeninhoud blijft bewaard zolang de voedingsspanning behouden blijft. Dit nadeel kan men opvangen door het geheugen van een batterijvoeding te voorzien. Daar NMOS IC's te veel stroom vergen zal men steeds meer en meer CMOS geheugens gebruiken. Dit omdat CMOS geheugens hun informatie kunnen bewaren bij verlaagde spanning en de benodigde stroom bestaat uit een kleine lekstroom. CMOS IC's zijn heden even snel als NMOS geheugens vandaar dat deze laatste van de markt verdwijnen. Dit maakt dat de moderne computers nog enkel CMOS statische RAM's gebruiken K4-RAM type 2114 in het IEC symbool. Figuur 1 1K4-RAM 2114 De S.RAM 2114 bevat: 10 Adresingangen (2 10 = 1024), genummerd van A0 tot en met A9 voor de adressen 0 tot en met 3FFH. Een /CS-ingang of de chipselect ingang. Deze ingang wordt gebruikt om de chip te selecteren. Hoofdstuk 12 Geheugens - 4 -

255 Een WE ingang of de lees/schrijfingang. Vier I/O lijnen. Die aanduiding leert ons dat de data in- en uitgelezen wordt via dezelfde lijnen. Deze lijnen zijn dus bidirectioneel. Dat de uitgangen "3- status uitgangen" zijn, zien we aan de omgekeerde driehoek en het cijfer 3. De data wordt in de RAM ingelezen als /CS = 0 en WE = 0 zijn. Dit zien we in het symbool door de polariteitindicatoren en de aanduiding "write". Het uitlezen van de data gebeurt door de chip te activeren /CS = 0 en de lees/schrijfingang hoog te maken (WE = 1). Om de uitgangen in HI. toestand te brengen volstaat het /CS hoog te maken. Dergelijk geheugen kan gebruikt worden als datageheugen van een microprocessorsysteem. Tabel 1 geeft het verband weer tussen de geheugencapaciteit, het aantal bits, het aantal adreslijnen en het eindadres in hex.-decimale notatie. Tabel 1 het verband tussen geheugencapaciteit, aantal bits, aantal adreslijnen Figuur 2 Een samengesteld geheugen SRAM van 64K8 Hoofdstuk 12 Geheugens - 5 -

256 12.3 Dynamic Random Access Memory Dynamic random access memory, kortweg DRAM, is een type RAM waarbij iedere bit in een eigen condensator wordt opgeslagen. De opgeslagen lading lekt snel weg en moet daarom periodiek worden ververst. Vanwege dit herladen wordt het dynamische RAM genoemd, in tegenstelling tot SRAM. Het voordeel ten opzichte van SRAM is, dat er weinig componenten per bit nodig zijn: één transistor en condensator per bit, vergeleken met zes transistors in SRAM. Hierdoor kan met DRAM een hogere integratiedichtheid behaald worden. DRAM verliest de gegevens als de voedingsspanning wegvalt en is daarom een vluchtig geheugen Dynamische RAM In dynamische RAM's heeft men het aantal transistoren per bit kunnen beperken tot 1. Vandaar dat er in een Dynamische RAM chip 4 X meer bits zitten dan in statische RAM. Een geheugenbit in dynamische RAM bestaat uit een condensator. Een opgeladen condensator komt overeen met een "1". Een ontladen condensator komt overeen met een "0". Deze condensatoren lekken echter leeg zodat men om de 2 ms de informatie terug moet schrijven in de dynamische RAM. Op de chip is er echter extra hardware voorzien om dit herinschrijven te vergemakkelijken. Zo volstaat het bij de meeste dynamische RAM's om 128 opéénvolgende adressen aan te bieden om alle bits uitgelezen en heringeschreven te hebben. Dit herinschrijven noemt men de refresh. De refresh kan op verschillende manieren gebeuren: - Ofwel zorgt de microprocessorhardware ervoor. - Ofwel zorgt een CRT controller ervoor. - Ofwel zal men er een refreshcontroller bijbouwen welke de microprocessor om de 2 ms even laten stoppen en de 128 opéénvolgende adressen aanbiedt aan de geheugens, en waarna de microprocessor verder kan werken. Dynamische RAM gebruikt men voor grotere geheugens. Omdat grote geheugens nogal veel adreslijnen hebben zal men het adres in twee delen aanbieden. Hierdoor reduceert men het aantal pinnen tot 16 voor een 256 K X 1 bit geheugen. Hoofdstuk 12 Geheugens - 6 -

257 De dynamische RAM 4116 Figuur 3 Dynamische RAM 4116 De 4116 is een dynamische RAM die woorden bevat van 1 bit. In het symbolenschema (IEC) zien we dat er 7 adresingangen beschikbaar zijn. Nochtans verwachten wij hier 14 ingangen gezien 2 14 = In de 4116 wordt hiervoor als volgt tewerk gegaan: Eerst moeten de rijadressen aangesloten worden aan de ingangen; door het /RAS-signaal (Row Address Strobe) 0 te maken wordt de rij adresinformatie in de chip opgenomen en bewaard in een register. Daarna is een gelijkaardige bewerking nodig voor de kolom adresinformatie met de /CAS-ingang (Colom Adress Strobe). De adresinformatie moet echter stabiel aanwezig zijn vóór de 1-0 overgang (dalende flank) van het /RAS of /CAS-signaal. In het IC zijn alle in-en uitgangen TTL compatible. De uitgang kan in een HI toestand geschakeld worden teneinde uitbreiding mogelijk te maken. (verhogen van de geheugencapaciteit) Via de tijdsdiagrammen in datasheets kunnen de lees- en schrijf cyclus beken worden. Hoofdstuk 12 Geheugens - 7 -

258 Single Inline Memory Module Figuur 4 Single Inline Memory Module Single Inline Memory Module (SIMM) zijn RAM-modules die het eigenlijke werkgeheugen van een computer vormen. SIMM is een verouderde variant van het huidige DIMM-systeem, ze worden anno 2005 nauwelijks meer verkocht. SIMM-modules gebruiken contactpunten aan 1 kant van de module. Hierdoor is het aantal contactpunten op een SIMM-kaart lager dan het aantal op een DIMM-kaart. Er bestaan 2 varianten, een 3.5 inch formaat met 30 contactvlakjes, en een 4.25 inch formaat met 72 contactvlakjes. De 30 pin-variant kan 8-bit dataverkeer aan. Met een breedte van de geheugenbus van 32-bits zijn daarom altijd modules in veelvouden van 4 nodig. De variant met 72 pinnen kan 32-bit dataverkeer aan, waardoor slechts 1 kaart nodig is voor het zelfde effect. Systemen met een geheugenbusbreedte van 64-bits zouden veelvouden van 8 respectievelijk 2 modules nodig hebben, ware het niet dat dergelijke systemen meestal alleen geschikt zijn voor de modernere DIMM modules. Figuur 5 SIMM block diagram Hoofdstuk 12 Geheugens - 8 -

259 Dual Inline Memory Module Figuur 6 Dual Inline Memory Module Dual Inline Memory Modules (DIMM) zijn RAM-modules die het eigenlijke werkgeheugen van een computer vormen. DIMM's zijn de modernere versies van het verouderende SIMM-systeem. Ze heten "Dual" omdat ze in tegenstelling tot SIMM's aan beide kanten van het 'reepje' een printplaat en aansluitcontactpunten hebben zitten. DIMM's zijn verkrijgbaar in verschillende versies, o.a. 5 volt en 3 volt, gebufferd of ongebufferd, SDR SDRAM (168 aansluitingen) of DDR SDRAM (184 aansluitingen). SDR staat voor Single Data Rate en DDR staat voor Dual Data Rate en slaat op het aantal bits dat het geheugen per kloktik kan verwerken. SDRAM staat voor Synchronous Dynamic RAM. De oorspronkelijke SDR versie werden verkocht in de varianten PC66. PC100 en PC133, waar het getal de doorvoersnelheid van de geheugenbus in MHz aangeeft. Bij de modernere varianten wordt de doorvoersnelheid in (Mega)bytes per seconde weergegeven, omdat de modules per keer 32 bits = 4 bytes kunnen transporteren zijn deze getallen een stuk hoger, bijvoorbeeld PC2100, PC2700 of PC3200 voor resp. een 533, 677 of 800 Mhz bus. De meeste recente AMD en Pentium gebaseerde PC's gebruiken ofwel SDR SDRAM in de goedkopere versies of DDR SDRAM in de high-end modellen, beide op 3,3 volt. Deze laatsten hebben een doorvoersnelheid die twee keer zo hoog ligt als die van SDR SDRAM (vandaar de benaming DDR: Dual Data Rate). Hoofdstuk 12 Geheugens - 9 -

260 12.4 ROM ROM staat voor Read Only Memory. (Eng. 'Alleen leesbaar geheugen') ROM-geheugen wordt gebruikt overal waar een apparaat ook wanneer het uitstaat een programma moet bewaren (normaal RAM-geheugen verliest zijn inhoud wanneer er geen spanning meer is), of wanneer het nooit of slechts zelden nodig is om het programma te wijzigen. ROM is, in tegenstelling tot wat sommige mensen denken, zeker niet sneller dan RAM; daarom werd op oude pc's het ROM door de computer snel in RAM gekopieerd alvorens het te gebruiken. Dit proces heette ROM shadowing. Het ROM-geheugen is relatief traag, en kan na 2003 niet erg veel kleiner, goedkoper en sneller meer worden (het zou zijn inhoud langzaam verliezen als het nog kleiner gemaakt wordt). De naam ROM wordt veelal exclusief voor het masker-rom gebruikt. Bij deze oervorm wordt de data tijdens het fabricageproces in de chip aangebracht. Dit gebeurt door delen van de chip selectief weg te laten Programmable Read Only Memory Programmable Read Only Memory (PROM), ofwel programmeerbaar alleen lezen geheugen, is een vervolgontwikkeling op het ROM-geheugen. Het bood het voordeel van elektrische programmering. Verder heeft het dezelfde eigenschappen als een ROM: de geheugeninhoud blijft bewaard ook wanneer het een apparaat uitstaat. De beperking van eenmalige programmering leidde ertoe dat wisbare geheugens werden ontwikkeld Erasable Programmable Read Only Memory Figuur 7 IC EPROM 2716 Hoofdstuk 12 Geheugens

261 Een Erasable Programmable Read Only Memory (EPROM), ofwel wisbaar, programmeerbaar, alleen lezen geheugen, is een geïntegreerde schakeling. EPROMs worden in allerlei apparaten toegepast waarin gegevens opgeslagen moeten blijven als het apparaat uitstaat, maar die niet veranderen tijdens normaal gebruik (bijvoorbeeld het BIOS, en elk apparaat waarin een processor gebruikt wordt, zoals een chipkaart). De gegevens in een EPROM kunnen weer worden gewist door de chip, die achter een stukje glas in de behuizing zichtbaar is, enige tijd (een paar minuten) aan UV licht van een ultraviolet lamp bloot te stellen. Hiervoor is speciale laboratoriumapparatuur nodig. Vervolgens kunnen in een speciaal apparaat nieuwe gegevens in het geheugen worden geschreven. Dit wis- en schrijfproces kan, afhankelijk van de kwaliteit van de EPROM, een aantal keren worden herhaald. In plaats van de EPROM wordt sinds 1995 steeds vaker een EEPROM en sinds 2000 het Flashgeheugen gebruikt Electrically Erasable Programmable Read Only Memory Electrically Erasable Programmable Read Only Memory (EEPROM), ofwel elektrisch wisbaar, programmeerbaar alleen lezen geheugen, kan met behulp van een elektrische spanning gewist worden. Oudere typen EEPROM hadden vaak minstens 12 volt nodig, maar moderne typen EEPROM laten zich vaak al bij 5 of zelfs 3V wissen. Het grote voordeel van dit type geheugen is dat het gewist en opnieuw beschreven kan worden terwijl het is ingebouwd in elektrische apparatuur. Meestal kan dit proces zo'n tot maal herhaald worden, duurdere varianten halen zelfs de maal. De naam "EEPROM" wordt vooral gebruikt voor kleinere geheugens die de inhoud kunnen wijzigen zonder eerst een gedeelte te hoeven wissen (alleen het gewijzigde deel wordt automatisch eerst gewist). Omdat de herschrijfbaarheid beperkt is (in tegenstelling tot statisch of dynamisch RAM-geheugen, zoals in PC's te vinden is), wordt bij de meeste toepassingen het geheugen in blokken opgedeeld. Een speciale controller houdt bij welke blokken het vaakst gebruikt zijn en verdeelt zo de te beschrijven data gelijkmatig over het beschikbare geheugen. Omdat elke schrijfactiviteit gepaard gaat met het wissen van een blok (een sector) is het schrijven van EEPROM geheugen vaak een langzaam proces. De leesprestaties zijn daarentegen veelal uitstekend. Door massaproductie is EEPROM geheugen tegenwoordig zo goedkoop geworden dat het nagenoeg alle andere vormen van ROM-geheugen verdrongen heeft. Hoofdstuk 12 Geheugens

262 12.8 Flashgeheugen Figuur 8 Flashmodule, geïntegreerd op een PCB-bord (onderaan) Onder flashgeheugen ("Geheugenkaart") verstaat men een niet-vluchtige vorm van elektronische dataopslag op basis van de EEPROM techniek. Deze techniek maakt het mogelijk om d.m.v. één programmeeractie op verschillende plekken in het geheugen te schrijven of te wissen. Flashgeheugen is 'persistent' geheugen: het behoudt de data als de spanning wordt afgezet. De naam "FLASH" is ontstaan, omdat dit type EEPROM in één keer (in een flits) volledig of gedeeltelijk gewist kan worden, om er vervolgens iets anders in te schrijven. Er zijn twee types flashgeheugen: NOR- en NAND flash, gebaseerd op de schakelingen die worden gebruikt om een data item op te slaan. Flashgeheugen wordt onder andere gebruikt als BIOS-ROM in pc's, in MP3- spelers en USB sleutels. Het wordt ook gebruikt in geheugenkaarten voor digitale camera's, mobiele telefoons en PDA's. Flashgeheugen wordt veel gebruikt om ingebedde systemen te booten en om configuratiedata op te slaan in plaats van op een gewone harde schijf zoals in een pc. Om een aantal redenen wordt vaak schrijftoegang tot het bestandssysteem op de flash genegeerd; tenzij voor upgrades van dergelijke systemen. Door een ontbreken van mechanische onderdelen (zoals die aanwezig zijn in een harde schijf), is flashgeheugen ook robuuster en daardoor te prefereren bij ontwerpen die niet vast gemonteerd zijn. Een van de grote nadelen van flashgeheugen is dat de schrijftoegang zeer traag is. Alvorens een dataonderdeel gewijzigd kan worden, moet een volledige sector gewist worden (alle bits worden op '1' gezet), waarna de nodige bits op '0' gezet worden. Een typische grootte van een flashchip is 64 kb: om een byte te wijzigen (bijv. een karakter), moeten er meer dan bytes worden gewist en herschreven. Hoofdstuk 12 Geheugens

263 Door de robuuste uitvoering is flashgeheugen bestand tegen water, stoten, ontploffingen en ander onheil. Typen flash geheugenkaarten: Secure Digital (SD) CompactFlash SmartMedia Multi Media Card Reduced Size MMC Mini Secure Digital Micro Secure Digital xd-picture Cards. Een USB sleutel gebruikt dezelfde technologie maar is een apparaat op zich, het is geen geheugenkaart Embedded memory in Altera FPGA s Ondersteunende toepassingen zoals digitaal signaalverwerking (DSP), elektronische gegevensverwerking, en de functies van de systeemcontrole, biedt het embedded geheugen dat in FPGA s van vandaag wordt gebruikt hoge geheugenbandbreedte aan, ze zijn veelzijdig en kunnen een verscheidenheid van geheugenfuncties uitvoeren, zoals: Directe toegang (RAM) ROM First-in, first-out (FIFO) Dual port memory Schuifregisters De TriMatrix geheugenarchitectuur is een nieuwe evolutie in embedded memorys in FPGAs van Altera. Het geheugen wordt samengesteld van drie verschillende geheugenstructuren die een grote verscheidenheid van geheugenfuncties kunnen uitvoeren en in complexe ontwerpen worden gebruikt. Men gebruikt de kleinere M512 blokken als FIFO registers. Voor (IP) intellectual property gebruikt men de M4K memorys. Figuur 9 Embedde memory in Altera FPGA s Hoofdstuk 12 Geheugens

264 12.10 Het niet vluchtig geheugen in FPGA s van Lattice De meeste FPGA s beschikken niet over de mogelijkheid om hun applicatie te behouden als de spanning is weggevallen. Dus bij het opzetten van de voedingsspanning moet het systeem eerst worden opgestart (external boot), en dit kost tijd. Bij non-volatiele FPGA oplossingen blijft de applicatie in FLASH memory zitten. Figuur 10 non-volatile FPGA oplossingen De LatticeXP FPA familie combineert SRAM en FLASH in één component. FLASH & SRAM kunnen worden geconfigureerd met behulp van een JTAGpoort of een sysconfig-poort. In user mode kan het SRAM geheugen worden geconfigureerd vanuit FLASH met behulp van één commando of door een input pin te triggeren. Dit wordt Real Time Reprogramming genoemd. Figuur 11 Real Time Reprogramming Non-volatiele FPGA oplossingen bieden de mogelijkheid om applicaties onmiddellijk te laten starten van zodra de voedingsspanning wordt opgezet. Met heeft dus geen Boot PROM meer nodig. Figuur 12 Boot PROM Hoofdstuk 12 Geheugens

265 Bij de meeste programmeerbare componenten kan het bootproces worden uitgelezen wat leid tot security problemen. Bij non volatiele FPGA oplossingen is dit security probleem opgelost omdat het bootproces inwendig in de FPGA gebeurt. Figuur 13 Security in FPGA s Oefeningen Oefening 1 Hoeveel adreslijnen heeft een geheugen van 1MB? Wat is het verschil tussen een statische en een dynamisch geheugen wat de opbouw betreft? Wat is het verschil tussen een statische en een dynamisch geheugen wat de read- en de write cyclus betreft? Hoe kan je met 4 geheugenblokken van 1MB een geheugen realiseren van 8MB? Welke component heb je extra nodig en geef dit weer is een blokschema. Geef tevens een beschrijving in VHDL. Oefening 2 Teken een blokschema van een microcomputersysteem en benoem de fundamentele delen. Integreer in het blokschema tevens een adresdecoderingsysteem dat de 64 geheugenmap opdeelt in vier stukken van 16K. Om te beginnen teken eerst de geheugenmap van 64K. Oefening 3 Ontwerp een adresdecoderingsysteem dat de 64K geheugenmap opdeelt in 8 gelijke memoryblokken van 8K. - Het RAM-gedeelte zit vanaf adres $ De PIA zit vanaf f adres $A De ACIA zit vanaf adres $B Viermaal 4K EPROM zit vanaf adres $C000. Om te beginnen teken eerst de geheugenmap van 64K. Geef tevens een beschrijving in VHDL. Hoofdstuk 12 Geheugens

266 Oefening 4 Ontwerp een adresdecoderingsysteem voor een 16K memoryblok, bestaande uit 8 memory's van 2K. De adresdecodering moet ervoor zorgen dat de memoryblok van 16K begint vanaf adres $8000. Het I/O-gedeelte volgt direct achter het 16K memoryblok, en er moet 8K EPROM voorzien zijn vanaf adres $E000. Integreer dit adresdecoderingsysteem in een blokschema van een microcomputersysteem. Om te beginnen teken eerst de geheugenmap van 64K. Geef tevens een beschrijving in VHDL. Oefening 5 Ontwerp een adresdecoderingsysteem dat een blok van 20K bestaande uit 5 memory's van 4K begint vanaf adres $7000. Integreer dit adresdecoderingsysteem in een blokschema van een microcomputersysteem. Om te beginnen teken eerst de geheugenmap van 64K. Geef tevens een beschrijving in VHDL. Oefening 6 Ontwerp een adresdecoderingsysteem met de voor 8 memory's van 4K. Het geheugenblok van 32K moet beginnen op adres $8000. Om te beginnen teken eerst de geheugenmap van 64K. Geef tevens een beschrijving in VHDL. Oefening 7 Verklaar de werking van onderstaand adresdecoderingsysteem. Figuur 14 Voorbeeld van flexibele adresdecodering. Hoofdstuk 12 Geheugens

267 13. Hoofdstuk 13 Toepassingen in de markt Programmeerbare systemen in de automobielsector Programmeerbare systemen in de verbruikers elektronica Hoofdstuk 13 Toepassingen in de markt 13.1 Programmeerbare systemen in de automobielsector Figuur 1 Programmeerbare systemen in de automobielsector In de automobielsector zijn programmeerbare systemen niet meer weg te denken. De auto is geëvolueerd tot een mini-intelligente omgeving. In elke auto zijn 20 tot 80 microprocessoren aanwezig voor functies als ABS, automatische lichtcontrole bij duisternis, airbag en automatische ruitenwissers. De auto s van de toekomst zijn in staat om zogenaamde contextuele informatie te verschaffen, bv. de dichtstbijzijnde vrije parkeerplaats, restaurant of geldautomaat aangeven, historische of geologische uitleg geven over het gebied waar je doorrijdt, enz. Door communicatie tussen de auto en de parkeerautomaat of het tolsysteem kan er automatisch betaald worden. Verkeerslichten worden bijgeregeld wanneer een ziekenwagen vlakbij is. Zullen we onze auto s laten updaten via het internet? Het belang van elektronica en software in auto s neemt snel toe. Intussen komt al meer dan 90% of zelfs 95% van de innovaties binnen automotive van uit de elektronica. Ruim de helft van de R&D-kosten en gemiddeld de helft van de storingen zit in de elektronica. Het imago van sommige belangrijke autobouwers staat echt op het spel. Ter illustratie, een marktanalist Arthur D. Little voorspelt dat de productiekosten van een auto over vijf jaar voor 35 % uit elektronica (22 %) en software (13%) bestaan. Van de softwarekosten gaat de helft in infontainmentsystemen zitten en bijna een derde in motormanagement en de versnellingsbak. De toegevoegde waarde zal vrijwel geheel uit software komen. Bij elkaar zullen bits in 2010 voor 75% het onderscheidend vermogen van een auto bepalen. Verschillende automerken zullen voor een groot deel dezelfde onderdelen hebben, maar vanwege de software rijden Hoofdstuk 13 Toepassingen in de markt - 1 -

268 ze toch anders. Oversturen of ondersturen, dat soort dingen regel je straks allemaal met software. Auto s hoeven niet meer voor nieuwe olie, maar voor nieuwe software naar de garage. Motorregelingen zijn allemaal elektronisch. Software-updates kunnen straks over het internet. Figuur 2 Engine Control Unit van een auto Automotieve elektronica, een nieuwe opleiding? Het is voorlopig onvoorspelbaar wat er tussen elektronica, informatica en werktuigbouwkunde allemaal speelt, maar we hopen van harte dat ze tot een gezamenlijke automotive-portfolio kunnen komen, want de wereld beperkt zich niet meer tot één dicipline. In de toekomst zullen studenten werktuigkundige niet alleen leren hoe een verbrandingsmotor werkt, maar de automotive elektronica (programmeerbaar systemen) zal een heel belangrijk onderdeel kunnen worden in hun vakdomein. Hoofdstuk 13 Toepassingen in de markt - 2 -

269 13.2 Programmeerbare systemen in de verbruikers elektronica Momenteel zijn er op de markt tal van toepassingen terug te vinden waarbij programmeerbare componenten worden gebruikt. Bv: DVD spelers, digitale camera s, digitale camcorders, MP3 spelers, Smart Card readers, enz. Onderstaande blokschema s laten een aantal toepassingen zien waar programmeerbare componenten worden gebruikt. Toepassingen waar de MACHXO worden gebruikt: Figuur 3 digitale camcorder Figuur 4 MP3 spelers Hoofdstuk 13 Toepassingen in de markt - 3 -

270 Figuur 5 Smart Card reader Besluit: Toepassingen in programmeerbare systemen zijn veelzijdig. Steeds verschijnen er nieuwe toestellen op de markt met verschillende technologieën. Deze nieuwe technologieën moeten op elkaar afgestemd zijn om een goed product te kunnen afleveren. Tot slot is er voor elektronici en ICT-opgeleide mensen nog veel toekomst weggelegd in verschillende sectoren van de markt. Moge dit boek technici motiveren om steeds opnieuw de technologische evolutie verder te blijven opvolgen. zomer 2006 Hoofdstuk 13 Toepassingen in de markt - 4 -

271 14. Appendix A Korte beschrijving van VHDL De elektronische invalshoek: De logische invalshoek: Appendix A 14.1 Korte beschrijving van VHDL VHDL staat voor VHSIC Hardware Description Language. Het is een programmeertaal waarmee digitale geïntegreerde schakelingen en programmeerbare logica in FPGAs kunnen worden beschreven en gemodelleerd. Vaak wordt de beschrijving ingevoerd in IDE software, zodat naderhand het model van de digitale schakeling gesimuleerd en getest kan worden. Daarna kan overgaan worden naar de daadwerkelijke fysische realisatie van het ontwerp, of in het geval van FPGAs, wordt het ontwerp gecompileerd. Oorspronkelijk is de programmeertaal ontworpen door het ministerie van defensie (Department of Defense) van het Amerikaanse leger, maar is inmiddels uitgegroeid tot een algemeen aanvaarde beschrijving van digitale schakelingen. Verilog is een andere veelgebruikte 'hardware description language' (HDL). De IEEE is de organisatie die standaardisatie van VHDL tot stand brengt (IEEE 1076). Uitgaande van deze VHDL-beschrijving kan een hardwareontwerp gemaakt worden. De taal wordt gebruikt als beschrijving van elektronische chips. VHDL bestaat reeds langer dan de FPGA. Toen de FPGA's verschenen, is het gebruik van VHDL in een stroomversnelling gekomen, omdat de ontwerpcyclus vanaf de beschrijving tot aan de realisatie van een elektronisch circuit enkele grootte-orden sneller geworden is. Bij de beschrijving van een elektronisch circuit met VHDL moet met drie invalshoeken rekening worden gehouden: Omdat VHDL een elektronisch circuit beschrijft dat nadien moet worden gerealiseerd, moet er rekening worden gehouden met de elementaire hardware-aspecten van het te ontwerpen schema De elektronische invalshoek: Een FPGA's maakt contact met de buitenwereld via zijn pinnetjes, in VHDL poorten genoemd. Bij ontwerpbordjes zijn vele van deze pinnetjes verbonden met hardware op de kaart. Voorbeelden zijn: de klok, knopjes, schakelaars, een input/output connector. Op deze manier zijn deze randtoestellen beschikbaar voor de schakelingen binnen de FPGA. Beschikbaar wil zeggen dat zij niet zijn opgenomen in de schakeling. Om ze op te nemen moet een expliciete verbinding gemaakt worden met de pinnetjes op de rand van de Appendix A - 1 -

272 FPGA. Op een typische FPGA zoals de Spartan 2 van Xilinx zijn er meer dan 200 pinnetjes (208 in de PQ208-behuizing, waarvan 140 I/O pinnetjes). Het is essentieel de lijst van verbindingen naar deze hardware te kennen. Deze staat in de handleiding van het bordje, en is typisch terug te vinden in een bestand De logische invalshoek: De programmeertaal VHDL laat toe individuele elektronische componenten te beschrijven, en deze hiërarchisch te verbinden. In die zin is VHDL vergelijkbaar met een gestructureerde programmeertaal, waarin het hoofdprogramma de globale schakeling voorstelt en de functies te beschrijving geven van de componenten. Een elektronische component is een entiteit met de volgende eigenschappen: Input - output poorten, dit zijn de pinnetjes waarmee de component verbonden wordt met zijn omgeving. Inwendige signalen, dit zijn de draden waarop logische elektrische signalen lopen. Een architectuur, dit is de functionele beschrijving van component. Uitgaande van deze beschrijving wordt hardware gevormd die uit de input signalen de output signalen genereert. De ontwerper kan gebruik maken van drie elementen: Elementaire operaties die binnen VHDL bekend zijn, zoals bitoperaties, logische functies, enzovoort. Bibliotheekfuncties die aangeboden worden door de constructeur. Sommige van deze componenten worden ook IPR (intellectual property rights) componenten genoemd. Dit gebeurt voornamelijk voor complexe schakelingen zoals een software processor (bv. MicroBlaze). Zelfgemaakte componenten, die in een VHDL file staan, of in een bibliotheek. Appendix A - 2 -

273 15. Appendix B Beknopte VHDL referentie VHDL basis Geldige namen Commentaar Entity & Architecture Poorten (ports) Signalen & variabelen Type STD_Logic Opgesomd type (enumerated type) Libraries & Packages Gezamenlijke structuren Een toekenning van een signaal Toekenning van geselecteerd signaal Conditie afhankelijke signalen Componenten Declaratie van een component Concretisering van een component Generische clausule Generate Statement Proces Statement Sequentiële beschrijving IF structuur Beschrijving van functies met behulp van een klok Case structuur Appendix B - 1 -

274 15. Appendix B Beknopte VHDL referentie 15.1 VHDL basis Namen Commentaar Entity & Architecture Ports Signalen & variabelen Type std_logic Opgesomd type (enumerated) Libraries & Packages Geldige namen Een geldige naam in VHDL bestaat uit een letter gevolgd door een getal of letters zondes spaties. VHDL is niet hoofdletter gevoelig (case sensitive). Een liggend streepje kan gebruikt worden in een naam, maar een naam mag niet beginnen of eindigen met een liggend streepje. Twee liggende streepjes na elkaar kunnen niet gebruikt worden. Voorbeeld geldige namen decode4 just_in_time What_4 ongeldige namen 4decode (begint met een getal) in time (twee liggende streepjes) _What_4 (begin liggende streepje) My design (spatie) Your_words? (speciaal karakter?) Commentaar Commentaar is verklarende tekst van het vhdl-bestand. Het begint met twee streepjes. Voorbeeld -- dit is commentaar Appendix B - 2 -

275 Entity & Architecture Elk vhld-bestand bestaat uit een entity en een architecture. De naam van een vhdl-bestand is dezelfde als de naam van de entity. In de entity staat de beschrijving van de in- en uitgangen. In de architecture body staat de hardwarematige beschrijving van de in- en uitgangen. Syntax: voorbeeld Appendix B - 3 -

276 Poorten (ports) Een poort is een verbinding in het vhdl-ontwerp tussen de entity en de buitenwereld. De mode vertelt in welke richting een port functioneert. Een port kan in vier verschillende mode s functioneren: in (enkel input), out (enkel output), inout (in twee richtingen bidirectioneel ) buffer (de uitgang wordt teruggekoppeld in het ontwerp) De mode van een port wordt beschreven in het statement port, of in de beschrijving van de entity, of in de beschrijving van de component. voorbeeld Signalen & variabelen Een signaal is als een interne verbinding van twee of meerdere punten binnen de architecture body. Een signaal wordt voor het begin statement van een architecture body gezet en behoord tot de globale architectuur van het ontwerp. De waarde van aan een signaal wordt met de <= operator toegekend. Een variabele is een stukje lokaal geheugen toegekend voor de specifiek proces. Een variabele wordt gedeclareerd voor het Begin statement van een proces. De waarde van een signaal wordt met de := operator toegekend. In digitale systemen is een proces meestal een sequentieel systeem bestaande uit een verzameling van flipflops. Voorbeeld Appendix B - 4 -

277 Type Het type van een poort, signaal, of variabele geeft aan welke waardes er kunnen gebruikt worden. Bijvoorbeeld een signaal van het type bit kan alleen de waarde 0 en 1 toegekend krijgen. Een signaal van het type integer kan om het even welke waarde zijn, de waarde wordt gelimiteerd naar computersysteem en VHDL compiler. Type Values How written BIT 0, 1 Single quotes STD_LOGIC U, X, 0, 1, Z, W, Single quotes (see Section 1.6.1) L, H, - INTEGER Integer values No quotes BIT_VECTOR Multiple instances of 0 and 1 Double quotes ( ) STD_LOGIC_VECTOR Multiple instances of U, X, Double quotes ( 11ZZ00 ) 0, 1, Z, W, L, H, STD_Logic Het STD_Logic (standard logic) type, ook genoemd IEEE Std Multi-Valued Logic, geeft een range van verschillende output waardes meer dan alleen maar 0 en 1. Elke poort, signaal, of variabele van het type STD_LOGIC of STD_LOGIC_VECTOR kan onderstaande waarden bevatten. U, Uninitialized X, Forcing Unknown 0, Forcing 0 1, Forcing 1 Z, High Impedance W, Weak Unknown L, Weak 0 H, Weak 1 -, Don t care De "dwingende" niveaus worden geacht om het equivalent van een output aan te nemen. De "zwakke" niveaus zijn gespecificeerd door een pull-up of pull-down weerstand. De Z ' wordt gebruikt als hoog-impedante tristate buffer. De meerderheid van toepassingen kan door X ', ` 0 ', 1 ', en Z waarden worden behandeld. Om STD_LOGIC in een VHDL- ontwerp te gebruiken, moet u de volgende verwijzing gebruiken: De bibliotheek VHDL roept IEEE en het pakket std_logic_1164 aan voor de beschrijving van de entity. LIBRARY ieee; USE ieee.std_logic_1164.all; Appendix B - 5 -

278 Opgesomd type (enumerated type) Een opgesomd type is een door de gebruiker gedefinieerd type dat alle mogelijke waarden kan bevatten voor een poort, een signaal, of een variabele. Voorbeeld Libraries & Packages Een bibliotheek (library) is een verzameling van reeds eerder gecompileerde VHDL beschrijvingen die kunnen gebruikt worden in een entiteit. (entity) Een package is een ongecompileerde verzameling van VHDL beschrijvingen die kunnen gebruikt worden in verschillende entiteiten. (entitys) De naam van een library moet reeds in het begin van een VHDL-file voor de beschrijving van de entiteit worden gedeclareerd. De meest gebruikte library is de library ieee, welke in de package std_logic_1164 zit vervat, en definieert de STD_LOGIC (sandaard logic) type. Syntax LIBRARY library_name; USE library_name._package_name.all; Voorbeeld Appendix B - 6 -

279 15.2 Gezamenlijke structuren Een toekenning van een signaal Toekenning van geselecteerd signaal Conditie afhankelijke signalen Componenten Declaratie van een component Concretisering van een component Generische clausule Generate statement Process statement Een gezamenlijke structuur in VHDL fungeert als een aparte component. Een wijziging in verschillende gezamenlijke structuren heeft effect op alle structuren tezelfdertijd. Hetzelfde doet zich voor bij signalen: Een signaal dat gebruikt wordt in verschillende componenten in een circuit fungeert in alle componenten tezelfdertijd Een toekenning van een signaal Een toekenning van een signaal aan een poort of een waarde van een signaal is van toepassing bij een Booleaanse vergelijking. Syntax: signal <= expression; Voorbeeld Toekenning van geselecteerd signaal Bij de toekenning van een geselecteerd signaal worden er verschillende alternatieve waarden gegeven aan een poort of een signaal. Het kan worden gebruikt bij de implementatie van een waarheidstabel bij een decoder of multiplexer. Syntax: Appendix B - 7 -

280 Voorbeeld 1 Voorbeeld Conditie afhankelijke signalen Bij conditie afhankelijke signalen wordt de waarde van een poort of een signaal toegekend afhankelijk van een conditie. Syntax: Appendix B - 8 -

281 voorbeeld conditie afhankelijke signalen Componenten Een VHDL file kan in een ander VHDL file gebruikt worden als een component. Men gebruikt onderstaande algemene structuur Declaratie van een component Een declaratie van een component gebeurt in principe op dezelfde wijze als de beschrijving van een entiteit (entity). Het verschil is dat een component verwijst naar een aparte VHDL file. De namen van poorten in een component moeten hetzelfde zijn als gebruikt in een bovenliggend ontwerp. Syntax: Appendix B - 9 -

282 voorbeeld Concretisering van een component Elke concretisering van een component vereist een component concretiserings-statement. Poorten worden expliciet toegekend met behulp van de => operator. Poorten worden impliciet toegekend met behulp van de overeenkomstige naam van de poort in de declaratie van de component zelf. Syntax: voorbeeld Appendix B

283 Generische clausule Een generische clausule geeft de mogelijkheid een component te concretiseren met één of meerdere niet gespecificeerde eigenschappen. De parameter wordt in de generische clausule gespecificeerd met de := operator. Syntax: Voorbeeld1 Appendix B

284 Voorbeeld Generate Statement Een generate statement wordt gebruikt om met meerder concretiseringen tot een bepaalde hardwarestructuur te komen. Het baseert zich op de waarde van één of meerdere indexvariabelen om het vereiste aantal herhalingen tot stand te brengen. Syntax: Voorbeeld Appendix B

285 Proces Statement Een proces is een gemeenschappelijke beschrijving, maar de beschrijvingen binnen het proces zijn sequentieel. Bijvoorbeeld, kan een proces een beschrijving zijn van een flipflop, een afzonderlijke component waarvan de poorten (i/o s) gelijktijdig worden beïnvloed, maar binnen het proces gedraagt de flipflop sequentieel. Een proces voert alle beschrijvingen van de signalen uit die zijn opgesomd in de afhankelijkheidslijst. (sensitivity-lijst) Het label van een proces is facultatief. Syntax: Voorbeeld: Appendix B

286 15.3 Sequentiële beschrijving IF structuur Beschrijving van functies met behulp van een klok Case structuur Een sequentiële beschrijving in VHDL wordt gebruikt om flipflops, latches, tellers en registers te beschrijven. Soms wordt in een sequentiële beschrijving ook een combinatorische schakeling beschreven wiens uitgangen afhankelijk zijn van de in- en uitgangen van de sequentiële schakeling zelf IF structuur Een IF structuur wordt gebruikt in één of meerder beschrijvingen. Syntax: Voorbeeld Beschrijving van functies met behulp van een klok Als impliciet in voorgaande voorbeelden de toestand van het systeem afhankelijk is van een kloksignaal dan wordt de attribuut genaamd EVENT toegevoegd. (klok EVENT AND klok= 1 ) De beschrijving klok EVENT AND klok= 1 komt overeen met een stijgende flank van het kloksignaal. Appendix B

287 Case structuur Een case structuur wordt gebruikt bij verschillende beschrijvingen die conditieafhankelijk zijn van een andere beschrijving of een signaal. Syntax: Voorbeeld: Appendix B

288 Appendix B

289 16. Appendix C Pinning van het ISP Starter Kit Device Pin Pin Definition MACH Inputs LED Comment 1 GND 2 I/O 0 U24-A 3 I/O 1 U24-B 4 I/O 2 U24-C 5 I/O 3 U24-D 6 I/O 4 U24-E 7 I/O 5 U24-F 8 I/O 6 U24-G 9 I/O 7 SW1 U24-H (DP) input only 10 TDI 11 CLK 0 / I 0 CK0 Clock Select with jumper 12 GND 13 TCK 14 I/O 8 U23-A 15 I/O 9 U23-B 16 I/O 10 U23-C 17 I/O 11 U23-D 18 I/O 12 U23-E 19 I/O 13 U23-F 20 I/O 14 U23-G 21 I/O 15 SW2 U23-H (DP) input only 22 VCC 23 GND 24 I/O 16 U26-A 25 I/O 17 U26-B 26 I/O 18 U26-C 27 I/O 19 U26-D 28 I/O 20 U26-E 29 I/O 21 U26-F 30 I/O 22 U26-G 31 I/O 23 SW3 U26-H (DP) input only 32 TMS 33 CLK 1/ I 1 CK1 Clock 4 Hz Clock signal 34 GND 35 TDO 36 I/O 24 U22-A 37 I/O 25 U22-B 38 I/O 26 U22-C 39 I/O 27 U22-D 40 I/O 28 U22-E 41 I/O 29 U22-F 42 I/O 30 U22-G 43 I/O 31 U22-H (DP) 44 VCC Appendix C - 1 -

290 isplever Starter Kit Appendix C - 2 -

291 17. Appendix D Parallel-JTAG-Interface Elektruur Halfgeleidergids Beschrijving Deze schakeling vormt een interface tussen de parallelle poort van een PC en een zogeheten JTAG-interface. Oorspronkelijk is een soortgelijke schakeling ontworpen door de firma Altera onder de naam Byteblaster. De hier beschreven versie is compatibel met de Byteblaster (elektrisch gezien is ze nagenoeg gelijk). Dit heeft het voordeel dat programma s die geschreven zijn om in combinatie met de Byteblaster gebruikt te worden, ook met deze interface overweg kunnen. De schakeling op zich is zeer eenvoudig. Connector K1 wordt verbonden met de parallelle poort van de PC, terwijl de signalen op D0, D1 en D6 via IC1 naar de JTAG-connector worden geleid. De uitgang van de JTAGconnector (TDO) wordt op zijn beurt via IC1 weer teruggevoerd naar de PC via het BUSY-signaal. Op pen 7 van de JTAG-connector is een extra uitgang voorzien. Dit signaal wordt via IC1 naar de SELECT-ingang van de parallelle poort geleid. Sommige schakelingen maken dit signaal actief als zij in de debug-mode staan. Dit is niet echt een vereiste, maar in sommige gevallen kan dit nuttig zijn (vooropgesteld dat de software deze optie ondersteunt). Indien gewenst kan men hiermee natuurlijk ook een andere status doorgeven aan de PC. IC1 wordt gestuurd door de AUTOFEEDuitgang (actief laag) van de parallelle poort. Zolang deze hoog is, zullen de uitgangen van IC1 in hoogohmige toestand zijn. Hierdoor koppelt men de interface los van de JTAG-connector, zodat de target-print niet belast wordt door de JTAG-interface. Alle overige signalen zijn niet specifiek bedoeld voor de JTAGinterface. Appendix D - 1 -

292 De functie van deze signalen zorgt er voor dat de software kan controleren of de interface inderdaad op de (juiste) parallelle poort is aangesloten. Voor dit doel staan twee mogelijkheden ter beschikking. 1. De eerste daarvan wordt gevormd door de rechtstreekse verbinding van D5 met de ACK-ingang (actief laag). 2. De tweede is de verbinding van D7 via IC1 met de P.END-ingang van de parallelle poort. Deze connectie bestaat alleen maar indien het signaal AUTOFEED (actief laag) actief is. Deze twee detectiemethoden zijn softwarematig zeer simpel uit te voeren, zonder dat een eventueel aangesloten printer hierop reageert door enkele pagina s met vreemde tekens te produceren, aangezien het STROBEsignaal (ook actief laag) niet gebruikt wordt Software Aangezien deze interface bedoeld is om chips te testen, debuggen en/of te programmeren, is de gebruikte software erg afhankelijk van de chips waarmee de schakeling verbonden wordt. Toch geven we een paar tips om snel aan de slag te kunnen met deze interface. Ten eerste kan er op de webpagina van Altera ( software gedownload worden om Alterachips te programmeren via de JTAG-interface. Ook valt hier een zogenaamde JAM-player te downloaden. Appendix D - 2 -

293 Naast de Windows-versie is er tevens een Linux-versie beschikbaar. De JAM-player is in feite een interpreter van een eigen programmeertaal, die speciaal gericht is op de JTAGinterface. Hiermee kan men op een eenvoudige manier met speciale commando s de JTAG-interface aansturen. Behalve deze JAM-player bestaan er ook conversie-programma s die verschillende soorten programmeerbestanden omzetten naar een JAM-bestand, zodat de JAM-player deze bestanden kan interpreteren en uitvoeren. Op het Internet zijn verschillende projecten te vinden van mensen die bezig zijn met het schrijven van software voor. de JTAG-interface. Omdat dit allemaal links naar gratis webpagina s betreft, is een opsomming hiervan binnen de kortste keren nutteloos, aangezien deze webpagina s de neiging hebben om regelmatig van server naar server te verhuizen. Een goede Internet-zoekpagina is in dit geval de beste manier om de geschikte software op de kop te tikken. Appendix D - 3 -

294 Appendix D - 4 -

295 18. Referenties 1. Digitaal Ontwerpen volgens de top-down aanpak van A.H. Geerts (Academic Service 2 de oplage 2003) 2. Fundamentals of Digital Logic with VHDL Design van Stpehen Brown & Zvonko Vranesic (McGraw-Hill 2005) 3. Rapid prototyping of digital systems van James O. Hamblen an Michael D. Furman (Kluwer Academic Publishers 2001) 4. Digital Design with CPLD Applications and VHDL van Robert K. Dueck 5. Advances Digital Systems Experiments and Concepts with CPLDs van Leo Chartrand (Thomson Delmar Learning) 6. In System Progammable van Andreas Heppner (Segment B.V.) 7. Elektuur januari 2002 & halfgeleidergids Digitale technieken van Patrick Colleman (Campnia Media 1999) 9. Digitale Systemen van Kris De Backer en Liesbeth Kenens (Campinia Media 2004) 10. MachXO Family Handbook (v.01.4) (Lattice) 11. isplever Starter Kit (Lattice) 12. University Program UP2 Education Kit (Altera) 13. Hardware Design Dipl.-Ing. Jens Kroeger Beratender Ingenieur für Datentechnik & Nachrichtentechnik & Hochfrequenztechnik Platinenlayout Prototypen Kleinserien EV-Boards (HWD- LCMXO640C) Referenties - 1 -

296

EE1410: Digitale Systemen BSc. EE, 1e jaar, 2011-2012, 2e werkcollege

EE1410: Digitale Systemen BSc. EE, 1e jaar, 2011-2012, 2e werkcollege EE4: igitale Systemen BSc. EE, e jaar, 2-22, 2e werkcollege Arjan van Genderen, Stephan Wong, Computer Engineering 5 t/m 22-3-22 elft University of Technology Challenge the future Voor je begint. ownload

Nadere informatie

b) Geef het schema van een minimale realisatie met uitsluitend NANDs en inverters voor uitgang D.

b) Geef het schema van een minimale realisatie met uitsluitend NANDs en inverters voor uitgang D. Basisbegrippen Digitale Techniek (213001) 9 november 3000, 13.30 17.00 uur 8 bladzijden met 10 opgaven Aanwijzingen bij het maken van het tentamen: 1. Beantwoord de vragen uitsluitend op de aangegeven

Nadere informatie

Digitale Systeem Engineering 1. Week 1 VHDL basics, datatypes, signal assignment Jesse op den Brouw DIGSE1/2014-2015

Digitale Systeem Engineering 1. Week 1 VHDL basics, datatypes, signal assignment Jesse op den Brouw DIGSE1/2014-2015 Digitale Systeem Engineering 1 Week 1 VHDL basics, datatypes, signal assignment Jesse op den Brouw DIGSE1/2014-2015 Wat is VHDL VHDL = VHSIC Hardware Description Language VHSIC = Very High Speed Integrated

Nadere informatie

Digitale Systeem Engineering 1. Week 4 Toepassing: Pulse Width Modulation Jesse op den Brouw DIGSE1/2013-2014

Digitale Systeem Engineering 1. Week 4 Toepassing: Pulse Width Modulation Jesse op den Brouw DIGSE1/2013-2014 Digitale Systeem Engineering 1 Week 4 Toepassing: Pulse Width Modulation Jesse op den Brouw DIGSE1/2013-2014 PWM basics Het regelen van het toerental van een elektromotor kan eenvoudig worden gedaan door

Nadere informatie

Project Digitale Systemen

Project Digitale Systemen Project Digitale Systemen Case Study The Double Dabble algorithme Jesse op den Brouw PRODIG/2014-2015 Introductie Double Dabble In de digitale techniek wordt veel met decimale getallen gewerkt, simpelweg

Nadere informatie

Toets Digitale Systemen 01/06/2006, 8.45 10.30 uur

Toets Digitale Systemen 01/06/2006, 8.45 10.30 uur Toets igitale Systemen 0/06/2006, 8.45 0.30 uur e toets is open boek en bestaat uit 0 multiple-choice (MC) vragen en 3 open vragen. e MC-vragen dienen beantwoord te worden op het uitgereikte MC-formulier.

Nadere informatie

Antwoorden zijn afgedrukt!!!!!!!

Antwoorden zijn afgedrukt!!!!!!! Computerorganisatie INF/TEL (233) februari 2, 9. 2.3 uur 8 bladzijden met 9 opgaven 3 bladzijden met documentatie Let op: Vul het tentamenbriefje volledig in (d.w.z. naam, studentnummer, naam vak, vakcode,

Nadere informatie

Studentnummer:... Opleiding:...

Studentnummer:... Opleiding:... Computerorganisatie INF/TEL (233) februari 2, 9. 2.3 uur 8 bladzijden met 9 opgaven 3 bladzijden met documentatie Let op: Vul het tentamenbriefje volledig in (d.w.z. naam, studentnummer, naam vak, vakcode,

Nadere informatie

Hoofdstuk 4. Digitale techniek

Hoofdstuk 4. Digitale techniek Hoofdstuk 4 Digitale techniek 1 A C & =1 F Figuur 4.1: Combinatorische schakeling. A C & & F A = & F C Figuur 4.2: Drie-input AND. A C _ >1 & F Figuur 4.3: Don t care voorbeeld A? F Figuur 4.4: Onbekende

Nadere informatie

REGISTERS. parallel in - parallel uit bufferregister. De klok bepaalt het moment waarop de data geladen worden. Mogelijke bijkomende ingangen:

REGISTERS. parallel in - parallel uit bufferregister. De klok bepaalt het moment waarop de data geladen worden. Mogelijke bijkomende ingangen: EGITE Een groep van flipflops om data te stockeren bufferregisters: om gegevens tijdelijk op te slaan schuifregisters: de inhoud verschuift doorheen de flipflops ynchrone schakeling Kan opgebouwd worden

Nadere informatie

Sequentiële schakelingen

Sequentiële schakelingen Gebaseerd op geheugen elementen Worden opgedeeld in synchrone systemen» scheiding tussen wat er wordt opgeslagen (data) wanneer het wordt opgeslagen (klok) asynchrone systemen» Puls om geheugen op te zetten

Nadere informatie

Inleiding Digitale Techniek

Inleiding Digitale Techniek Inleiding Digitale Techniek Week 4 Binaire optellers, tellen, vermenigvuldigen, delen Jesse op den Brouw INLDIG/25-26 Optellen Optellen is één van meest gebruikte rekenkundige operatie in digitale systemen.

Nadere informatie

Eindtentamen Digitale Systemen 07/07/2006, uur

Eindtentamen Digitale Systemen 07/07/2006, uur Eindtentamen Digitale Systemen 07/07/2006, 9.00 2.00 uur Het tentamen is open boek en bestaat uit 8 multiple choice (MC) vragen en 2 open vragen. De MC-vragen dienen beantwoord te worden op het uitgereikte

Nadere informatie

OPDRACHTEN PRACTICUM DIGSE1. J.E.J op den Brouw De Haagse Hogeschool Opleiding Elektrotechniek 19 maart 2016 J.E.J.opdenBrouw@hhs.

OPDRACHTEN PRACTICUM DIGSE1. J.E.J op den Brouw De Haagse Hogeschool Opleiding Elektrotechniek 19 maart 2016 J.E.J.opdenBrouw@hhs. OPDRACHTEN PRACTICUM DIGSE1 J.E.J op den Brouw De Haagse Hogeschool Opleiding Elektrotechniek 19 maart 2016 [email protected] Inleiding Het practicum is zodanig van opzet en moeilijkheidsgraad dat

Nadere informatie

EE1410: Digitale Systemen BSc. EE, 1e jaar, , vragencollege 2

EE1410: Digitale Systemen BSc. EE, 1e jaar, , vragencollege 2 EE4: Digitale Systemen BSc. EE, e jaar, 22-23, vragencollege 2 Arjan van Genderen, Stephan Wong, Computer Engineering 7-6-23 Delft University of Technology Challenge the future Vragencollege Tentamen dinsdag

Nadere informatie

Digitale Systemen (ET1 410)

Digitale Systemen (ET1 410) Digitale Systemen (ET1 410) Arjan van Genderen Stephan Wong Faculteit EWI Technische Universiteit Delft Cursus 2011 28-4-2011 EE1 410 (Stephan Wong) Pagina 1 Verschil simulatie en synthese Simulatie: functioneel

Nadere informatie

EE1410: Digitale Systemen BSc. EE, 1e jaar, , 8e hoorcollege

EE1410: Digitale Systemen BSc. EE, 1e jaar, , 8e hoorcollege EE4: Digitale Systemen BSc. EE, e jaar, 22-23, 8e hoorcollege rjan van Genderen, Stephan Wong, Computer Engineering 3-5-23 Delft University of Technology Challenge the future Hoorcollege 8 Combinatorische

Nadere informatie

ES1 Project 1: Microcontrollers

ES1 Project 1: Microcontrollers ES1 Project 1: Microcontrollers Les 5: Timers/counters & Interrupts Timers/counters Hardware timers/counters worden in microcontrollers gebruikt om onafhankelijk van de CPU te tellen. Hierdoor kunnen andere

Nadere informatie

ES1 Project 1: Microcontrollers

ES1 Project 1: Microcontrollers ES1 Project 1: Microcontrollers Les 3: Eenvoudige externe hardware & hardware programmeren in C Hardware programmeren in C Inmiddels ben je al aardig op gang gekomen met het programmeren van microcontrollers.

Nadere informatie

Dobbelsteen 6 Tabellendemo: alle opgedane ervaringen gebundeld

Dobbelsteen 6 Tabellendemo: alle opgedane ervaringen gebundeld Dobbelsteen 6 Tabellendemo: alle opgedane ervaringen gebundeld Johan Smilde Zo nu en dan moet je even een pas op de plaats maken: hoever zijn we inmiddels gekomen en wat hebben we ervan geleerd? Bij dit

Nadere informatie

Basisconcept VHDL. Digitaal Ontwerpen Tweede studiejaar. Wim Dolman. Engineering, leerroute Elektrotechniek Faculteit Techniek

Basisconcept VHDL. Digitaal Ontwerpen Tweede studiejaar. Wim Dolman. Engineering, leerroute Elektrotechniek Faculteit Techniek Basisconcept VHDL Tweede studiejaar Wim Dolman Engineering, leerroute Elektrotechniek Faculteit Techniek 1 Deze presentatie toont de stappen voor het ontwerpen van een digitale combinatorische schakeling

Nadere informatie

Sequentiële Logica. Processoren 24 november 2014

Sequentiële Logica. Processoren 24 november 2014 Sequentiële Logica Processoren 24 november 2014 Inhoud Eindige automaten Schakelingen met geheugen Realisatie van eindige automaten Registers, schuifregisters, tellers, etc. Geheugen Herinnering van week

Nadere informatie

RCL Arduino Workshop 1

RCL Arduino Workshop 1 RCL Arduino Workshop 1 Leren door doen april 2015 - slides voor RCL Arduino workshop 1 ON4CDU & ON8VQ Workshop Leren door doen Werken in een groep Beperkte tijd Alleen essentiele vragen stellen Thuis oefenen

Nadere informatie

Combinatorisch tegenover sequentieel

Combinatorisch tegenover sequentieel PBa ELO/ICT Combinatorisch tegenover sequentieel soorten digitale schakelingen : combinatorisch of sequentieel combinatorische schakelingen combinatie van (al dan niet verschillende) (basis)poorten toestand

Nadere informatie

Combinatorische schakelingen

Combinatorische schakelingen Practicum 1: Combinatorische schakelingen Groep A.6: Lennert Acke Pieter Schuddinck Kristof Vandoorne Steven Werbrouck Inhoudstabel 1. Doelstellingen... 2 2. Voorbereiding... 3 3. Hardware-practicum...

Nadere informatie

Getalformaten, timers en tellers

Getalformaten, timers en tellers Getalformaten, timers en tellers S_CU CU S PV R CV DEZ CV_BCD S_ODT S TV BI R BCD 1 pagina 1 Getalformaten (16 bits) PG CPU BCD W#16#296 Voorteken (+) 2 9 6 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 Positieve getallen

Nadere informatie

Fig. 6.1 voorstelling van de werking van een schuifregister

Fig. 6.1 voorstelling van de werking van een schuifregister 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".

Nadere informatie

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie www.arduino.cc Arduino en DDS DDS chips DDS = Direct Digital (frequency) Synthesis Output = sinusvormig signaal Maximum frequentie = ½ klokfrequentie Frequentie bepaald door tuning word Grootste fabrikant:

Nadere informatie

Hoofdstuk 7. Computerarchitectuur

Hoofdstuk 7. Computerarchitectuur Hoofdstuk 7 Computerarchitectuur 1 controlebus CPU MEMORY I/O databus adresbus Figuur 71 Schematische opbouw van een computersysteem 8 Figuur 72 Een busverbinding Buslijn Out E A In Out E B In Out E C

Nadere informatie

Stoeien met de tabellen (deel 4) Met multiplexers dobbelsteen 5 bouwen: tabel naar keus

Stoeien met de tabellen (deel 4) Met multiplexers dobbelsteen 5 bouwen: tabel naar keus Stoeien met de tabellen (deel 4) Met multiplexers dobbelsteen 5 bouwen: tabel naar keus Johan Smilde Het is niet echt moeilijk om met CMOS-multiplexers van het type 4519, die zijn toegepast bij de dynamische

Nadere informatie

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/2014-2015

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/2014-2015 Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/2014-2015 Computersysteem Een systeem dat rekenkundige operaties, data manipulaties en beslissingen kan uitvoeren, aan de hand

Nadere informatie

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 19 januari 2005, 14:00u-17:00u

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 19 januari 2005, 14:00u-17:00u Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek Vakcode 5A050, 19 januari 2005, 14:00u-17:00u achternaam : voorletters : identiteitsnummer : opleiding : Tijdens dit tentamen is het gebruik

Nadere informatie

2 Elementaire bewerkingen

2 Elementaire bewerkingen Hoofdstuk 2 Elementaire bewerkingen 17 2 Elementaire bewerkingen In dit hoofdstuk leer je hoe werken met binaire getallen en hexadecimale getallen omgezet wordt naar een decimaal getal en omgekeerd. Vervolgens

Nadere informatie

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 19 januari 2005, 14:00u-17:00u

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 19 januari 2005, 14:00u-17:00u Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek Vakcode 5A050, 19 januari 2005, 14:00u-17:00u achternaam : voorletters : identiteitsnummer : opleiding : Tijdens dit tentamen is het gebruik

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

Digitale Systeem Engineering 2

Digitale Systeem Engineering 2 Digitale Systeem Engineering 2 Week 2 Toestandsmachines (vervolg) Jesse op den Brouw DIGSE2/214-215 Herkenningsautomaat Een typische sequentiële machine is een herkenningsautomaat of patroonherkenner.

Nadere informatie

Inleiding Digitale Techniek

Inleiding Digitale Techniek Inleiding Digitale Techniek Week 6 Timing, SR-latch, gated latches, flipflops, register Jesse op den Brouw INLDIG/2016-2017 Geheugen Tot nu toe zijn alleen combinatorische schakelingen behandeld. Bij deze

Nadere informatie

Programmeren met Arduino-software

Programmeren met Arduino-software Programmeren met Arduino-software De software waarin we programmeren is Arduino IDE. Deze software is te downloaden via www.arduino.cc. De programmeertaal die hier gebruikt wordt, is gebaseerd op C en

Nadere informatie

Zelftest Inleiding Programmeren

Zelftest Inleiding Programmeren Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze

Nadere informatie

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax, Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt

Nadere informatie

RAM geheugens. Jan Genoe KHLim. Situering RAM-geheugens. Geheugens. Halfgeleider Geheugens. Willekeurig toegankelijk geheugen

RAM geheugens. Jan Genoe KHLim. Situering RAM-geheugens. Geheugens. Halfgeleider Geheugens. Willekeurig toegankelijk geheugen Jan Genoe KHLim Situering RAM-geheugens Geheugens Halfgeleider Geheugens Serieel toegankelijk geheugen Willekeurig toegankelijk geheugen Read Only Memory ROM Random Access Memory RAM Statische RAM SRAM

Nadere informatie

No part of this book may be reproduced in any form, by print, photoprint, microfilm or any other means without written permission of the publisher.

No part of this book may be reproduced in any form, by print, photoprint, microfilm or any other means without written permission of the publisher. De Backer, Kris / Kenens, Liesbeth Digitale Systemen / Kris De Backer & Liesbeth Kenens; Geel: Campinia Media vzw, 2004-2de druk sept. 2005; 216 p;index; 25,5 cm; gelijmd. ISBN: 90.356.1184.5; NUGI 854;

Nadere informatie

Alles op de kop. Dobbelsteen D02i werkt precies andersom! Johan Smilde

Alles op de kop. Dobbelsteen D02i werkt precies andersom! Johan Smilde Alles op de kop Johan Smilde Dobbelsteen D02i werkt precies andersom! Deze dobbelsteen heeft omgekeerde uitgangen ten opzichte van de vorige. Dat wil zeggen dat de uitgangen hier niet actief hoog zijn

Nadere informatie

Van Poort tot Pipeline. Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam

Van Poort tot Pipeline. Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam Van Poort tot Pipeline Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam Van Poort tot Pipeline Pipeline processor One cycle machine Calculator File of registers Assembly

Nadere informatie

Arduino Workshop 1 Zuid-Limburg

Arduino Workshop 1 Zuid-Limburg Arduino Workshop 1 Zuid-Limburg Leren door doen Mei 2016 - slides voor Arduino workshop 1 v2.5 Zuid-Limburg PA3CZS, PA0FOT, ON4CDU, PE1EAM 1 Workshop 1 Workshop 1 concentreert op kennismaking en eenvoudige

Nadere informatie

Opgaven. en uitwerkingen bij het boek Digitale Techniek. Jesse op den Brouw

Opgaven. en uitwerkingen bij het boek Digitale Techniek. Jesse op den Brouw Opgaven en uitwerkingen bij het boek Digitale Techniek Jesse op den Brouw 2017 Jesse op den Brouw, Den Haag Versie: 0.99pl8 Datum: 6 mei 2017 Opgaven van Jesse op den Brouw is in licentie gegeven volgens

Nadere informatie

Logische functies. Negatie

Logische functies. Negatie Pa ELO/ICT Logische functies inaire elementen slechts twee mogelijkheden voorbeeld : het regent slechts twee toestanden : waar of niet waar Voorstellen met LETTERSYMOOL = het regent overeenkomst :» als

Nadere informatie

Werkbladen voor Arduino workshop 1

Werkbladen voor Arduino workshop 1 De aansluitingen van de Arduino Uno Werkbladen voor Arduino workshop 1 Arduino Arduino is een open-source ontwikkelbord, waarmee het eenvoudig is om informatica aan fysieke objecten te koppelen. Je kunt

Nadere informatie

Meetopdrachten Poortschakelingen 1 met Multisim

Meetopdrachten Poortschakelingen 1 met Multisim Meetopdrachten Poortschakelingen 1 met Multisim In dit document leest u hoe u de meetopdrachten bij de les Poortschakelingen-1 (lescode 5-30.3) kunt uitvoeren met de simulatiesoftware van Multisim. Dit

Nadere informatie

Hfdst. 2: COMBINATORISCH PROGRAMMEREN

Hfdst. 2: COMBINATORISCH PROGRAMMEREN 2.1. Basisinstructies: 2.1.1. Ja-functie: Indien je een normaal open schakelaar bedient, moet de lamp oplichten. Waarheidstabel: Booleaanse schrijfwijze: Q0.0 = I0.0 2.1.2. Niet-functie: Waarheidstabel:

Nadere informatie

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files 1 Introductie In deze oefening zal je je LCD display leren aansturen. Je controleert deze display door er instructies naar te

Nadere informatie

Fysische Informatica met FLEC

Fysische Informatica met FLEC Fysische Informatica met FLEC Inleiding De werking van de schakelingen die je gemaakt hebt bij het onderwerp fysische informatica kunnen op 2 manieren gecontroleerd worden. De eerste manier is met behulp

Nadere informatie

Wat is Arduino? Arduino = microprocessor (Atmel)

Wat is Arduino? Arduino = microprocessor (Atmel) Intro tot Arduino Wat is Arduino? Volgens de website: Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers,

Nadere informatie

Tentamen Digitale Systemen (EE1410) 6 juli 2012, uur

Tentamen Digitale Systemen (EE1410) 6 juli 2012, uur Tentamen igitale Systemen (EE4) 6 juli 22, 9. 2. uur it tentamen is een open boek tentamen en bestaat uit 8 multiple choice (M) vragen (63%) en 5 open vragen (37%). e M-vragen dienen beantwoord te worden

Nadere informatie

Logische Schakelingen

Logische Schakelingen Logische Schakelingen Reader Elektro 2.2 Erik Dahmen Techniek en Gebouwde Omgeving Logische Schakelingen Inhoudsopgave: Definitie Logische Schakelingen EN / NEN functie OF / NOF functie NIET-functie De

Nadere informatie

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 17 november 2004, 9:00u-12:00u

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 17 november 2004, 9:00u-12:00u achternaam : voorletters : identiteitsnummer : opleiding : Tijdens dit tentamen is het gebruik van rekenmachine of computer niet toegestaan. Vul je antwoorden in op dit formulier. Je dient dit formulier

Nadere informatie

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 3: Tijd, licht en warmte

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 3: Tijd, licht en warmte Opgave Tussentijdse Oefeningen Jaarproject I Reeks 3: Tijd, licht en warmte Voor deze oefeningenles heb je de handleiding van de uitgedeelde ARM processor nodig. Je kan deze vinden op de website van het

Nadere informatie

Slimme schakelingen (2)

Slimme schakelingen (2) Slimme schakelingen (2) Technische informatica in de zorg Thijs Harleman Modulecode: TMGZ-AMAL23 23 februari 2015 1 Overzicht college Doel van dit college: Verdiepen van kennis en inzicht van het ontwerpen

Nadere informatie

Logische bit-instructies

Logische bit-instructies Logische bit-instructies I. I. (MCRA) I. (MCR

Nadere informatie

Hoe werkt een computer precies?

Hoe werkt een computer precies? Hoe werkt een computer precies? Met steun van stichting Edict Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam Overview Introductie SIM-PL Simulatietool voor werking computer

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een

Nadere informatie

Digitale technieken Combinatorische en sequentiële logica

Digitale technieken Combinatorische en sequentiële logica Digitale technieken Combinatorische en sequentiële logica ir. Patrick Colleman 1 Inleiding. 1 0.1 Systemen. 1 0.2 Voordelen van digitale systemen 4 0.3 Nadelen van digitale systemen 6 Hoofdstuk 1 : Logische

Nadere informatie

Inhoudsopgave. Pag. Tot slot 33 Onderdelen voor aanvulling 34

Inhoudsopgave. Pag. Tot slot 33 Onderdelen voor aanvulling 34 Logic 1-3- Colofon Auteur: Eindredactie: Thijs A. Afman Joost van den Brink Dit is een uitgave van Brink Techniek 2005. Deze uitgave mag vrij worden gekopieerd binnen educatieve instellingen. Deze uitgave

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen [email protected] en [email protected]

Nadere informatie

Antwoorden vragen en opgaven Basismodule

Antwoorden vragen en opgaven Basismodule Antwoorden vragen en opgaven Basismodule Antwoorden van vragen en opgaven van hoofdstuk 1 1. Is elke combinatorische schakeling een digitale schakeling? Zo nee, waarom niet? Antwoord: Elke combinatorische

Nadere informatie

Scan-pad technieken. Zet elk register om in een scan-pad register (twee opeenvolgende D-latches: master-slave):

Scan-pad technieken. Zet elk register om in een scan-pad register (twee opeenvolgende D-latches: master-slave): Zet elk register om in een scan-pad register (twee opeenvolgende D-latches: master-slave): D is de normale data ingang C is de normale fase 1 klok I is de data ingang van het shift-regiester A is de klok

Nadere informatie

VRIJ TECHNISCH INSTITUUT Burg.Geyskensstraat 11 3580 BERINGEN. De PLC geïntegreerd in de PC. Vak: Toegepaste informatica Auteur: Ludwig Theunis

VRIJ TECHNISCH INSTITUUT Burg.Geyskensstraat 11 3580 BERINGEN. De PLC geïntegreerd in de PC. Vak: Toegepaste informatica Auteur: Ludwig Theunis Burg.Geyskensstraat 11 3580 BERINGEN De PLC geïntegreerd in de PC. Vak: Toegepaste informatica Auteur: Ludwig Theunis Versie: vrijdag 2 november 2007 2 Toegepaste informatica 1 De Microprocessor Zowel

Nadere informatie

7,6. Samenvatting door A woorden 12 april keer beoordeeld. Natuurkunde. Natuurkunde Systemen. Systemen

7,6. Samenvatting door A woorden 12 april keer beoordeeld. Natuurkunde. Natuurkunde Systemen. Systemen Samenvatting door A. 1243 woorden 12 april 2013 7,6 12 keer beoordeeld Vak Natuurkunde Natuurkunde Systemen Systemen We onderscheiden 3 soorten gegevensverwerkende systemen: meetsysteem: meet een grootheid

Nadere informatie

Fig. 2. Fig. 1 5 4,5 4 3,5 3 2,5 2 1,5 U (V) 0,5. -20 0 20 40 60 80 100 temperatuur ( C)

Fig. 2. Fig. 1 5 4,5 4 3,5 3 2,5 2 1,5 U (V) 0,5. -20 0 20 40 60 80 100 temperatuur ( C) Deze opgaven en uitwerkingen vind je op https://www.itslearning.com en op www.agtijmensen.nl Wat je moet weten en kunnen gebruiken: Zie het boekje Systeembord.. Eigenschappen van de invoer-elementen (sensor,

Nadere informatie

Inleiding Digitale Techniek. Week 7 Schuifregisters Jesse op den Brouw INLDIG/2013-2014

Inleiding Digitale Techniek. Week 7 Schuifregisters Jesse op den Brouw INLDIG/2013-2014 Inleiding Digitale Techniek Week 7 Schuifregisters Jesse op den Brouw INLDIG/213-214 Schuifregisters In de digitale techniek en met name in de digitale communicatie wordt veel gebruik gemaakt van seriële

Nadere informatie

In- en uitgangssignalen van microprocessoren

In- en uitgangssignalen van microprocessoren In- en uitgangssignalen van microprocessoren E. Gernaat 1 Overzicht signalen Informatie van en naar een microprocessor kan parallel of seriëel gebeuren. Bij parallel-overdracht zal elke lijn (draad) een

Nadere informatie

Digitaal Ontwerp Mogelijke Examenvragen

Digitaal Ontwerp Mogelijke Examenvragen Digitaal Ontwerp: Mogelijke Examenvragen.X) G-complement-methode Negatief getal voorgesteld door g-complement van positieve getal met dezelfde modulus. Uit eigenschap: Som van een negatief getal en positief

Nadere informatie

Digitale technieken Deeltoets II

Digitale technieken Deeltoets II Digitale technieken Deeltoets II André Deutz 11 januari, 2008 De opgaven kunnen uiteraard in een willekeurige volgorde gemaakt worden geef heel duidelijk aan op welke opgave een antwoord gegegeven wordt.

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

Opleiding: ESE, HAN Opl.variant: vt Groep/Klas: ES2 Digitaal Signaal Ontwerpen 26 januari 2012 Tijd: 13:30 15:00

Opleiding: ESE, HAN Opl.variant: vt Groep/Klas: ES2 Digitaal Signaal Ontwerpen 26 januari 2012 Tijd: 13:30 15:00 Tentamen Engineering 2011/2012: Opleiding: ESE, HN Opl.variant: vt Groep/Klas: ES2 Digitaal Signaal Ontwerpen 26 januari 2012 Tijd: 13:30 15:00 Vakcode: DSO deel 2 Lokaal: Docent: RZ antal tentamenbladen:

Nadere informatie

Inleiding Digitale Techniek

Inleiding Digitale Techniek Inleiding Digitale Techniek Week 1 Introductie Jesse op den Brouw INLDIG/2015-2016 Even voorstellen... ing. J.E.J. (Jesse) op den Brouw Elektrotechniek Digitale Techniek Software, hardware Embedded systems

Nadere informatie

Inleiding Digitale Techniek

Inleiding Digitale Techniek Inleiding Digitale Techniek Week 2 Binaire getallen, BCD, Gray, ASCII, 7-segment Jesse op den Brouw INLDIG/205-206 Decimaal talstelsel Ons talstelsel is een zogenaamd positioneel talstelsel. Een getal

Nadere informatie

Labo digitale technieken

Labo digitale technieken .. Het gebied "elektronica" is reeds geruime tijd onderverdeeld in twee specialiteiten, namelijk de analoge en de digitale technieken. Binnen analoge schakelingen gebeurt de signaalverwerking met lineaire

Nadere informatie

von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014

von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014 von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014 Herhaling: Booleaanse algebra (B = {0,1},., +, ) Elke Booleaanse functie f: B n B m kan met., +, geschreven worden Met Gates (electronische

Nadere informatie

Toestandentabel van een SR-FF. S R Qn Qn+1 0 0 0 onbep. 0 0 1 onbep. 0 1 0 1 SET 0 1 1 1 SET 1 0 0 0 RESET 1 0 1 0 RESET 1 1 0 0 1 1 1 1

Toestandentabel van een SR-FF. S R Qn Qn+1 0 0 0 onbep. 0 0 1 onbep. 0 1 0 1 SET 0 1 1 1 SET 1 0 0 0 RESET 1 0 1 0 RESET 1 1 0 0 1 1 1 1 (een algemeen overzicht ) Inleiding Bij combinatorische schakelingen zijn de uitgangen enkel afhankelijk van de ingangen. Bij sequentiële schakelingen zijn de uitgangen voorzien van een geheugensysteem

Nadere informatie

Multiplexers en demultiplexers MULTIPLEXERS

Multiplexers en demultiplexers MULTIPLEXERS Pa EO/ICT Kim - dep. IWT Multiplexers en demultiplexers MU transmissie DEMU merikaans symbool multiplexer merikaans symbool demultiplexer ingangen uitgang ingang uitgangen controle controle MU/DEMU DIGITE

Nadere informatie

Hardware High Speed Counters (HSC) dienen aangesloten te worden op de general-purpose inputs X0 t/m X7.

Hardware High Speed Counters (HSC) dienen aangesloten te worden op de general-purpose inputs X0 t/m X7. Datum : 27 november 2009 Aangemaakt door : Matthias FAQ 5 : Gebruik van High Speed Counters van de compact PLC (FX3u) Hardware High Speed Counters (HSC) dienen aangesloten te worden op de general-purpose

Nadere informatie

Informatica 2. Met uitwerkingen n.a.v. document van Elvire Theelen in Luc bijgewerkt door Peter van Diepen

Informatica 2. Met uitwerkingen n.a.v. document van Elvire Theelen in Luc bijgewerkt door Peter van Diepen Informatica 2 Met uitwerkingen n.a.v. document van Elvire Theelen in Luc bijgewerkt door Peter van Diepen 1 Op dit lesmateriaal is een Creative Commons licentie van toepassing. 2014 Remie Woudt [email protected]

Nadere informatie

Tellers en Delers Sequentiële schakeling die het aantal ingangspulsen telt Gebaseerd op geheugenelementen (flipflops)

Tellers en Delers Sequentiële schakeling die het aantal ingangspulsen telt Gebaseerd op geheugenelementen (flipflops) PBa ELO/ICT Tellers en Delers Sequentiële schakeling die het aantal ingangspulsen telt Gebaseerd op geheugenelementen (flipflops) bewaren het aantal getelde pulsen (d.i. de stand van de teller) Opdeling:

Nadere informatie

Ontwerpmethoden. Doelstelling

Ontwerpmethoden. Doelstelling 6 Ontwerpmethoden Doelstelling Onderwerpen In dit hoofdstuk maak je kennis met een aantal ontwerpmethodieken en leer je werken met behulp van de methode met een gescheiden dataverwerking en besturing.

Nadere informatie

De Arduino-microcontroller in de motorvoertuigentechniek (3)

De Arduino-microcontroller in de motorvoertuigentechniek (3) De Arduino-microcontroller in de motorvoertuigentechniek (3) E. Gernaat (ISBN 978-90-79302-11-6) 1 In- en uitgangssignalen van microprocessoren 1.1 Overzicht signalen Informatie van en naar een microprocessor

Nadere informatie

Lab6: Implementatie video timing generator

Lab6: Implementatie video timing generator Het Micro-elektronica Trainings- Centrum Het MTC is een initiatief binnen de INVOMEC divisie. Industrialisatie & Vorming in Micro-elektronica Inleiding In de vorige modules werd een systeem opgebouwd en

Nadere informatie

Hfdst. 2: COMBINATORISCHE LOGICA

Hfdst. 2: COMBINATORISCHE LOGICA Hfdst. 2: COMBINATOISCHE LOGICA DEEL 2: Prioriteitsregels: 2.3.1. Het begrip stack : Duid een groep geheugenplaatsen aan die door de CPU wordt gebruikt om het programma te verwerken. Bij het gebruik van

Nadere informatie

Jan Genoe KHLim. Reken schakelingen. Jan Genoe KHLim

Jan Genoe KHLim. Reken schakelingen. Jan Genoe KHLim Jan Genoe KHLim Meestal aangewend in digitale computers optellers optellers-aftrekkers Vermenigvuldigers ingebed in een grotere rekeneenheid ALU (Arithmetic and logical unit) 2 Talstelsels definitie Tiendelig

Nadere informatie