Inhoudstafel Inleiding De basis van digitaal ontwerp Vak - hoofdstuk Inhoudstafel Inleiding De basis van digitaal ontwerp Combinatorische schakelingen Sequentiële schakelingen Niet-programmeerbare processoren Programmeerbare processoren Hardware-beschrijvingstalen
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Een voorbeeld: FPGA
Digitaal ontwerp in grote lijnen Vak - hoofdstuk Digitaal ontwerp in grote lijnen Ontwerppad Specificatie Synthese Bibliotheek Analyse Digitale data Boole-algebra Logische poorten FPGA-ontwerp Specificatie Bibliotheek Synthese Documentatie Analyse Documentatie handleiding gebruikers handleiding hersteller documentatie voor verdere ontwikkelingen
Vak - hoofdstuk Specificatie Ontwerppad Specificatie Synthese Bibliotheek Analyse Digitale data Boole-algebra Logische poorten FPGA-ontwerp beschrijf de functionaliteit, inclusief de ‘interface’ (interactie met de omgeving) Beschrijving in de natuurlijke taal dikwijls niet eenduidig met een blokschema Dikwijls een onvolledige beschrijving Niet altijd duidelijk wat mogelijk is en wat niet Wordt vervolledigd/aangevuld later in het ontwerpproces Maakt dikwijls reeds implementatiebeslissingen die onnodige beperkingen opleggen aan het ontwerp Specificatie Bibliotheek Synthese Analyse
Vak - hoofdstuk Synthese Ontwerppad Specificatie Synthese Bibliotheek Analyse Digitale data Boole-algebra Logische poorten FPGA-ontwerp vertaling van een specificatie op een hoog abstractieniveau naar een lager niveau, waarbij beslissingen i.v.m. de implementatie genomen worden: x+y 16-bit ripple-carry adder & 2 registers Verschillende niveaus: Systeemsynthese (bouwblokken: processoren, geheugen, ASIC’s) Architectuursynthese (met RTL-componenten: optellers, tellers, schuifregisters) Sequentieel ontwerp (met poorten en flip-flops) Combinatorisch ontwerp (met poorten) Circuit-ontwerp (met transistoren) Fysisch ontwerp (met halfgeleideroppervlakken) Specificatie Bibliotheek Synthese Analyse
Bibliotheek van componenten Vak - hoofdstuk Bibliotheek van componenten Ontwerppad Specificatie Synthese Bibliotheek Analyse Digitale data Boole-algebra Logische poorten FPGA-ontwerp Ontwerpen evolueren (geen revolutie): Hergebruik componenten economisch zeer belangrijk Ontbrekende componenten kopen/ontwerpen Op de verschillende niveaus: Processor, ook specifieke (FFT, convolutie, …) Opteller, teller, … (RTL-niveau) Logische poort Transistor Trend naar bibliotheken op hoog niveau wegens steeds hogere integratieniveaus Wet van Moore: # transistoren × 2 per 18–24 maanden (× 220 ≈ × 106 op 30–40 jaar) Specificatie Bibliotheek Synthese Analyse
Analyse van het ontwerp Vak - hoofdstuk Analyse van het ontwerp Ontwerppad Specificatie Synthese Bibliotheek Analyse Digitale data Boole-algebra Logische poorten FPGA-ontwerp test of het ontwerp voldoet aan zijn specificaties Na elke synthesestap! Wat wordt getest? Functionaliteit: doet het wat het moet doen? Kostprijs: oppervlakte, # pinnen Vermogenverbruik: C × f × V2 (in 17 jaar × 1000) C chipgrootte (0,25 cm2 in 1983; 4 cm2 in 2000) f (1 MHz in 1983; 1 GHz in 2000) V (5 V in 1983; 1,5 V in 2000) Snelheid: vertraging, ‘throughput’ (# resultaten/s), ontwikkelingstijd Testbaarheid: kunnen alle fouten ontdekt worden via testvectoren? Specificatie Bibliotheek Synthese Analyse
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen Negatieve getallen Niet-gehele getallen Andere codes Booleaanse algebra Logische poorten Een voorbeeld: FPGA
Getallen digitaal voorstellen Vak - hoofdstuk Getallen digitaal voorstellen MSB LSB Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp radix r (10 voor decimale notatie) cijfer iteratief : Bijv. het getal 1234,5610 (in decimale notatie) 1∙103 + 2∙102 + 3∙101 + 4∙100 + 5∙10−1 + 6∙10−2 1∙1000 + 2∙100 + 3∙10 + 4∙1 + 5∙0,1 + 6∙0,01
Andere radixen Binair : r = 2, di = 0..1 bijv. 1011,0112 = 11,37510 Vak - hoofdstuk Andere radixen Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Binair : r = 2, di = 0..1 bijv. 1011,0112 = 11,37510 1∙23 + 0∙22 + 1∙21 + 1∙20 + 0∙2−1 + 1∙2−2 + 1∙2−3 1∙8 + 1∙2 + 1∙1 + 1∙0,25 + 1∙0,125 Octaal : r = 8, di = 0..7 bijv. 7654,328 = 4012,4062510 7∙83 + 6∙82 + 5∙81 + 4∙80 + 3∙8−1 + 2∙8−2 7∙512 + 6∙64 + 5∙8 + 4∙1 + 3∙1/8 + 2∙1/64 Hexadecimaal : r = 16, di = 0..9 & A..F bijv. F9D8,7616 = 63960,460937510 15∙163 + 9∙162 + 13∙161 + 8∙160 + 7∙16−1 + 6∙16−2 15∙4096 + 9∙256 + 13∙16 + 8 + 7/16 + 6/256
Vak - hoofdstuk Radix-conversie : r1 ® r2 Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Als r1 = r0p en r2 = r0q q cijfers (r1) ® pq cijfers (r0) ® p cijfers (r2) bijv. hex (r1 = 24) ® octaal (r2 = 23) Anders bepaal het getal D van de voorstelling Dr1 , bepaal de cijfers van D voor r2 988B16 ® 1001|1000|1000|1011 = 1|001|100|010|001|011 1142138
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen: + − × ÷ Negatieve getallen Niet-gehele getallen Andere codes Booleaanse algebra Logische poorten Een voorbeeld: FPGA
Binaire optelling & aftrekking Vak - hoofdstuk Binaire optelling & aftrekking Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Decimale optelling 7 2 8 3 x 6 5 y som overdracht 1 Engelse benaming: overdracht = carry lenen = borrow Binaire optelling Binaire aftrekking overdracht 1 x som y x y lenen resultaat 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0
Binaire vermenigvuldiging Vak - hoofdstuk Binaire vermenigvuldiging Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp 1 0 1 1 0 × 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 Vermenigvuldiging via herhaalde optelling & schuifoperatie: # cycli = # bits van vermenigvuldiger Er bestaan snellere implementaties
Vak - hoofdstuk Binaire deling Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 Deling via herhaalde aftrekking & schuifoperatie: # cycli = # bits van het resultaat Meestal deze implementatie
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen Negatieve getallen Niet-gehele getallen Andere codes Booleaanse algebra Logische poorten Een voorbeeld: FPGA
‘Sign-Magnitude’-voorstelling Vak - hoofdstuk ‘Sign-Magnitude’-voorstelling Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Elk getal bestaat uit twee delen: een teken & een grootte Decimaal voorbeeld: +12310 en −12310 Generische voorstelling: B = <s,m> Binaire getallen MSB = teken (‘0’ = positief, ‘1’ = negatief) bijv. 011002 = +1210 en 111002 = −1210 Een ‘sign-magnitude’-getal met n bits ligt tussen −(2n−1 − 1) en +(2n−1 − 1) met twee voorstellingen voor nul: 000...0 en 100...0
Optelling & aftrekking Vak - hoofdstuk Optelling & aftrekking Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Begin aftrekking s2 = s2’ Begin optelling s1 = s2 Vele testen traag & duur weinig gebruikt m1 = m2 neen mr = m1 + m2 sr = s1 ja m1 > m2 neen mr = 0 sr = 0 ja mr = m2 − m1 sr = s2 neen ja mr = m1 − m2 sr = s1 Einde
Twee-complement voorstelling Vak - hoofdstuk Twee-complement voorstelling Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Het (cijfer-)complement D’ van een getal D met radix r is het getal waarbij elk cijfer i vervangen is door zijn complement r − 1 − i het 9-complement van 12310 is 87610 het 1-complement van 11012 is 00102 Het radix-complement D* van een getal D met radix r en m cijfers is D* = rm − D het 10-complement van 12310 is 103 − 12310 = 87710 het 2-complement van 11012 is 24 − 1310 = 310 = 00112 D* = D’ + 1 (bewijs in boek) Dit gebruiken we om het 2-complement te berekenen!
Twee-complement voorstelling Vak - hoofdstuk Twee-complement voorstelling Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Als slechts n bits gebruikt worden, dan rn 0 & D* = rn − D Þ D* −D D* kan dus gebruikt worden als binaire voorstelling van −D met n bits Bijv. bij gebruik van 4 bits D = 310 = 00112 D* = 11002 + 00012 = 11012 −D = −310 kan voorgesteld worden als 11012 Afspraak nodig om 11012 te kunnen interpreteren: is het −310 (2-complement) of 1310 (‘unsigned’)? Slechts één voorstelling voor nul: D = 00002 −D D* = 11112 + 00012 = 100002 Een 2-complement getal van n bits kan een waarde van −2n−1 tot en met 2n−1 − 1 hebben
Vergelijking Decimaal 2-complement ‘Sign-magnitude’ −8 1000 − −7 1001 Vak - hoofdstuk Vergelijking Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Decimaal 2-complement ‘Sign-magnitude’ −8 1000 − −7 1001 1111 −6 1010 1110 −5 1011 1101 −4 1100 −3 −2 −1 0000 1000 & 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111
Optelling & aftrekking Vak - hoofdstuk Optelling & aftrekking Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Begin aftrekking Br = B1 + B2’ + 1 Begin optelling Br = B1 + B2 Einde Eenvoudige implementatie, zelfs voor aftrekking: Weinig bewerkingen en geen testen Eenvoudige hardware beschikbaar voor 1-complement (B2’) Geen extra hardware nodig voor “+ 1” (gebruik LSB carry-in)
Optelling & aftrekking Vak - hoofdstuk Optelling & aftrekking 0010 +2 0100 +4 00000 0110 +6 Optelling + Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp 0010 +2 1100 −4 00000 1110 −2 + 1110 −2 1100 −4 11000 1010 −6 + 0010 +2 1011 (+4)’ 00111 1110 −2 Aftrekking + 0010 +2 0011 (−4)’ 00111 0110 +6 + 1110 −2 0011 (−4)’ 11111 0010 +2 + 0111 +7 0110 +6 01100 1101 −3 ‘Overflow’ + 1001 −7 1010 −6 10000 0011 +3 +
Modulus rest bij een deling: Vak - hoofdstuk Modulus Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp rest bij een deling: Als b = 2n dan is dit hetzelfde als de n minstbeduidende bits overhouden: 1110101 mod 1000 = 101 a b a mod b > 0 a rem b < 0 (a rem b) + b a b rem mod 5 3 2 −3 −1 −5 −2 1
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen Negatieve getallen Niet-gehele getallen: vaste/vlottende komma (‘fixed/floating point’) Andere codes Booleaanse algebra Logische poorten Een voorbeeld: FPGA
Getallen met vaste komma Vak - hoofdstuk Getallen met vaste komma Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp fix<i,f>: 1101,010 i = 4, f = 3 puur geheel : f = 0 puur fractioneel : i = 0 # bits na een bewerking fix<i1,f1> + fix<i2,f2> = fix<i,f> i = max(i1,i2) + 1 & f = max(f1,f2) fix<i1,f1> fix<i2,f2> = fix<i,f> i = i1 + i2 & f = f1 + f2
Getallen met vlottende komma Vak - hoofdstuk Getallen met vlottende komma Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp float <f,e> Genormaliseerde fractie: R > mantissa ≥ 1 of 1 > mantissa ≥ 1/R IEEE-formaat: R = 2, bias B = 2e−1 − 1 Enkelvoudige precisie : e = 8, f = 23, B = 127 Dubbele precisie : e = 11, f = 52, B = 1023 mantissa s exp. fractie 1 e f bits niet-genormaliseerde F verborgen bit
Rekenen met vlottende komma Vak - hoofdstuk Rekenen met vlottende komma Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Optelling 0,24101 + 0,99102 Maak exponenten gelijk = 0,02102 + 0,99102 Tel mantissa’s op = 1,01102 Normaliseer = 0,10103 Vermenigvuldiging 0,11101 0,12102 Vermenigvuldig mantissa’s & tel exponenten op = 0,0132103 Normaliseer (hooguit 1 cijfer) = 0,13102
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen Negatieve getallen Niet-gehele getallen Andere codes: BCD, ASCII, ECC, … Booleaanse algebra Logische poorten Een voorbeeld: FPGA
Binary Coded Decimal Decimaal cijfer BCD 0000 1 0001 2 0010 3 0011 4 Vak - hoofdstuk Binary Coded Decimal Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp Decimaal cijfer BCD 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001
American Standard Code for Information Interchange Vak - hoofdstuk American Standard Code for Information Interchange Ontwerppad Digitale data Getallen Binair rekenen Negatieve getallen Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp b3b2b1b0 b6b5b4 000 001 010 011 100 101 110 111 0000 NUL DLE SP @ P ‘ p 0001 SOH DC1 ! 1 A Q a q 0010 STX DC2 ” 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 BEL ETB ’ 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS , < L \ l | 1101 CR GS - = M ] m } 1110 SO RS . > N ^ n ~ 1111 SI US / ? O _ o DEL
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen Logische poorten Een voorbeeld: FPGA
Axiomatische definitie van Booleaanse algebra Vak - hoofdstuk Axiomatische definitie van Booleaanse algebra Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Axioma 1 (‘Closure’): B is gesloten t.o.v. + (OR) x + y B B is gesloten t.o.v. • (AND) x • y (= xy) B Axioma 2 (Eenheidselement) B heeft een eenheidselement voor +, 0 genoemd x + 0 = x B heeft een eenheidselement voor •, 1 genoemd x • 1 = x Axioma 3 (Commutativiteit) B is commutatief t.o.v. + x + y = y + x B is commutatief t.o.v. • x • y = y • x
Axiomatische definitie van Booleaanse algebra Vak - hoofdstuk Axiomatische definitie van Booleaanse algebra Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Axioma 4 (Distributiviteit) • is distributief t.o.v. + x • (y + z) = (x • y) + (x • z) + is distributief t.o.v. • x + (y • z) = (x + y) • (x + z) Axioma 5 (Complementair element : NOT operator) x B, x’ B : x + x’ = 1 en x • x’ = 0 Axioma 6 (‘Cardinality bound’) B heeft minstens twee elementen
Verschil met gewone algebra Vak - hoofdstuk Verschil met gewone algebra Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp In booleaanse algebra bestaat geen inverse bewerking voor de optelling (OR) of de vermenigvuldiging (AND) aftrekking of deling bestaan niet In gewone algebra is + niet distributief t.o.v. × : 5 + (2 × 4) (5 + 2) × (5 + 4) In gewone algebra geldt niet dat x + x’ = 1 en x × x’ = 0
Booleaanse algebra met 2 waarden Vak - hoofdstuk Booleaanse algebra met 2 waarden Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp x x’ 1 NOT-operator AND-operator x y x y 1 OR-operator x y x + y 1 gedefinieerd met waarheidstabellen
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen Logische poorten Een voorbeeld: FPGA
Theorema’s Te bewijzen via Elk theorema heeft een duaal theorema: Vak - hoofdstuk Theorema’s Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Te bewijzen via axioma’s (meerdere malen toepassen) waarheidstabel (mogelijkheden opsommen) Elk theorema heeft een duaal theorema: Vervang elke OR door een AND en vice-versa Vervang elke 0 door 1 en vice-versa Theorema 1: ‘idempotency’ x + x = x Duaal: x • x = x Theorema 2 x + 1 = 1 Duaal: x • 0 = 0
Theorema’s Theorema 3: absorptie Theorema 4: involutie Vak - hoofdstuk Theorema’s y x y x y x + x 1 Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Theorema 3: absorptie (y • x) + x = x Duaal: (y + x) • x = x Theorema 4: involutie (x’)’ = x Theorema 5: associativiteit (x + y) + z = x + (y + z) Duaal: (x • y) • z = x • (y • z) Theorema 6: wet van De Morgan (x + y)’ = x’ • y’ Duaal: (x • y)’ = x’ + y’
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen Logische poorten Een voorbeeld: FPGA
Vak - hoofdstuk Booleaanse functies Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp uitdrukking van binaire variabelen en de bewerkingen AND, OR en NOT Bijv. F1 = xy + xy’z + x’yz F1 = 1 als x = 1 en y = 1 of als x = 1, y = 0 en z = 1 of als x = 0, y = 1 en z = 1; anders F1 = 0 F1 bestaat uit 3 AND-termen en 1 OR-term Prioriteit van bewerkingen: haakjes NOT AND OR
Booleaanse functies Rechtstreekse realisatie Vak - hoofdstuk Booleaanse functies Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Rechtstreekse realisatie binaire variabelen = ingangssignalen bewerking = poort Bijv. F1 = xy + xy’z + x’yz x y z AND OR F1 NOT
Waarheidstabel van een functie Vak - hoofdstuk Waarheidstabel van een functie Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp tabel met de functiewaarde(n) voor alle combinaties van ingangswaarden n (ingangs)variabelen 2n rijen Bijv. F1 = xy + xy’z + x’yz x y z Rij x y z F1 1 2 3 4 5 6 7 1 2 1 3 1 F1 4 1 5 1 6 1 7 1
Waarheidstabel van een functie Vak - hoofdstuk Waarheidstabel van een functie Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Nummering van de rijen Standaard-code: natuurlijke opvolging Gray-code: 2 opeenvolgende rijen verschillen maar in 1 variabele Opmerking: functie verandert niet! x 1 y 1 z 1 F 1 1 1 x 1 y 1 z 1 F 1 1 1
Complementaire functie Vak - hoofdstuk Complementaire functie Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Alternatieve realisatie F1 = (F1’)’ F1’ = (xy + xy’z + x’yz)’ = (xy)’(xy’z)’(x’yz)’ (De Morgan) = (x’ + y’)(x’ + y + z’)(x + y’ + z’) (De Morgan) AND-OR realisatie F1 = xy + xy’z + x’yz OR-AND realisatie F1 = ((x’+y’) (x’+y+z’) (x+y’+z’))’ x y z F1
Algebraïsche manipulatie Vak - hoofdstuk Algebraïsche manipulatie Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp F1 = xy + xy’z + x’yz = xy + xyz + xy’z + x’yz (absorptie) = xy + x(y+y’)z + x’yz (distributiviteit) = xy + x1z + x’yz (complement) = xy + xz + x’yz (identiteit) = xy + xyz + xz + x’yz (absorptie) = xy + xz + (x+x’)yz (distributiviteit) = xy + xz + 1yz (complement) = xy + xz + yz (identiteit) Goedkoper resultaat, maar niet evident welke combinatie van theorema’s hiervoor nodig zijn F1 = xy + xy’z + x’yz x y z F1 F1 = xy + xz + yz
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen Logische poorten Een voorbeeld: FPGA
Vak - hoofdstuk Mintermen Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Een minterm is een Booleaanse functie die waar is voor slechts voor één enkele rij van de waarheidstabel Rij x y z minterm notatie x’y’z’ m0 1 x’y’z m1 2 x’yz’ m2 3 x’yz m3 4 xy’z’ m4 5 xy’z m5 6 xyz’ m6 7 xyz m7
Canonische vorm met mintermen Vak - hoofdstuk Canonische vorm met mintermen Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Een 1-minterm is een minterm waarvoor de functie 1 is; een 0-minterm is een minterm waarvoor de functie 0 is F1 = xy + xy’z + x’yz Rij x y z F1 1-minterm — 1 2 3 m3 = x’yz 4 5 m5 = xy’z 6 m6 = xyz’ 7 m7 = xyz Elke Booleaanse functie kan beschreven worden als de som van zijn 1-mintermen : F1 = x’yz + xy’z + xyz’ + xyz = m3 + m5 + m6 + m7 = (3,5,6,7)
Vak - hoofdstuk Maxtermen Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Een maxterm is een Booleaanse functie die waar is voor alle rijen van de waarheidstabel behalve één Rij x y z maxterm notatie x+y+z M0 1 x+y+z’ M1 2 x+y’+z M2 3 x+y’+z’ M3 4 x’+y+z M4 5 x’+y+z’ M5 6 x’+y’+z M6 7 x’+y’+z’ M7
Canonische vorm met maxtermen Vak - hoofdstuk Canonische vorm met maxtermen Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Een 0-maxterm is een maxterm waarvoor de functie 0 is; een 1-maxterm is een maxterm waarvoor de functie 1 is F1 = xy + xy’z + x’yz Rij x y z F1 0-maxterm M0 = x+y+z 1 M1 = x+y+z’ 2 M2 = x+y’+z 3 — 4 M4 = x’+y+z 5 6 7 Elke Booleaanse functie kan beschreven worden als het product van zijn 0-maxtermen: F1 = (x+y+z)(x+y+z’)(x+y’+z)(x’+y+z) = M0M1M2M4 = (0,1,2,4)
Vak - hoofdstuk Standaard vorm Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp In de canonische vorm is elke functie een som van 1-mintermen of een product van 0-maxtermen Elke minterm of maxterm bevat alle variabelen dure implementatie De standaard vorm is een som van producttermen of een product van somtermen met het kleinst aantal variabelen Een productterm of somterm moet niet altijd alle variabelen bevatten goedkoper qua implementatie
Voorbeelden van standaard vorm Vak - hoofdstuk Voorbeelden van standaard vorm Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp F2 = xyz + xyz’ + xy’z + xy’z’ = xy(z + z’) + xy’(z + z’) = xy + xy’ = x(y + y’) = x F3 = xyz + xyz’ + xy’z + x’yz + x’y’z’ = xyz + xyz’ + xy’z + xyz + xyz + x’yz + x’y’z’ = xy(z + z’) + x(y’ + y)z + (x + x’)yz + x’y’z’ = xy + xz + yz + x’y’z’
Minimale implementatie Vak - hoofdstuk Minimale implementatie Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp De standaard vorm is de goedkoopste implementatie in twee lagen F2 = xy + xz + yz Een niet-standaard vorm met meer dan twee lagen kan goedkoper zijn F2 = x(y + z) + yz x z y F2 x z y F2
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen Logische poorten Een voorbeeld: FPGA
De 16 functies van 2 variabelen Vak - hoofdstuk De 16 functies van 2 variabelen Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp Waarom 16 functies? 2 binaire variabelen 22 = 4 mogelijke ingangscombinaties Elke ingangscombinatie heeft 2 mogelijke functiewaarden (0 en 1) 24 = 16 mogelijke functies x y 1 F0 F1 F2 … F15 1
De 16 functies van 2 variabelen Vak - hoofdstuk De 16 functies van 2 variabelen Naam Symbool Functiewaarde voor x,y Uitdrukking 00 01 10 11 Zero — F0 = 0 AND x·y 1 F1 = xy Inhibition x/y F2 = xy’ Transfer F3 = x y/x F4 = x’y F5 = y XOR xÅy F6 = xy’+x’y OR x+y F7 = x+y NOR x¯y F8 = (x+y)’ XNOR F9 = xy+x’y’ Complement y’ F10 = y’ Implication F11 = x+y’ x’ F12 = x’ F13 = x’+y NAND xy F14 = (xy)’ One F15 = 1 Ontwerppad Digitale data Boole-algebra Axioma's Theorema's Functies Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Implementatietechnologieën Een voorbeeld: FPGA
Logische waarden voorstellen Vak - hoofdstuk Logische waarden voorstellen Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie FPGA-ontwerp Welke fysische waarden worden gebruikt om de twee logische waarden voor te stellen? Een “Low” & een “High” fysisch bereik, Meestal 2 spanningen: VL & VH Andere mogelijkheden: stromen, optische reflectie, druk, … afgebeeld op de logische niveaus L H Positieve logica 1 Negatieve logica
Actief laag signaal het signaal is actief als het ‘0’ is Vak - hoofdstuk Actief laag signaal Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie FPGA-ontwerp het signaal is actief als het ‘0’ is Meestal aangeduid als , X* of X’ “Actief” zijn is een interpretatie van een signaal, niet een niveau! RST* = 0 reset toestel actief laag OR actief hoog AND Waarom actief lage signalen? Afgesloten verbindingen zijn meestal ‘1’ als ze niet aangestuurd (= niet actief) zijn ‘Wired-or’ functionaliteit bij een ‘open-drain’ implementatie (cfr. transparant 2-95) X* Y* F* 1
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Basispoorten (≤ 2 ingangen) Meerdere ingangen Meerdere operatoren Niet-functionele eigenschappen Verbindingen Implementatietechnologieën Een voorbeeld: FPGA
Vak - hoofdstuk Schakelaars Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp Logische poort meestal opgebouwd uit schakelaars met twee standen: Elektrische weerstand: 0 Drukventiel: open gesloten Licht doorlaten: wel niet Werking afhankelijk van stuursignaal L L H H
MOS-transistor als schakelaar Vak - hoofdstuk MOS-transistor als schakelaar Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp NMOS transistor (boek: P-transistor) VGS < VT VGS > VT PMOS transistor (verwissel ‘n’↔‘p’, S↔D) Gate (poort) Isolator Metaal L Source Drain n+ n+ p H Halfgeleider Geleidend pad als VGS > VT VGS > VT noot: VGS & VT < 0 L H
Inverter F = x’ 2 transistoren (afgekort “tors”) Vak - hoofdstuk Inverter Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp F = x’ 2 transistoren (afgekort “tors”) Relatieve vertragingstijd : 1 x = L F = H VCC (H) VSS (L) x F L H x = H F = L H L Opmerking: vanaf nu enkel positieve logica 1 x F
NAND-poort F = (xy)’ 4 transistoren Relatieve vertragingstijd : 1,4 Vak - hoofdstuk NAND-poort Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp F = (xy)’ 4 transistoren Relatieve vertragingstijd : 1,4 VCC VSS x = 0 y = 0 F = 1 x F y y = 1 x = 1 1 1 F = 0 1 1 Opmerking: Dit is een NOR-poort voor negatieve logica!
NOR-poort F = (x + y)’ 4 transistoren Relatieve vertragingstijd : 1,4 Vak - hoofdstuk NOR-poort Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp F = (x + y)’ 4 transistoren Relatieve vertragingstijd : 1,4 VCC VSS x = 0 y = 0 F = 1 y = 1 x F y 1 x = 1 1 F = 0 1 1
Andere basispoorten Buffer of ‘driver’ (meer vermogen) AND-poort Vak - hoofdstuk Andere basispoorten Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp Buffer of ‘driver’ (meer vermogen) F = x = (x’)’ 4 tor; vertraging = 2 AND-poort F = xy = ((xy)’)’ 6 tor; vertraging = 2,4 OR-poort F = x + y = ((x + y)’)’ 6 tor; vertraging = 2,4 XOR-poort F = x y = xy’ + x’y = ((x + y’) (x’ + y))’ 12 tor (cfr. OAI); vertraging = 3,2 XNOR-poort F = (x y)’ = xy + x’y’ = ((x + y)(x’ + y’))’ 12 tor (cfr. OAI); vertraging = 3,2 x F x F y x F y x F y x F y
Waarom enkel inverterende basispoorten? Vak - hoofdstuk Waarom enkel inverterende basispoorten? Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp Buffer NMOS transistor is een slechte pull-up slechts geleidend als VGS > VT uitgangsspanning daalt met VT na elke tor NMOS enkel in onderste tak (= kan enkel goed L doorgeven) PMOS transistor is een slechte pull-down PMOS enkel in bovenste tak (= kan enkel goed H doorgeven) H VT L ≥−VT
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Basispoorten Meerdere ingangen (fan-in) Meerdere operatoren Niet-functionele eigenschappen Verbindingen Implementatietechnologieën Een voorbeeld: FPGA
Meerdere ingangen (fan-in) Vak - hoofdstuk Meerdere ingangen (fan-in) VCC Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp F = 1 als x = 0 of y = 0 of z = 0 F = x’ + y’ + z’ = (xyz)’ Om kortsluiting te vermijden kan deze blok enkel geleiden als de bovenste niet geleidt: PDN = PUN’ PDN PUN x y z x F y F z z y x 3-input NAND : F = (xyz)’ 6 transistoren Relatieve vertragingstijd : 1,8 VSS
Relatieve kostprijs & vertraging Vak - hoofdstuk Relatieve kostprijs & vertraging Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp Relatief t.o.v. inverter (2 transistoren) Kostprijs Inverterende poort (INV, NAND, NOR) fan-in (aantal ingangen) Niet-inverterende poort (AND, OR) fan-in + 1 Vertraging 0,6 + fan-in × 0,4 1,6 + fan-in × 0,4
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Basispoorten Meerdere ingangen Meerdere operatoren Niet-functionele eigenschappen Verbindingen Implementatietechnologieën Een voorbeeld: FPGA
Meerdere operatoren in 1 poort: 2-wide 2-input AND-OR-Invert Vak - hoofdstuk Meerdere operatoren in 1 poort: 2-wide 2-input AND-OR-Invert VCC Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp F = 0 als ( x = 1 en y = 1 ) of ( z = 1 en w = 1 ) z w y x w z F x y F y w 2-wide 2-input AOI F = (xy + zw)’ 8 transistoren Relatieve vertragingstijd : 2,2 x z VSS
Meerdere operatoren in 1 poort : 2-wide 2-input OR-AND-Invert Vak - hoofdstuk Meerdere operatoren in 1 poort : 2-wide 2-input OR-AND-Invert VCC Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten Niet-functioneel Verbindingen Technologie FPGA-ontwerp F = 0 als ( x = 1 of y = 1 ) en ( z = 1 of w = 1 ) y w y x w z F x z F z w 2-wide 2-input OAI F = ((x + y) (z + w))’ 8 transistoren Relatieve vertragingstijd : 2,2 x y VSS
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Spanningsniveaus Tijdsgedrag Fan-out Vermogenverbruik Verbindingen Implementatietechnologieën Een voorbeeld: FPGA
Spanningsniveaus Logisch niveau spanningsgebied Voordeel: Vak - hoofdstuk Spanningsniveaus Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Logisch niveau spanningsgebied Voordeel: minder gevoelig aan procesvariaties, die de karakteristieken van componenten veranderen minder gevoelig aan omgevingsvariaties, zoals temperatuur, voedingsspanning, … Logisch niveau Spanningsgebied TTL van tot L VSS VIL 0 V 0,8 V H VIH VCC 2 V 5 V
Vak - hoofdstuk Ruismarge Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp spanningsmarge beschikbaar door een kleiner gebied van uitgangsspanningen te gebruiken dan toegelaten TTL 0 V 5 V 0,4 V 2,4 V 0,8 V 2 V Uitgang Ingang VCC VCC H H VOH marge VIH VIL marge L VOL L VSS VSS
Onlogische spanningen Vak - hoofdstuk Onlogische spanningen Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Tijdens de verandering van logisch niveau ontstaan spanningen die niet met een logisch niveau overeenkomen! Bijv. TTL-inverter Vuit VT ideaal 5 Transferfunctie afhankelijk van productieproces omgevingsfactoren H 2,4 0,4 L 0,8 2 5 Vin L H
Schmitt-trigger-ingangen Vak - hoofdstuk Schmitt-trigger-ingangen Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Bijkomende problemen voor trage signalen Schmitt-trigger-ingangen hebben een hysteresis Vin VT+ VT− VT Vout VT Vin H L t Vout t H L VT+ VT− Vout Vin H L t H L Vout
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Spanningsniveaus Tijdsgedrag Fan-out Vermogenverbruik Verbindingen Implementatietechnologieën Een voorbeeld: FPGA
Effect capacitieve belasting Vak - hoofdstuk Effect capacitieve belasting Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp L H overgang H L overgang Vcc C ROH RIH C ROL RIL
Effect capacitieve belasting Vak - hoofdstuk Effect capacitieve belasting Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Snelle overgangen als uitgangsimpedantie RO zo klein mogelijk grote stromen groot vermogenverbruik C (van draad & ingang) zo klein mogelijk vermijdt lange verbindingen ingangsimpedantie RI zo groot mogelijk Daarom RTL-technologie niet populair vervang bovenste blok transistoren (PUN) door een weerstand R beperk vermogenverbruik RO = R redelijk groot grote stijgtijden R Vcc x = 0 F = 1 x = 1 F = 0
Vertragingstijd Stijgtijd Daaltijd 90% of VIH 50% VT 90% 50% 10% tPHL Vak - hoofdstuk Vertragingstijd Stijgtijd Daaltijd Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp 90% of VIH 50% VT 90% 50% 10% tPHL tPLH Vertragingstijd: tP = (tPLH + tPHL)/2 10% VIL
Vak - hoofdstuk Vertragingstijd Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Wordt beïnvloed door de stijg/daaltijd en dus door de capacitieve belasting in in tPLH tPLH uit uit kleine stijgtijd grote stijgtijd
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Spanningsniveaus Tijdsgedrag Fan-out Vermogenverbruik Verbindingen Implementatietechnologieën Een voorbeeld: FPGA
Fan-out = min(IOH/IIH, IOL/IIL) Vak - hoofdstuk Fan-out Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp maximum aantal ingangen die aan één uitgang kunnen gekoppeld worden ‘Stroomgedreven’ technologieën (TTL, ECL, ...) Fan-out = min(IOH/IIH, IOL/IIL) IOH IIH IOL IIL
Fan-out ‘Ladinggedreven’ technologieën (CMOS) Vak - hoofdstuk Fan-out Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp ‘Ladinggedreven’ technologieën (CMOS) II ≈ 0 IO gebruiken voor op/ontladen C fan-out × ingangscapaciteit capaciteit verbindingen fan-out bepaalt maximale schakelfrequentie I = C dV/dt = C f DV f = I/(C DV) bijv. voor Xilinx Virtex: 10 pF ingangscapaciteit, IOmax = 20 mA, 0,8 pF/cm PCB, Vcc = 3,3 V Voor fan-out = 3 & 10 cm PCB-draden: C = 3 10 + 0,8 10 = 38 pF schakelfrequentie = I/(C DV) = 20 mA/(38 pF 3,3 V) = 160 MHz
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Spanningsniveaus Tijdsgedrag Fan-out Vermogenverbruik Verbindingen Implementatietechnologieën Een voorbeeld: FPGA
Vermogenverbruik Verbruikte vermogen moet worden Vak - hoofdstuk Vermogenverbruik Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Spanningen Tijdsgedrag Fan-out Vermogen Verbindingen Technologie FPGA-ontwerp Verbruikte vermogen moet worden geleverd : kostprijs energie, levensduur batterijen gedissipeerd : warmte moet afgevoerd worden TTL verbruikt voortdurend vermogen P = VCC ICC 10mW/poort 1 miljoen poorten: 10 KW! Gebruikt bij hoge spanningen/stromen (bussen, …) CMOS verbruikt enkel bij het schakelen P = C f V2 vermits I = C f V trend: sterke stijging (cfr. transparant 2-7) Virtex: P = 38 pF 160 MHz (3,3 V)2 = 66 mW/pin; als de helft van de 200 pinnen gelijktijdig schakelen is er 6,6 W nodig voor de externe pinnen Microprocessoren: 40W koeling! Nu een van de belangrijkste ontwerpbeperkingen!
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Bus als poort Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Busverbinding Verbinding als poort Implementatietechnologieën Een voorbeeld: FPGA
Types verbindingen Traditioneel: 1 aansturing van verbinding Vak - hoofdstuk Types verbindingen Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Bus als poort Technologie FPGA-ontwerp Traditioneel: 1 aansturing van verbinding Meerdere aansturingen mogelijk = bus(verbinding) Slechts 1 aansturing tegelijkertijd! 3-state buffers gebruiken
‘Tri-state’ derde mogelijkheid, naast 0 en 1 Vak - hoofdstuk ‘Tri-state’ Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Bus als poort Technologie FPGA-ontwerp derde mogelijkheid, naast 0 en 1 Z (“hoog-impedant” of “zwevend”) = aan niets verbonden Een 3-state buffer laat toe om de uitgang los te koppelen van zijn aansturing Een implementatie: E Uit Z 1 In In Uit E Uit Vcc Vss E In In Uit E
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Bus als poort Technologie FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Busverbinding Verbinding als poort (‘wired logic’) Implementatietechnologieën Een voorbeeld: FPGA
‘Open-drain/collector’ uitgang Vak - hoofdstuk ‘Open-drain/collector’ uitgang Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Bus als poort Technologie FPGA-ontwerp Maak R van RTL extern Eigenschappen: Slechte stijgtijd Uitgangen verbinden geeft geen kortsluiting bussen ‘Wired logic’ (cfr. infra) Vcc In Uit Vcc In Uit Vcc Vcc
‘Wired logic’ Wired-AND : verbinding van open-drain uitgangen Vak - hoofdstuk ‘Wired logic’ Vcc Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Bus als poort Technologie FPGA-ontwerp Wired-AND : verbinding van open-drain uitgangen Wired-OR : voor actief lage signalen actief lage OR actief hoge AND R A B A’ B’ F 1 A’ A 1 F 1 1 B’ B A F B effect van bedrading
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Implementatietechnologieën Integratieniveau Maatwerk & standaard cellen ‘Gate array’ ‘Field programmable design’ Een voorbeeld: FPGA
Integratieniveau SSI: Small Scale Integration Vak - hoofdstuk Integratieniveau Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp SSI: Small Scale Integration < 10 poorten per verpakking poorten direct verbonden aan pinnen ontwerp op transistorniveau gebruikt in ontwerpen op poortniveau MSI: Medium Scale Integration 10 – 100 poorten per verpakking registers, optellers, pariteitsgeneratoren, … ontwerp op poortniveau gebruikt in ontwerpen op ‘Register Transfer Level’ (RTL) LSI: Large Scale Integration 100 – 10K poorten per verpakking controllers, datapaden ontwerp op RTL-niveau gebruikt in ontwerpen op gedragsniveau
Integratieniveau VLSI: Very Large Scale Integration Vak - hoofdstuk Integratieniveau Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp VLSI: Very Large Scale Integration 10K – 1M poorten per verpakking geheugen, microprocessor, microcontroller, FFT ontwerp op gedragsniveau gebruikt in ontwerpen op systeemniveau ULSI: Ultra Large Scale Integration ? > 1M poorten per verpakking 2 μcontrollers, 20 DSP-processoren, 16 Mbyte geheugen, 10 hardware-versnellers, 1 Mgate FPGA, analoge interface, RF, … ontwerp op systeemniveau slechts 1 chip voor volledige toepassingen
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Implementatietechnologieën Integratieniveau Maatwerk & standaard cellen ‘Gate array’ ‘Field programmable design’ Een voorbeeld: FPGA
Maatwerk (‘custom design’) Vak - hoofdstuk Maatwerk (‘custom design’) Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp elke transistor en elke verbinding wordt afzonderlijk ontworpen als een set rechthoeken (chipoppervlakte) Ideaal voor optimaal ontwerp van componenten uit een bibliotheek, die dikwijls kunnen herbruikt worden Moet volledig herontworpen worden bij elke technologiewijziging (alle 18 maanden!)
Standaard-cel ontwerp Vak - hoofdstuk Standaard-cel ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Bibliotheek van standaard cellen elke cel is een poort standaard hoogte, variabele breedte, afgewisseld met ruimte voor bedrading (‘routing channels’) alle ingangen bovenaan, alle uitgangen onderaan Sneller ontwerp van complexere bouwblokken Cellen ontworpen door chipfabrikanten, geoptimaliseerd voor hun procestechnologie Allocatie componenten (‘placement’) Allocatie bedrading (‘routing’)
Standaard-cel ontwerpstappen Vak - hoofdstuk Standaard-cel ontwerpstappen Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Schema Ingave ontwerp Simulatie ‘Placement’ Implementatie ‘Routing’ Simulatie tijdsgedrag Productie: n maskers Realisatie Testen
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Implementatietechnologieën Integratieniveau Maatwerk & standaard cellen ‘Gate array’ ‘Field programmable design’ Een voorbeeld: FPGA
Vak - hoofdstuk Gate array Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Tweedimensionaal rooster van identieke poorten (‘sea of gates’) elke cel is bijv. een 3-input NAND-poort standaard hoogte, afgewisseld met ruimte voor bedrading alle ingangen bovenaan, alle uitgangen onderaan Goedkoper dan standaard cellen Alleen de laatste metallisatielaag (voor de verbindingen) is eigen aan een project
Gate array ontwerpstappen Vak - hoofdstuk Gate array ontwerpstappen Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Ingave ontwerp Simulatie ‘Technology mapping’ beeld alle functies af op beschikbare 3-input NAND’s ‘Placement’ ‘Routing’ Simulatie tijdsgedrag Productie: 1 masker Testen
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Implementatietechnologieën Integratieniveau Maatwerk & standaard cellen ‘Gate array’ ‘Field programmable design’ Een voorbeeld: FPGA
Field programmable design Vak - hoofdstuk Field programmable design Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Gebruik makend van zekeringen (PLA, PLD) Doorbranden zekering verbreekt verbinding irreversibel; slechts bijprogrammeren mogelijk EE- en flash-programmeerbaar (CPLD) Verbindingen zijn transistoren waarvan het poortniveau opgeladen kan worden herprogrammeren mogelijk, maar traag en slechts een beperkt aantal keren Gebruik makend van SRAM (FPGA) Verbindingen zijn transistoren waarvan het poortniveau in een RAM-geheugen opgeslagen wordt herprogrammeren vlot mogelijk: (statische of dynamische) herconfiguratie mogelijk telkens herladen na aanleggen voedingsspanning Toepassingen: Voor prototypes & medium volumes (<100K stukken/jaar) 10 k logische cellen (> 5 M poorten) @ 400 MHz (in 2004)
PLA: Programmable Logic Array Vak - hoofdstuk PLA: Programmable Logic Array Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Programmeerbare AND-matrix & OR-matrix Afgeleiden (sneller & betrouwbaarder) PAL : vaste OR-matrix PROM : vaste AND-matrix (adresdecoder) Ingangen Uitgangen x Ingangen Uitgangen = AND-matrix OR-matrix x
PLD: Programmable Logic Device Vak - hoofdstuk PLD: Programmable Logic Device Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Uitgebreide macro-cellen : extra logica/flip-flops aan de uitgangen D D
CPLD: Complexe PLD O I/O I/O O PLD PLD Schakelmatrix PLD PLD O I/O I/O Vak - hoofdstuk CPLD: Complexe PLD Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp O I/O I/O O PLD PLD Schakelmatrix PLD PLD O I/O I/O O
Field Programmable Gate Array Vak - hoofdstuk Field Programmable Gate Array Schakelmatrices Directe verbindingen tussen naburige blokken Lange lijnen Globale kloklijnen Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp I/O SM CLB
FPGA: extra specifieke hardware Vak - hoofdstuk FPGA: extra specifieke hardware Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Spartan-3 (labo) klokgeneratie geheugen vermenig- vuldiger Andere moderne FPGA’s specifieke transceivers of voor hoge snelheid (bijv. Ethernet, 10 Gbit/s + CRC) DSP-functies (bijv. MAC) microprocessoren (bijv. 32 bit PowerPC met specifieke interface voor hardware-versnellers)
FPGA Configurable Logic Block Vak - hoofdstuk FPGA Configurable Logic Block 16x1 LUT: Booleaanse functie van 4 variabelen FF G GQ F FQ Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Look-Up Table opzoektabel voor booleaanse functie bruikbaar als 32-bit SRAM
Spartan-3 CLB 1 Spartan-3 CLB = 4 “slices” Vak - hoofdstuk Spartan-3 CLB Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp 1 Spartan-3 CLB = 4 “slices” 1 slice komt overeen met wat in de rest van de cursus 1 CLB genoemd wordt! Enkel linkse slices kunnen als RAM of schuifregister gebruikt worden
Spartan-3 CLB Slice Standaard logica Extra logica Vak - hoofdstuk Spartan-3 CLB Slice Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Standaard logica 2 × f(4 vars) ev. met 2 × FF 1 × f(5 vars) ev. met FF via F5MUX Extra logica carry logica (incl. AND en XOR) multiplexers 2 × 16 bit gedistribueerde RAM 2 × 16 bit schuifregister
FPGA Switching Matrix element Vak - hoofdstuk FPGA Switching Matrix element Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp Vcc ‘Pass’-transistor
SM programmering Ontwerppad Digitale data Boole-algebra Vak - hoofdstuk SM programmering Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Niet-functioneel Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp
Digitaal ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Vak - hoofdstuk Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Een voorbeeld: FPGA Xilinx ISE-omgeving, gebruikt in labozittingen
Xilinx ISE-omgeving inhoud bestanden of resultaat actie Vak - hoofdstuk Xilinx ISE-omgeving Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp inhoud bestanden of resultaat actie bestanden van het project mogelijke acties op het bestand output acties
FPGA ontwerpstappen Ingave ontwerp Functionele simulatie Vak - hoofdstuk FPGA ontwerpstappen Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp Ingave ontwerp Functionele simulatie Technology mapping Placement Routing Simulatie tijdsgedrag Downloading Testen
Ingave ontwerp op hiërarchische wijze Vak - hoofdstuk Ingave ontwerp op hiërarchische wijze Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp specifieke FPGA-hardware toestands-diagramma VHDL-beschrijving LogiCORE subschema
FPGA ontwerpstappen Ingave ontwerp Functionele simulatie Vak - hoofdstuk FPGA ontwerpstappen Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp Ingave ontwerp Functionele simulatie Technology mapping Placement Routing Simulatie tijdsgedrag Downloading Testen
FPGA ontwerpstappen beeld alle functies af op de CLB’s Ingave ontwerp Vak - hoofdstuk FPGA ontwerpstappen Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp Ingave ontwerp Functionele simulatie Technology mapping beeld alle functies af op de CLB’s Placement Routing Simulatie tijdsgedrag Downloading Testen
FPGA mapping, placement & routing Vak - hoofdstuk FPGA mapping, placement & routing Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp synthese van (V)HDL tot een netlijst vertaal naar logische primitieven afbeelding op FPGA-elementen placement & routing genereer aangepaste tijdsinformatie
FPGA ontwerpstappen Ingave ontwerp Functionele simulatie Vak - hoofdstuk FPGA ontwerpstappen Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp Ingave ontwerp Functionele simulatie Technology mapping Placement Routing Simulatie tijdsgedrag Downloading Testen
FPGA ontwerpstappen Ingave ontwerp Functionele simulatie Vak - hoofdstuk FPGA ontwerpstappen Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp Ingave ontwerp Functionele simulatie Technology mapping Placement Routing Simulatie tijdsgedrag Downloading Testen
Testen op een FPGA hardware-bord Vak - hoofdstuk Testen op een FPGA hardware-bord Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp download-connector FPGA UitgangsLED’s Ingangsschakelaars