25 marca 2008
Układy programowalne
1
25 marca 2008
Układy programowalne
2
Programowalne
i specjalizowane
układy
cyfrowe
Programowalne
Programowalne
i
i
specjalizowane
specjalizowane
uk
uk
ł
ł
ady
ady
cyfrowe
cyfrowe
25 marca 2008
Układy programowalne
3
Klasyfikacja
układów
logicznych
Klasyfikacja
Klasyfikacja
uk
uk
ł
ł
ad
ad
ó
ó
w
w
logicznych
logicznych
25 marca 2008
Układy programowalne
4
Gate
Gate
Array
Array
PLD
PLD
Standard
Standard
Cell
Cell
IC
IC
Full
Full
Custom
Custom
IC
IC
SPLD
SPLD
(PAL)
(PAL)
CPLD
CPLD
FPGA
FPGA
Klasyfikacja układów logicznych
Klasyfikacja uk
Klasyfikacja uk
ł
ł
ad
ad
ó
ó
w logicznych
w logicznych
Logic
Logic
circuits
circuits
Standard
Standard
Logic
Logic
ASIC
ASIC
ASIC
ASIC
-
-
Application
Application
Specific
Specific
Integrated
Integrated
Circuits
Circuits
,
,
specjalizowane uk
specjalizowane uk
ł
ł
ady scalone, projektowane indywidualnie do
ady scalone, projektowane indywidualnie do
konkretnego zastosowania, na zam
konkretnego zastosowania, na zam
ó
ó
wienie producent
wienie producent
ó
ó
w urz
w urz
ą
ą
dze
dze
ń
ń
elektronicznych
elektronicznych
PLD
PLD
-
-
Programmable
Programmable
Logic
Logic
Devices
Devices
, U
, U
ż
ż
ytkownik
ytkownik
mo
mo
ż
ż
e zaimplementowa
e zaimplementowa
ć
ć
w jego strukturze opracowany przez
w jego strukturze opracowany przez
siebie projekt specjalizowanego uk
siebie projekt specjalizowanego uk
ł
ł
adu cyfrowego. Cech
adu cyfrowego. Cech
ą
ą
tych uk
tych uk
ł
ł
ad
ad
ó
ó
w jest wi
w jest wi
ę
ę
c ich
c ich
konfigurowalno
konfigurowalno
ść
ść
przez
przez
u
u
ż
ż
ytkownika.
ytkownika.
SPLD
SPLD
-
-
Simple
Simple
Programmable
Programmable
Logic
Logic
Devices
Devices
, proste uk
, proste uk
ł
ł
ady programowalne.
ady programowalne.
FPGA
FPGA
-
-
Field
Field
Programmable
Programmable
Gate
Gate
Array
Array
, programowalne matryce bramkowe.
, programowalne matryce bramkowe.
CPLD
CPLD
-
-
Complex
Complex
Programmable
Programmable
Logic
Logic
Devices
Devices
, z
, z
ł
ł
o
o
ż
ż
one uk
one uk
ł
ł
ady programowalne.
ady programowalne.
25 marca 2008
Układy programowalne
5
Układy PLD
Uk
Uk
ł
ł
ady PLD
ady PLD
Programowalne
i specjalizowane
układy
cyfrowe
Programowalne
Programowalne
i
i
specjalizowane
specjalizowane
uk
uk
ł
ł
ady
ady
cyfrowe
cyfrowe
25 marca 2008
Układy programowalne
6
Najwięksi producenci układów PLD
Najwi
Najwi
ę
ę
ksi producenci uk
ksi producenci uk
ł
ł
ad
ad
ó
ó
w PLD
w PLD
1.
1.
Xilinx
Xilinx
2.
2.
Altera
Altera
3.
3.
Lattice
)
4.
4.
Actel
Actel
5.
5.
Atmel
Atmel
6.
6.
7.
7.
25 marca 2008
Układy programowalne
7
Literatura
Literatura
Literatura
1.
1.
Pasierbi
Pasierbi
ń
ń
ski
ski
J.,
J.,
Zbysi
Zbysi
ń
ń
ski
ski
P.,
P.,
Uk
Uk
ł
ł
ady programowalne w praktyce
ady programowalne w praktyce
, Wyd. WK
, Wyd. WK
Ł
Ł
,
,
Warszawa 2002.
Warszawa 2002.
2.
2.
Kevin
Kevin
Skahill
Skahill
,
,
J
J
ę
ę
zyk VHDL, Projektowanie programowalnych uk
zyk VHDL, Projektowanie programowalnych uk
ł
ł
ad
ad
ó
ó
w
w
logicznych
logicznych
,Wydawnictwa
,Wydawnictwa
naukowo
naukowo
-
-
Techniczne, Warszawa 2001
Techniczne, Warszawa 2001
3.
3.
T.
T.
Ł
Ł
uba, K. Jasi
uba, K. Jasi
ń
ń
ski, B.
ski, B.
Zbierzchowski
Zbierzchowski
,
,
Specjalizowane uk
Specjalizowane uk
ł
ł
ady cyfrowe w
ady cyfrowe w
strukturach PLD i FPGA
strukturach PLD i FPGA
, WK
, WK
Ł
Ł
, Warszawa, 1997
, Warszawa, 1997
4.
4.
Podr
Podr
ę
ę
czniki firmowe (
czniki firmowe (
Data
Data
Book
Book
, Data
, Data
Sheet
Sheet
,
,
Application
Application
Notes
Notes
, itp..
, itp..
…
…
) do
) do
omawianych uk
omawianych uk
ł
ł
ad
ad
ó
ó
w (ze stron WWW producent
w (ze stron WWW producent
ó
ó
w)
w)
–
–
–
–
–
–
–
–
–
–
–
–
–
–
Inne strony WWW zajmuj
Inne strony WWW zajmuj
ą
ą
ce si
ce si
ę
ę
tematyk
tematyk
ą
ą
PLD,
PLD,
np
np
:
:
–
–
,
–
–
,
,
–
–
25 marca 2008
Układy programowalne
8
Układy SPLD
Uk
Uk
ł
ł
ady SPLD
ady SPLD
Do uk
Do uk
ł
ł
ad
ad
ó
ó
w
w
SPLD
SPLD
zalicza si
zalicza si
ę
ę
uk
uk
ł
ł
ady programowalne:
ady programowalne:
PLA
PLA
(
(
Programmable
Programmable
Logic
Logic
Array
Array
),
),
PAL
PAL
(
(
Programmable
Programmable
Array
Array
Logic
Logic
)
)
GAL
GAL
(
(
Generic
Generic
Array
Array
Logic
Logic
).
).
S
S
ą
ą
to uk
to uk
ł
ł
ady najta
ady najta
ń
ń
sze i najprostsze o ma
sze i najprostsze o ma
ł
ł
ej liczbie wyprowadze
ej liczbie wyprowadze
ń
ń
.
.
Ich zasoby logiczne zawieraj
Ich zasoby logiczne zawieraj
ą
ą
typowo od 4 do 22
typowo od 4 do 22
makrokom
makrokom
ó
ó
rek
rek
logicznych o dwupoziomowej
logicznych o dwupoziomowej
strukturze logicznej i mog
strukturze logicznej i mog
ą
ą
zwykle zast
zwykle zast
ą
ą
pi
pi
ć
ć
kilka standardowych uk
kilka standardowych uk
ł
ł
ad
ad
ó
ó
w scalonych rodziny
w scalonych rodziny
74xx.
74xx.
Struktura zazwyczaj jest symetryczna, tzn.
Struktura zazwyczaj jest symetryczna, tzn.
ż
ż
e ka
e ka
ż
ż
da z
da z
makrokom
makrokom
ó
ó
rek
rek
jest w pe
jest w pe
ł
ł
ni po
ni po
łą
łą
czona z
czona z
innymi kom
innymi kom
ó
ó
rkami w danym uk
rkami w danym uk
ł
ł
adzie scalonym. Wyj
adzie scalonym. Wyj
ś
ś
cie ka
cie ka
ż
ż
dej kom
dej kom
ó
ó
rki mo
rki mo
ż
ż
e by
e by
ć
ć
podane na
podane na
wej
wej
ś
ś
cie ka
cie ka
ż
ż
dej innej oraz wej
dej innej oraz wej
ś
ś
cia uk
cia uk
ł
ł
adu mog
adu mog
ą
ą
by
by
ć
ć
podane do ka
podane do ka
ż
ż
dej kom
dej kom
ó
ó
rki.
rki.
Do okre
Do okre
ś
ś
lenia po
lenia po
łą
łą
cze
cze
ń
ń
pomi
pomi
ę
ę
dzy kom
dzy kom
ó
ó
rkami oraz funkcji przez nie realizowanych
rkami oraz funkcji przez nie realizowanych
(skonfigurowania/zaprogramowania uk
(skonfigurowania/zaprogramowania uk
ł
ł
adu) stosowane s
adu) stosowane s
ą
ą
łą
łą
czniki
czniki
(klucze), kt
(klucze), kt
ó
ó
rymi s
rymi s
ą
ą
w
w
wi
wi
ę
ę
kszo
kszo
ś
ś
ci przypadk
ci przypadk
ó
ó
w przepalane elektrycznie fragmenty
w przepalane elektrycznie fragmenty
ś
ś
cie
cie
ż
ż
ek (
ek (
łą
łą
czniki
czniki
rozwarciowe
rozwarciowe
–
–
dla
dla
uk
uk
ł
ł
ad
ad
ó
ó
w PLA i PAL) lub tranzystory MOS (dla uk
w PLA i PAL) lub tranzystory MOS (dla uk
ł
ł
ad
ad
ó
ó
w GAL).
w GAL).
25 marca 2008
Układy programowalne
9
SPLD
SPLD
(PLA)
(PLA)
Układy PLA –
Programowalne Matryce
Logiczne
Uk
Uk
ł
ł
ady PLA
ady PLA
–
–
Programowalne Matryce
Programowalne Matryce
Logiczne
Logiczne
Uk
Uk
ł
ł
ady PLA s
ady PLA s
ą
ą
przyk
przyk
ł
ł
adem
adem
kombinacyjnego uk
kombinacyjnego uk
ł
ł
adu PLD.
adu PLD.
Stanowi
Stanowi
ą
ą
dwuwymiarow
dwuwymiarow
ą
ą
struktur
struktur
ę
ę
po
po
łą
łą
cze
cze
ń
ń
z
z
programowalnymi po
programowalnymi po
łą
łą
czeniami
czeniami
(najcz
(najcz
ęś
ęś
ciej zwarciami) w miejscu
ciej zwarciami) w miejscu
ich krzy
ich krzy
ż
ż
owania si
owania si
ę
ę
X0
X0
X1
X1
X15
X15
32 wej
32 wej
ś
ś
cia
cia
16 bramek
16 bramek
NAND
NAND
16 wej
16 wej
ść
ść
8 bramek
8 bramek
OR
OR
25 marca 2008
Układy programowalne
10
SPLD
SPLD
(PLA)
(PLA)
Układy PLA –
Programowalne Matryce
Logiczne
Uk
Uk
ł
ł
ady PLA
ady PLA
–
–
Programowalne Matryce
Programowalne Matryce
Logiczne
Logiczne
Uk
Uk
ł
ł
ady PLA s
ady PLA s
ą
ą
przyk
przyk
ł
ł
adem
adem
kombinacyjnego uk
kombinacyjnego uk
ł
ł
adu PLD.
adu PLD.
Stanowi
Stanowi
ą
ą
dwuwymiarow
dwuwymiarow
ą
ą
struktur
struktur
ę
ę
po
po
łą
łą
cze
cze
ń
ń
z
z
programowalnymi po
programowalnymi po
łą
łą
czeniami
czeniami
(najcz
(najcz
ęś
ęś
ciej zwarciami) w miejscu
ciej zwarciami) w miejscu
ich krzy
ich krzy
ż
ż
owania si
owania si
ę
ę
.
.
Programowalne po
Programowalne po
łą
łą
czenia maj
czenia maj
ą
ą
bramki AND i bramki OR
bramki AND i bramki OR
X0
X0
X1
X1
X15
X15
32 wej
32 wej
ś
ś
cia
cia
48 bramek
48 bramek
NAND
NAND
16 wej
16 wej
ść
ść
8 bramek
8 bramek
OR
OR
25 marca 2008
Układy programowalne
11
SPLD
SPLD
(PLA)
(PLA)
Układy PLA –
Programowalne Matryce
Logiczne
Uk
Uk
ł
ł
ady PLA
ady PLA
–
–
Programowalne Matryce
Programowalne Matryce
Logiczne
Logiczne
Dla ka
Dla ka
ż
ż
dego sygna
dego sygna
ł
ł
u wej
u wej
ś
ś
ciowego
ciowego
mo
mo
ż
ż
na wyr
na wyr
ó
ó
ż
ż
ni
ni
ć
ć
4 przypadki
4 przypadki
programowania wej
programowania wej
ść
ść
bramki
bramki
NAND:
NAND:
1.
1.
Stan
Stan
nieprogramowania
nieprogramowania
wej
wej
ść
ść
2.
2.
Podawanie sygna
Podawanie sygna
ł
ł
u
u
wej
wej
ś
ś
ciowego nie
ciowego nie
zanegowanego
zanegowanego
3.
3.
Podawanie sygna
Podawanie sygna
ł
ł
u
u
wej
wej
ś
ś
ciowego zanegowanego
ciowego zanegowanego
4.
4.
Nie podawanie sygna
Nie podawanie sygna
ł
ł
u na
u na
wej
wej
ś
ś
cie
cie
16 wej
16 wej
ść
ść
X0
X0
X0
X0
X0
X0
X0
X0
1
1
2
2
3
3
4
4
25 marca 2008
Układy programowalne
12
SPLD
SPLD
(PLA)
(PLA)
Układy PLA –
Programowalne Matryce
Logiczne
Uk
Uk
ł
ł
ady PLA
ady PLA
–
–
Programowalne Matryce
Programowalne Matryce
Logiczne
Logiczne
Realizacja sumatora przy pomocy
Realizacja sumatora przy pomocy
uk
uk
ł
ł
adu PLA
adu PLA
A
A
B
B
C
C
S =
S =
A
A
’
’
B
B
’
’
C
C
+
+
AB
AB
’
’
C
C
’
’
+
+
A
A
’
’
BC
BC
’
’
+ ABC
+ ABC
Carry
Carry
= AB + AC + BC
= AB + AC + BC
S
S
Carry
Carry
25 marca 2008
Układy programowalne
13
SPLD
SPLD
(PAL)
(PAL)
Układy PAL –
Programowalne Matrycowe
Układy Logiczne
Uk
Uk
ł
ł
ady PAL
ady PAL
–
–
Programowalne Matrycowe
Programowalne Matrycowe
Uk
Uk
ł
ł
ady Logiczne
ady Logiczne
Uk
Uk
ł
ł
ady PAL charakteryzuj
ady PAL charakteryzuj
ą
ą
si
si
ę
ę
tym, i
tym, i
ż
ż
programowalne
programowalne
po
po
łą
łą
czenia maj
czenia maj
ą
ą
tylko
tylko
bramki AND.
bramki AND.
W uk
W uk
ł
ł
adach PAL wyj
adach PAL wyj
ś
ś
cie
cie
ka
ka
ż
ż
dej bramki AND jest
dej bramki AND jest
bezpo
bezpo
ś
ś
rednio po
rednio po
łą
łą
czone do
czone do
jednego z wej
jednego z wej
ść
ść
jednej
jednej
bramki OR
bramki OR
X0
X0
X1
X1
X2
X2
AMD PAL
AMD PAL
Programmable
Programmable
Array
Array
Logic
Logic
25 marca 2008
Układy programowalne
14
SPLD
SPLD
(PAL)
(PAL)
Układy PAL –
Programowalne Matrycowe
Układy Logiczne
Uk
Uk
ł
ł
ady PAL
ady PAL
–
–
Programowalne Matrycowe
Programowalne Matrycowe
Uk
Uk
ł
ł
ady Logiczne
ady Logiczne
A
A
B
B
C
C
AMD PAL
AMD PAL
Programmable
Programmable
Array
Array
Logic
Logic
Realizacja sumatora przy pomocy
Realizacja sumatora przy pomocy
uk
uk
ł
ł
adu PAL
adu PAL
S =
S =
A
A
’
’
B
B
’
’
C
C
+
+
AB
AB
’
’
C
C
’
’
+
+
A
A
’
’
BC
BC
’
’
+ ABC
+ ABC
Carry
Carry
= AB + AC + BC
= AB + AC + BC
S
S
Carry
Carry
25 marca 2008
Układy programowalne
15
Fragment struktury układu PAL 16L8
Fragment struktury uk
Fragment struktury uk
ł
ł
adu PAL 16L8
adu PAL 16L8
Widoczne:
Widoczne:
1.
1.
Macierz po
Macierz po
łą
łą
cze
cze
ń
ń
AND
AND
2.
2.
Funkcje OR (nast
Funkcje OR (nast
ę
ę
pniki)
pniki)
3.
3.
Sprz
Sprz
ęż
ęż
enia zwrotne do macierzy po
enia zwrotne do macierzy po
łą
łą
cze
cze
ń
ń
25 marca 2008
Układy programowalne
16
Układy GAL
Uk
Uk
ł
ł
ady GAL
ady GAL
Obecnie najpopularniejsz
Obecnie najpopularniejsz
ą
ą
grup
grup
ą
ą
uk
uk
ł
ł
ad
ad
ó
ó
w SPLD s
w SPLD s
ą
ą
uk
uk
ł
ł
ady
ady
GAL
GAL
, w kt
, w kt
ó
ó
rych
rych
wykorzystano architektur
wykorzystano architektur
ę
ę
PAL wzbogacon
PAL wzbogacon
ą
ą
o konfigurowalne
o konfigurowalne
makrokom
makrokom
ó
ó
rki
rki
wyj
wyj
ś
ś
ciowe zawieraj
ciowe zawieraj
ą
ą
ce przerzutniki typu
ce przerzutniki typu
D
D
. Przerzutniki te spe
. Przerzutniki te spe
ł
ł
niaj
niaj
ą
ą
rol
rol
ę
ę
wyj
wyj
ś
ś
ciowych element
ciowych element
ó
ó
w pami
w pami
ę
ę
ciowych umo
ciowych umo
ż
ż
liwiaj
liwiaj
ą
ą
cych budowanie uk
cych budowanie uk
ł
ł
ad
ad
ó
ó
w
w
synchronicznych.
synchronicznych.
SPLD
SPLD
(GAL)
(GAL)
Generic
Generic
Array
Array
Logic
Logic
25 marca 2008
Układy programowalne
17
Układy GAL
Uk
Uk
ł
ł
ady GAL
ady GAL
SPLD
SPLD
(GAL)
(GAL)
25 marca 2008
Układy programowalne
18
Makrokomórki
w układach GAL
Makrokom
Makrokom
ó
ó
rki
rki
w uk
w uk
ł
ł
adach GAL
adach GAL
OLMC
OLMC
Output
Output
Logic
Logic
Macrocell
Macrocell
Makrokom
Makrokom
ó
ó
rka
rka
OLMC umo
OLMC umo
ż
ż
liwia zaprogramowanie uk
liwia zaprogramowanie uk
ł
ł
adu w trybie kombinacyjnym lub
adu w trybie kombinacyjnym lub
sekwencyjnym
sekwencyjnym
Kom
Kom
ó
ó
rka kombinacyjna
rka kombinacyjna
SPLD
SPLD
(GAL)
(GAL)
25 marca 2008
Układy programowalne
19
Makrokomórki
w układach GAL
Makrokom
Makrokom
ó
ó
rki
rki
w uk
w uk
ł
ł
adach GAL
adach GAL
OLMC
OLMC
Output
Output
Logic
Logic
Macrocell
Macrocell
Makrokom
Makrokom
ó
ó
rka
rka
OLMC umo
OLMC umo
ż
ż
liwia zaprogramowanie uk
liwia zaprogramowanie uk
ł
ł
adu w trybie kombinacyjnym lub
adu w trybie kombinacyjnym lub
sekwencyjnym
sekwencyjnym
Kom
Kom
ó
ó
rka sekwencyjna
rka sekwencyjna
D Q
D Q
Clk
Clk
nQ
nQ
SPLD
SPLD
(GAL)
(GAL)
25 marca 2008
Układy programowalne
20
Makrokomórki
w układach GAL
Makrokom
Makrokom
ó
ó
rki
rki
w uk
w uk
ł
ł
adach GAL
adach GAL
OLMC
OLMC
Output
Output
Logic
Logic
Macrocell
Macrocell
Makrokom
Makrokom
ó
ó
rka
rka
OLMC umo
OLMC umo
ż
ż
liwia zaprogramowanie uk
liwia zaprogramowanie uk
ł
ł
adu w trybie kombinacyjnym lub
adu w trybie kombinacyjnym lub
sekwencyjnym
sekwencyjnym
Kom
Kom
ó
ó
rka uniwersalna
rka uniwersalna
D Q
D Q
Clk
Clk
nQ
nQ
SPLD
SPLD
(GAL)
(GAL)
25 marca 2008
Układy programowalne
21
Przykładowy układ GAL ATF22LV10C
Przyk
Przyk
ł
ł
adowy uk
adowy uk
ł
ł
ad GAL ATF22LV10C
ad GAL ATF22LV10C
25 marca 2008
Układy programowalne
22
Budowa makroceli
układu GAL22V10
Budowa
Budowa
makroceli
makroceli
uk
uk
ł
ł
adu GAL22V10
adu GAL22V10
25 marca 2008
Układy programowalne
23
Układy CPLD
Uk
Uk
ł
ł
ady CPLD
ady CPLD
Uk
Uk
ł
ł
ady
ady
CPLD
CPLD
s
s
ą
ą
koncepcyjnie podobne do uk
koncepcyjnie podobne do uk
ł
ł
ad
ad
ó
ó
w SPLD, lecz s
w SPLD, lecz s
ą
ą
bardziej z
bardziej z
ł
ł
o
o
ż
ż
one: maj
one: maj
ą
ą
wi
wi
ę
ę
ksze zasoby logiczne i mo
ksze zasoby logiczne i mo
ż
ż
liwo
liwo
ś
ś
ci funkcjonalne.
ci funkcjonalne.
Ich architektura ma struktur
Ich architektura ma struktur
ę
ę
hierarchiczn
hierarchiczn
ą
ą
opart
opart
ą
ą
na
na
makrokom
makrokom
ó
ó
rkach
rkach
logicznych
logicznych
,
,
kt
kt
ó
ó
rych zawieraj
rych zawieraj
ą
ą
od kilkudziesi
od kilkudziesi
ę
ę
ciu do kilkuset. Typowo od czterech do szesnastu
ciu do kilkuset. Typowo od czterech do szesnastu
makrokom
makrokom
ó
ó
rek
rek
jest po
jest po
łą
łą
czonych w wi
czonych w wi
ę
ę
kszy
kszy
blok funkcjonalny
blok funkcjonalny
(podobny do
(podobny do
pojedynczego uk
pojedynczego uk
ł
ł
adu SPLD).
adu SPLD).
Poszczeg
Poszczeg
ó
ó
lne bloki funkcjonalne s
lne bloki funkcjonalne s
ą
ą
łą
łą
czone mi
czone mi
ę
ę
dzy sob
dzy sob
ą
ą
za pomoc
za pomoc
ą
ą
matrycy
matrycy
po
po
łą
łą
czeniowej
czeniowej
, kt
, kt
ó
ó
rej zdolno
rej zdolno
ść
ść
łą
łą
czeniowa jest wa
czeniowa jest wa
ż
ż
n
n
ą
ą
cech
cech
ą
ą
uk
uk
ł
ł
ad
ad
ó
ó
w CPLD.
w CPLD.
Uk
Uk
ł
ł
ady CPLD s
ady CPLD s
ą
ą
wytwarzane niemal wy
wytwarzane niemal wy
łą
łą
cznie w technologii CMOS.
cznie w technologii CMOS.
CPLD
CPLD
Complex
Complex
Programmable
Programmable
Logic
Logic
Devices
Devices
25 marca 2008
Układy programowalne
24
Układy CPLD
Uk
Uk
ł
ł
ady CPLD
ady CPLD
CPLD
CPLD
Complex
Complex
Programmable
Programmable
Logic
Logic
Devices
Devices
I/O
I/O
I/O
I/O
BF
BF
BF
BF
BF
BF
BF
BF
BF
BF
BF
BF
BF
BF
BF
BF
Pr
ogrammable
Pr
ogrammable
interconnectio
n
interconnectio
n
matrix
matrix
25 marca 2008
Układy programowalne
25
Układy FPGA
Uk
Uk
ł
ł
ady FPGA
ady FPGA
Na og
Na og
ó
ó
ł
ł
uk
uk
ł
ł
ady FPGA zawieraj
ady FPGA zawieraj
ą
ą
rozmieszczone matrycowo
rozmieszczone matrycowo
bloki logiczne
bloki logiczne
CLB
CLB
. Poszczeg
. Poszczeg
ó
ó
lne bloki s
lne bloki s
ą
ą
łą
łą
czone ze sob
czone ze sob
ą
ą
za po
za po
ś
ś
rednictwem
rednictwem
linii trakt
linii trakt
ó
ó
w po
w po
łą
łą
czeniowych
czeniowych
(
(
Routing
Routing
Channels
Channels
) oraz
) oraz
programowalnych matryc kluczy po
programowalnych matryc kluczy po
łą
łą
czeniowych umieszczonych w miejscu krzy
czeniowych umieszczonych w miejscu krzy
ż
ż
owania si
owania si
ę
ę
trakt
trakt
ó
ó
w poziomych i pionowych. Na obrze
w poziomych i pionowych. Na obrze
ż
ż
ach matrycy blok
ach matrycy blok
ó
ó
w logicznych znajduj
w logicznych znajduj
ą
ą
si
si
ę
ę
programowalne bloki
programowalne bloki
IOB
IOB
(wej
(wej
ś
ś
ciowo
ciowo
-
-
wyj
wyj
ś
ś
ciowe).
ciowe).
Struktury FPGA zawieraj
Struktury FPGA zawieraj
ą
ą
od 64 do dziesi
od 64 do dziesi
ą
ą
tk
tk
ó
ó
w tysi
w tysi
ę
ę
cy
cy
blok
blok
ó
ó
w logicznych
w logicznych
o bardzo zr
o bardzo zr
ó
ó
ż
ż
nicowanej
nicowanej
budowie. Bloki logiczne mog
budowie. Bloki logiczne mog
ą
ą
by
by
ć
ć
bardzo z
bardzo z
ł
ł
o
o
ż
ż
one, jest ich w
one, jest ich w
ó
ó
wczas mniej w uk
wczas mniej w uk
ł
ł
adzie, lub
adzie, lub
wzgl
wzgl
ę
ę
dnie proste i jest ich w
dnie proste i jest ich w
ó
ó
wczas wi
wczas wi
ę
ę
cej.
cej.
Zazwyczaj z
Zazwyczaj z
ł
ł
o
o
ż
ż
one bloki logiczne zawieraj
one bloki logiczne zawieraj
ą
ą
dwie lub wi
dwie lub wi
ę
ę
cej pami
cej pami
ę
ę
ci RAM umo
ci RAM umo
ż
ż
liwiaj
liwiaj
ą
ą
cych
cych
tworzenie tablic warto
tworzenie tablic warto
ś
ś
ci funkcji
ci funkcji
LUT
LUT
(
(
Look
Look
-
-
up
up
Table
Table
) i dwa lub wi
) i dwa lub wi
ę
ę
cej przerzutnik
cej przerzutnik
ó
ó
w.
w.
W wi
W wi
ę
ę
kszo
kszo
ś
ś
ci uk
ci uk
ł
ł
ad
ad
ó
ó
w s
w s
ą
ą
to tablice czterowej
to tablice czterowej
ś
ś
ciowe (pami
ciowe (pami
ęć
ęć
RAM o pojemno
RAM o pojemno
ś
ś
ci 16 bit
ci 16 bit
ó
ó
w). W
w). W
uk
uk
ł
ł
adach o prostszej budowie, bloki logiczne zawieraj
adach o prostszej budowie, bloki logiczne zawieraj
ą
ą
zwykle dwuwej
zwykle dwuwej
ś
ś
ciowe uk
ciowe uk
ł
ł
ady generacji
ady generacji
funkcji kombinacyjnych lub multipleksery czterowej
funkcji kombinacyjnych lub multipleksery czterowej
ś
ś
ciowe i ewentualnie przerzutniki.
ciowe i ewentualnie przerzutniki.
25 marca 2008
Układy programowalne
26
Schemat blokowy układu FPGA
Schemat blokowy uk
Schemat blokowy uk
ł
ł
adu FPGA
adu FPGA
I/O
I/O
Logic
block
Interconnection switches
IS
IS
I/O
I/O
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
25 marca 2008
Układy programowalne
27
Układy FPGA
Uk
Uk
ł
ł
ady FPGA
ady FPGA
Programowalne
i specjalizowane
układy
cyfrowe
Programowalne
Programowalne
i
i
specjalizowane
specjalizowane
uk
uk
ł
ł
ady
ady
cyfrowe
cyfrowe
25 marca 2008
Układy programowalne
28
Field Programmable
Gate
Arrays
(FPGA)
F
F
ield
ield
P
P
rogrammable
rogrammable
G
G
ate
ate
A
A
rrays
rrays
(
(
FPGA
FPGA
)
)
25 marca 2008
Układy programowalne
29
Field programmable gate arrays (FPGA)
Field programmable gate arrays (FPGA)
Field programmable gate arrays (FPGA)
Uk
Uk
ł
ł
ady FPGA w j
ady FPGA w j
ę
ę
zyku polskim okre
zyku polskim okre
ś
ś
lane s
lane s
ą
ą
jako programowalne matryce bramkowe.
jako programowalne matryce bramkowe.
S
S
ą
ą
to programowalne uk
to programowalne uk
ł
ł
ady cyfrowe wielkiej skali integracji, zawieraj
ady cyfrowe wielkiej skali integracji, zawieraj
ą
ą
ce zbi
ce zbi
ó
ó
r
r
programowalnych blok
programowalnych blok
ó
ó
w logicznych (
w logicznych (
Configurabl
Configurabl
Logic
Logic
Block
Block
) o regularnym rozk
) o regularnym rozk
ł
ł
adzie
adzie
topograficznym oraz programowalne po
topograficznym oraz programowalne po
łą
łą
czenia.
czenia.
Uk
Uk
ł
ł
ady FPGA s
ady FPGA s
ą
ą
uk
uk
ł
ł
adami o du
adami o du
ż
ż
ej z
ej z
ł
ł
o
o
ż
ż
ono
ono
ś
ś
ci logicznej i s
ci logicznej i s
ą
ą
przeznaczone g
przeznaczone g
ł
ł
ó
ó
wnie do zastosowa
wnie do zastosowa
ń
ń
systemowych
systemowych
FPGA
Architecture
FPGA
FPGA
Architecture
Architecture
25 marca 2008
Układy programowalne
31
FPGA -
Generic Structure
FPGA
FPGA
-
-
Generic Structure
Generic Structure
FPGA building blocks:
FPGA building blocks:
1.
1.
Programmable logic blocks
Programmable logic blocks
PLB
PLB
Implement combinatorial
Implement combinatorial
and sequential logic
and sequential logic
2.
2.
Programmable interconnect
Programmable interconnect
Wires to connect inputs and
Wires to connect inputs and
outputs to logic blocks
outputs to logic blocks
3.
3.
Programmable I/O blocks
Programmable I/O blocks
Special logic blocks at the
Special logic blocks at the
periphery of device for
periphery of device for
external connections
external connections
I/O
I/O
Logic
block
Interconnection switches
IS
IS
I/O
I/O
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
IS
25 marca 2008
Układy programowalne
32
FPGA
FPGA
FPGA
The FPGA
The FPGA contains
contains
versatile
versatile
functions, configurable interconnects and
functions, configurable interconnects and
an input/output interface
an input/output interface
to
to
adapt to the user specification.
adapt to the user specification.
I/O
I/O
pads
pads
Programmable
Programmable
Logic
Logic
Blocks
Blocks
Programmable
Programmable
Interconnect
Interconnect
Points
Points
25 marca 2008
Układy programowalne
33
Other FPGA Building Blocks
Other FPGA Building Blocks
Other FPGA Building Blocks
1.
1.
Clock distribution
Clock distribution
2.
2.
Embedded memory blocks
Embedded memory blocks
3.
3.
Special purpose blocks:
Special purpose blocks:
DSP blocks:
Hardware multipliers, adders and registers
Embedded microprocessors/microcontrollers
High-speed serial transceivers
25 marca 2008
Układy programowalne
34
Notice that FPGA not only exist as simple components, but also a
Notice that FPGA not only exist as simple components, but also a
s macro
s macro
-
-
blocs in
blocs in
system
system
-
-
on
on
-
-
chip
chip
designs
designs
.
.
In the case of communication systems, the configurable logic may
be dynamically
changed to adapt
to improved communication protocol. In the case of very low power systems, the
configurable logic
may handle several different tasks in series, rather than embedding all corresponding
hardware
that never works in parallel.
System-On-Chip
S
S
ystem
ystem
-
-
O
O
n
n
-
-
C
C
hip
hip
25 marca 2008
Układy programowalne
35
FPGA
FPGA
FPGA
Field programmable gate arrays (FPGA) are specific integrated ci
Field programmable gate arrays (FPGA) are specific integrated ci
rcuits that
rcuits that
can be user
can be user
-
-
programmed
programmed
easily.
easily.
FPGAs
FPGAs
allow rapid prototyping
allow rapid prototyping
using custom logic structures, and are very
using custom logic structures, and are very
popular for
popular for limited production products
limited production products
.
.
Modern FPGA are extremely dense, with a complexity of
Modern FPGA are extremely dense, with a complexity of several
several
millions of gates
millions of gates
which enable the emulation of very complex hardware such
which enable the emulation of very complex hardware such
as parallel microprocessors,
as parallel microprocessors,
mixture of processor and signal processing
mixture of processor and signal processing
.
.
One key advantage of FPGA is their
One key advantage of FPGA is their ability to be
ability to be
reprogrammed
reprogrammed
, in order to
, in order to
create a completely different hardware by modifying the logic ga
create a completely different hardware by modifying the logic ga
te array.
te array.
25 marca 2008
Układy programowalne
36
Example
of
2 XOR
Example
Example
of
of
2 XOR
2 XOR
Programmable
pads configured
as inputs
Programmable
pad
configured
as output
Interconnect
Interconnect
lines
lines
Programmable
Programmable
logic
logic
block
block
configured
configured
as
as
XOR
XOR
Programmable
Programmable
interconnect
interconnect
points
points
A
A
B
B
C
C
A
B
C
S
XOR
XOR
XOR
XOR
25 marca 2008
Układy programowalne
37
The
programmable
logic
block
must
be able
to implement
all
basic
logic
functions, that
is
INV, AND, NAND, OR, NOR,
XOR, XNOR, etc...
Several
approaches
are
used
in
FPGA industry
to achieve
this
goal.
The
first
approach
consists
in
the
use
use
of
of
multiplexer
multiplexer
,
the
second
one in
the
use
use
of
of
look
look
-
-
up
up
tables
tables
.
Configurable Programmable
Logic Blocks
Configurable
Configurable
Programmable
Programmable
Logic
Logic
Blocks
Blocks
25 marca 2008
Układy programowalne
38
Use
of
Multiplexer
Use
Use
of
of
Multiplexer
Multiplexer
Configurable Logic Circuits
Configurable Logic Circuits
Configurable Logic Circuits
25 marca 2008
Układy programowalne
39
Configurable Logic Circuits
Configurable Logic Circuits
Configurable Logic Circuits
AND
AND
25 marca 2008
Układy programowalne
40
Configurable Logic Circuits
Configurable Logic Circuits
Configurable Logic Circuits
OR
OR
25 marca 2008
Układy programowalne
41
Configurable Logic Circuits
Configurable Logic Circuits
Configurable Logic Circuits
Not
Not
Buffer
Buffer
25 marca 2008
Układy programowalne
42
Configurable Logic Circuits
Configurable Logic Circuits
Configurable Logic Circuits
Although NOT, AND and OR are directly available, other functions
such as NAND, NOR
and XOR
cannot be built directly using a single 2-input multiplexer, but need at least
two multiplexer circuits.
25 marca 2008
Układy programowalne
43
Configurable Logic Circuits
Configurable Logic Circuits
Configurable Logic Circuits
2
2
-
-
Input XOR
Input XOR
25 marca 2008
Układy programowalne
44
Use
of
Multiplexer
Use
Use
of
of
Multiplexer
Multiplexer
3
3
-
-
input
input
multiplexer
multiplexer
block
block
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
0/1
X1
X2
X3
S
C
C
B
B
A
A
Configuration memory
cells
25 marca 2008
Układy programowalne
45
Adder
Adder
Adder
In the case of the 2
XOR, the set of values of
S
given in the truth-table,
We must assign manually
the
S
truth-table to the
multiplexer
inputs. Then
S
produces the XOR function of inputs
A
,
B
and
C
.
C
B
A
S
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
0
1
1
0
0
1
1
1
1
A
A
B
B
C
C
F
F
25 marca 2008
Układy programowalne
46
Configurable Logic Circuits
Configurable Logic Circuits
Configurable Logic Circuits
Adder
Adder
0
0
1
1
1
1
0
0
1
1
0
0
0
0
1
1
25 marca 2008
Układy programowalne
47
Use
of
Look
Up
Table
Use
Use
of
of
Look
Look
Up
Up
Table
Table
Configurable Logic Circuits
Configurable Logic Circuits
Configurable Logic Circuits
25 marca 2008
Układy programowalne
48
Look-Up-Table
Look
Look
-
-
Up
Up
-
-
Table
Table
The look
look
-
-
up table (LUT)
up table (LUT)
is by far the most versatile circuit to create a configurable logic function.
The
The
3 bit
3 bit
look
look
-
-
up table has 3 main inputs
up table has 3 main inputs
F0
F0
,
,
F1
F1
and
and
F2
F2
. The main output is
. The main output is
Fout
Fout
, which is a
, which is a
logical
logical
function of
function of
F0
F0
,
,
F1
F1
and
and
F2.
F2.
The output
Fout
is defined by the values given to
Value[0]..Value[7].
The three values
F0
,
F1
,
F2
create a 3-bit address
i
between 0 and 7, so that
Fout
gets the value
of
Value[i].
In the example the input creates the number 5, so Value[5] is routed to
Fout
. The
table below gives
Value[i]
for the most common logical functions of
F0
,
F1
and
F2.
25 marca 2008
Układy programowalne
49
Adder
Adder
Adder
In the case of the 2
XOR, the set of values of
S
given in the truth-table,
must be
assigned to
Value[0]..Value[7].
We must assign manually
the
S
truth-table to each of the 8 values. Then
S
produces the XOR function of
inputs
A
,
B
and
C
.
C
B
A
S
Assigned
to
0
0
0
0
Value
[0]
0
0
1
1
Value
[1]
0
1
0
1
Value
[2]
0
1
1
0
Value
[3]
1
0
0
1
Value
[4]
1
0
1
0
Value
[5]
1
1
0
0
Value
[6]
1
1
1
1
Value
[7]
A
A
B
B
C
C
F
F
25 marca 2008
Układy programowalne
50
Look-Up-Table
Look
Look
-
-
Up
Up
-
-
Table
Table
We must assign manually
the
Fout
truth-table to each of the 8 value.
Then
Fout
produces the XOR function
of inputs
F0
,
F1
and
F2
.
F2
F1
F0
Fout
Assigned
to
0
0
0
0
Value
[0]
0
0
1
1
Value
[1]
0
1
0
1
Value
[2]
0
1
1
0
Value
[3]
1
0
0
1
Value
[4]
1
0
1
0
Value
[5]
1
1
0
0
Value
[6]
1
1
1
1
Value
[7]
25 marca 2008
Układy programowalne
51
Look-Up-Table
Look
Look
-
-
Up
Up
-
-
Table
Table
We must assign manually
the
Fout
truth-table to each of the 8 value.
Then
Fout
produces the XOR function
of inputs
F0
,
F1
and
F2
.
F2
F1
F0
Fout
Assigned
to
0
0
0
0
Value
[0]
0
0
1
1
Value
[1]
0
1
0
1
Value
[2]
0
1
1
0
Value
[3]
1
0
0
1
Value
[4]
1
0
1
0
Value
[5]
1
1
0
0
Value
[6]
1
1
1
1
Value
[7]
25 marca 2008
Układy programowalne
52
Memory
points
Memory
Memory
points
points
Memory points are essential components of the configurable logic
Memory points are essential components of the configurable logic
blocks.
blocks.
The memory point is
The memory point is
used to
used to
store one logical value, corresponding to the logic truth table.
store one logical value, corresponding to the logic truth table.
For a 3
For a 3
-
-
input function (F0,F1,F2 in the
input function (F0,F1,F2 in the
previous LUT), we need an array of 8 memory points to
previous LUT), we need an array of 8 memory points to
store the information Value[0]..Value[7].
store the information Value[0]..Value[7].
There
There
exist here also several approaches to store one single bit of in
exist here also several approaches to store one single bit of in
formation.
formation.
One
One
of
of
them
them
consists of D
consists of D
flip
flip
-
-
flops
flops
. Each register stores one logical information Value[i]. The D
. Each register stores one logical information Value[i]. The D
flip
flip
-
-
flops
flops
are
are
chained in order to limit the control signals to one clock
chained in order to limit the control signals to one clock
ClockProg
ClockProg
and one data signal
and one data signal
DataProg
DataProg
.
.
The logical data Value[i] is fully programmed by a word of 8 bit
The logical data Value[i] is fully programmed by a word of 8 bit
s sent in series to the signal
s sent in series to the signal
DataProg
DataProg
Most FPGA designs use D
Most FPGA designs use D
flip
flip
-
-
flops
flops
to store the LUT configuration. Notice that the configuration
to store the LUT configuration. Notice that the configuration
is lost when
is lost when
the power supply is down.
the power supply is down.
V7 V6 V5 V4 V3 V2 V1 V
V7 V6 V5 V4 V3 V2 V1 V
0
0
25 marca 2008
Układy programowalne
53
Look-Up-Table
Look
Look
-
-
Up
Up
-
-
Table
Table
F2
F1
F0
Fout
Assigned
to
0
0
0
0
Value
[0]
0
0
1
1
Value
[1]
0
1
0
1
Value
[2]
0
1
1
0
Value
[3]
1
0
0
1
Value
[4]
1
0
1
0
Value
[5]
1
1
0
0
Value
[6]
1
1
1
1
Value
[7]
25 marca 2008
Układy programowalne
54
Programmable Logic Block
Programmable Logic Block
Programmable Logic Block
The programmable logic block consists of a look
The programmable logic block consists of a look
-
-
up table, a D
up table, a D
-
-
register and some multiplex
register and some multiplex
e
e
rs
rs
.
.
There
There
exist numerous possible structures for logic blocks. We present
exist numerous possible structures for logic blocks. We present
a simple structure which
a simple structure which
has some similarities with the
has some similarities with the
Xilinx
Xilinx
XC5200 series. The configurable block contains two active
XC5200 series. The configurable block contains two active
structures, the L
structures, the L
UT
UT
and the D
and the D
-
-
reg
reg
, that may work
, that may work
independently or be mixed together.
independently or be mixed together.
The output of the look
The output of the look
-
-
up
up
-
-
table is directly connected to the block output
table is directly connected to the block output
Fout
Fout
. The output can
. The output can
also serve
also serve
as the input data for the D
as the input data for the D
-
-
register, thanks to the multiplex
register, thanks to the multiplex
e
e
r controlled by
r controlled by
DataIn_Fout
DataIn_Fout
. The
. The
DataOut
DataOut
net can simply pass the signal
net can simply pass the signal
DataIn
DataIn
, in that case the cell is
, in that case the cell is
transparent. The
transparent. The
DataOut
DataOut
signal can also
signal can also
pass the signal
pass the signal
nQ
nQ
, depending on the multiplex
, depending on the multiplex
e
e
r status
r status
controlled by
controlled by
DataIn_nQ
DataIn_nQ
25 marca 2008
Układy programowalne
55
Programmable Logic Block
Programmable Logic Block
Programmable Logic Block
The
The
block
block
now
now
consists
consists
of
of
the
the
LUT
LUT
and
and
the
the
D
D
-
-
register. We
register. We
chain
chain
the
the
information
information
DataIn_Fout
DataIn_Fout
and
and
DataIn_nQ
DataIn_nQ
on
on
the
the
path
path
of
of
the
the
shift
shift
register by
register by
adding
adding
2
2
supplementary
supplementary
Dreg
Dreg
cells
cells
.
.
Each
Each
Dreg
Dreg
still
still
uses
uses
the
the
same
same
clock
clock
ClockProg
ClockProg
and
and
chained
chained
input
input
data
data
DataProg
DataProg
.
.
The configuring of the block is achieved thanks to 10 active clo
The configuring of the block is achieved thanks to 10 active clo
ck edges on
ck edges on
ClockProg
ClockProg
, and 10 serial
, and 10 serial
data
data
on
on
DataProg
DataProg
. The chain of Dreg starts at Dreg0 (Upper Dreg, which produced
. The chain of Dreg starts at Dreg0 (Upper Dreg, which produced
Value[0])
Value[0])
and
and
stops at Dreg9 (which produced
stops at Dreg9 (which produced
DataIn/nQ
DataIn/nQ
). The information that flows at
). The information that flows at
the far end of the
the far end of the
register chain is defined at the first cycle, while the closest
register chain is defined at the first cycle, while the closest
register is configured by the
register is configured by the
data
data
present at the last active clock edge.,
present at the last active clock edge.,
25 marca 2008
Układy programowalne
56
Programmable Logic Block
Programmable Logic Block
Programmable Logic Block
The
The
block
block
now
now
consists
consists
of
of
the
the
LUT
LUT
and
and
the
the
D
D
-
-
register. We
register. We
chain
chain
the
the
information
information
DataIn_Fout
DataIn_Fout
and
and
DataIn_nQ
DataIn_nQ
on
on
the
the
path
path
of
of
the
the
shift
shift
register by
register by
adding
adding
2
2
supplementary
supplementary
Dreg
Dreg
cells
cells
.
.
Each
Each
Dreg
Dreg
still
still
uses
uses
the
the
same
same
clock
clock
ClockProg
ClockProg
and
and
chained
chained
input
input
data
data
DataProg
DataProg
.
.
The configuring of the block is achieved thanks to 10 active clo
The configuring of the block is achieved thanks to 10 active clo
ck edges on
ck edges on
ClockProg
ClockProg
, and 10 serial
, and 10 serial
data
data
on
on
DataProg
DataProg
. The chain of Dreg starts at Dreg0 (Upper Dreg, which produced
. The chain of Dreg starts at Dreg0 (Upper Dreg, which produced
Value[0])
Value[0])
and
and
stops at Dreg9 (which produced
stops at Dreg9 (which produced
DataIn/nQ
DataIn/nQ
). The information that flows at
). The information that flows at
the far end of the
the far end of the
register chain is defined at the first cycle, while the closest
register chain is defined at the first cycle, while the closest
register is configured by the
register is configured by the
data
data
present at the last active clock edge.,
present at the last active clock edge.,
25 marca 2008
Układy programowalne
57
Application
of the FPGA circuits
Full-Adder Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Full
Full
-
-
Adder Example
Adder Example
The
The
implementation
implementation
of
of
the
the
CARRY
CARRY
and
and
SUM
SUM
function
function
is
is
achived
achived
by
by
programming
programming
two
two
look
look
-
-
up
up
tables
tables
according
according
to
to
the
the
truthtables
truthtables
One
One
programmable
programmable
logic
logic
block
block
Block1
Block1
supports
supports
the
the
generation
generation
of
of
the
the
sum for
sum for
given
given
logic
logic
values
values
of
of
the
the
inputs
inputs
A,B
A,B
and
and
C.
C.
The
The
information
information
needed
needed
to
to
configure
configure
Block1 as a Sum
Block1 as a Sum
function
function
(3
(3
-
-
input XOR)
input XOR)
is
is
given
given
in
in
table
table
.
.
Notice
Notice
that
that
we
we
only
only
use
use
the
the
LUT
LUT
in
in
this
this
programmable
programmable
logic
logic
block
block
.
.
The
The
Dreg
Dreg
is
is
not
not
active
active
,
,
and
and
we
we
only
only
exploit
exploit
the
the
output
output
of
of
the
the
LUT
LUT
Fout
Fout
,
,
which
which
is
is
configured
configured
as
as
the
the
Sum.
Sum.
F=A+B+C
F=A+B+C
S
S
0
0
SUM
SUM
S
S
1
1
Carry
Carry
ABC
ABC
0+0+0
0+0+0
0
0
0
0
1+0+0
1+0+0
1
1
0
0
0+1+0
0+1+0
1
1
0
0
0+0+1
0+0+1
1
1
0
0
1+1+0
1+1+0
0
0
1
1
1+0+1
1+0+1
0
0
1
1
0+1+1
0+1+1
0
0
1
1
The
The
signal
signal
Sum
Sum
propagates
propagates
outside
outside
the
the
block
block
to
to
the
the
output
output
interface
interface
region by
region by
exploiting
exploiting
the
the
interconnect
interconnect
resources
resources
and
and
switching
switching
matrix
matrix
.
.
The
The
other
other
programmable
programmable
logic
logic
block
block
Block2
Block2
supports
supports
the
the
generation
generation
of
of
the
the
signal
signal
Carry
Carry
,
,
from
from
the
the
same
same
inputs
inputs
A,B
A,B
and
and
C.
C.
The
The
result
result
Carry
Carry
is
is
exported
exported
to
to
the
the
output
output
interface
interface
region as for
region as for
the
the
Sum
Sum
signal
signal
.
.
Again
Again
,
,
in
in
this
this
block
block
,
,
only
only
the
the
LUT
LUT
is
is
active
active
.
.
25 marca 2008
Układy programowalne
58
Application
of the FPGA circuits
Full-Adder Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Full
Full
-
-
Adder Example
Adder Example
Serial data
Serial data
used
used
to
to
configure
configure
the
the
logic
logic
blocks
blocks
1&2 as SUM
1&2 as SUM
and
and
CARRY
CARRY
The programming sequence is contained in the piece
The programming sequence is contained in the piece
-
-
wise
wise
-
-
linear symbols ProgBlock1 and
linear symbols ProgBlock1 and
ProgBlcok2.
ProgBlcok2.
As seen in the chronograms, the program clock
As seen in the chronograms, the program clock
ClockPgm
ClockPgm
is only active at the
is only active at the
initialization
initialization
phase, to shift the logic information to the memory points insid
phase, to shift the logic information to the memory points insid
e the blocks which
e the blocks which
configure each
configure each
multiplex
multiplex
e
e
r.
r.
Block
Block
1 Sum
1 Sum
of
of
F0, F1, F2
F0, F1, F2
C
C
ycle
ycle
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
DataIn
DataIn
(
(
nQ
nQ
)
)
DataIn
DataIn
(
(
Fout
Fout
)
)
Val (7)
Val (7)
Val (6)
Val (6)
Val (5)
Val (5)
Val (4)
Val (4)
Val (3)
Val (3)
Val (2)
Val (2)
Val (1)
Val (1)
Val (0)
Val (0)
0
0
0
0
1
1
0
0
0
0
1
1
0
0
1
1
1
1
0
0
Block
Block
2
2
Carry
Carry
of
of
F0, F1, F2
F0, F1, F2
C
C
ycle
ycle
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
DataIn
DataIn
(
(
nQ
nQ
)
)
DataIn
DataIn
(
(
Fout
Fout
)
)
Val (7)
Val (7)
Val (6)
Val (6)
Val (5)
Val (5)
Val (4)
Val (4)
Val (3)
Val (3)
Val (2)
Val (2)
Val (1)
Val (1)
Val (0)
Val (0)
0
0
0
0
1
1
1
1
1
1
0
0
1
1
0
0
0
0
0
0
25 marca 2008
Układy programowalne
59
Interconnection between blocks
-Programmable Interconnect Point (PIP)
Interconnection between blocks
Interconnection between blocks
-
-
Programmable Interconnect Point (PIP)
Programmable Interconnect Point (PIP)
Programmable
Programmable
Interconnect
Interconnect
Point
Point
consists of a configurable bridge between two
consists of a configurable bridge between two
interconnects.
interconnects.
25 marca 2008
Układy programowalne
60
Programmable
Programmable
Interconnect
Interconnect
Point
Point
consists of a configurable bridge between two
consists of a configurable bridge between two
interconnects.
interconnects.
The bridge can be built from a transmission gate, controlled onc
The bridge can be built from a transmission gate, controlled onc
e again by a D
e again by a D
-
-
reg
reg
cell
cell
.
.
When the register information contains a 0, the transmission gat
When the register information contains a 0, the transmission gat
e is off and no link exists
e is off and no link exists
between
between
Interco1 and Interco2. When the information held by the register
Interco1 and Interco2. When the information held by the register
is 1, the transmission
is 1, the transmission
gate establishes a
gate establishes a
resistive link between Interco1 and Interco2. The resistance val
resistive link between Interco1 and Interco2. The resistance val
ue is around
ue is around
100
100
Ω
Ω
.
.
Interconnection between blocks
-Programmable Interconnect Point (PIP)
Interconnection between blocks
Interconnection between blocks
-
-
Programmable Interconnect Point (PIP)
Programmable Interconnect Point (PIP)
25 marca 2008
Układy programowalne
61
Interconnection between blocks
-
Switching Matrix
Interconnection between blocks
Interconnection between blocks
-
-
Switching Matrix
Switching Matrix
The switching matrix
The switching matrix
is a sophisticated programmable interconnect point, which enabl
is a sophisticated programmable interconnect point, which enabl
es a
es a
wide range of
wide range of
routing combinations within a single interconnect crossing.
routing combinations within a single interconnect crossing.
The matrix includes 6 configurable
The matrix includes 6 configurable
bridges between the two main
bridges between the two main
interconnects.
interconnects.
Examples of 3x3 switching matrix
Examples of 3x3 switching matrix
is
is
given in figure. The routing
given in figure. The routing
possibilities are
possibilities are
numerous, which
numerous, which
improves the configurability of the
improves the configurability of the
logic blocs.
logic blocs.
25 marca 2008
Układy programowalne
62
Interconnection between blocks
-
Switching Matrix
Interconnection between blocks
Interconnection between blocks
-
-
Switching Matrix
Switching Matrix
Implementation
Implementation
of
of
the
the
Switching
Switching
Matrix
Matrix
From
From
a
a
practical
practical
point
point
of
of
view
view
,
,
the
the
switching
switching
matrix
matrix
can
can
be
be
built
built
from
from
a
a
regrouping
regrouping
of
of
6
6
transmission
transmission
gates
gates
.
.
Each
Each
transmission
transmission
gate
gate
is
is
controlled
controlled
by
by
an
an
associated
associated
Dreg
Dreg
cell
cell
,
,
which
which
memorizes
memorizes
the
the
desired
desired
configuration
configuration
.
.
The
The
Dreg
Dreg
cells
cells
are
are
chained
chained
so
so
that
that
one single
one single
input
input
DataIn
DataIn
and
and
one
one
clock
clock
LoadClock
LoadClock
are
are
enough
enough
to
to
configure
configure
the
the
matrix
matrix
.
.
0 0
0 0 1
1
1
1
0 0
0 0
25 marca 2008
Układy programowalne
63
Interconnection between blocks
-
Array of Blocs
Interconnection between blocks
Interconnection between blocks
-
-
Array of Blocs
Array of Blocs
The
The
configurable
configurable
blocs
blocs
are
are
associated
associated
with
with
programmable
programmable
interconnect
interconnect
points
points
and
and
switching
switching
matrix
matrix
to
to
create
create
a
a
complete
complete
configurable
configurable
core
core
.
.
An
An
example
example
of
of
double
double
configurable
configurable
block
block
and
and
its
its
associated
associated
25 marca 2008
Układy programowalne
64
Application
of the FPGA circuits
Full-Adder Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Full
Full
-
-
Adder Example
Adder Example
The routing of the signals A,B and C as well as Sum and Carry ha
The routing of the signals A,B and C as well as Sum and Carry ha
s been done manually. In reality,
s been done manually. In reality,
specific placement/routing tools are provided to generate the
specific placement/routing tools are provided to generate the
electrical structure automatically
electrical structure automatically
from the initial schematic diagram, which avoids manual errors a
from the initial schematic diagram, which avoids manual errors a
nd
nd
limits conflicts or omissions.
limits conflicts or omissions.
25 marca 2008
Układy programowalne
65
Application
of the FPGA circuits
Full-Adder Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Full
Full
-
-
Adder Example
Adder Example
The routing of the signals A,B and C as well as Sum and Carry ha
The routing of the signals A,B and C as well as Sum and Carry ha
s been done manually. In reality,
s been done manually. In reality,
specific placement/routing tools are provided to generate the
specific placement/routing tools are provided to generate the
electrical structure automatically
electrical structure automatically
from the initial schematic diagram, which avoids manual errors a
from the initial schematic diagram, which avoids manual errors a
nd
nd
limits conflicts or omissions.
limits conflicts or omissions.
25 marca 2008
Układy programowalne
66
Application
of the FPGA circuits
Clock Divider Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Clock Divider Example
Clock Divider Example
A second example is proposed as an application of the FPGA circu
A second example is proposed as an application of the FPGA circu
its. It concerns the clock division.
its. It concerns the clock division.
We
We
recall the general structure and the typical chronograms of the
recall the general structure and the typical chronograms of the
clock division by four,
clock division by four,
which
which
requires two Dreg cells, with a feedback from the output ~Q to t
requires two Dreg cells, with a feedback from the output ~Q to t
he input D.
he input D.
25 marca 2008
Układy programowalne
67
Application
of the FPGA circuits
Clock Divider Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Clock Divider Example
Clock Divider Example
Not used
Not used
25 marca 2008
Układy programowalne
68
Application
of the FPGA circuits
Clock Divider Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Clock Divider Example
Clock Divider Example
Clk
Clk
prog
prog
Data
Data
prog
prog
25 marca 2008
Układy programowalne
69
Application
of the FPGA circuits
Clock Divider Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Clock Divider Example
Clock Divider Example
Each programmable
Each programmable
logic block is configured as a single stage clock divider. The i
logic block is configured as a single stage clock divider. The i
nformation
nformation
needed to configure Block1 as a
needed to configure Block1 as a
simple Dreg function is given in table.
simple Dreg function is given in table.
This serial data information creates a direct path from
This serial data information creates a direct path from
DataIn
DataIn
to input D of the Dreg cell, while
to input D of the Dreg cell, while
nQ
nQ
propagates to
propagates to
DataOut
DataOut
.
.
Notice that the look
Notice that the look
-
-
up
up
table is inactive in this configuration.
table is inactive in this configuration.
Block
Block
1
1
DataOut
DataOut
=
=
nQ
nQ
, D=
, D=
DataIN
DataIN
C
C
ycle
ycle
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
DataIn
DataIn
(
(
nQ
nQ
)
)
DataIn
DataIn
(
(
Fout
Fout
)
)
Val (7)
Val (7)
Val (6)
Val (6)
Val (5)
Val (5)
Val (4)
Val (4)
Val (3)
Val (3)
Val (2)
Val (2)
Val (1)
Val (1)
Val (0)
Val (0)
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Block
Block
2
2
DataOut
DataOut
=
=
nQ
nQ
, D=
, D=
DataIN
DataIN
C
C
ycle
ycle
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
DataIn
DataIn
(
(
nQ
nQ
)
)
DataIn
DataIn
(
(
Fout
Fout
)
)
Val (7)
Val (7)
Val (6)
Val (6)
Val (5)
Val (5)
Val (4)
Val (4)
Val (3)
Val (3)
Val (2)
Val (2)
Val (1)
Val (1)
Val (0)
Val (0)
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
25 marca 2008
Układy programowalne
70
Application
of the FPGA circuits
Clock Divider Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Clock Divider Example
Clock Divider Example
Outside the programmable block, the signal
Outside the programmable block, the signal
nQ
nQ
propagates to the input
propagates to the input
DataIn
DataIn
.
.
The other programmable logic block Block2 is also programmed as
The other programmable logic block Block2 is also programmed as
a Dreg circuit with a feedback
a Dreg circuit with a feedback
from
from
nQ
nQ
to
to
DataIn
DataIn
.
.
25 marca 2008
Układy programowalne
71
Application
of the FPGA circuits
Clock Divider Example
A
A
pplication
pplication
of the FPGA circuits
of the FPGA circuits
Clock Divider Example
Clock Divider Example
The
The
first
first
nanoseconds
nanoseconds
are
are
dedicated
dedicated
to
to
the
the
programming
programming
of
of
the
the
blocks
blocks
.
.
Once
Once
properly
properly
configured
configured
,
,
the
the
counter
counter
starts
starts
to
to
work
work
according
according
to
to
the
the
specifications
specifications
.
.
Notice
Notice
the
the
very
very
important
important
delay
delay
in
in
responding
responding
to
to
the
the
active
active
edges
edges
,
,
which
which
is
is
due
due
to
to
the
the
intrinsic
intrinsic
complexity
complexity
of
of
the
the
configuration
configuration
block
block
,
,
and
and
to
to
the
the
long
long
interconnect
interconnect
delay
delay
through
through
the
the
connection
connection
points
points
and
and
switching
switching
matrix
matrix
.
.
Timing
Timing
of
of
the
the
clock
clock
divider
divider
circuit
circuit