2-1 H01L1 06–07 Inhoudstafel Digitaal ontwerp Inleiding De KATHOLIEKE UNIVERSITEIT basis van digitaal ontwerp Combinatorische schakelingen Sequentiële schakelingen Niet-programmeerbare processoren Programmeerbare processoren Hardware-beschrijvingstalen 2-2 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-3 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp in grote lijnen Ontwerppad • Specificatie Specificatie • Synthese • Bibliotheek • Analyse Bibliotheek Digitale data Synthese Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Documentatie Analyse Documentatie handleiding gebruikers handleiding hersteller documentatie voor verdere ontwikkelingen 2-4 H01L1 06–07 Specificatie Digitaal ontwerp Ontwerppad Specificatie • Synthese • Bibliotheek • Analyse = beschrijf de functionaliteit, inclusief de ‘interface’ (interactie met de omgeving) Bibliotheek Boole-algebra Logische poorten Synthese Beschrijving in de natuurlijke taal dikwijls niet eenduidig met een blokschema Digitale data FPGA-ontwerp Specificatie Analyse Dikwijls een onvolledige beschrijving Niet altijd duidelijk wat mogelijk is en wat niet Wordt vervolledigd/aangevuld later in het ontwerpproces KATHOLIEKE UNIVERSITEIT Maakt dikwijls reeds implementatiebeslissingen die onnodige beperkingen opleggen aan het ontwerp 2-5 H01L1 06–07 Digitaal ontwerp Ontwerppad • Specificatie Synthese • Bibliotheek • Analyse Digitale data Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Synthese = vertaling van een specificatie op een hoog abstractieniveau naar Bibliotheek een lager niveau, waarbij beslissingen i.v.m. de implementatie genomen worden: x+y 16-bit ripple-carry adder & 2 registers Verschillende niveaus: Specificatie Synthese Analyse 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) 2-6 H01L1 06–07 Bibliotheek van componenten Digitaal ontwerp Ontwerppad • Specificatie Hergebruik componenten economisch zeer belangrijk Bibliotheek Ontbrekende componenten kopen/ontwerpen • Synthese Bibliotheek • Analyse Digitale data Boole-algebra Logische poorten Specificatie Op de verschillende niveaus: FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Ontwerpen evolueren (geen revolutie): Synthese Analyse 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) 2-7 H01L1 06–07 Analyse van het ontwerp Digitaal ontwerp Ontwerppad • Specificatie • Synthese • Bibliotheek Analyse Digitale data Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT = test of het ontwerp voldoet aan zijn specificaties Na elke synthesestap! Wat wordt getest? Specificatie Bibliotheek Synthese Analyse 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? 2-8 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen Negatieve getallen Niet-gehele getallen Andere codes • Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-9 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Getallen • Binair rekenen • Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Getallen digitaal voorstellen MSB Dr dm1 d0 , d1 LSB dn D m1 i d r i i n radix r (10 voor decimale notatie) cijfer di D r i mod r (0 di r) iteratief : I0 D ; F0 D I0 di Ii mod r ; Ii 1 Ii r d i Fi 1 r ; Fi Fi 1 r d i 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 2-10 H01L1 06–07 Andere radixen Digitaal ontwerp Ontwerppad Digitale data 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 Getallen • Binair rekenen • Negatieve getallen • Niet-gehele getallen 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 • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Binair : r = 2, di = 0..1 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 2-11 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Getallen • Binair rekenen • Negatieve getallen • Niet-gehele getallen Radix-conversie : r1 r2 Als r1 = r0p en r2 = r0q q cijfers (r1) pq cijfers (r0) p cijfers (r2) bijv. hex (r1 = 24) octaal (r2 = 23) 988B16 1001|1000|1000|1011 = 1|001|100|010|001|011 1142138 • Andere codes Boole-algebra Logische poorten FPGA-ontwerp Anders bepaal het getal D van de voorstelling Dr , 1 KATHOLIEKE UNIVERSITEIT bepaal de cijfers van D voor r2 2-12 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data • Getallen Binair rekenen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen: + − × ÷ Negatieve getallen Niet-gehele getallen Andere codes • Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-13 H01L1 06–07 Binaire optelling & aftrekking Digitaal ontwerp Ontwerppad Digitale data Decimale optelling overdracht • Getallen Binair rekenen • Negatieve getallen • Niet-gehele getallen 010 x 8273 y 562 som 8835 Engelse benaming: • overdracht = carry • lenen = borrow • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Binaire optelling overdracht 0011111 Binaire aftrekking lenen 1110 x 10011011 x 11101 y 1010111 y 1111 som 11110010 resultaat 01110 2-14 H01L1 06–07 Binaire vermenigvuldiging Digitaal ontwerp Ontwerppad 10110 Digitale data × • Getallen 101 Binair rekenen 10110 • Negatieve getallen 00000 • Niet-gehele getallen 10110 • Andere codes 1101110 Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Vermenigvuldiging via herhaalde optelling & schuifoperatie: # cycli = # bits van vermenigvuldiger Er bestaan snellere implementaties 2-15 H01L1 06–07 Binaire deling Digitaal ontwerp Ontwerppad 10111010 Digitale data • Getallen 1110 Binair rekenen 1001010 • Negatieve getallen 1101 1110 10010 • Niet-gehele getallen 0000 • Andere codes 10010 Boole-algebra 1110 Logische poorten 100 FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 1110 Deling via herhaalde aftrekking & schuifoperatie: # cycli = # bits van het resultaat Meestal deze implementatie 2-16 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen Negatieve getallen Niet-gehele getallen Andere codes Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-17 H01L1 06–07 ‘Sign-Magnitude’-voorstelling Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen Decimaal voorbeeld: +12310 en −12310 Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Elk getal bestaat uit twee delen: een teken & een grootte 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 2-18 H01L1 06–07 Optelling & aftrekking Digitaal ontwerp Begin aftrekking Ontwerppad Digitale data Begin optelling • Getallen • Binair rekenen Negatieve getallen • Niet-gehele getallen s2 = s2’ Vele testen traag & duur weinig gebruikt neen • Andere codes neen m1 = m 2 s1 = s 2 ja ja Boole-algebra Logische poorten neen m1 > m 2 ja FPGA-ontwerp mr = m 2 − m 1 sr = s 2 KATHOLIEKE UNIVERSITEIT mr = m 1 − m 2 sr = s 1 mr = 0 sr = 0 Einde mr = m 1 + m 2 sr = s 1 2-19 H01L1 06–07 Twee-complement voorstelling Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen het 9-complement van 12310 is 87610 het 1-complement van 11012 is 00102 Negatieve getallen • Niet-gehele getallen 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 • Andere codes Boole-algebra 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 Logische poorten FPGA-ontwerp D* = D’ + 1 (bewijs in boek) Dit gebruiken we om het 2-complement te berekenen! KATHOLIEKE UNIVERSITEIT 2-20 H01L1 06–07 Twee-complement voorstelling Digitaal ontwerp Ontwerppad Digitale data 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 • Getallen • Binair rekenen Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 2-21 H01L1 06–07 Vergelijking Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Decimaal −8 −7 −6 −5 −4 −3 −2 −1 0 1 2 3 4 5 6 7 2-complement 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 ‘Sign-magnitude’ − 1111 1110 1101 1100 1011 1010 1001 1000 & 0000 0001 0010 0011 0100 0101 0110 0111 2-22 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Optelling & aftrekking Begin aftrekking Begin optelling Br = B1 + B2’ + 1 Br = B 1 + B 2 • Getallen • Binair rekenen Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten Einde FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 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) 2-23 H01L1 06–07 Optelling & aftrekking Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp Optelling 0010 +2 0100 +4 + 00000 0110 +6 0010 +2 1100 −4 + 00000 1110 −2 1110 −2 1100 −4 + 11000 1010 −6 0010 +2 0011 (−4)’ + 00111 0110 +6 1110 −2 0011 (−4)’ + 11111 0010 +2 Aftrekking 0010 +2 1011 (+4)’ + 00111 1110 −2 ‘Overflow’ KATHOLIEKE UNIVERSITEIT 0111 +7 0110 +6 + 01100 1101 −3 1001 −7 1010 −6 + 10000 0011 +3 2-24 H01L1 06–07 Modulus Digitaal ontwerp Ontwerppad Digitale data = rest bij een deling: a rem b a a / b b • Getallen • Binair rekenen Negatieve getallen • Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp a >0 b >0 a mod b a rem b >0 <0 <0 <0 >0 <0 (a rem b) + b (a rem b) + b a rem b KATHOLIEKE UNIVERSITEIT a 5 b rem mod 3 2 2 5 −3 −5 3 −5 −3 2 −2 −2 Als b = 2n dan is dit hetzelfde als de n minstbeduidende bits overhouden: 1110101 mod 1000 = 101 −1 1 −2 2-25 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen Negatieve getallen Niet-gehele getallen: vaste/vlottende komma (‘fixed/floating point’) Andere codes • Negatieve getallen Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-26 H01L1 06–07 Getallen met vaste komma Digitaal ontwerp Ontwerppad Digitale data puur geheel :f=0 puur fractioneel : i = 0 • 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 # bits na een bewerking fix<i1,f1> + fix<i2,f2> = fix<i,f> i = max(i1,i2) + 1 & f = max(f1,f2) bijv. n fix<i , f > 1 1 i i1 log2 n & f f1 fix<i1,f1> fix<i2,f2> = fix<i,f> i = i1 + i2 & f = f1 + f2 KATHOLIEKE UNIVERSITEIT bijv. n fix<i , f > 1 1 i n i1 & f n f1 2-27 H01L1 06–07 Getallen met vlottende komma Digitaal ontwerp Ontwerppad Digitale data s exp. 1 e • Getallen • Binair rekenen • Negatieve getallen Niet-gehele getallen • Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT float <f,e> mantissa fractie f N 1 0, F R E s bits 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 E 0 0 E 2e 1 E 2e 1 F 0 0 F 0 1 0, F 2 B1 s 1s 1, F 2E B s 1 1, F 2E B niet-genormaliseerde F 1s NaN verborgen bit 2-28 H01L1 06–07 Rekenen met vlottende komma Digitaal ontwerp Ontwerppad Digitale data • Getallen • Negatieve getallen Niet-gehele getallen • Andere codes Logische poorten FPGA-ontwerp 0,24101 + 0,99102 Maak exponenten gelijk = 0,02102 + 0,99102 • Binair rekenen Boole-algebra Optelling Tel mantissa’s op = 1,01102 Normaliseer = 0,10103 Vermenigvuldiging 0,11101 0,12102 Vermenigvuldig mantissa’s & tel exponenten op Normaliseer (hooguit 1 cijfer) KATHOLIEKE UNIVERSITEIT = 0,0132103 = 0,13102 2-29 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen Gegevensvoorstelling Getallen digitaal voorstellen Rekenen met binaire natuurlijke getallen Negatieve getallen Niet-gehele getallen Andere codes: BCD, ASCII, ECC, … • Negatieve getallen • Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-30 H01L1 06–07 Digitaal ontwerp Binary Coded Decimal Ontwerppad Decimaal cijfer BCD • Getallen 0 0000 • Binair rekenen 1 0001 2 0010 3 0011 Andere codes 4 0100 Boole-algebra 5 0101 Logische poorten 6 0110 FPGA-ontwerp 7 0111 8 1000 9 1001 Digitale data • Negatieve getallen • Niet-gehele getallen KATHOLIEKE UNIVERSITEIT 2-31 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data • Getallen • Binair rekenen • Negatieve getallen • Niet-gehele getallen Andere codes Boole-algebra Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT American Standard Code for Information Interchange b3b2b1b0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 000 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 001 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 010 SP ! ” # $ % & ’ ( ) * + , . / b6b5b4 011 100 0 @ 1 A 2 B 3 C 4 D 5 E 6 F 7 G 8 H 9 I : J ; K < L = M > N ? O 101 P Q R S T U V W X Y Z [ \ ] ^ _ 110 ‘ a b c d e f g h i j k l m n o 111 p q r s t u v w x y z { | } ~ DEL 2-32 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's • Functies Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen • Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT algebra Logische poorten Een voorbeeld: FPGA 2-33 Axiomatische definitie van Booleaanse algebra H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data B is gesloten t.o.v. + (OR) B is gesloten t.o.v. • (AND) Boole-algebra Axioma's • Theorema's • Functies Axioma 1 (‘Closure’): Axioma 2 (Eenheidselement) B heeft een eenheidselement voor +, 0 genoemd x+0=x B heeft een eenheidselement voor •, 1 genoemd x•1=x • Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp Axioma 3 (Commutativiteit) B is commutatief t.o.v. + B is commutatief t.o.v. • KATHOLIEKE UNIVERSITEIT x+yB x • y (= xy) B x+y=y+x x•y=y•x 2-34 Axiomatische definitie van Booleaanse algebra H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data • is distributief t.o.v. + x • (y + z) = (x • y) + (x • z) + is distributief t.o.v. • x + (y • z) = (x + y) • (x + z) Boole-algebra Axioma's • Theorema's • Functies • Canonische & standaard vorm • 16 functies Axioma 4 (Distributiviteit) Logische poorten FPGA-ontwerp 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 KATHOLIEKE UNIVERSITEIT 2-35 H01L1 06–07 Verschil met gewone algebra Digitaal ontwerp Ontwerppad Digitale data 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 Boole-algebra Axioma's • Theorema's • Functies • Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 2-36 H01L1 06–07 Digitaal ontwerp Booleaanse algebra met 2 waarden Ontwerppad Digitale data Boole-algebra NOT-operator Axioma's • Theorema's x x’ 0 1 1 0 • Functies • Canonische & standaard vorm • 16 functies AND-operator OR-operator Logische poorten x y xy x y x+y FPGA-ontwerp 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 KATHOLIEKE UNIVERSITEIT gedefinieerd met waarheidstabellen 2-37 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's Theorema's • Functies Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen • Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT algebra Logische poorten Een voorbeeld: FPGA 2-38 H01L1 06–07 Theorema’s Digitaal ontwerp Ontwerppad Digitale data axioma’s (meerdere malen toepassen) waarheidstabel (mogelijkheden opsommen) Boole-algebra • Axioma's Theorema's • Functies • 16 functies FPGA-ontwerp Theorema 1: ‘idempotency’ x + x = x Duaal: x • x = x KATHOLIEKE UNIVERSITEIT Elk theorema heeft een duaal theorema: Vervang elke OR door een AND en vice-versa Vervang elke 0 door 1 en vice-versa • Canonische & standaard vorm Logische poorten Te bewijzen via Theorema 2 x + 1 = 1 Duaal: x • 0 = 0 2-39 H01L1 06–07 Theorema’s Digitaal ontwerp Ontwerppad Digitale data (y • x) + x = x Duaal: (y + x) • x = x Boole-algebra • Axioma's Theorema's • Functies • Canonische & standaard vorm FPGA-ontwerp 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 1 Theorema 5: associativiteit (x + y) + z = x + (y + z) Duaal: (x • y) • z = x • (y • z) KATHOLIEKE UNIVERSITEIT Theorema 4: involutie x yx yx+x (x’)’ = x • 16 functies Logische poorten Theorema 3: absorptie y Theorema 6: wet van De Morgan (x + y)’ = x’ • y’ Duaal: (x • y)’ = x’ + y’ 2-40 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's Functies Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen • Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT algebra Logische poorten Een voorbeeld: FPGA 2-41 H01L1 06–07 Booleaanse functies Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's = 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 Functies • Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Prioriteit van bewerkingen: haakjes NOT AND OR 2-42 H01L1 06–07 Booleaanse functies Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's Functies • Canonische & standaard vorm • 16 functies Logische poorten Rechtstreekse realisatie binaire variabelen = ingangssignalen bewerking = poort Bijv. F1 = xy + xy’z + x’yz x y z AND OR FPGA-ontwerp F1 NOT KATHOLIEKE UNIVERSITEIT 2-43 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's Functies • Canonische & standaard vorm • 16 functies Waarheidstabel van een functie = 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 Logische poorten FPGA-ontwerp F1 KATHOLIEKE UNIVERSITEIT Rij 0 1 2 3 4 5 6 7 x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 F1 0 0 0 1 0 1 1 1 2-44 H01L1 06–07 Waarheidstabel van een functie Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's Nummering van de rijen Standaard-code: natuurlijke opvolging • Theorema's Functies • Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Gray-code: 2 opeenvolgende rijen verschillen maar in 1 variabele Opmerking: functie verandert niet! x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 F 0 0 0 1 0 1 1 1 x 0 0 0 0 1 1 1 1 y 0 0 1 1 1 1 0 0 z 0 1 1 0 0 1 1 0 F 0 0 1 0 1 1 1 0 2-45 H01L1 06–07 Complementaire functie Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's Functies • Canonische & standaard vorm • 16 functies Logische poorten 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 x y z FPGA-ontwerp F1 KATHOLIEKE UNIVERSITEIT F1 2-46 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's Functies • Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp Algebraïsche manipulatie F1 = xy + xy’z + x’yz = xy + xyz + xy’z + x’yz = xy + x(y+y’)z + x’yz = xy + x1z + x’yz = xy + xz + x’yz = xy + xyz + xz + x’yz = xy + xz + (x+x’)yz = xy + xz + 1yz = xy + xz + yz Goedkoper resultaat, maar niet evident welke combinatie van theorema’s hiervoor nodig zijn F1 = xy + xy’z + x’yz F1 = xy + xz + yz x y z x y z F1 KATHOLIEKE UNIVERSITEIT (absorptie) (distributiviteit) (complement) (identiteit) (absorptie) (distributiviteit) (complement) (identiteit) F1 2-47 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's • Functies Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT algebra Logische poorten Een voorbeeld: FPGA 2-48 H01L1 06–07 Mintermen Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's • Functies Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Een minterm is een Booleaanse functie die waar is voor slechts voor één enkele rij van de waarheidstabel Rij 0 1 2 3 4 5 6 7 x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 minterm x’y’z’ x’y’z x’yz’ x’yz xy’z’ xy’z xyz’ xyz notatie m0 m1 m2 m3 m4 m5 m6 m7 2-49 H01L1 06–07 Digitaal ontwerp Ontwerppad Canonische vorm met mintermen Digitale data Boole-algebra • Axioma's Rij 0 1 2 3 4 5 6 7 • Theorema's • Functies Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 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 x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 F1 0 0 0 1 0 1 1 1 1-minterm — — — m3 = x’yz — m5 = xy’z m6 = xyz’ 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) 2-50 H01L1 06–07 Maxtermen Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's Een maxterm is een Booleaanse functie die waar is voor alle rijen van de waarheidstabel behalve één Rij x y z maxterm notatie 0 0 0 0 x+y+z M0 1 0 0 1 x+y+z’ M1 Logische poorten 2 0 1 0 x+y’+z M2 FPGA-ontwerp 3 0 1 1 x+y’+z’ M3 4 1 0 0 x’+y+z M4 5 1 0 1 x’+y+z’ M5 6 1 1 0 x’+y’+z M6 7 1 1 1 x’+y’+z’ M7 • Functies Canonische & standaard vorm • 16 functies KATHOLIEKE UNIVERSITEIT 2-51 H01L1 06–07 Digitaal ontwerp Ontwerppad Canonische vorm met maxtermen Digitale data Boole-algebra • Axioma's Rij 0 1 2 3 4 5 6 7 • Theorema's • Functies Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 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 x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 F1 0 0 0 1 0 1 1 1 0-maxterm M0 = x+y+z M1 = x+y+z’ M2 = x+y’+z — M4 = x’+y+z — — — 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) 2-52 H01L1 06–07 Standaard vorm Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's Elke minterm of maxterm bevat alle variabelen dure implementatie • 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 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 KATHOLIEKE UNIVERSITEIT 2-53 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Voorbeelden van standaard vorm 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’ Boole-algebra • Axioma's • Theorema's • Functies Canonische & standaard vorm • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 2-54 H01L1 06–07 Minimale implementatie Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's 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 • Functies Canonische & standaard vorm x y z x y z • 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT F2 F2 2-55 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's • Functies Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse Definitie via axioma’s Theorema’s Booleaanse functies Canonische & standaard vorm 16 functies van 2 variabelen • Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT algebra Logische poorten Een voorbeeld: FPGA 2-56 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra • Axioma's • Theorema's • Functies • Canonische & standaard vorm De 16 functies van 2 variabelen Waarom 16 functies? 2 binaire variabelen 22 = 4 mogelijke ingangscombinaties Elke ingangscombinatie heeft 2 mogelijke functiewaarden (0 en 1) 24 = 16 mogelijke functies 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT x y F0 F1 F2 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 0 1 … F15 2-57 H01L1 06–07 Digitaal ontwerp Ontwerppad De 16 functies van 2 variabelen Naam Symbool Zero AND Inhibition Transfer Inhibition Transfer XOR OR NOR XNOR • Axioma's • Theorema's • Functies • Canonische & standaard vorm 16 functies Logische poorten FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Uitdrukking — x·y x/y — y/x — xy x+y xy — 00 0 0 0 0 0 0 0 0 1 1 01 0 0 0 0 1 1 1 1 0 0 10 0 0 1 1 0 0 1 1 0 0 11 0 1 0 1 0 1 0 1 0 1 Complement y’ 1 0 1 0 F10 = y’ Implication — 1 0 1 1 F11 = x+y’ Complement x’ 1 1 0 0 F12 = x’ Implication NAND One — xy — 1 1 1 1 1 1 0 1 1 1 0 1 F13 = x’+y F14 = (xy)’ F15 = 1 Digitale data Boole-algebra Functiewaarde voor x,y F0 = 0 F1 = xy F2 = xy’ F3 = x F4 = x’y F5 = y F6 = xy’+x’y F7 = x+y F8 = (x+y)’ F9 = xy+x’y’ 2-58 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Implementatietechnologieën • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT poorten Een voorbeeld: FPGA 2-59 H01L1 06–07 Logische waarden voorstellen Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel 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, … • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT afgebeeld op de logische niveaus Positieve logica Negatieve logica L 0 1 H 1 0 2-60 H01L1 06–07 Actief laag signaal Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel = het signaal is actief als het ‘0’ is Meestal aangeduid als X , X* of X’ “Actief” zijn is een interpretatie van een signaal, niet een niveau! X* Y* F* RST* = 0 reset toestel actief laag OR actief hoog AND • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Waarom actief lage signalen? 1 1 1 1 0 0 0 1 0 0 0 0 Afgesloten verbindingen zijn meestal ‘1’ als ze niet aangestuurd (= niet actief) zijn ‘Wired-or’ functionaliteit bij een ‘open-drain’ implementatie (cfr. transparant 2-95) 2-61 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Complexe poorten Functionele eigenschappen Basispoorten (≤ 2 ingangen) Meerdere ingangen Meerdere operatoren Niet-functionele eigenschappen Verbindingen Implementatietechnologieën • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Een voorbeeld: FPGA 2-62 H01L1 06–07 Schakelaars Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poort meestal opgebouwd uit schakelaars met twee standen: Logische poorten Functioneel Elektrische weerstand: 0 Drukventiel: open gesloten Licht doorlaten: wel niet Basispoorten Complexe poorten • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Werking afhankelijk van stuursignaal L L H H 2-63 H01L1 06–07 MOS-transistor als schakelaar Digitaal ontwerp Ontwerppad Digitale data NMOS transistor (boek: P-transistor) VGS < VT Boole-algebra Logische poorten L Functioneel Gate (poort) Isolator Drain Source Basispoorten n+ Complexe poorten VGS > VT • Nietfunctioneel H • Verbindingen Metaal Halfgeleider p n+ Geleidend pad als VGS > VT • Technologie FPGA-ontwerp PMOS transistor (verwissel ‘n’↔‘p’, S↔D) VGS < VT KATHOLIEKE UNIVERSITEIT L VGS > VT H noot: VGS & VT < 0 2-64 H01L1 06–07 Inverter Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel F = x’ 2 transistoren (afgekort “tors”) Relatieve vertragingstijd : 1 Basispoorten x F • Nietfunctioneel L H • Verbindingen H L Complexe poorten • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT VCC (H) xx == H L Opmerking: vanaf nu enkel positieve logica x F 0 1 1 0 F=L H VSS (L) 2-65 H01L1 06–07 NAND-poort Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten F = (xy)’ 4 transistoren Relatieve vertragingstijd : 1,4 Functioneel Basispoorten Complexe poorten • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT x 0 0 1 1 VCC F y 0 1 0 1 1 1 1 0 x=1 0 F=0 1 0 y=1 Opmerking: Dit is een NOR-poort voor negatieve logica! VSS 2-66 H01L1 06–07 NOR-poort Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten F = (x + y)’ 4 transistoren Relatieve vertragingstijd : 1,4 Functioneel VCC Basispoorten Complexe poorten • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp x 0 0 1 1 F y 0 1 0 1 1 0 0 0 x=1 0 F=0 1 y=1 0 KATHOLIEKE UNIVERSITEIT VSS 2-67 H01L1 06–07 Andere basispoorten Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Verbindingen OR-poort F = x + y = ((x + y)’)’ 6 tor; vertraging = 2,4 F FPGA-ontwerp x y F x y F x y F x y F XOR-poort F = x y = xy’ + x’y = ((x + y’) (x’ + y))’ 12 tor (cfr. OAI); vertraging = 3,2 • Technologie KATHOLIEKE UNIVERSITEIT AND-poort F = xy = ((xy)’)’ 6 tor; vertraging = 2,4 Basispoorten • Nietfunctioneel x F = x = (x’)’ 4 tor; vertraging = 2 Functioneel Complexe poorten Buffer of ‘driver’ (meer vermogen) XNOR-poort F = (x y)’ = xy + x’y’ = ((x + y)(x’ + y’))’ 12 tor (cfr. OAI); vertraging = 3,2 2-68 Waarom enkel inverterende basispoorten? H01L1 06–07 Digitaal ontwerp Ontwerppad Buffer Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Complexe poorten slechts geleidend als VGS > VT uitgangsspanning daalt H met VT na elke tor VT NMOS enkel in onderste tak (= kan enkel goed L doorgeven) • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT NMOS transistor is een slechte pull-up VT PMOS transistor is een slechte pull-down PMOS enkel in bovenste tak (= kan enkel goed H doorgeven) ≥−VT L 2-69 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Complexe poorten Functionele eigenschappen Basispoorten Meerdere ingangen (fan-in) Meerdere operatoren Niet-functionele eigenschappen Verbindingen Implementatietechnologieën • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Een voorbeeld: FPGA 2-70 H01L1 06–07 Meerdere ingangen (fan-in) Digitaal ontwerp Ontwerppad VCC PUN Digitale data F = 1 als x = 0 of y = 0 of z = 0 F = x’ + y’ + z’ = (xyz)’ Boole-algebra Logische poorten y x z Functioneel Basispoorten F Complexe poorten x y z F z Om kortsluiting te vermijden kan deze blok enkel geleiden als de bovenste niet geleidt: PDN = PUN’ • Nietfunctioneel y • Verbindingen • Technologie FPGA-ontwerp x 3-input NAND : F = (xyz)’ PDN KATHOLIEKE UNIVERSITEIT VSS 6 transistoren Relatieve vertragingstijd : 1,8 2-71 H01L1 06–07 Relatieve kostprijs & vertraging Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Relatief t.o.v. inverter (2 transistoren) Kostprijs Logische poorten Inverterende poort (INV, NAND, NOR) = fan-in (aantal ingangen) Niet-inverterende poort (AND, OR) = fan-in + 1 Functioneel Basispoorten Complexe poorten • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Vertraging Inverterende poort (INV, NAND, NOR) = 0,6 + fan-in × 0,4 Niet-inverterende poort (AND, OR) = 1,6 + fan-in × 0,4 2-72 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Functioneel Basispoorten Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Complexe poorten Functionele eigenschappen Basispoorten Meerdere ingangen Meerdere operatoren Niet-functionele eigenschappen Verbindingen Implementatietechnologieën • Nietfunctioneel • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Een voorbeeld: FPGA 2-73 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Meerdere operatoren in 1 poort: 2-wide 2-input AND-OR-Invert F = 0 als ( x = 1 en y = 1 ) of ( z = 1 en w = 1 ) VCC z w x y Logische poorten Functioneel Basispoorten Complexe poorten • Nietfunctioneel x y F z w • Verbindingen y w x F = (xy + zw)’ 8 transistoren Relatieve vertragingstijd : 2,2 z • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT F 2-wide 2-input AOI VSS 2-74 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Meerdere operatoren in 1 poort : 2-wide 2-input OR-AND-Invert VCC F = 0 als ( x = 1 of y = 1 ) en ( z = 1 of w = 1 ) y w x z Logische poorten Functioneel Basispoorten Complexe poorten • Nietfunctioneel • Verbindingen x y F z w F z w x F = ((x + y) (z + w))’ 8 transistoren Relatieve vertragingstijd : 2,2 y • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 2-wide 2-input OAI VSS 2-75 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel Nietfunctioneel Functionele eigenschappen Niet-functionele eigenschappen Spanningsniveaus Tijdsgedrag Fan-out Vermogenverbruik Verbindingen Implementatietechnologieën Spanningen Tijdsgedrag Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-76 H01L1 06–07 Spanningsniveaus Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logisch niveau spanningsgebied • Functioneel Logisch niveau Nietfunctioneel Logische poorten Spanningen Tijdsgedrag Spanningsgebied TTL van tot van tot L VSS VIL 0V 0,8 V H VIH VCC 2V 5V Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Voordeel: minder gevoelig aan procesvariaties, die de karakteristieken van componenten veranderen minder gevoelig aan omgevingsvariaties, zoals temperatuur, voedingsspanning, … 2-77 H01L1 06–07 Ruismarge Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel Nietfunctioneel Spanningen Tijdsgedrag Fan-out = spanningsmarge beschikbaar door een kleiner gebied van uitgangsspanningen te gebruiken dan toegelaten TTL Uitgang 5V VCC 2,4 V VOH Ingang H marge Vermogen TTL VCC 5V VIH 2V VIL 0,8 V VSS 0V H • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 0,4 V VOL 0V VSS marge L L 2-78 H01L1 06–07 Onlogische spanningen Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel Nietfunctioneel Tijdens de verandering van logisch niveau ontstaan spanningen die niet met een logisch niveau overeenkomen! Bijv. TTL-inverter Vuit Spanningen Tijdsgedrag Fan-out ideaal 5 Transferfunctie afhankelijk van productieproces omgevingsfactoren H Vermogen 2,4 • Verbindingen • Technologie 0,4 FPGA-ontwerp L 0 KATHOLIEKE UNIVERSITEIT 0 0,8 VT L 5 Vin 2 H 2-79 H01L1 06–07 Schmitt-trigger-ingangen Digitaal ontwerp Ontwerppad Digitale data Vin Boole-algebra Logische poorten • Functioneel Nietfunctioneel Spanningen Bijkomende problemen voor trage signalen VT+ VT VT− Vout H 0 H Vout t Tijdsgedrag Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp H KATHOLIEKE UNIVERSITEIT L L L t Schmitt-trigger-ingangen hebben een hysteresis VT Vin Vout H Vout L t VT− VT+ Vin 2-80 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel Nietfunctioneel Functionele eigenschappen Niet-functionele eigenschappen Spanningsniveaus Tijdsgedrag Fan-out Vermogenverbruik Verbindingen Implementatietechnologieën Spanningen Tijdsgedrag Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-81 H01L1 06–07 Effect capacitieve belasting Digitaal ontwerp Ontwerppad Digitale data L H overgang Boole-algebra Vcc Logische poorten • Functioneel Nietfunctioneel V (t) V (1 e t / ) Spanningen met Tijdsgedrag Fan-out Vermogen • Verbindingen • Technologie ROH RIH V R R VCC IH OH RIH ROH C RIH ROH RIH C RIL H L overgang FPGA-ontwerp KATHOLIEKE UNIVERSITEIT C ROL V (t) V0 e t / met RIL ROL C RIL ROL 2-82 H01L1 06–07 Effect capacitieve belasting Digitaal ontwerp Ontwerppad Digitale data uitgangsimpedantie RO zo klein mogelijk grote stromen groot vermogenverbruik C (van draad & ingang) zo klein mogelijk vermijdt lange verbindingen ingangsimpedantie RI zo groot mogelijk Boole-algebra Logische poorten • Functioneel Nietfunctioneel Spanningen Tijdsgedrag Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Snelle overgangen als Daarom RTL-technologie niet populair = vervang bovenste blok transistoren (PUN) door een weerstand R beperk vermogenverbruik RO = R redelijk groot grote stijgtijden Vcc R 0 x=1 F=0 1 2-83 H01L1 06–07 Vertragingstijd Digitaal ontwerp Ontwerppad Stijgtijd Daaltijd Digitale data Boole-algebra 90% of VIH Logische poorten • Functioneel Nietfunctioneel Spanningen 50% VT 10% VIL Tijdsgedrag Fan-out 90% Vermogen • Verbindingen 50% • Technologie FPGA-ontwerp 10% KATHOLIEKE UNIVERSITEIT tPHL tPLH Vertragingstijd: tP = (tPLH + tPHL)/2 2-84 H01L1 06–07 Vertragingstijd Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Wordt beïnvloed door de stijg/daaltijd en dus door de capacitieve belasting Logische poorten • Functioneel Nietfunctioneel Spanningen in Tijdsgedrag tPLH Fan-out Vermogen • Verbindingen in uit tPLH uit • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT kleine stijgtijd grote stijgtijd 2-85 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel Nietfunctioneel Functionele eigenschappen Niet-functionele eigenschappen Spanningsniveaus Tijdsgedrag Fan-out Vermogenverbruik Verbindingen Implementatietechnologieën Spanningen Tijdsgedrag Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-86 H01L1 06–07 Fan-out Digitaal ontwerp Ontwerppad Digitale data Boole-algebra = maximum aantal ingangen die aan één uitgang kunnen gekoppeld worden Logische poorten • Functioneel Nietfunctioneel ‘Stroomgedreven’ technologieën (TTL, ECL, ...) Tijdsgedrag Fan-out IIL IIH Spanningen IOH IOL Vermogen • Verbindingen • Technologie FPGA-ontwerp Fan-out = min(IOH/IIH, IOL/IIL) KATHOLIEKE UNIVERSITEIT 2-87 H01L1 06–07 Fan-out Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel Nietfunctioneel Spanningen Tijdsgedrag Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT ‘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 2-88 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel Nietfunctioneel Functionele eigenschappen Niet-functionele eigenschappen Spanningsniveaus Tijdsgedrag Fan-out Vermogenverbruik Verbindingen Implementatietechnologieën Spanningen Tijdsgedrag Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Digitaal ontwerp in grote lijnen Gegevensvoorstelling Booleaanse algebra Logische poorten Een voorbeeld: FPGA 2-89 H01L1 06–07 Vermogenverbruik Digitaal ontwerp Ontwerppad Digitale data geleverd : kostprijs energie, levensduur batterijen gedissipeerd : warmte moet afgevoerd worden Boole-algebra Logische poorten • Functioneel Nietfunctioneel Fan-out Vermogen • Verbindingen • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT TTL verbruikt voortdurend vermogen P = VCC ICC 10mW/poort 1 miljoen poorten: 10 KW! Gebruikt bij hoge spanningen/stromen (bussen, …) Spanningen Tijdsgedrag Verbruikte vermogen moet worden 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! 2-90 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitaal ontwerp in grote lijnen Gegevensvoorstelling • Functioneel Booleaanse algebra • Nietfunctioneel Logische Digitale data Boole-algebra Logische poorten Verbindingen Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Busverbinding Verbinding als poort Implementatietechnologieën Bus als poort • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT poorten Een voorbeeld: FPGA 2-91 H01L1 06–07 Types verbindingen Digitaal ontwerp Ontwerppad Digitale data Traditioneel: 1 aansturing van verbinding Meerdere aansturingen mogelijk = bus(verbinding) Boole-algebra Logische poorten • Functioneel • Nietfunctioneel Verbindingen Bus als poort • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Slechts 1 aansturing tegelijkertijd! 3-state buffers gebruiken 2-92 H01L1 06–07 ‘Tri-state’ Digitaal ontwerp Ontwerppad Digitale data = derde mogelijkheid, naast 0 en 1 Z (“hoog-impedant” of “zwevend”) = aan niets verbonden Boole-algebra Logische poorten • Functioneel • Nietfunctioneel Verbindingen Bus Een 3-state buffer laat toe om de uitgang los te koppelen van zijn aansturing E als poort • Technologie In FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Uit 0 Z 1 In Vcc Uit E In E Uit Een implementatie: E In Uit E In Vss 2-93 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitaal ontwerp in grote lijnen Gegevensvoorstelling • Functioneel Booleaanse algebra • Nietfunctioneel Logische Digitale data Boole-algebra Logische poorten Verbindingen Functionele eigenschappen Niet-functionele eigenschappen Verbindingen Busverbinding Verbinding als poort (‘wired logic’) Implementatietechnologieën Bus als poort • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT poorten Een voorbeeld: FPGA 2-94 H01L1 06–07 ‘Open-drain/collector’ uitgang Digitaal ontwerp Ontwerppad Digitale data Maak R van RTL extern Vcc Vcc Boole-algebra Logische poorten • Functioneel In • Nietfunctioneel Uit Uit In Verbindingen Bus als poort • Technologie FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Eigenschappen: − Slechte stijgtijd + Uitgangen verbinden geeft geen kortsluiting bussen + ‘Wired logic’ (cfr. infra) Vcc Vcc Vcc 2-95 H01L1 06–07 ‘Wired logic’ Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel Verbindingen Bus als poort Wired-AND : verbinding van open-drain uitgangen A B A’ B’ F 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 0 • Technologie A B FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Vcc F R A A’ F B B’ effect van bedrading Wired-OR : voor actief lage signalen actief lage OR actief hoge AND 2-96 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel 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’ • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Een voorbeeld: FPGA 2-97 H01L1 06–07 Integratieniveau Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Integratie Chip-ontwerp Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT < 10 poorten per verpakking poorten direct verbonden aan pinnen ontwerp op transistorniveau gebruikt in ontwerpen op poortniveau MSI: Medium Scale Integration Technologie Gate array SSI: Small 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 2-98 H01L1 06–07 Integratieniveau Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 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 2-99 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel 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’ • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Een voorbeeld: FPGA 2-100 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Maatwerk (‘custom design’) = 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!) 2-101 H01L1 06–07 Standaard-cel ontwerp Digitaal ontwerp Ontwerppad Digitale data elke cel is een poort standaard hoogte, variabele breedte, afgewisseld met ruimte voor bedrading (‘routing channels’) alle ingangen bovenaan, alle uitgangen onderaan Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Bibliotheek van standaard cellen Sneller ontwerp van complexere bouwblokken Cellen ontworpen door chipfabrikanten, geoptimaliseerd voor hun procestechnologie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Allocatie componenten (‘placement’) Allocatie bedrading (‘routing’) 2-102 H01L1 06–07 Digitaal ontwerp Standaard-cel ontwerpstappen Ontwerppad Schema Digitale data Boole-algebra Logische poorten Ingave ontwerp Simulatie • Functioneel • Nietfunctioneel Implementatie ‘Placement’ • Verbindingen Technologie Integratie ‘Routing’ Simulatie tijdsgedrag Productie: n maskers Testen Chip-ontwerp Gate array Field progr. FPGA-ontwerp Realisatie KATHOLIEKE UNIVERSITEIT 2-103 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel 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’ • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Een voorbeeld: FPGA 2-104 H01L1 06–07 Gate array Digitaal ontwerp Ontwerppad Digitale data Boole-algebra elke cel is bijv. een 3-input NAND-poort standaard hoogte, afgewisseld met ruimte voor bedrading alle ingangen bovenaan, alle uitgangen onderaan Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Tweedimensionaal rooster van identieke poorten (‘sea of gates’) Goedkoper dan standaard cellen Alleen de laatste metallisatielaag (voor de verbindingen) is eigen aan een project 2-105 H01L1 06–07 Digitaal ontwerp Gate array ontwerpstappen Ontwerppad Digitale data Boole-algebra Ingave ontwerp Simulatie Logische poorten • Functioneel • Nietfunctioneel ‘Technology mapping’ = beeld alle functies af op beschikbare 3-input NAND’s • Verbindingen Technologie ‘Placement’ Integratie Chip-ontwerp Gate array Field progr. ‘Routing’ Simulatie tijdsgedrag Productie: 1 masker Testen FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 2-106 H01L1 06–07 Digitaal ontwerp Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel 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’ • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Een voorbeeld: FPGA 2-107 H01L1 06–07 Field programmable design Digitaal ontwerp Ontwerppad Digitale data • Functioneel • Verbindingen Integratie (CPLD) 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 Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT EE- en flash-programmeerbaar Verbindingen zijn transistoren waarvan het poortniveau opgeladen kan worden herprogrammeren mogelijk, maar traag en slechts een beperkt aantal keren • Nietfunctioneel Technologie (PLA, PLD) Doorbranden zekering verbreekt verbinding irreversibel; slechts bijprogrammeren mogelijk Boole-algebra Logische poorten Gebruik makend van zekeringen Toepassingen: Voor prototypes & medium volumes (<100K stukken/jaar) 10 k logische cellen (> 5 M poorten) @ 400 MHz (in 2004) 2-108 H01L1 06–07 PLA: Programmable Logic Array Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Programmeerbare AND-matrix & OR-matrix Ingangen = Logische poorten • Functioneel x • Nietfunctioneel • Verbindingen x Technologie x x x x x x x Integratie Chip-ontwerp AND-matrix Gate array Field progr. x xx x OR-matrix Uitgangen FPGA-ontwerp KATHOLIEKE UNIVERSITEIT x x x x x Afgeleiden (sneller & betrouwbaarder) PAL : vaste OR-matrix PROM : vaste AND-matrix (adresdecoder) x x xx x x x x 2-109 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra PLD: Programmable Logic Device Uitgebreide macro-cellen : extra logica/flip-flops aan de uitgangen Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp D KATHOLIEKE UNIVERSITEIT D 2-110 H01L1 06–07 Digitaal ontwerp CPLD: Complexe PLD Ontwerppad Digitale data Boole-algebra O I/O I/O O Logische poorten • Functioneel PLD • Nietfunctioneel PLD • Verbindingen Technologie Schakelmatrix Integratie Chip-ontwerp Gate array PLD Field progr. PLD FPGA-ontwerp O KATHOLIEKE UNIVERSITEIT I/O I/O O 2-111 H01L1 06–07 Field Programmable Gate Array Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten Schakelmatrices Directe verbindingen tussen naburige blokken • Functioneel I/O • Nietfunctioneel • Verbindingen Lange lijnen Globale kloklijnen I/O I/O I/O I/O SM SM SM SM Technologie Integratie CLB Chip-ontwerp CLB CLB Gate array FPGA-ontwerp KATHOLIEKE UNIVERSITEIT I/O Field progr. SM SM CLB SM CLB SM CLB 2-112 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data FPGA: extra specifieke hardware Spartan-3 (labo) klokgeneratie geheugen vermenigvuldiger Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 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) 2-113 H01L1 06–07 Digitaal ontwerp FPGA Configurable Logic Block Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel 16x1 LUT: Booleaanse functie van 4 variabelen FF GQ G • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array 16x1 LUT: Booleaanse functie van 4 variabelen FF FQ F Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Look-Up Table opzoektabel voor booleaanse functie bruikbaar als 32-bit SRAM 2-114 H01L1 06–07 Spartan-3 CLB Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT 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 2-115 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Spartan-3 CLB Slice 2 × f(4 vars) ev. met 2 × FF 1 × f(5 vars) ev. met FF via F5MUX Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT Standaard logica Extra logica carry logica (incl. AND en XOR) multiplexers 2 × 16 bit gedistribueerde RAM 2 × 16 bit schuifregister 2-116 H01L1 06–07 Digitaal ontwerp FPGA Switching Matrix element Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel Vcc • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp ‘Pass’-transistor KATHOLIEKE UNIVERSITEIT 2-117 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Logische poorten • Functioneel • Nietfunctioneel • Verbindingen Technologie Integratie Chip-ontwerp Gate array Field progr. FPGA-ontwerp KATHOLIEKE UNIVERSITEIT SM programmering 2-118 H01L1 06–07 Digitaal ontwerp 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 KATHOLIEKE UNIVERSITEIT 2-119 H01L1 06–07 Digitaal ontwerp Xilinx ISE-omgeving Ontwerppad Digitale data Boole-algebra Logische poorten FPGA-ontwerp bestanden van het project inhoud bestanden of resultaat actie mogelijke acties op het bestand output acties KATHOLIEKE UNIVERSITEIT 2-120 H01L1 06–07 Digitaal ontwerp FPGA ontwerpstappen Ontwerppad Digitale data Ingave ontwerp Functionele simulatie Boole-algebra Logische poorten FPGA-ontwerp Technology mapping Placement KATHOLIEKE UNIVERSITEIT Routing Simulatie tijdsgedrag Downloading Testen 2-121 H01L1 06–07 Digitaal ontwerp Ontwerppad Digitale data Boole-algebra Ingave ontwerp op hiërarchische wijze specifieke FPGA-hardware Logische poorten FPGA-ontwerp VHDL-beschrijving LogiCORE subschema KATHOLIEKE UNIVERSITEIT toestandsdiagramma 2-122 H01L1 06–07 Digitaal ontwerp FPGA ontwerpstappen Ontwerppad Digitale data Ingave ontwerp Functionele simulatie Boole-algebra Logische poorten FPGA-ontwerp Technology mapping Placement KATHOLIEKE UNIVERSITEIT Routing Simulatie tijdsgedrag Downloading Testen 2-123 H01L1 06–07 Digitaal ontwerp FPGA ontwerpstappen Ontwerppad Digitale data Ingave ontwerp Functionele simulatie Boole-algebra Logische poorten FPGA-ontwerp Technology mapping = beeld alle functies af op de CLB’s Placement KATHOLIEKE UNIVERSITEIT Routing Simulatie tijdsgedrag Downloading Testen 2-124 H01L1 06–07 Digitaal ontwerp FPGA mapping, placement & routing Ontwerppad Digitale data synthese van (V)HDL tot een netlijst Boole-algebra Logische poorten FPGA-ontwerp vertaal naar logische primitieven afbeelding op FPGA-elementen placement & routing genereer aangepaste tijdsinformatie KATHOLIEKE UNIVERSITEIT 2-125 H01L1 06–07 Digitaal ontwerp FPGA ontwerpstappen Ontwerppad Digitale data Ingave ontwerp Functionele simulatie Boole-algebra Logische poorten FPGA-ontwerp Technology mapping Placement KATHOLIEKE UNIVERSITEIT Routing Simulatie tijdsgedrag Downloading Testen 2-126 H01L1 06–07 Digitaal ontwerp FPGA ontwerpstappen Ontwerppad Digitale data Ingave ontwerp Functionele simulatie Boole-algebra Logische poorten FPGA-ontwerp Technology mapping Placement KATHOLIEKE UNIVERSITEIT Routing Simulatie tijdsgedrag Downloading Testen 2-127 H01L1 06–07 Digitaal ontwerp Testen op een FPGA hardware-bord Ontwerppad Digitale data download-connector Boole-algebra Logische poorten FPGA FPGA-ontwerp KATHOLIEKE UNIVERSITEIT UitgangsLED’s Ingangsschakelaars