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