background image

3 października 2012

Wojciech Kucewicz 

1

background image

3 października 2012

Wojciech Kucewicz 

2

Programowalne 

i specjalizowane 

układy cyfrowe

Programowalne 

i specjalizowane 

układy cyfrowe

background image

3 października 2012

Wojciech Kucewicz 

3

Klasyfikacja 

układów logicznych

Klasyfikacja 

układów logicznych

background image

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ń.

background image

3 października 2012

Wojciech Kucewicz 

5

VLSI Design Flow

Full Custom

VLSI Design Flow

Full Custom

background image

3 października 2012

Wojciech Kucewicz 

6

VLSI Design Flow

VLSI Design Flow

System Idea

Identifying SubBlocks

Bottom-Up full custom

background image

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

background image

3 października 2012

Wojciech Kucewicz 

8

VLSI Design Flow

VLSI Design Flow

Prototyping

Tape out

Placement and routing

Tests

Fabrification

Top Level Verification

background image

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 

background image

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. 

background image

3 października 2012

Wojciech Kucewicz 

11

Standard Cell

Standard Cell

background image

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.

background image

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

background image

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.

background image

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.

background image

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

background image

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.

background image

3 października 2012

Wojciech Kucewicz 

18

Gate Array

Gate Array

background image

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

.

background image

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

background image

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 

background image

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.

background image

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

background image

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

)

background image

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

background image

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). 

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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ń

background image

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

background image

Układy GAL

Układy GAL

SPLD

(GAL)

background image

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)

background image

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)

background image

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)

background image

Przykładowy układ GAL ATF22LV10C

Przykładowy układ GAL ATF22LV10C

background image

Budowa makroceli układu GAL22V10

Budowa makroceli układu GAL22V10

background image

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

background image

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

background image

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

)

background image

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.  

background image

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) 

.

background image

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. 

background image

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

background image

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.   

background image

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 

background image

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

background image

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

background image

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

background image

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

background image

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.

background image

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)

background image

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

background image

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

background image

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ń

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

3 października 2012

Wojciech Kucewicz 

65

Licznik 2 bitowy

Licznik 2 bitowy

0   1

background image

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

background image

3 października 2012

Wojciech Kucewicz 

67

Połączenie pomiędzy nQ i D realizujemy poza blokiem CLB

Licznik 2 bitowy

Licznik 2 bitowy

background image

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.

background image

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.

background image

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. 

background image

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). 

background image

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)