Documente Academic
Documente Profesional
Documente Cultură
NOTIUNI INTRODUCTIVE
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Notiunea de Soft Processor cu exemplificare core de tip open source si
notiuni introductive referitoare la procesoarele soft in varianta comerciala
(tip Xilinx - MicroBlaze, Xilinx – PicoBlaze, Altera - NIOS II )
· Procesoare de tip hardware implementate in circuitele reconfigurabile
· Tendinte tehnologice (circuite cu granulatie mica si respectiv cu granulatie
mare)
· Securitatea fisierului de configurare (bit-stream) – protejarea la copiere
ilegala, rescriere sau alte atacuri asupra circuitelor reconfigurabile dintr-un
produs.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
LABORATORUL:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Sistemele reconfigurabile sunt sisteme care folosesc
componente hardware care se pot adapta
(reconfigura) la nivel logic pentru a rezolva probleme
specifice.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Calculatoarele Clasice sunt alcatuite din hardware si software
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Embedded Systems
Sistemele integrate (embedded systems) includ aproape orice
sistem de calcul altul decât computerele traditionale.
- iPod-uri si iPhone-uri,
- robotii care calatoresc pe Marte,
- console pentru jocuri video
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Embedded Systems
• Dispozitive cu functie fixa (de exemplu: MP3 decoder chip)
realizeaza o singura functie care este definita la momentul procesului
de fabricare
• Avantaj: performante excelente pentru functia respectiva
• Dezavantaj: nu este un dispozitiv flexibil, functia nu se poate
modifica dupa procesul de fabricare.
• Dispozitive programabile (ex. ARM microprocessor)
– realizeaza orice functie care este definita dupa procesul de fabricare
•Avantaj: extrem de flexibil, se poate schimba functia de calcul in orice
moment
•Dezavantaj: performante scazute, hardware-ul nu este gandit si dedicat
unei functii specifice.
• Dispozitivele reconfigurabile – combina functiile fixe cu functii
programabile
Avantaje: ofera high performance ; hardware-ul se poate adapta in
orice moment dupa procesul de fabricare pentru orice functie
calculabila.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Scurt Istoric:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ce este un FPGA?
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Pentru a programa circuitul se foloseste o descriere hardware
printr-un limbaj specific (HDL = hardware description language)
sau o descriere la nivel de schema.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fluxul de proiectare:
•Implementarea
• Translatarea (intrarile, iesirile si constrangerile se pun
intr-o structura logica)
• Maparea - se preia structura logica si se realizeaza
primitive de low-level pentru pasul urmator (plasare si rutare)
• Plasarea si rutarea – se plaseaza in blocurile logice
configurabile din circuit. Se realizeaza interconexiunile folosind
canalele de rutare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SoC Vs. Microcontroller Vs. Processor
All implemented on a single chip package, differences include:
Processor (CPU)
Normally can be used for general purpose, but needs to be supported with Memories
and IOs;
Microcontroller (MCU)
ARM-University
Program
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SoC Vs. Microcontroller Vs. Processor
SoC – System on Chip
Normally integrated with more powerful blocks, e.g. GPU, DSP, video/ audio encoder/
decoder;
Usually capable of running operating systems, e.g. Windows, Linux, iOS and Android;
Mainly used for advanced applications, such as the main chip of a digital device (smart
phones, tablets).
ARM-University
Program
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Commercialized SoCs
Benefiting from its power efficiency, SoCs have been widely used in mobile
devices, such as smartphones, tablets and digital cameras.
Most mobile SoCs use ARM-based microprocessors since they deliver high
performance with less power consumption.
ARM-University
Program
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM-University
SoC Design Flow Program
Hardware Software
IP Vendors:
IP cores Purchase drivers core design
Purchase
HW cores SW drivers
SoC
Integrated Design specifics Integrated
Hardware Software
HW/SW partitioning
Fabless Vendors:
Functional Prototype on platforms Software SoC design
Simulation e.g. FPGA Simulation
Foundries:
Volume manufacture Chip fabrication
and ship
Device vendors:
PCB manufacture
and device assembly Final products
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM-University
What is inside of a SoC Program
System Bus
Program Data
Timer DAC GPIO Watch dog
Memory Memory
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ARM-based SoC ARM-University
Program
An basic ARM-based SoC usually consists of
An ARM processor, such as Cortex-M0;
Advanced Microcontroller Bus Architecture (AMBA), e.g. AMBA3 or AMBA4;
Physical IPs (or peripherals) from ARM or third parties;
Additionally, some SoCs may have a more advanced architecture, such as multi-bus
system with bus bridge, DMA engine, clock and power management, etc…
Clock Power
Generator Management Unit Watch
JTAG/ Serial wire dog
ARM Cortex-M0 DMA
Low latency
Microprocessor
APB Bus
AHB IOP Timers
Mux
ARM Cortex-M0
Microprocessor
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tehnici dezvoltare proiecte hardware:
• Microcontroller
• Avantaje:
• Cost redus
• Usor de folosit
• Nu sunt orientate catre o aplicatie specifica
• Dezavantaje
• Lucreaza secvential
• Opereaza cu date de latimi fixe
• ASIC
• Avantaje
• Performante foarte bune
• Dezvoltate pentru productie de serie mare
Dezavantaje:
• Cost mare de realizare si proiectare
• Durata mare pana la finalizare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ASIC (application-specific integrated circuit)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Principalii producatori de circuite de tip FPGA si CPLD
sunt Xilinx, Altera, Lattice, Atmel, Actel,,.
www.xilinx.com/ - Xilinx
www.altera.com/ - Altera
www.latticesemi.com/ - Lattice
www.actel.com/ - Actel
www.atmel.com/ - Atmel
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
With Acromag’s Artix-7 FPGA modules, you can greatly increase
DSP algorithm performance for faster throughput using multiple
channels and parallel hardware architectures. Free up CPU cycles
by offloading algorithmic-intensive tasks to the FPGA co-processor.
•MAX® V
CPLDs
•MAX II
CPLDs
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Firma ACTEL – MICROSEMI http://www.actel.com/
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•IGLOO Lowest
Power FPGAs
•ProASIC3 Low
Power FPGAs
•SmartFusion
Mixed Signal
FPGAs
•Fusion Mixed
Signal FPGAs
•RadTolerant
FPGAs
•Embedded
Processors
•Intellectual
Property
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Firma Atmel http://www.atmel.com/products/fpga/default.asp
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
The AT40KAL family are FPGAs with the ability to implement Cache Logic
design, where part of the FPGA can be reprogrammed without loss of register
data, while the remainder of the FPGA continues to operate without disruption.
This is ideal for building adaptive filters, variable coefficient multipliers and other
designs where the datapath can change to increase system performance.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FPGA Integrated Development Systems (IDS)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Resurse bibliografice:
[1] Prof. Sherief Reda Division of Engineering, Brown University Spring -
Reconfigurable Computing
[2] Prof. Russell Tessier - Reconfigurable Computing
[3] Dr. Gilles SASSATELLI- Lecture on Reconfigurable Technologies
[4] Marco Platzner Computer Engineering Group - Reconfigurable Computing
[5] ARM-University Program
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Circuite discrete ~1940-50 Implementarea
• Porti logice discrete ~1950-60 logicii digitale
• Circuite integrate (IC)
1. ex. TTL O clasa de circuite digitale dezvoltata cu ajutorul
tranzistoarelor cu jonctiune bipolara si rezistoare
(Transistor–transistor logic) – atat functiile date de portile logice
(ex, AND) cat si functiile de amplificare sunt realizate de catre
tranzistoare exemplu: seria 74LSxx, ~1960-...
2. SPLD (simple programmable logic devices) ~1970-...
circuite cu 2 nivele de logica (SPLD)
3. MPGA (mask-programmable gate arrays) ~1970-...
folosite pentru realizarea circuitelor integrate pentru aplicatii
specifice (application-specific integrated circuits – ASIC)
4. large programmable logic devices ~1980-...
- mai multe SPLD intr-un singur circuit (CPLD)
- arii de porti logice programabile + interconexiuni =(FPGA)
5. noi clase de circuite integrate
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
CIRCUITE INTEGRATE
Circuite integrate pe scara mică şi medie (Small scale and medium scale
integration)
-până la 200 de porţi per circuit
-cele mai folosite: circuitele 74xx + porţi, flip flop, latch-uri, decodoare,
numărătoare, registri etc.
Circuite integrate pe scara mare (Large scale integration)
- de la 200 la 200 000 număr de porţi per circuit
- memorii de capacitate mică, circuite programabile
Circuite integrate pe scară foarte mare (Very large scale integration)
- peste 200 000 porţi per circuit
- numărul portilor este înlocuit adesea de numărul tranzistoarelor,
deoarece aceste circuite au memorii integrate, etc.
Proiectarea sistemelor folosind circuitele integrate pe scară mică sau
medie are ca avantaj înţelegerea uşoară a functionalităţii circuitului dar ca
dezavantaj major ar fi faptul ca nu se pot folosi pentru proiecte elaborate fără
a creşte mărimea plăcii obtinute, a puterii consumate şi a costului.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Notiuni Circuite Digitale
Un site foarte bun pentru reluarea notiunilor de circuite:
http://www.play-hookey.com/digital/
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Un circuit combinational are in general m intrari si n iesiri. Iesirile in acest
caz sunt definite in mod unic pentru fiecare combinatie de intrari
y1=f1(x1,x2,...,xn)
y2=f2(x1,x2,...,xn)
.........................
ym=fm(x1,x2,...,xn)
unde f1, f2,...,fm sunt funcţii
booleene cu argumentele
x1,x2,...,xn
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Mask-Programmable Gate Array (MPGA)
Logica
combinationala
si secventiala
Canale
de rutare
Blocuri I/O
Tipuri de PLD
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SPLD - Simple Programmable Logic Devices
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Plane AND urmate de plane OR → suma de produse sum-of-
products (SOP)
Plane OR urmate de plane AND → produs de sume product-of-
sums (POS)
Exemplu:
Aria programabila:
- 3 intrari (x1, x2, x3)
-2 iesiri (z1, z2)
Planul portilor OR
- 2 iesiri, fiecare cu cel mult
6 termeni
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ROM (Read-only Memory)
O memorie ROM poate fi vazuta ca o arie programabila AND-OR cu:
• n intrari, 2n termeni produs non-programabili (mintermeni)
• m iesiri, fiecare cu toti 2n termeni produs
Exemplu:
n=3 linii de adresa
m=2 iesiri
ROM – este un circuit logic de tip SOP (sum-of-products) cu o arie fixă de porţi
AND şi o arie programabilă de porţi OR. Se pot implementa M funcţii (outputs)
pentru N intrări (inputs). Programarea ROM-ului constă în specificarea tabelei
de adevăr a funcţiilor.
PLA - Programmable Logic Array - este un circuit logic de tip SOP (sum-of-
products) cu o arie programabilă de porţi AND şi o arie programabilă de porţi
OR. Se pot implementa funcţii folosind mintermenii disponibili care se pot utiliza
de către mai multe funcţii.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
PLA (Programmable Logic Array)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
PAL - Programmable Array Logic - este un circuit logic de tip SOP (sum-
of-products) cu o arie programabilă de porţi AND şi o arie fixă de porţi OR.
Se pot implementa funcţii folosind mintermenii disponibili pentru fiecare
funcţie de ieşire. (PAL este marcă înregistrata Advanced Micro Devices )
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Comparativ cu circuitele PLA, circuitele de tip PAL- sunt
considerate mai compacte si mai rapide
•Au existat in numeroase versiuni cu numar diferit de intrari si iesiri
•Iesirile pot fi folosite pentru a implementa circuite secventiale
•Comercial sunt considerate un succes – exista si un standard
industrial PALs 16R8 by AMD
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SPLD (simple PLDs)
– sunt arii programabile AND-OR
- ROM: plane fixe AND plane programabile OR
- PLA: plane programabile AND, plane programabile OR -
- PAL: plane programabile AND, plane fixe OR
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Pentru circuitele PLD de capicitate mare sunt 2
abordari:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
CPLD : Complex Programmable Logic Devices
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
CPLD : Complex Programmable Logic Devices
Macrocelulele : Folosesc suma de produse + elemente
secventiale de tip flip-flop
Arhitectura bazata pe suma de produse este asemanatoare ca la
SPLD. De fapt sunt alcatuite din blocuri multiple de SPLD
Definitie:
• Set de resurse configurabile care pot fi interconectate in diferite
moduri.
Arhitecturi:
•Realizari ale functiilor Boolean prin folosirea sumei de produse
(PALs,PLAs,PLDs…)
•Arii de celule (FPGA)
Tehnologii de programare:
•Fuse – prin folosirea fuzibililor
•Antifuse – prin folosirea anti-fuzibililor
•Static RAMs (SRAM)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fiecare tip de circuit programabil contine:
• Interconexiuni — resursele de conexiuni.
• comutatoare programabile —permit conectarea elementelor
de logică la firele de legătură sau a firelor de legătură între
ele.
• blocul logic - Logic Block — un circuit de bază care este
multiplicat în aria programabilă. Când un circuit este
implentat într-o arie programabilă, este mai întâi descompus
în circuite mai mici care sunt mapate în blocul logic.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FPGA — Field-Programmable Gate Array
Este o structură care permite implementarea logicii de
capacitate mare.
FPGA-ul clasic este alcatuit din 3 componente:
•arii de blocuri logice programabile; (alcatuite din LUT-uri,
registri si multiplexoare)
•Interconexiuni programabile
•Blocuri I/O
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Circuitele de tip FPGA sunt o variantă îmbunătăţiţă a tehnologiei care
foloseste arii de porţi şi oferă un cost redus pentru prototipizare.
Tipuri de circuite:
· Nevolatile, programabile o singură dată (anti-fuse – anti fuzibil)
· Nevolatile, reprogramabile (flash)
· Volatile (SRAM)
Un astfel de circuit este însă mai mult decât o arie de porţi. Acesta
conţine celule de intrare şi ieşire I/O Cells, celule logice, memorii,
microprocesoare, circuite pentru gestionarea clock-ului, transceiver
de viteză mare, resurse de rutare programabilă, cea din urmă fiind şi
principala îmbunătăţire faţă de ariile de porţi standard.
Un FPGA este de fapt un circuit de logică programabilă si care are o
mulţime de fire de legătură programabile
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
• FPGA: Field Programmable Gate Array
• Arii de porti logice (de uz general) programabile
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Utilizarea resurselor de interconectare
CLB CLB
CLB
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Multiplexor (sau mux) – un circuit care selecteaza una dintre
mai multe
intrari digitale, iar la iesire se transmite in functie de selectie o
singura linie
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Look-up table n-LUT
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FPGA – Simple Logic Block
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
LUT
CLB CLB
Z
A
B CLB
LUT
C
D
ABCD Z
0000
4 input Look Up Table 0001
1110
1111
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple de implementare functii logice
CLB CLB
Z
A
B CLB
LUT
C
D
ABCD Z
0000 0
A
0001 0 B Z
4 input Look Up Table AND
C
1110 0 D
1111 1
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Alte exemple – Functia OR
CLB CLB
Z
A
B CLB
LUT
C
D
ABCD Z
0000 0
A
0001 1 B Z
4 input Look Up Table OR
C
1110 1 D
1111 1
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Alte exemple – Multiplexor
CLB CLB
Z
A
B CLB
LUT
C
D
ABCD Z B
X000 0
4 input Look Up Table X001 1 C 2:1 Z
D Mux
X110 1
X111 1
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Interconectari programabile
CLB CLB
Z
A
B DFF CLB
LUT
C
D
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FPGAs vs. CPLDs
Ambele sunt circuite digitale programabile, dar fiecare are
caracteristicile sale.
· FPGAs sunt circuite "fine-grain" adica cu granulatie mica. Acest fapt
se traduce prin aceea ca vor contine foarte multe blocuri mici de logica
si flip-flops (pana la 100000). CPLDs sunt "coarse-grain“ – circuite cu
granulatie mare. Contin un numar relativ mic (100 max) de blocuri mari
de logica cu flip-flops.
· FPGAs sunt bazate pe memorie RAM. Trebuie sa fie configurate la
fiecare alimentare cu tensiune. CPLD folosesc tehnologia EEPROM. Vor
fi active la power-up daca au fost programate cel putin odata.
. CPLD au timpi mai mici de la intrare la iesire – si acest lucru este dat de
arhitectura cu granulatie mare, de ex. un singur bloc logic va putea
stoca ecuatii mari.
. FPGA au resurse de rutare speciale pentru a implementa eficient
numaratoare binare si functii aritmetice (sumatoare, comparatoare) si
RAM. CPLD nu are aceste facilitati.
FPGA poate contine design-uri mari, in timp ce CPLD poate contine
numai
Ioana design-uri
Dogaru, Radu mici.
Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Parametrii principali pentru circuitele programabile sunt:
1. Capacitatea logică Logic Capacity - cantitatea de logică care poate
fi mapată într-un singur circuit, şi se măsoară în număr de porţi
echivalente cu implementarea tradiţională, sau numărul de porţi NAND
cu 2 intrări.
2. Densitatea logică - Logic Density - cantitatea de logică pe unitate
de arie.
3. Performanţa de viteză Speed-Performance - parametru care
măsoară viteza maximă la care poate opera un circuit implementat in
aria programabilă.
Spre exemplificare, pentru circuitele combinaţionale (circuite pentru
care ieşirea este dependentă numai de intrările curente, ieşirea fiind
dată de combinarea intrărilor - comparatoare, decodoare, multiplexoare,
demultiplexoare etc) performanţa este dată de cea mai mare întârziere
de-a lungul oricărei căi. Pentru circuitele secvenţiale (circuite logice
pentru care ieşirile la un moment de timp specificat sunt funcţie de
intrările de la momentul respectiv, si de asemenea de un număr finit de
intrări precedente) performanţa este dată de frecvenţa maximă de ceas
pentru care circuitul implementat functioneză corect
4. Resurse interne disponibile
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Xilinx Spartan-3E - familie de circuite
Familia de circuite de tip Spartan este de cost redus, si volum mare.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fuse (PLA)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fuse (PLDs, CPLDs)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Antifuse (PLDs, CPLDs)
Se realizeaza un scurt
circuit dintre doua straturi
de metal. Dielectricul dintre
cele doua straturi de metal
se va topi
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Antifuse (FPGA)
- Dupa fabricare, starea switch-rilor este off; pot fi programate
prin ardere pentru a deveni on
– programabil o singura data
SRAM (FPGA)
– comutatoarele sunt implementate prin tranzistoare controlate de
catre celule SRAM
– pot fi reprogramate rapid (se scriu celule de memorie)
→ actual pentru reconfigurabilitate – tehnologia de baza
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tehnologii switch-uri
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Bibliografie:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Metode de executie algoritmi
Hardware Reconfigurable Software-programmed
(Application Specific computing processors
Integrated Circuits)
Stil tipic de
proiectare ASIC
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Timpii de dezvoltare circuite integrate = timpul de proiectare design +
timpul de fabricare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ce este un ASIC (Application-Specific IC )
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Caracteristica Sistemelor de Calcul Reconfigurabile
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Folosirea circuitelor reconfigurabile
1. Productie mica/medie de IC
2. Prototipizare si emulare logica
3. Accelerare algoritmi de sortare, programare dinamica, cu aplicatii in
domenii cum ar fi: procesare semnale si imagini, criptografie,
bioinformatica, recunoastere forme etc.
i. Unitati functionale reconfigurabile folosind un procesor
(instructiuni specifice)
ii. Unitati reconfigurabile folosite ca si coprocesor
iii. Unitati reconfigurabile accesate prin I/O externe sau retele
[Compton’02]
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Calculul temporal vs. calculul spatial
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu de programare functie intr-un LUT (Look-up Table)
Informatia poate fi stocata in SRAM. 4-6input Look-Up Table (LUT) este o marime tipica
O celulă logică este o tabelă de căutare (LUT) care poate avea un număr diferit de intrări în
funcţie de tipul circuitului. Astfel, pentru Virtex 6 de la Xilinx, LUT are 6 intrări, Virtex 4 are 4
intrări. Mai multe LUT formează un CLB (Configurable Logic Block) – bloc logic configurabil.
Aceasta este o denumire care la un alt producător de circuite este diferită. CLB este denumirea
folosită de firma Xilinx. Altera foloseste penrtu circuitele sale (ex familia de circuite Stratix)
denumirea de module logice adaptive - adaptive logic modules (ALMs). Este de asemenea posibil
să se folosească mux-uri pentru a implementa logica.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
a
b 4-input
y
Logica programabila
c LUT
mux
d flip-flop
q
e
clock
Switch
box
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
În circuitele FPGA se folosesc
si alte unităţi, cum ar fi: RAM,
ALU, multiplicatoare,
sumatoare.
Unităţile logice sunt conectate
folosind o interconectare
reconfigurabilă.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Configurare FPGA
Programmable logic
element
[Maxfield’04]
• FPGA sunt alcatuite dintr-o arie de blocuri logice programabile
(programmable logic blocks) iar functionalitatea este determinata prin
bitii de configurare programabili
• Blocurile logice sunt conectate de un set de resurse de rutare
(routing resources) care sunt de asemenea programabile.
Logica poate fi mapata in resursele reconfigurabile (reconfigurable
fabric)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fluxul de proiectare
Fluxul de proiectare SPLD
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fluxul de proiectare FPGA (similar pentru CPLD)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fisierul de
configurare
. A
+ C
. B
C = A+B
.
Maparea in LUT dintr-un CLB
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Compilarea circuitului
1) Tehnologia de mapare (mapping)
LUT
2) Plasare (Placement)
LUT
?
Asignarea unui LUT logic unei locatii fizice.
3) Rutarea (Routing)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Resursele de rutare programabile
• Fire care asigura legarea unui nod computational de
iesire cu intrarea altui nod computational
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Arhitecturi FPGA
Arhitectura unui circuit FPGA este descrisa de
– arhitectura blocurilor logice (logic block) data de structura
blocului logic: porti, multiplexoare, LUT-uri
- arhitectura resurselor de rutare – routing architecture data de
structura si dimensiunile interconexiunilor.
- stil “insula”,
- bazat pe linii,
- ierarhic
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fiecare producator de circuite FPGA
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Definitii rutare generala
track
channel
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Element Logic Cai de rutare
LE LE LE LE
LE LE LE LE
LE LE LE LE
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Conexiunea blocurilor: se formeaza unde intrarea CLB sau pinii de iesire se
conecteaza la canalele de rutare.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Switch care conecteaza fire bidirectionale segment-segment
track
channel
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Switch blocks (blocuri de switch-uri): se formeaza la intersectia canalelor
verticale si orizontale
Switch
box
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Detalii switch bidirectional
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Rutarea segmentata si ierarhica
segmented routing hierarchical routing
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Communication: Interconnect & Routing
Need a mechanism to move results of computation around.
Nearest Neighbor:
CLB CLB CLB CLB CLB CLB
Segmented:
CLB CLB CLB CLB CLB CLB
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu pentru modelul
Toronto: Exemplu: W = 4, Fc = 2, Fs = 3
Arhitectura de tip insula a
resurselor de rutare;
blocuri logice, blocuri de
conectare, blocuri de
comutatoare
Parametri: W, Fc, Fs
W numarul de fire intr-un
canal
Fc numarul de fire care se
conecteaza la un bloc
logic.
Fs numarul de fire pe care
o matrice de comutatoare
le poate conecta
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Xilinx XC4000 Routing
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tipuri de Reconfigurare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Multiplicatoare si sumatoare incapsulate
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Programarea FPGA
Configurarea
memoriei care
determina
programabilitatea
blocului logic si a
interconexiunilor
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tehnologia de programare a comutatoarelor
Anti-fuse SRAM
Metal-to-Metal Antifuse
Metal 2
Via
Metal 1
Contact
Silicon
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Anti-Fuse FPGA
n+ antifuse diffusion
2
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Interconexiune tipica Anti-fuse pentru circuitele de la firma Actel
Logic Module
Horizontal
Track Anti-fuse
Vertical
Track Interconnection Fabric
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Securitatea design-ului in tehnologia “Anti-fuse”
• Tehnologia este foarte buna pentru securizarea design-ului
– Fisierul de configurare (bitstream) nu poate fi interceptat (nu
necesita un transfer de bitstream, fara configurare externa)
– Necesita un microscop “Scanning Electron Microscope” (SEM)
pentru a putea determina starea antifuzibilului (exemplu: Actel
AX2OOO antifuse FPGA - contine 53 milioane de anti-fuzibili din
care numai 2-5% sunt programati intr-un design de marime medie
©ACTEL
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Flash / EEPROM Devices
•Tehnologia deriva din tehnologia PLD
•Traditional bazata pe arhitectura AND/OR
•Utilizata tipic pentru glue logic, masini de stare etc
Coolrunner II - CPLD
Courtesy: Xilinx
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tendinte Flash/EEPROM
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SRAM-FPGA
Q
Read or Write P1
Q
P2
Out
Data P3
P4
Programming Bit
I1 I2
2-Input LUT
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Probleme si implicatii in proiectarea de circuite
•Cata functionalitate trebuie sa
ofere un element logic?
•Cate cai de rutare trebuie sa
existe intr-un canal?
•Capabilitatile switch-urilor?
Logic
Element – Unele clustere logice sunt mari
(ex. Altera contine 8 perechi
LUT-FF)
– 3 puncte importantes:
• Elementele logice per cluster
• Conectivitatea cluster-ului
catre firele de interconectare
– flexibiliitatea de conectare
switchbox IO connections (Fc)
• Flexibilitatea matricii de
Logic interconectare (Fs) – switch
Cluster box
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cluster-ul logic
Intrebare: cate blocuri logice
elementare (BLE) trebuie sa fie
intr-un cluster?
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Marimea cluster-ului logic (Cluster Size)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Conectivitatea cluster-ului catre firele de interconectare
– flexibiliitatea de conectare (factorul Fc)
•Flexibilitatea matricii de interconectare (Fs) – switch
box
Tracks
Logic
Cluster
IO pin T0
T1 Out
T0 T1 T2 T2
Out FC = 3
T0 T1 T2
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Flexibilitatea Switchbox – data de factorul Fs
0 1
0 0
1 1
0 1
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple de circuite
2 2
1 1
0 0
0 1 2
– Rotirea conexiunilor in
interiorul switchbox cu
mentinerea factorului FS= 3
– Tot 6 tranzistoare necesare
pentru matricea de comutare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Alta problema: plasarea bufferelor
S S
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Caile de interconectare bazate pe switch si fire pot fi modelate ca
si retele RC
S S
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Implementarea memorie in FPGA
16X1
A D
LUT1
Addr 16X1
A D
LUT2
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Xilinx XC4000 Series Devices
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Xilinx XC4000 Dual Port Mem
Word line
– Blocuri mari SRAM speciale care se afla
5V in ariile FPGA
– Conduc la implementari eficiente de
memorie cu performante predictibile
– Celule SRAM cu 6 tranzistoare
BIT BIT
Line Line
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Xilinx Virtex Block Memory
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
- Examplu: Altera Flex10K
- Fiecare EAB (Embedded Array Block) are un spatiu de stoare de 2K bits
- EAB Este plasat in centrul circuitului
– LE si EAB sunt conectate in jurul canalului de interconectare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
EAB - Altera
– Arie integrata
optimizata
– Datele si adresele
sunt folosite cu
performante
foarte bune
– Scalabile pentru
dimensiuni mai
mari
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Rata de crestere a memoriei
•Aproximativ 2400 tranzistoare per CLB
-(1200 per LUT) pentru implementare XC4000 (32x1 SRAM)
•6 tranzistoare per celula pentru Altera SRAM (2K per EAB)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Organizarea
blocului logic
(Logic array
block)
• Fiecare LAB: 16 LEs, LAB semnale de control, LE carry chains, register chains
si interconexiuni locale.
• Interconexiunile locale transfera semnale intre elementele logice (LE) in acelasi
LAB
• LABs, PLLs, M4K RAM si inmultitoarele din vecinatate de la stanga si dreapta
pot de asemenea folosi o conexiune locala pentru LAB
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Register/carry chain – conectare cu un LAB
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Interconexiuni Multi-track
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Informatii privind preturile circuitelor reconfigurabile (FPGA) –
DIGI-KEY CORPORATION: http://www.digikey.com/
2 exemple:
-Spartan IIE (300 porti) aprox. 25$
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Aria cea mai recenta de cercetare in domeniul calculului
reconfigurabil
• Dezvoltarea de arhitecturi de consum eficient si tehnici de CAD
pentru FPGA
• Aplicatii noi pentru circuitele reconfigurabile (in special aplicatii
integrate si securizare)
•O mai buna intelegere a rolului microprocesoarelor standard si a
hardware-ului reconfigurabil.
-Tipuri multiple de paralelism
•Arhitecturi reconfigurabile de granulatie mare (Coarse-grained)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Resurse bibliografice:
[1] Prof. Sherief Reda Division of Engineering, Brown University Spring - Reconfigurable Computing
[2] Prof. Russell Tessier - Reconfigurable Computing
[3] Dr. Gilles SASSATELLI- Lecture on Reconfigurable Technologies
[4] Marco Platzner Computer Engineering Group
Reconfigurable Computing
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Limbaje de descriere hardware (HDL)
Considerente privind VHDL si Verilog
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Aplicatii ale HDL Limbajele de descriere hardware (HDL - Hardware
Description Language) – sunt limbaje dezvoltate si optimizate pentru a descrie
comportamentul sistemelor digitale.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL (VHSIC HDL - Very High Speed Integrated Circuit Hardware Description
Language) - standard IEEE 1076 din 1987. A fost refacut in 1993, devenind " standard
IEEE 1076 /1993".
Verilog HDL este mai vechi decat VHDL si este utilizat intensiv din 1983. A devenit
IEEE standard 1364 I /1995.
Pentru a modela hardware in orice limbaj HDL sunt importante 2 aspecte:
comportamentul abstract si structura hardware.
VHDL/Verilog – comparatie
Capabilitatea:
Structura hardware poate fi modelala in ambele tipuri de limbaj. Alegerea unui tip de
limbaj se face in functie de preferinta personala, disponibilitate in uneltele de
dezvoltare etc.
Verilog.
Trebuie tinut cont de ordinea in care se face compilarea codului scris intr-un singur
fisier si compilarea mai multor fisiere. Rezultatele simularii se pot schimba prin simpla
schimbare a ordinii compilarii.
Tipuri de date
VHDL.
Se pot folosi mai multe tipuri de date definite in limbaj cat si definite de utilizator.
Exista functii dedicate care fac conversia dintr-un tip in alt tip de date. VHDL este
preferat, deoarece ofera o flexibilitate mai mare.
Verilog.
Comparat cu VHDL, tipurile de date din Verilog sunt mai simple, usor de folosit si
apropiate modelarii structurii hardware in opozitie cu modelarea hardware abstracta.
Nu sunt premise tipuri de date definite de utilizator. Exemplu de tipuri de date: net,
wire, reg (registru).
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Reutilizarea design-ului
VHDL. Procedurile si functiile pot fi plasate in pachet (package) astfel incat sa fie
disponibile pentru orice design.
Verilog. Nu exista un concept de pachet ca in VHDL. Functiile si procedurile utilizate
intr-un model trebuie definite in modul. Pentru a le face accesibile din diferite module,
se vor plasa in fisiere separate si incluse unde este nevoie prin folosirea directivei de
compilare “include”.
Usurinta de invatare
Verilog este probabil mai usor de invatat. VHDL poate parea mai putin intuitiv dar
dupa invatare este mai robust, mai puternic. Sunt mai multe posibilitati de a modela
acelasi circuit, mai ales pentru structuri mari, ierarhice.
Constructii de nivel inalt
VHDL. Sunt mai multe posibilitati in modelarea de nivel inalt in VHDL decat in
Verilog. Tipul de date abstract poate fi folosit cu urmatoarele declaratii:
* package – pentru reutilizarea modelului,
* configuration - configurare structura design,
* generate – pentru structuri repetitive,
* generic – model generic care poate fi caracterizat individual, de exemplu latimea unui
vector
Toate aceste declarati din limbaj sunt utile in sintetizarea unui model.
Verilog. In afara de parametrizarea unui model prin supraincarcarea parametrilor, nu
exista echivalent
Ioana Dogaru, pentru
Radu Dogaru, Curs modelare
Sisteme Reconfigurabile de nivel
de Calcul, inalt.din Bucuresti, 2016
Univ. Politehnica
Extensia de limbaj
VHDL. Are un atribut denumit 'foreign care permit arhitecturilor si subprogramelor sa
fie modelate in alte limbaje.
Verilog. Foloseste Programming Language Interface (PLI) – mecanism de interfata
intre modelul Verilog si uneltele de dezvoltare pentru Verilog. Un vanzator de unelte
pentru Verilog poate specifica functii in limbajul C si apelarea din descrierea surselor
in Verilog.
Utilizarea acestor functii speciale va face ca modelele sa fie nestandard si se poate sa
nu poata fi folosite de alte unelte Verilog. Utilizarea nu este recomandata.
Biblioteci
VHDL. O biblioteca este pentru a stoca entitati compilate, arhitecturi, pachete si
configuratii.
Sunt utile pentru proiecte cu multiple design-uri.
Verilog. Nu exista conceptul de biblioteca in Verilog. Aceasta se datoreaza faptului ca
la origini este un limbaj interpretativ.
Constructii de nivel “low level”
VHDL. Operatori logici simpli pentru 2 intrari care sunt construiti in limbaj: NOT,
AND, OR, NAND, NOR, XOR si XNOR. Orice specificare de timp trebuie facuta
dupa clauza after.
Verilog. Verilog a fost dezvoltat avand la baza modelarea la nivel de poarta.
Example: User Defined Primitive(UDP), tabele de adevar si blocuri pentru
specificarea
Ioana intarzierilor
Dogaru, Radu Dogaru, intr-undemodul.
Curs Sisteme Reconfigurabile Calcul, Univ. Politehnica din Bucuresti, 2016
Gestionarea proiectelor mari
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL – Bazele limbajului
VHDL: (V)HSIC (H)ardware (D)escription (L)anguage
VHSIC: (V)ery (H)igh (S)peed (I)ntegrated (C)ircuit
Limbajele HDL au doua atributii principale:
•Modelare (simulare)
•Descriere (sinteza)
VHDL are foarte multe capabilitati pentru a descrie comportarea componentelor
electronice de la porti logice pana la microprocesoare. (Se pot descrie fronturile
crescatoare si respectiv descrescatoare ale semnalelor, intarzierile prin porti,
operatii functionale).
Concepte fundamentale: concurenta si ierarhia
VHDL furnizeaza 2
clase de obiecte care pot
fi folosite pentru
modelare in hardware
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Nu este un limbaj de programare in sensul clasic!!!
•Software design
•VHDL - C interface (unelte specifice)
•cercetare (hardware/software co-design). Intrebarea care se pune este ce parte
trebuie implementate in software si ce parte in hardware. (constrangerile vor fi
date de performante, cerinte si pret)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Standarde pentru limbajul VHDL
VHDL este construit prin folosirea mai multor standarde IEEE:
• IEEE std 1076-1987 – primul standard VHDL. Este referit prin abrevierea VHDL’87.
• IEEE std 1076-1993 – al doilea standard VHDL. Este referit prin abrevierea
VHDL’93.
• IEEE std 1164-1993 - package STD_LOGIC_1164. Include tipuri referitoare la
hardware si functii de conversie.
• IEEE std 1076a - imbunatateste folosirea variabilelor partajate
• IEEE std 1076.1 VHDL-AMS, - standard extins pentru analogic.
• IEEE std 1076.2 – pachete matematice. Este divizat intr-un pachet pentru numere
reale si alt pachet pentru imaginare.
• IEEE std 1076.3 – operatori si tipuri descrisi pentru sinteza.
• IEEE std 1076.4 VITAL (VHDL Initiative Towards ASIC Libraries). – De exemplu
folosit pentru specificarea timpilor pentru simulare
• IEEE std 1076.5 – modelarea bibliotecilor in VHDL.
• IEEE std 1076.6 – defineste partea pentru sinteza RTL.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu comparativ – C si VHDL
VHDL
C
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1 Snap shot after input change
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
C example VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Circuitul echivalent
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A <= B + C
X <= Y + Z
Ans <= A + X
“Simulates in parallel ever delta time step”
B(1)
C(1) + A(1)
+ Ans(1)
Y(1)
Z(1) + X(1)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A <= B + C
X <= Y + Z
Ans <= A + X
“Simulates in parallel ever delta time step”
B(1)
C(1) + A(2)
+ Ans(2)
Y(1)
Z(1) + X(2)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
A <= B + C
X <= Y + Z
Ans <= A + X
“Simulates in parallel ever delta time step”
B(1)
C(1) + A(2)
+ Ans(4)
Y(1)
Z(1) + X(2)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Circuitul corespunzator – varianta mai aproape de realitate
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
B(1)
C(1) + A(1)
2ns
+ Ans(1)
Y(1) 2ns
Z(1) + X(1)
2ns
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Circuitul corespunzator – varianta mai aproape de realitate
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1
B(1)
C(1) + A(2)
2ns
+ Ans(2)
Y(1) 2ns
Z(1) + X(2)
2ns
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Concepte VHDL: concurenta si ierarhia
Secventialitatea: Instructiunile se executa consecutiv, ca la orice limbaj de
programare. Este importanta ordinea in care apar atribuirile si declaratiile.
•Execution of assignments:
•Sequential
•Concurrent
•Methodologies: tehnici de
modelare
•Abstraction
•Modularity
•Hierarchy
Register Transfer Level (RTL) – designul este divizat in elemente de logica combinationala
si elemente de stocare. Elementele de stocare (Flip Flops (FFs), latches) sunt controlate de un
ceas al sistemului. Descrierea la nivel RT este numita descriere sintetizabila.
La nivel logic, design-ul este reprezentat ca o lista de legaturi cu porti logice (AND, OR,
NOT,…) si elemente de stocare.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Descrierea comportamentala in VHDL
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
RT Level in VHDL
La nivel RT:
•proces combinational pur
•proces comandat de ceas (implica FF si pot fi descrisi in termeni de masini de
stare)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Gate Level in VHDL
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modularitatea si ierarhia
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Procesul de proiectare incepe cu faza de specificare. Componenta care este proiectata
este definita in ceea ce priveste functiile, interfata etc.
La nivel logic (logic level) - modelul trebuie descris avand in vedere toate aspectele
necesare pentru a fi sintetizabil. In urma sintezei din descrierea modelului abstract se
deriva functiile boolean si se mapeaza elementele in blocurile logice configurabile ale
FPGA sau in biblioteca de porti pentru ASIC. Rezultatul este o lista de legaturi, netlist
la nivel de poarta - gate level
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Generalitati
•Comentarii: '--' pana la sfarsitul liniei
•Declaratiile se termina cu ';‘
•Delimitator lista ','
•Atribuire semnal: '<='
•Nume definite de utilizator:
•litere, numere, underscores
•Incep cu o litera
---------------------------------
-- Example VHDL Code --
----------------------------------
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Elemente structurale VHDL
•Entity : descrie o interfata constituita dintr-o lista de porturi
•Architecture : descrie functia unui modul corespunzator
•Configuration : model, structura, ierarhie (in general este utilizata pentru simulare)
•Process : permite o executie secventiala - eveniment controlat
•Package : pentru design modular. Contine: solutii standard, tipuri de date, constante
•Library : o colectie de unitati compilate VHDL (cod obiect)
Ex.
declararea
unui port este
permisa
numai in
entitate Plasarea declaratiilor pentru diferite obiecte in VHDL
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Entitate si arhitectura (Entitie / Architectures)
Fiecare descriere a unui design in VHDL va contine cel putin o pereche
entity/architecture ( referita si ca design entity).
•entity – descrie circuitul asa cum apare din exterior, din perspectiva interfetei
intrare/iesire. Se va furniza interfata completa a circuitului (numele, directia si tipul de
date pentru fiecare port).
•architecture – orice entitate va avea o arhitectura corespunzatoare care va
descrie functia acesteia. Orice este declarat in entitate, va fi automat accesibil
in arhitectura.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Structura tipica pentru fisier VHDL
LIBRARY ieee; Include Libraries
BEGIN
Implement components
A <= B or C; functionality
END
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Structura generala a arhitecturii
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Conectare ierarhica
Un modul poate fi alcatuit din mai multe sub-module. Conexiunea dintre submodule
este definita intr-o arhitectura de tip “top module”.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Instantierea componentelor : Asocierea numelor
semnalelor
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Un proces care este privit ca un intreg este
tratat concurent, ca orice declaratie dintr-o
arhitectura
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu proces:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu proces:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu proces:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
package – colecteaza declaratii folosite in mod global pentru diferite unitati de
design. Este alcatuit din: declaratii de tip, constante, sub-programe etc. Acestea vor
fi vizibile in orice unitate de design dintr-un proiect si pot fi compilate intr-o
biblioteca pentru o utilizare ulterioara. Consta din 2 parti: parte declarativa si
optional dintr-un corp. Se va folosi use pentru a putea fi folosit in unitatile de design.
Exemplu:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Biblioteci (library)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Model de comunicare VHDL
std_ulogic – este un tip enumerare similar cu tipul bit din standardul 1076. Este un
tip de date “unresolved”. Un semnal de acest tip poate avea numai un singur driver,
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tipul std_ulogic_vector
Reprezinta o colectie de fire (wire) sau un bus de marime arbitrara.
type std_ulogic_vector is array ( natural range <> ) of std_ulogic;
Std_ulogic_vector – reprezinta o arie de std_ulogic, si este analog cu tipul standard
bit_vector.
Tipul Std_logic
Este un tip de date “resolved” bazat pe std_ulogic (este un sub-tip), cu urmatoarea
declaratie: subtype std_logic is resolved std_ulogic;
In cazul driverelor multiple, cele noua valori std_logic sunt rezolvate cu valori dupa cum
urmeaza: ("std_logic" permite existenta driverelor multiple pentru un semnal simplu)
Valorile, semnalele si variabilele unui tip pot fi combinate in expresii prin folosirea
operatorilor
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Descrierea unui comparator folosind IEEE 1164 standard logic
comentariu
Descrie functionalitatea
comparatorului
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ANEXE
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Problema: Realizarea unui algoritm si a unui circuit care realizeaza operatia de aflare a celui mai
mare divizor comun. Se vor folosi limbajele VHDL, Verilog, C
1) Se vor realiza la nivel de algoritm 3 algoritmi care vor determina cel mai mare divizor comun (Greatest
Common Divisor (GCD)) – in C si in 2 limbaje de descriere hardware: VHDL si Verilog.
2) Se vor modela algoritmii GCD la nivelul RTL pentru sinteza in ambele tipuri de limbaje HDL, VHDL si
Verilog. Modelul trebuie sa fie generic, astfel incat sa fie aplicabil pt diferite latimi de biti.
Fisierul de test:
file: gcd_test_data.txt file: gcd_test_data_hex.txt
21 49 7 15 31 7 // Decimal 21 49 7
25 30 5 19 1E 5 // Decimal 25 30 5
19 27 1 13 1B 1 // Decimal 19 27 1
40 40 40 28 28 28 // Decimal 40 40 40
250 190 10 FA 6E A // Decimal 250 190 10
5 250 5 5 FA 5 // Decimal 5 250 5
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Algoritmul folosit este dupa cum urmeaza:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Algoritmul modelat in C
#include <stdio.h>
main ()
{
int A_in, B_in, A, B, Swap, Y, Y_Ref, Passed;
FILE *file_pointer;
file_pointer = fopen("gcd_test_data.txt", "r");
Passed = 1;
while (!feof(file_pointer))
{
/*------------------------------------*/
/* Read test data from file */
/*------------------------------------*/
fscanf (file_pointer, "%d %d %d\n", &A_in, &B_in, &Y_Ref);
/*----------------------------------*/
/* Model GCD algorithm */
/*----------------------------------*/
A = A_in;
B = B_in;
if (A != 0 && B != 0)
{
while (B != 0)
{
while (A >= B)
{
A = A - B;
}
Swap = A;
A = B;
B = Swap;
}
}
else
{
A = 0;
}
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Y = A;
/*------------------------------*/
/* Test GCD algorithm */
/*------------------------------*/
if (Y != Y_Ref)
{
printf ("Error. A=%d B=%d Y=%d Y_Ref= %d\n", A_in, B_in, Y, Y_Ref);
Passed = 0;
}
}
if (Passed = 1) printf ("GCD algorithm test passed ok\n");
}
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Algoritmul descris in VHDL
Modelul in VHDL urmareste principiul din C. Cand se citesc valorile intregi din fisierul de test,
acestea vor fi introduse intr-o variabila, nu vor putea fi citite si assignate unui semnal. Rezultatele
vor fi inscrise intr-un fisier. Deoarece este la nivel de algoritm, entitatea folosita nu va contine nici
intrari si nici iesiri.
VHDL algorithmic level model
library STD;
use STD.TEXTIO.all;
entity GCD_ALG is
end entity GCD_ALG;
architecture ALGORITHM of GCD_ALG is
--------------------------------------------
-- Declare test data file and results file
--------------------------------------------
file TestDataFile: text open
read_mode is "gcd_ test_data.txt";
file ResultsFile: text open write_mode is
"gcd_alg _test_results.txt";
begin
GCD: process
variable A_in, B_in, A, B, Swap, Y, Y_Ref: integer range 0 to 65535;
variable TestData: line;
variable BufLine: line;
variable Passed: bit := '1';
begin
while not endfile(TestDataFile) loop
-------------------------------------
-- Read test data from file
-------------------------------------
readline(TestDataFile, TestData);
read(TestData, A_in);
read(TestData, B_in);
read(TestData, Y_Ref);
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
------------------------------------
-- Model GCD algorithm
------------------------------------
A := A_in;
B := B_in;
if (A /= 0 and B /= 0) then
while (B /= 0) loop
while (A >= B) loop
A := A - B;
end loop;
Swap:= A;
A := B;
B := Swap;
end loop;
else
A := 0;
end if;
Y := A;
---------------------------------
-- Test GCD algorithm
---------------------------------
if (Y /= Y_Ref) then -- has failed
Passed := '0';
write(Bufline, st ring'("GCD Error: A="));
write(Bufline, A_in);
write(Bufline, string'(" B="));
write(Bufline, B_in);
write(Bufline, string'(" Y="));
write(Bufline, Y);
write(Bufline, string'(" Y_Ref="));
write(Bufline, Y_Ref);
writeline(ResultsFile, Bufline);
end if;
end loop;
if (Passed = '1') then -- has passed
write(Bufline, string' ("GCD algorithm test has passed"));
writeline(ResultsFile, Bufline);
end if;
end process;
end architecture ALGORITHM;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Algoritmul in Verilog
Modelul Verilog va urma de asemenea principiile descrise in C.
O diferenta majora este aceea ca Verilog nu poate citi valori zecimale dintr-un fisier. Datele citite dintr-un
fisier sunt:
1) citire folosind $readmemh sau $readmemb si
2) stocarea in memorie. Datele de citire vor fi in format binary sau in hex. Se va folosi fisierul
"gcd_test_data_hex.txt"
Verilog algorithmic level model
module GCD_ALG;
parameter Width = 8;
reg [Width-1:0] A_in, B_in, A, B, Y, Y_Ref;
reg [Width-1:0] A_reg,B_reg,Swap;
parameter GCD_tests = 6;
integer N, M;
reg Passed, FailTime;
integer SimResults;
// Declare memory array for test data
// ----------------------------------
reg [Width-1:1] AB_Y_Ref_Arr[1:GCD_tests*3];
//----------------------------------
// Model GCD algorithm
//----------------------------------
always @(A or B)
begin: GCD
A = A_in;
B = B_in;
if (A != 0 && B != 0)
while (B != 0)
while (A >= B) begin
A = A - B;
Swap = A;
A = B;
B = Swap;
end
else
A = 0;
Y = A;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
end
//------------------------------
// Test GCD algorithm
//-----------------------------
initial begin
// Load contents of
// "gcd_test_data.txt" into array.
$readmemh("gcd_test_data_hex.txt", AB_Y_Ref_Arr);
// Open simulation results file
SimResults = $fopen("gcd.simres");
Passed = 1;
/ Set to 0 if fails
for (N=1; N<=GCD_tests; N=N+1) begin
A_in = AB_Y_Ref_Arr[(N*3)+1];
B_in = AB_Y_Ref_Arr[(N*3)+2];
Y_Ref=AB_Y_Ref_Arr[(N*3)+3];
#TestPeriod
if (Y != Y_Ref) begin // has failed
Passed = 0;
$fdisplay (SimResults, " GCD Error:
A=%d B=%d Y=%d. Y should be %d", A_in, B_in, Y, Y_Ref);
end
end
if (Passed == 1) // has passed
$fdisplay (SimResults, "GCD algorithm test has passed");
$fclose (SimResults);
$finish;
end
endmodule
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Proiectarea modelului la nivel RTL in VHDL si Verilog
Cand Done=1, semnifica ca s-a calculat cel mai mare divizor comun.
Procesul va dura cativa cicli de ceas.
I) primul process/always LOAD_SWAP. Presupune folosirea a doua registre care opereaza dupa cum urmeaza:
1) Reset_N = 0, A_hold and B_hold = zero.
2) Cand not 1) si Load = 1, datele in A si B sunt incarcate in A_hold si B_hold.
3) Cand not 1) sau 2) si A_hold este mai mic decat B_hold, valorile in A_hold si B_hold sunt schimbate intre
ele,
4) Cand not 1), 2) sau 3), A_hold este reincarcat cu aceeasi valoare. Valoarea A_hold - B_hold, din cel de al
doilea process/always statement, este incarcat in B_hold.
II) al doilea process/always SUBTRACT_TEST.
Primul if testeaza daca A_hold este mai mare sau egal cu B_hold.
Daca este asa, se face scaderea A_hold - B_hold, rezultatul este introdus in A_New care va fi incarcat in
B_hold pe urmatorul front crescator al ceasului.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Daca A_hold este mai mic decat B_hold, scaderea nu se face, A_New va avea valoarea B_hold, schimbarea
va fi facuta dupa urmatorul front pozitiv al semnalului de ceas.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL RTL model
library IEEE;
use IEEE.STD_Logic_1164.all, IEEE.Numeric_STD.all;
entity GCD is
generic (Width: natural);
port (Clock,Reset,Load: in std_logic;
A,B: in unsigned(Width-1 downto 0);
Done: out std_logic;
Y: out unsigned(Width-1 downto 0));
end entity GCD;
architecture RTL of GCD is
signal A_New,A_Hold,B_Hold: unsigned(Width-1 downto 0);
signal A_lessthan_B: std_logic;
begin
----------------------------------------------------
-- Load 2 input registers and ensure B_Hold < A_Hold
---------------------------------------------------
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
LOAD_SWAP: process (Clock)
begin
if rising_edge(Clock) then
if (Reset = '0') then
A_Hold <= (others => '0');
B_Hold <= (others => '0');
elsif (Load = '1') then
A_Hold <= A;
B_Hold <= B;
else if (A_lessthan_B = '1') then
A_Hold <= B_Hold;
B_Hold <= A_New;
else A_Hold <= A _New;
end if;
end if;
end process LOAD_SWAP;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SUBTRACT_TEST: process (A_Hold, B_Hold)
begin
-------------------------------------------------------
-- Subtract B_Hold from A_Hold if A_Hold >= B_Hold
------------------------------------------------------
if (A_Hold >= B_Hold) then
A_lessthan_B <= '0';
A_New <= A_Hold - B_Hold;
else
A_lessthan_B <= '1';
A_New <= A_Hold;
end if;
-------------------------------------------------
-- Greatest common divisor found if B_Hold = 0
-------------------------------------------------
if (B_Hold = (others => '0')) then
Done <= '1';
Y <= A_Hold;
else
Done <= '0';
Y <= (others => '0');
end if;
end process SUBTRACT_TEST;
end architecture RTL;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Verilog RTL model always @(A_Hold or B_Hold)
module GCD (Clock, Reset, Load, A, B, Done, begin: SUBTRACT_TEST
Y); //--------------------------
parameter Width = 8; ------------------------
input Clock, Reset, Load; // Subtract B_Hold from
input [Width-1:0] A, B; A_Hold if A_Hold >= B_Hold
output Done; //--------------------------
output [Width-1:0] Y; ------------------------
reg A_lessthan_B, Done; if (A_Hold >= B_Hold) begin
reg [Width-1:0] A_New, A_Hold, B_Hold, Y; A_lessthan_ B = 0;
//-------------------------------------------- A_New = A_Hold - B_Hold;
--------- end
// Load 2 input registers and ensure B_Hold < else begin
A_Hold A_lessthan_B = 1;
//-------------------------------------------- A_New = A_Hold;
--------- end
always @(posedge Clock) //--------------------------
begin: LOAD_SWAP --------------------
if (Reset) begin // Greatest common divisor
A_Hold = 0; found if B_Hold = 0
B_Hold = 0; //--------------------------
end --------------------
else if (Load) begin if (B_Hold == 0) begin
A_Hold = A; Done = 1;
B_Hold = B; Y = A_Hold;
end end
else if (A_lessthan_B) begin else begin
A_Hold = B_Hold; Done = 0;
B_Hold = A_New; Y = 0;
end end
else end
A_Hold = A_New; endmodule
end
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Referinte bibliografice:
[1] Douglas J. Smith - VHDL & Verilog Compared & Contrasted - Plus Modeled Example Written in
VHDL, Verilog and C
[2] - http://www.vhdl-online.de/tutorial/englisch/t_13.htm
[3] - Accolade VHDL Reference Guide - http://www.acc-eda.com/vhdlref/
[4] Prof. Sherief Reda Division of Engineering, Brown University Spring - Reconfigurable
Computing
[5] - Dr. Gilles SASSATELLI- Lecture on Reconfigurable Technologies
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016