Inhoudstafel Inleiding De basis van digitaal ontwerp

Slides:



Advertisements
Verwante presentaties
Snelheid van digitale IC’s
Advertisements

Vincent Poté Nelis Vandermeiren Simen Akkermans Kevin De Neef
Hoe werkt een rekenmachine?
CODEERELEMENTEN DECODERS BCD naar 7-SEGMENT
Embedded systemen Embedded software.
Reeds behandelde PLD-soorten:
Informatica klas 4 Hoofdstuk 1
Inhoudstafel Inleiding De basis van digitaal ontwerp
Inhoudstafel Inleiding De basis van digitaal ontwerp
Basiscursus Informatica
Bits en Bytes
Digitale Elektronica en Processoren
Arduino project.
Basisgeheugenschakelingen
Logische schakelingen
bewerkingen in programmeeromgevingen
ADuC8xx MICROCONVERTER
VHDL Taal beschrijvingen
Week 2: Microarchitectuur niveau ALU en datapad
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 6: Practicumprocessor invoer en uitvoer.

Fysische Informatica sensoren en AD-omzetter
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
De verschillende evoluties: Digitalisering Microchiptechnologie Bandbreedte Koperpaar -> coax -> glasvezelkabel Compressietechniek Schakeltechnologie Servers.
Hoe een computer gegevensverwerkende processen realiseert
Rekenregels van machten
Voorbeeld a5a · 4b = 20ab b-5a · 4a = -20a 2 c-2a · -6a = 12a 2 d5a · -b · 6c = -30abc e-5b · 3a · -2 = 30ab f-2 · -a = 2a opgave 1 a7a + 8a = 15a b6a.
Differentieer regels De afgeleide van een functie f is volgens de limietdefinitie: Meestal bepaal je de afgeleide niet met deze limietdefinitie, maar.
Differentieer regels De afgeleide van een functie f is volgens de limietdefinitie: Meestal bepaal je de afgeleide niet met deze limietdefinitie, maar.
1 het type x² = getal 2 ontbinden in factoren 3 de abc-formule
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Hoofdstuk 6 Het voorspellen van prestaties Deel 2: Vermogenvoorspellingen op architectuurniveau Prof. dr. ir. Dirk Stroobandt Academiejaar
Exploratie van de ontwerpruimte 3. Prototypes, emulatie en simulatie Prof. dr. ir. Dirk Stroobandt Academiejaar
Inhoud Synthese van sequentiële netwerken
Inhoud Analyse van sequentiële netwerken Sequentiële bouwblokken
Inhoud (1) De ontwerpruimte en haar terminologie
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen &  vorige toestand uitgang.
Sequentiële schakelingen
Overzicht vijfde college SVR “operationele versterkers (OpAmps)”
SPLD : Simple Programmable Logic Devices Dirk Smets KHLim - dep. IWT Digitale Elektronica Programmeerbare Logica DIA 1 DIA 1 Logische functie n Elke logische.
Dirk Smets KHLim - dep. IWT Digitale Elektronica Programmeerbare Logica FPGA : Field Programmable Gate Array DIA 1 DIA 1 Verdere FPGA-producten Discontinued!
Talstelsels, rekenen en rekenschakelingen
Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen;  vorige toestand uitgang.
Talstelsels, rekenen en rekenschakelingen
Signaalverwerking Verwerkers. IR-buitenlamp. IJkgrafiek sensor.
Inhoud (3) Digitale Technologie Logische Schakelingen Interconnectie
1/1/ /e/e eindhoven university of technology OGO 1.2 project Startbijeenkomst Een microprocessor… …om warm voor te lopen.
paragraaf 4a Tekst in ASCII
Gegevensvoorstelling en berekeningen
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Digitale logica niveau klokken en geheugens.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 2: IDaSS.
Informatica: Binair rekenen.
CMOS Technologie.
Ontwerpen van Digitale Systemen
Hoofdstuk 9 havo KWADRATEN EN LETTERS
BINAIR REKENEN.
Stromen bij digitale signalen
Inhoud Analyse van sequentiële netwerken Sequentiële bouwblokken
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Digitale bouwstenen, J. Dambre & J. Doutreloigne, Een empirisch model voor snelle schattingen Parameterwaarden voor een generiek 0.25um CMOS proces:
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
Bits & bytes.
Les 1: Zaterdag 10 mei 2014 Wim Peeters
Inleiding computersystemen en netwerken Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2.1 Programmeren (2.9) assembler,
Les 3: Digitale Logica.
H01: Informatie Digitaal Toetsweek1 : VT41, 50 min.
Bouwstenen voor computer
Transcript van de presentatie:

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,24101 + 0,99102 Maak exponenten gelijk = 0,02102 + 0,99102 Tel mantissa’s op = 1,01102 Normaliseer = 0,10103 Vermenigvuldiging 0,11101  0,12102 Vermenigvuldig mantissa’s & tel exponenten op = 0,0132103 Normaliseer (hooguit 1 cijfer) = 0,13102

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 x­y 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