3 października 2012
Wojciech Kucewicz
1
3 października 2012
Wojciech Kucewicz
2
Programowalne
i specjalizowane
układy cyfrowe
Programowalne
i specjalizowane
układy cyfrowe
3 października 2012
Wojciech Kucewicz
3
Klasyfikacja
układów logicznych
Klasyfikacja
układów logicznych
Gate Array
PLD
Standard
Cell IC
Full Custom
IC
SPLD
(PAL)
CPLD
FPGA
Klasyfikacja układów logicznych
Klasyfikacja układów logicznych
Logic
circuits
Standard
Logic
ASIC
ASIC - Application Specific Integrated Circuits, specjalizowane układy scalone, projektowane
indywidualnie do konkretnego zastosowania, na zamówienie producentów urządzeń elektronicznych.
Full Custom – Układy ASIC, w których projektant projektuje wszystkie elementy układu scalonego
poczynając od topologii tranzystorów i połączeń między nimi wyprowadzeń.
3 października 2012
Wojciech Kucewicz
5
VLSI Design Flow
Full Custom
VLSI Design Flow
Full Custom
3 października 2012
Wojciech Kucewicz
6
VLSI Design Flow
VLSI Design Flow
System Idea
Identifying SubBlocks
Bottom-Up full custom
3 października 2012
Wojciech Kucewicz
7
VLSI Design Flow (Full Custom)
VLSI Design Flow (Full Custom)
Sub-block Schematic
Transistor Level Simulation
Layout
Extraction
Layout vs.Schematic Check
Post Layout Simulation
3 października 2012
Wojciech Kucewicz
8
VLSI Design Flow
VLSI Design Flow
Prototyping
Tape out
Placement and routing
Tests
Fabrification
Top Level Verification
3 października 2012
Wojciech Kucewicz
9
Full Custom
Full Custom
Advantages
• chip area fully used
• faster
(shorter interconnections)
• power consumption adequate to the circuit function
• cheap in the long series
(for example memories)
Disadvantages
• very long prototyping
• very expensive development
Gate Array
PLD
Standard
Cell IC
Full Custom
IC
SPLD
(PAL)
CPLD
FPGA
Klasyfikacja układów logicznych
Klasyfikacja układów logicznych
Logic
circuits
Standard
Logic
ASIC
ASIC - Application Specific Integrated Circuits, specjalizowane układy scalone, projektowane
indywidualnie do konkretnego zastosowania, na zamówienie producentów urządzeń elektronicznych.
Układy Standard Cell – Układy ASIC, w których projektant składa układ z gotowych topologii
elementów układów zapisanych w bibliotekach.
3 października 2012
Wojciech Kucewicz
11
Standard Cell
Standard Cell
3 października 2012
Wojciech Kucewicz
12
Standard Cells
Standard Cells
The standard-cells based design is one of the most prevalent
full custom design styles which require development of a full
custom mask set.
In this design style, all of the commonly used logic cells are
developed, characterized, and stored in a standard cell
library.
A typical library may contain a few hundreds cells including
inverters, NAND gates, NOR gates,, D-latches, and flip-flops.
3 października 2012
Wojciech Kucewicz
13
Standard Cells
Standard Cells
To enable automated placement of the cells and routing of inter-cell
connections, each cell layout is designed with a fixed height, so that a
number of cells can be abutted side-by-side to form rows. The power
and ground rails typically run parallel to the upper and lower
boundaries of the cell, thus, neighbouring cells share a common power
and ground bus
3 października 2012
Wojciech Kucewicz
14
Standard Cells
Standard Cells
Inside the I/O frame which is
reserved for I/O cells, the chip
area contains rows or columns of
standard cells. Between cell rows
are channels for dedicated inter-cell
routing.
3 października 2012
Wojciech Kucewicz
15
Standard Cells
Standard Cells
A common signal bus structure
can also be incorporated into
the standard-cell-based chip
layout.
3 października 2012
Wojciech Kucewicz
16
Standard Cells
Standard Cells
Advantages
• chip area nearly fully used
• faster
(shorter interconnections)
• power consumption adequate to the circuit function
• cheap in the long series
Disadvantages
• longer prototyping
• expensive design
Gate Array
PLD
Standard
Cell IC
Full Custom
IC
SPLD
(PAL)
CPLD
FPGA
Klasyfikacja układów logicznych
Klasyfikacja układów logicznych
Logic
circuits
Standard
Logic
ASIC
ASIC - Application Specific Integrated Circuits, specjalizowane układy scalone, projektowane
indywidualnie do konkretnego zastosowania, na zamówienie producentów urządzeń elektronicznych.
Układy Gate Array – Układy ASIC, w których projektant projektuje maskę połączeń między
gotowymi tranzystorami i bramkami.
3 października 2012
Wojciech Kucewicz
18
Gate Array
Gate Array
3 października 2012
Wojciech Kucewicz
19
Gate Array (GA)
Gate Array (GA)
Gate array implementation requires a two-step manufacturing process:
• The first phase, which is based on generic (standard) masks, results in an array
of uncommitted transistors on each GA chip.
• Chips can be stored for later customization, which is completed by
defining the
metal interconnects between the transistors of the array
.
3 października 2012
Wojciech Kucewicz
20
Gate Array Chip
Gate Array Chip
Gate array chip contains:
• bonding pads,
• diodes for I/O protection, nMOS
and pMOS transistors for chip
output driver circuits in the
neighboring areas of bonding pads,
• arrays of nMOS and pMOS
transistors,
• power and ground buses along
with contact windows
3 października 2012
Wojciech Kucewicz
21
Gate Array
Gate Array
Advantages
• quite fast prototyping
(but slower than FPGA)
• low volume application
• short turn-around time
(but longer than FPGA)
Disadvantages
• chip area only partially used
(but better than FPGA)
• relatively high power consumption
• long interconnection lines
•
not reconfigurable
• quite expensive
Gate Array
PLD
Standard
Cell IC
Full Custom
IC
SPLD
(PAL)
CPLD
FPGA
Klasyfikacja układów logicznych
Klasyfikacja układów logicznych
Logic
circuits
Standard
Logic
ASIC
ASIC - Application Specific Integrated Circuits, specjalizowane układy scalone, projektowane indywidualnie do
konkretnego zastosowania, na zamówienie producentów urządzeń elektronicznych.
PLD - Programmable Logic Devices, Użytkownik może zaimplementować w jego strukturze opracowany przez
siebie projekt specjalizowanego układu cyfrowego. Cechą tych układów jest więc ich konfigurowalność przez
użytkownika.
SPLD - Simple Programmable Logic Devices, proste układy programowalne.
FPGA - Field Programmable Gate Array, programowalne matryce bramkowe.
CPLD - Complex Programmable Logic Devices, złożone układy programowalne.
3 października 2012
Wojciech Kucewicz
23
Układy PLD
Układy PLD
Programowalne
i specjalizowane układy cyfrowe
Programowalne
i specjalizowane układy cyfrowe
Najwięksi producenci układów PLD
Najwięksi producenci układów PLD
1. Xilinx (
www.xilinx.com
)
2. Altera (
www.altera.com
)
3. Lattice-Vantis (
www.latticesemi.com
)
4. Actel (
www.actel.com
)
5. Atmel (
www.atmel.com
)
6. Cypress (
www.cypress.com
)
7. QuickLogic (
www.quicklogic.com
)
Literatura
Literatura
1. Pasierbiński J., Zbysiński P.,
Układy programowalne w praktyce
, Wyd. WKŁ,
Warszawa 2002.
2. Kevin Skahill,
Język VHDL, Projektowanie programowalnych układów
logicznych
,Wydawnictwa naukowo-Techniczne, Warszawa 2001
3. T. Łuba, K. Jasiński, B. Zbierzchowski,
Specjalizowane układy cyfrowe w
strukturach PLD i FPGA
, WKŁ, Warszawa, 1997
4. Podręczniki firmowe (
Data Book, Data Sheet, Application Notes
, itp.. …) do
omawianych układów (ze stron WWW producentów)
–
www.xilinx.com
–
www.altera.com
–
www.latticesemi.com
–
www.actel.com
–
www.atmel.com
–
www.cypress.com
–
www.quicklogic.com
Inne strony WWW zajmujące się tematyką PLD, np:
–
http://www.fpgajournal.com
,
–
www.design-reuse.com
,
–
www.opencores.org
Układy SPLD
Układy SPLD
Do układów SPLD zalicza się układy programowalne:
PLA (
Programmable Logic Array
),
PAL (
Programmable Array Logic
)
GAL (
Generic Array Logic
).
Są to układy najtańsze i najprostsze o małej liczbie wyprowadzeń.
Ich zasoby logiczne zawierają typowo od 4 do 22 makrokomórek logicznych o dwupoziomowej
strukturze logicznej i mogą zwykle zastąpić kilka standardowych układów scalonych rodziny
74xx.
Struktura zazwyczaj jest symetryczna, tzn. każda z makrokomórek jest w pełni połączona z
innymi komórkami w danym układzie scalonym. Wyjście każdej komórki może być podane na
wejście każdej innej oraz wejścia układu mogą być podane do każdej komórki.
Do określenia połączeń pomiędzy komórkami oraz funkcji przez nie realizowanych
(skonfigurowania/zaprogramowania układu) stosowane są łączniki (klucze), którymi są w
większości przypadków przepalane elektrycznie fragmenty ścieżek (łączniki rozwarciowe – dla
układów PLA i PAL) lub tranzystory MOS (dla układów GAL).
SPLD
(PLA)
Układy PLA – Programowalne Matryce
Logiczne
Układy PLA – Programowalne Matryce
Logiczne
Układy PLA są przykładem
kombinacyjnego układu PLD.
Stanowią dwuwymiarową
strukturę połączeń z
programowalnymi połączeniami
(najczęściej zwarciami) w
miejscu ich krzyżowania się
X0
X1
X15
16 wejścia
16 bramek
NAND
16 wejść
8 bramek
OR
SPLD
(PLA)
Układy PLA – Programowalne Matryce
Logiczne
Układy PLA – Programowalne Matryce
Logiczne
Układy PLA są przykładem
kombinacyjnego układu PLD.
Stanowią dwuwymiarową
strukturę połączeń z
programowalnymi połączeniami
(najczęściej zwarciami) w
miejscu ich krzyżowania się.
Programowalne połączenia
mają bramki AND i bramki OR
X0
X1
X15
32 wejścia
48 bramek
NAND
16 wejść
8 bramek
OR
SPLD
(PLA)
Układy PLA – Programowalne Matryce
Logiczne
Układy PLA – Programowalne Matryce
Logiczne
Dla każdego sygnału wejściowego można
wyróżnić 4 przypadki programowania
wejść bramki NAND:
1. Stan nie zaprogramowany
2. Podawanie sygnału wejściowego nie
zanegowanego
3. Podawanie sygnału wejściowego
zanegowanego
4. Nie podawanie sygnału na wejście
X0
X0
X0
X0
1
2
3
4
SPLD
(PLA)
Układy PLA – Programowalne Matryce
Logiczne
Układy PLA – Programowalne Matryce
Logiczne
Realizacja sumatora przy
pomocy układu PLA
A
B
C
S = A’B’C + AB’C’ + A’BC’ + ABC
Carry = AB + AC + BC
S
Carry
SPLD
(PAL)
Układy PAL – Programowalne Matrycowe
Układy Logiczne
Układy PAL – Programowalne Matrycowe
Układy Logiczne
Układy PAL
charakteryzują się tym,
iż programowalne
połączenia mają tylko
bramki AND.
W układach PAL wyjście
każdej bramki AND jest
bezpośrednio połączone
do jednego z wejść
jednej bramki OR
X0
X1
X2
AMD PAL
Programmable
Array Logic
SPLD
(PAL)
Układy PAL – Programowalne Matrycowe
Układy Logiczne
Układy PAL – Programowalne Matrycowe
Układy Logiczne
A
B
C
AMD PAL
Programmable
Array Logic
Realizacja sumatora przy
pomocy układu PAL
S = A’B’C + AB’C’ + A’BC’ + ABC
Carry = AB + AC + BC
S
Carry
Fragment struktury układu PAL 16L8
Fragment struktury układu PAL 16L8
Widoczne:
1. Macierz połączeń AND
2. Funkcje OR (następniki)
3. Sprzężenia zwrotne do macierzy połączeń
Układy GAL
Układy GAL
Obecnie najpopularniejszą grupą układów SPLD są układy GAL, w których
wykorzystano architekturę PAL wzbogaconą o konfigurowalne
makrokomórki wyjściowe zawierające przerzutniki typu D. Przerzutniki
te spełniają rolę wyjściowych elementów pamięciowych umożliwiających
budowanie układów synchronicznych.
SPLD
(GAL)
Generic Array Logic
Układy GAL
Układy GAL
SPLD
(GAL)
Makrokomórki w układach GAL
Makrokomórki w układach GAL
OLMC
Output Logic
Macrocell
Makrokomórka OLMC umożliwia zaprogramowanie układu w trybie
kombinacyjnym lub sekwencyjnym
Komórka kombinacyjna
SPLD
(GAL)
Makrokomórki w układach GAL
Makrokomórki w układach GAL
OLMC
Output Logic
Macrocell
Makrokomórka OLMC umożliwia zaprogramowanie układu w trybie
kombinacyjnym lub sekwencyjnym
Komórka sekwencyjna
D Q
Clk nQ
SPLD
(GAL)
Makrokomórki w układach GAL
Makrokomórki w układach GAL
OLMC
Output Logic
Macrocell
Makrokomórka OLMC umożliwia zaprogramowanie układu w trybie
kombinacyjnym lub sekwencyjnym
Komórka uniwersalna
D Q
Clk nQ
SPLD
(GAL)
Przykładowy układ GAL ATF22LV10C
Przykładowy układ GAL ATF22LV10C
Budowa makroceli układu GAL22V10
Budowa makroceli układu GAL22V10
Układy CPLD
Układy CPLD
Układy CPLD są koncepcyjnie podobne do układów SPLD, lecz są bardziej złożone: mają
większe zasoby logiczne i możliwości funkcjonalne.
Ich architektura ma strukturę hierarchiczną opartą na makrokomórkach logicznych,
których zawierają od kilkudziesięciu do kilkuset. Typowo od czterech do szesnastu
makrokomórek jest połączonych w większy blok funkcjonalny (podobny do
pojedynczego układu SPLD).
Poszczególne bloki funkcjonalne są łączone między sobą za pomocą matrycy
połączeniowej, której zdolność łączeniowa jest ważną cechą układów CPLD.
Układy CPLD są wytwarzane niemal wyłącznie w technologii CMOS.
CPLD
Complex Programmable Logic Devices
Układy CPLD
Układy CPLD
CPLD
Complex Programmable Logic Devices
I/O
I/O
BF
BF
BF
BF
BF
BF
BF
BF
Programmable
interconnect
ion matrix
3 października 2012
Wojciech Kucewicz
43
F
ield
P
rogrammable
G
ate
A
rrays
(
FPGA
)
F
ield
P
rogrammable
G
ate
A
rrays
(
FPGA
)
Układy FPGA
Układy FPGA
Układy FPGA (Field Programmable Gate Array) należą do grupy układów
programowalnych przez użytkownika.
Dzięki uniwersalnej budowie i pełnej konfigurowalności możliwe jest
zaimplementowanie dowolnej funkcji logicznej w strukturze FPGA.
Ta uniwersalność układów FPGA powoduje, że produkowane są one masowo i
dzięki temu są ogólnie dostępne.
Stanowią dobrą alternatywę dla układów ASIC charakteryzujących się
wysokimi kosztami produkcji układu prototypowego i dłuższą procedurą
projektową.
Układy FPGA najchętniej wykorzystywane są przy projektowaniu
prototypowych układów cyfrowych średniej i dużej wielkości i
krótkoseryjnej produkcji.
Układy FPGA
Układy FPGA
Układy FPGA w języku polskim określane są jako programowalne matryce
bramkowe.
Są to programowalne układy cyfrowe wielkiej skali integracji, zawierające
zbiór programowalnych bloków logicznych CLB (Configurable Logic Block)
o regularnym rozkładzie topograficznym, programowalne połączenia PSM
(Programmable switch matrix) oraz bufory wejścia wyjścia (IO buffer)
.
Układy FPGA
Układy FPGA
Układy FPGA są układami o dużej złożoności logicznej i są przeznaczone
głównie do zastosowań systemowych.
Struktury FPGA zawierają do dziesiątków tysięcy bloków logicznych. Bloki
logiczne mogą być bardzo złożone, jest ich wówczas mniej w układzie, lub
względnie proste i jest ich wówczas więcej.
Bloki PLB mogą spełniać o wiele bardziej zaawansowane funkcje niż zwykłe
bramki logiczne.
Układy FPGA
Układy FPGA
Programowanie układów FPGA polega na skonfigurowaniu
układów wejścia/wyjścia, bloków logicznych oraz
połączeń między nimi.
Jest to proces programowania wewnętrznej pamięci układu, która z kolei
steruje siecią łączników konfigurujących poszczególne funkcje układu.
Pamięć konfiguracji nie stanowi oddzielnego bloku, ale jej poszczególne
elementy związane są z blokami funkcjonalnymi
3 października 2012
Wojciech Kucewicz
48
Układy FPGA
Układy FPGA
Wszystkie wewnętrzne kanały łączeniowe składają się z odcinków ścieżek
metalowych, programowalnych punktów łączeniowych - PIP (Programmable
Interconnect Point) i programowalnych matryc łączeniowych - PSM
(Programmable Switch Matrix), , tworząc w efekcie wydajną strukturę
do realizacji sieci połączeń projektowanego systemu.
W miejscach przecinania się linii lokalnych znajdują się matryce łączników
PSM pełniące rolę programowalnych zwrotnic sygnałowych.
Zap pomocą matryc PSM sygnały
mogą być przełączane między
poszczególnymi kanałami, a
następnie poprzez kolejne łączniki
trafiać do wyprowadzeń bloków IOB
i CLB.
3 października 2012
Wojciech Kucewicz
49
Układ elektroniczny FPGA może być rozbudowana poprzez dodanie w jednej
obudowie struktur procesora, pamięci oraz dowolnych interfejsów
komunikacyjnych.
Powstaje w ten sposób typowy układ „Multichip module” lub „System on chip”,
gdy wszystkie struktury wykonane są w jednym układzie scalonym
System-On-Chip
System-On-Chip
3 października 2012
Wojciech Kucewicz
50
Programowalny blok logiczny PLB pozwala na implementację funkcji
logicznych (kombinacyjnych i sekwencyjnych). Stopień skomplikowania
funkcji logicznej , jaką można zaimplementować w PLB zależy od budowy tego
bloku.
Blok PLB zbudowany jest segmentu LUT (Look-up-Table) do realizacji
funkcji kombinacyjnych oraz bloku sekwencyjnego, który może się składać z
jednego lub wielu przerzutników. Wszystkie segmenty są łączone poprzez
multipleksery.
Programable Logic Blocks
Programable Logic Blocks
3 października 2012
Wojciech Kucewicz
51
Look-Up-Table
Look-Up-Table
Tablica
LUT
jest uniwersalnym układem do konfigurowania funkcji
logicznych.
Przyładowo 3-bitowa LUT posiada 3 wejścia X0, X1 i X2 oraz wyjście Fout
będące logiczną funkcją zmiennych wejściowych.
Wartości logiczne funkcji Fout zapisane są w tablicy i adresowane stanami
wejść X0, X1 i X2
Przykładowo adres 5 (101)
podłącza do wyjścia wartość
Value(5) zapisaną w tablicy.
Look-Up-Table
Value 0
Value 1
Value 2
Value 3
Value 4
Value 5
Value 6
Value7
X2
X1
X0
Fout
Value 5
1
0
1
3 października 2012
Wojciech Kucewicz
52
Look-Up-Table
Look-Up-Table
Tablica
LUT
może być zbudowana z
rejestru przesuwnego szeregowo-
równoległego (przerzutniki D) z
wybieraniem wyjścia przy pomocy
multipleksera.
Stany logiczne funkcji Fout są
wprowadzane z pamięci do rejestru
przesuwnego i wybierane odpowiednim
adresem (X2 X1 X0)
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
Value 0
Value 1
Value 2
Value 3
Value 4
Value 5
Value 6
Value 7
Przykładowo adres 5 (101)
podłącza do wyjścia wartość
Value(5) zapisaną w tablicy.
1 0 1
3 października 2012
Wojciech Kucewicz
53
Configurable Logic Block
Configurable Logic Block
Blok CLB zawiera również
układ sekwencyjny.
Przełączanie funkcji pomiędzy
blokiem kombinacyjnym (LUT)
i sekwencyjnym wykonuje się
przy pomocy multiplekserów.
Multipleksery przełączane są
wartościami logicznymi
wpisanymi do rozszerzonego o
2 bity rejestru przesuwnego
LUT.
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
X2
X1
X0
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
DA
TA
in
Cl
k
Q
DATAout
Me
m
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
X2
X1
X0
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
DA
TA
in
Cl
k
Q
DATAout
Me
m
LUT
Układ sekwencyjny
Value 8 Value 9
3 października 2012
Wojciech Kucewicz
54
Configurable Logic Block
Configurable Logic Block
Wyjście LUT jest bezpośrednio
połączone do wyjścia Fout oraz
poprzez multiplekser z wejściem
przerzutnika.
Na przerzutnik można też
podawać sygnał bezpośrednio z
wejścia DATAin.
W zależności od ustawienia
drugiego multipleksera na wyjście
DATAout można podać sygnał z
wyjścia nQ przerzutnika lub
bezpośrednio sygnał z wejścia
DATAin
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
X2
X1
X0
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
DA
TA
in
Cl
k
Q
DATAout
Me
m
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
X2
X1
X0
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
DA
TA
in
Cl
k
Q
DATAout
Me
m
Prezentowany układ jest podobny do układów serii Xilinx XC5200.
3 października 2012
Wojciech Kucewicz
55
Programmable Switching Matrix
Programmable Switching Matrix
Zadaniem matrycy PSM jest programowanie połączeń pomiędzy blokami PLB.
Każde skrzyżowanie dwóch linii powinno zapewniać dowolne z 6 możliwych
połączeń
PIP – (Programmable Interconnect Point)
.
3 października 2012
Wojciech Kucewicz
56
Programmable Switching Matrix
Programmable Switching Matrix
PIP można zbudować z bramki transmisyjnej sterowanej przerzutnikiem D
Gdy przerzutnik ma na wyjściu Q wartość zero bramka jest wyłączona (brak
połączenia), gdy wyjście ma wartość 1 bramka przewodzi (2 linie są
połączone). Rezystancja takiego połączenia ma wartość ok. 100 Ω.
D Q’
Clk Q
Res
D Q’
Clk Q
Res
01
3 października 2012
Wojciech Kucewicz
57
Programmable Switching Matrix
Programmable Switching Matrix
Każde skrzyżowanie tworzy 6 bramek transmisyjnych, które strowane są z
rejestru przesuwnego.
0 1 0 0
0
1
3 października 2012
Wojciech Kucewicz
58
Programmable Switching Matrix
Programmable Switching Matrix
Zadaniem matrycy PSM jest programowanie połączeń pomiędzy blokami PLB.
Przykład matrycy 3 x3
W takim skrzyżowaniu linii
można zaprogramować wiele
połączeń pomiędzy CLB
Program DSCH2 umożliwia
tworzenie matryc połączeń
3 października 2012
Wojciech Kucewicz
59
Połączenie bloków CLB
Połączenie bloków CLB
Przykładowy układ 2 CLB wraz z połączeniami wykonany w DSCH2
3 października 2012
Wojciech Kucewicz
60
Przykład
Przykład
Zadanie:
Zbudować układ pełnego sumatora w układzie FPGA
1. Układ pełnego sumatora ma 3 zmienne wejściowe A, B, C oraz 2
funkcje wyjściowe Sum, Carry
2. Zapisujemy tablicę prawdy
F=A+B+C
S
0
SUM
S
1
Carry
ABC
0 0 0
0
0
0 0 1
1
0
0 1 0
1
0
0 1 1
0
1
1 0 0
1
0
1 0 1
0
1
1 1 0
0
1
1 1 1
1
1
3 października 2012
Wojciech Kucewicz
61
Zastosowanie układu FPGA do budowy pełnego
sumatora
Zastosowanie układu FPGA do budowy pełnego
sumatora
Pełny sumator realizowany jest przez dwie funkcje: Sumy i przeniesienia.
Każdą z tych funkcji należy zamodelować zgodnie z tablicą prawdy w
oddzielnym bloku LUT.
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
0
1
1
0
1
0
0
1
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
0
0
0
1
0
1
1
1
SUM
Carry
A B C
A B C
F=A+B+C
S
0
SUM
S
1
Carry
ABC
0 0 0
0
0
0 0 1
1
0
0 1 0
1
0
0 1 1
0
1
1 0 0
1
0
1 0 1
0
1
1 1 0
0
1
1 1 1
1
1
3 października 2012
Wojciech Kucewicz
62
Zastosowanie układu FPGA do budowy pełnego
sumatora
Zastosowanie układu FPGA do budowy pełnego
sumatora
Pełny sumator realizowany jest przez dwie funkcje: Sumy i przeniesienia.
Każdą z tych funkcji należy zamodelować zgodnie z tablicą prawdy w
oddzielnym bloku LUT.
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Fout
SUM
Carry
A B C
A B C
CLB 1
SUM
CLB 2
SUM
3 października 2012
Wojciech Kucewicz
Zastosowanie układu FPGA do budowy pełnego
sumatora
Zastosowanie układu FPGA do budowy pełnego
sumatora
Programowanie CLB powinno skonfigurować
cały blok (uwzględniać rejestry sterujące
multiplekserami z segmentu
sekwencyjnego)
Value9
Value8
Value7
Value6
Value5
Value4
Value3
Value2
Value1
Value0
SUM
0
0
1
0
0
1
0
1
1
0
Carry
0
0
1
1
1
0
1
0
0
0
3 października 2012
Wojciech Kucewicz
64
Przykład
Przykład
W tym celu potrzbne są 2 przerzutniki D. Ponieważ w CLB znajduje się tylko
jeden przerzutnik, więc należy wykorzystać 2 bloki CLB.
Zadanie:
Zbudować asynchroniczny licznik 2 bitowy w układzie FPGA
D Q’
Clk Q
Res
D Q’
Clk Q
Res
Clk
X0
X0
Res
CLB 1
CLB 1
3 października 2012
Wojciech Kucewicz
65
Licznik 2 bitowy
Licznik 2 bitowy
0 1
3 października 2012
Wojciech Kucewicz
66
W kazdym bloku konfiguruje się jeden stopień licznika. Zapisujemy w
rejestrze przesuwnym poniższą sekwencję
Block 1 DataOut=nQ, D=DataIN
Cycle 1
2
3
4
5
6
7
8
9
10
Val (9)
Val (8) Val (7) Val (6) Val (5) Val (4) Val (3) Val (2) Val (1) Val (0)
1
0
0
0
0
0
0
0
0
0
Licznik 2 bitowy
Licznik 2 bitowy
Block 2 DataOut=nQ, D=DataIN
Cycle 1
2
3
4
5
6
7
8
9
10
Val (9)
Val (8) Val (7) Val (6) Val (5) Val (4) Val (3) Val (2) Val (1) Val (0)
1
0
0
0
0
0
0
0
0
0
3 października 2012
Wojciech Kucewicz
67
Połączenie pomiędzy nQ i D realizujemy poza blokiem CLB
Licznik 2 bitowy
Licznik 2 bitowy
3 października 2012
Wojciech Kucewicz
68
CLB w układzie Xilinx Spartan
CLB w układzie Xilinx Spartan
Wszystkie bloki CLB w układach Spartan mają taką samą budowę. O funkcjonalności
całego układu FPGA decyduje uniwersalność tych bloków w realizowaniu różnych
funkcji. Zbudowane są w oparciu o trzy tablice LUT używane jako generatory funkcji
logicznych, dwa przerzutniki i dwie grupy multiplekserów sterujących przepływem
sygnałów.
3 października 2012
Wojciech Kucewicz
69
CLB w układzie Xilinx Spartan
CLB w układzie Xilinx Spartan
Dwie pamięci LUT (F i G) mają
pojemność 16 bitów i są używane
do generowania funkcji logicznych
do czterech zmiennych.
Sygnałami wejściowymi są linie
adresowe tych pamięci oznaczone
na rysunku jako F1-F4 i G1-G4. Są
to linie całkowicie niezależne od
siebie i mogą pochodzić z różnych
źródeł w układzie.
Trzecia z występujących w CLB
pamięci H-LUT (9 bitowa) stanowi
generator funkcji trzech
zmiennych, podanych na wejścia
F, H1, G.
Dwa z tych wejść (F i G) kontrolowane są przez programowalne multipleksery i mogą
być sterowane przez wyjścia pamięci F i G bądź przez sygnały wejściowe SR i DIN
danego bloku CLB. Trzeci sygnał wejściowy pamięci H-LUT pochodzi zawsze z wejścia
bloku CLB. Dzięki takiemu układowi w pojedynczym CLB mogą być realizowane również
funkcje pięciu zmiennych a także niektóre funkcje nawet do dziewięciu zmiennych.
3 października 2012
Wojciech Kucewicz
70
CLB w układzie Xilinx Spartan
CLB w układzie Xilinx Spartan
Możliwości realizacji funkcji
kombinacyjnych w każdym bloku
CLB są następujące:
• dwie dowolne funkcje każda do
czterech niezależnych
zmiennych, plus trzecia funkcja
do trzech zmiennych,
• dowolna funkcja pięciu zmien-
nych, plus dowolna funkcja do
czterech zmiennych,
• dowolna funkcja czterech
zmiennych, plus niektóre funkcje
sześciu zmiennych,
• niektóre funkcje do dziewięciu
zmiennych.
3 października 2012
Wojciech Kucewicz
71
CLB w układzie Xilinx Spartan
CLB w układzie Xilinx Spartan
Oprócz tablic LUT każdy CLB
zawiera dwa konfigurowalne
przerzutniki. Mogą być one
wykorzystane do zapamiętywania
stanów wyjściowych tablic LUT
albo pracować niezależnie od
nich. Wówczas sygnał DIN może
być doprowadzony do wejścia
dowolnego przerzutnika lub do
obu jednocześnie. Podobnie może
być doprowadzony poprzez
tablicę H-LUT (z niewielkim
opóźnieniem) sygnał H1.
Oba przerzutniki posiadają wspólne sygnały: zegara (CK), blokowania zegara (EC) i
ustawiania/zerowania przerzutnika (SR).
3 października 2012
Wojciech Kucewicz
72
CLB w układzie Xilinx Spartan
CLB w układzie Xilinx Spartan
Układy wejścia/wyjścia stanowią interfejs
między zewnętrznymi wyprowadzeniami
układu a wewnętrzną logiką. Każdy taki
układ współpracuje z jedną nóżką układu.
Układy te są w znacznym stopniu
konfigurowalne tak aby mogły spełniać
różne role, w zależności od potrzeb. IOB
można skonfigurować do pracy z sygnałami
wejściowymi, wyjściowymi lub
dwukierunkowymi
Droga sygnałów wejściowych: sygnał z końcówki układu wprowadzany jest przez bufor
wejściowy. Następnie może być przekazany bezpośrednio na końcówki I1 i I2, i dalej
do wewnętrznej sieci połączeń układu FPGA. Natomiast w przypadku gdy zachodzi
potrzeba zapamiętania stanu sygnału wejściowego, mamy do wyboru dwie metody:
• zapamiętanie stanu sygnału w przerzutniku na narastającym zboczu zegara
• zatrzaśnięcie stanu sygnału w zatrzasku po opadnięciu sygnału bramkującego
Uniwersalne układy wejścia/wyjścia IOB (Input/Output Blocks)