Digitaal ontwerp

advertisement
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  dm1
d0 , d1
LSB
dn

D
m1
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 B1
s
 1s  1, F  2E B
s

1
   1, F  2E B
niet-genormaliseerde F
 1s  
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,24101 + 0,99102
 Maak exponenten gelijk = 0,02102 + 0,99102
• Binair rekenen
Boole-algebra
Optelling

 Tel mantissa’s op
= 1,01102
 Normaliseer
= 0,10103
Vermenigvuldiging
0,11101  0,12102
 Vermenigvuldig mantissa’s
& tel exponenten op
 Normaliseer (hooguit 1 cijfer)
KATHOLIEKE UNIVERSITEIT
= 0,0132103
= 0,13102
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+yB
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
xy
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 yx yx+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
—
xy
x+y
xy
—
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
Download