SRC
SRC
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 dect 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,,.
[Link]/ - Xilinx
[Link]/ - Altera
[Link]/ - Lattice
[Link]/ - Actel
[Link]/ - Atmel
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
With Acromags 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 [Link]
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 [Link]
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
(Transistortransistor 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)
-pn la 200 de pori per circuit
-cele mai folosite: circuitele 74xx + pori, flip flop, latch-uri, decodoare,
numrtoare, registri etc.
Circuite integrate pe scara mare (Large scale integration)
- de la 200 la 200 000 numr de pori per circuit
- memorii de capacitate mic, circuite programabile
Circuite integrate pe scar foarte mare (Very large scale integration)
- peste 200 000 pori per circuit
- numrul portilor este nlocuit adesea de numrul tranzistoarelor,
deoarece aceste circuite au memorii integrate, etc.
Proiectarea sistemelor folosind circuitele integrate pe scar mic sau
medie are ca avantaj nelegerea uoar a functionalitii circuitului dar ca
dezavantaj major ar fi faptul ca nu se pot folosi pentru proiecte elaborate fr
a crete mrimea plcii 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:
[Link]
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 funcii
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 pori
AND i o arie programabil de pori OR. Se pot implementa M funcii (outputs)
pentru N intrri (inputs). Programarea ROM-ului const n specificarea tabelei
de adevr a funciilor.
PLA - Programmable Logic Array - este un circuit logic de tip SOP (sum-of-
products) cu o arie programabil de pori AND i o arie programabil de pori
OR. Se pot implementa funcii folosind mintermenii disponibili care se pot utiliza
de ctre mai multe funcii.
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 pori AND i o arie fix de pori OR.
Se pot implementa funcii folosind mintermenii disponibili pentru fiecare
funcie de ieire. (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 legtur sau a firelor de legtur ntre
ele.
blocul logic - Logic Block un circuit de baz care este
multiplicat n aria programabil. Cnd un circuit este
implentat ntr-o arie programabil, este mai nti 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 mbunti a tehnologiei care
foloseste arii de pori 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 dect o arie de pori. Acesta
conine celule de intrare i ieire 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 mbuntire fa de ariile de pori standard.
Un FPGA este de fapt un circuit de logic programabil si care are o
mulime de fire de legtur 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 msoar n numr de pori
echivalente cu implementarea tradiional, sau numrul de pori NAND
cu 2 intrri.
2. Densitatea logic - Logic Density - cantitatea de logic pe unitate
de arie.
3. Performana de vitez Speed-Performance - parametru care
msoar viteza maxim la care poate opera un circuit implementat in
aria programabil.
Spre exemplificare, pentru circuitele combinaionale (circuite pentru
care ieirea este dependent numai de intrrile curente, ieirea fiind
dat de combinarea intrrilor - comparatoare, decodoare, multiplexoare,
demultiplexoare etc) performana este dat de cea mai mare ntrziere
de-a lungul oricrei ci. Pentru circuitele secveniale (circuite logice
pentru care ieirile la un moment de timp specificat sunt funcie de
intrrile de la momentul respectiv, si de asemenea de un numr finit de
intrri precedente) performana este dat de frecvena 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
[Compton02]
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 cutare (LUT) care poate avea un numr diferit de intrri n
funcie de tipul circuitului. Astfel, pentru Virtex 6 de la Xilinx, LUT are 6 intrri, Virtex 4 are 4
intrri. Mai multe LUT formeaz un CLB (Configurable Logic Block) bloc logic configurabil.
Aceasta este o denumire care la un alt productor 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 uniti, cum ar fi: RAM,
ALU, multiplicatoare,
sumatoare.
Unitile 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
[Maxfield04]
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: [Link]
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, [Link] 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 VHDL87.
IEEE std 1076-1993 al doilea standard VHDL. Este referit prin abrevierea
VHDL93.
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 [Link];
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("[Link]");
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] - [Link]
[3] - Accolade VHDL Reference Guide - [Link]
[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
VHDL - continuare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cod sintetizabil in VHDL
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Pachete gratuite pentru design si simulare care folosesc ambele
limbaje: VHDL/Verilog:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Considerente privind procesul de proiectare (unelte software)
pentru Sisteme Reconfigurabile
Implementarea
Este un process care consta dintr-o secventa de 3 pasi:
1. Translate - translatarea
2. Map - maparea
3. Place and Route plasarea si rutarea
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
1. Translate este un process care combina toate intrarile din netlist
si constrangerile intr-un fisier care va contine logica design-ului.
Informatia este salvata ca un fisier NGD (Native Generic Database)
se foloseste programul NGD Build.
Constrangerile reprezinta alocarea porturilor din design la elemente
fizice (pini, butoane, switch-uri etc). Informatia este stocata intr-un
fisier UCF (User Constraints File).
Uneltele folosite pentru a crea sau modifica UCF - PACE, Constraint
Editor (editor de constrangeri)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
2) Maparea este un process care divide intreg circuitul cu
elemente logice in sub-blocuri astfel incat sa se potriveasca cu
blocurile logice din FPGA. In acest process se potrivesc
elementele logice definite de fisierul NGD cu elementele FPGA
(Combinational Logic Blocks (CLB), Input Output Blocks (IOB))
si se genereaza fisierul NCD (Native Circuit Description) care
reprezinta fizic maparea design-ului in componentele FPGA. Se
foloseste in acest scop programul MAP.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
3) Place and Route Se foloseste in acest scop programul
PAR. Procesul plaseaza sub-blocurile rezultate in procesul de
mapare in blocurile logice in mod corespunzator cu conectica
blocurilor logice si in functie de constrangeri.
Unealta PAR preia fisierul NCD (maparea) si il foloseste ca
intrare si produce a rutare completa. Iesirea fisierului NCD
constituie informatia de rutare.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Device Programming Programarea circuitului
Design-ul trebuie incarcat in FPGA si pentru aceasta trebuie convertit intr-un format
astfel incat sa fie acceptat de catre circuit. Programul BITGEN realizeaza
[Link] rutarii NCD este furnizat programului BITGEN care va genera un
stream (flux) de biti (un fisier cu extensia .BIT) care va fi folosit la configurarea
circuitului FPGA. Acest lucru se va realiza folosind un cablu (care va depinde de
tehnica folosita).
Sinteza
Implementare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modul Schematic DESIGN ENTRY (1)
Se apeleaza
pentru a asocia
simboluri unor
module VHDL
Module VHDL
Aceste
simboluri pot fi
apoi inserate in
modulul
schematic
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
DESIGN ENTRY (2) Fisiere intrare (HDL, Schematic, ambele)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
DESIGN ENTRY (3)
Fisiere intrare (HDL, Schematic, ambele)
Aici HDL
Este VHDL
Reguli specifice
Avantajos pentru
proiecte de
complexitate
mare permite
rapiditate in
dezvoltare
Nu este neaparat mai eficient decat descrierea schematica
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SINTEZA (1)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SINTEZA (2)
Fisier NGC
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
IMPLEMENTARE ( 1- Translate)
IMPLEMENTARE ( 2 - Map)
Se identifica si se aloca CLB, IOB, etc. din FPGA conform net-list
generat anterior
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
IMPLEMENTARE ( 3 Place and Route)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
$125.00
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
CPLD
144 macro-cells
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Dublu click pe un anume MC (macro cell) - CPLD
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Double click -> schema de detaliu
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ECS
Element de biblioteca
(nu mai este detaliata schema
la nivel de porti)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Este direct alocat un inmultior disponibil in arhitectura Spartan 3
De comparat cu CPLD
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Se mentine functia
de biblioteca
De comparat cu Spartan 3
(! Mai putine porti !!)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Detaliu alocarea resurselor pe FPGA
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Pentru aceasta familie de circuite se poate face si o analiza a
puterii consumate
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cele din fam. Virtex sunt
mai scumpe
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Alocarea pe chip (aplicatia Floorplanner)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Efectul acestei alocari nerationale:
- un circuit scump, ineficient folosit
- putere consumata 411 mW !! (fata de 24 in cazul Spartan 2)
Nota: Simbolul VHDL <= - reprezinta operatorul de atribuire (asignare) (atribuie valoarea
din partea dreapta pentru variabila din partea stanga )
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tipuri de date Standard Logic
Standard Logic IEEE 1164 Pachetul std_logic_1164 este compilat intr-o
biblioteca numita ieee, si include urmatoarele tipuri de date:
Type Std_ulogic reprezinta un singur fir (wire) care poate avea diferite valori
logice
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)
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
Operatori standard:
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
Instructiuni conditionale (de control ) descriu functii
combinationale, indica prioritati in operatii, sau specifica alte
comportamente de high-level
If-Then-Else
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Conditia specificata intr-o constructie de tipul if-then-else
trebuie sa evalueze un tip Boolean.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Case Statements
Poate fi folosita ca o constructie alternativa la if then- else
case control_expression is
when test_expression1 =>
statements
when test_expression2 =>
statements
when others =>
statements
end case;
Expresiile de test trebuie sa fie mutual exclusive, nu pot fi adevarate in acelasi
timp 2 expresii de test. Diferenta fata de if then-else consta in faptul ca cea
din urma implica o prioritate a conditiile, in timp ce pentru instructiunea
case acest lucru nu este valabil.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Bucle FOR permite specificarea unui numar fix de interatii in descrierea
unui design. Bucla for include o declaratie automata pentru index
library ieee;
use ieee.std_logic_1164.all;
entity parity10 is
port(D: in std_logic_vector(0 to 9);
ODD: out std_logic);
constant WIDTH: integer := 10;
end parity10; Exemplu:
architecture behavior of parity10 is
Generator de paritate de 8-
begin
bit folosind o bucla for.
process(D)
variable otmp: Boolean;
Begin
otmp := false;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
for i in 0 to D'length - 1 loop
if D(i) = '1' then
otmp := not otmp;
end if;
end loop;
if otmp then
ODD <= '1';
else
ODD <= '0';
end if;
end process;
end behavior;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Functii si Proceduri
Functiile si procedurile in VHDL se numesc generic subprograms, si
reprezinta o analogie directa cu functiile si procedurile definite in
limbaje de programare de nivel inalt
Procedura subprogram care are o lista de argumente care constau
din intrari, iesiri si nu returneaza nicio valoare.
Functia - subprogram care are numai intrari in lista de argumente si
returneaza o valoare.
Subprogramele pot fi definite local (intr-o arhitectura) sau intr-un
package. Declaratiile din subprogram sunt secventiale (ca in proces).
Pot fi apelate dintr-o zona concurenta dintr-o arhitectura sau dintr-un
proces. De asemenea se pot apela din alt subprogram.
De evitat scrierea functiilor si procedurilor recursive, acestea nefiind
sintetizabile!
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
package my_package is
function my_global_function(...)
return bit;
my_package a fost compilat intr-o
end my_package; biblioteca
package body my_package is
use
function my_global_function(...)
work.my_package.my_global_function;
return bit is
entity my_design is
begin
begin
...
...
end my_global_function;
end my_design;
end my_package;
...
my_global_function() a fost declarata in
package my_package
Se obtine un subprogram global
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Subprograme locale
Se declara local, intr-o arhitectura.
architecture my_architecture of my_design is
begin
my_process: process(...)
function my_local_function(...)
return bit is
begin
...
end my_local_function;
begin
...
end process my_process;
end my_architecture;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Functii = Un subprogram cu zero sau mai multe argumente de tip intrari si
care returneaza o singura valoare de iesire.
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
Exemplu: cod VHDL pentru
simulare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Utilizare Project Navigator Pentru Simulare si Modelare
(generare Testbench si apel Modelsim)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Se pot prescrie unele informatii de timing
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
In zona de culoare albastra se pot programa semnalele de test
In zona de culoare galbena se poate preciza (iesirea) dorita
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Se vede ca unui bench ii corespunde un modul VHDL
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Se pot face simulari asociate diferitelor etape din procesul de proiectare
(behavioral, translate .. Dar cea mai completa ca informatii este
post place and route
Fereastra
deschisa de
Modelsim
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Bench2 este de fapt o ierarhie de module VHDL care contin
inglobate informatii de timing pe care unealta Project
Navigator le furnizeaza. In acest caz VHDL este folosit si ca
limbaj de simulare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple cod VHDL
Descrierea unui comparator folosind IEEE 1164 standard logic
Comentariu --
declarare library se incarca biblioteca
IEEE.
Use - specifica ce anume din biblioteca
ieee este disponibil pentru design-ul
realizat (declarat prin entitate si
arhitectura).
Forma generala include 3 campuri,
separate prin punct.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: counter
cu reset asincron,
incarcare paralela
si dimensiune
configurabila.
utilizare 'unsigned'
type si generics.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
4-bit synchronous
up counter.
active high,
synchronous reset.
Active high enable.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Introducere in Verilog
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modulele descrise in Verilog
reset toggle
module toggle(q, clk, reset); q
<functionality of module>
clk
endmodule
Reconfigurable Computing
S. Reda, Brown University
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Concepte de baza
Comentarii prin introducerea // sau prin /* - */ pentru un bloc de
mai multe linii
specificare numere.
<size><base format><number>
Nr de biti
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tipuri de date
Net-urile reprezinta conexiuni intre elementele. Se declara
folosind cuvantul cheie wire.
wire a;
wire b, c;
wire d=1b0;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Instantierea modulelor
module Top;
reg [3:0] A, B; externe, intrarile pot fi reg sau wire;
reg C_IN; interne trebuie sa fie wire
wire [3:0] SUM;
wire C_OUT; Extern trebuie sa fie wire
// one way
fulladd4 FA1(SUM, C_OUT, A, B, CIN);
// another possible way
fulladd4 FA2(.c_out(C_OUT), .sum(SUM), .b(B), .c_in(C_IN), .a(A));
endmodule
module fulladd4(sum, c_out, a, b, c_in);
output [3:0] sum;
output c_out;
input [3:0] a, b;
input c_in;
endmodule
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modelare la nivel de poarta (structural)
.
wire Z, Z1, OUT, OUT1, OUT2, IN1, IN2;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tablouri de instante pentru porti
wire [7:0] OUT, IN1, IN2;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tipuri de operatori
Arithmetic: *, /, +, -, % and **
Logical: !, && and ||
Relational: >, <, >= and <=
Equality: ==, !=, === and !==
Bitwise: ~, &, |, ^ and ^~
Reduction: &, ~&, |, ~|, ^ and ^~
Shift: <<, >>, >>> and <<<
Concatenation: { }
Replication: {{}}
Conditional: ?:
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu:
// OR THIS WAY
assign out = s1 ? (s0 ? i3:i2) : (s0 ? i1:i0);
endmodule
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modelarea comportamentala
Design-ul este exprimat la nivel algoritmic (nu
mai este nevoie de o gandire in termeni de porti .
sau comunicare date). .
reg a, b, c;
Proiectarea la acest nivel este foarte
asemnanatoare cu programarea in C. initial a=1b0;
.
Algorimul este implementat intre doua declaratii .
: always si initial. always
begin
b = a ^ 1b1;
Fiecare always si initial reprezinta o activitate
separata. De retinut ca ruleaza in paralel. c = a + b;
end
.
Pot fi mai multe initial si always dar nu pot fi
.
intercalate
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
initial
initial blocul incepe la timpul 0, se executa o singura data
Daca sunt mai multe blocuri initial, fiecare bloc incepe sa fie
executat concurent de la momentul 0, fiecare bloc terminand
executia independent de celelalte.
Declarari multiple comportamentale se grupeaza folosind begin si
end.
reg x, y, m;
initial m=1b0;
initial
begin
x=1b0;
y=1b1;
end
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
always
always incepe la timpul 0 si executa instructiunile in
blocul always in mod continuu (ca la bucle).
Modeleaza un bloc in care activitatea circuitului digital
se repeta continuu.
integer count;
count=0;
always
begin
count=count+1;
end
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Evenimente
Un eveniment event modificarea valorii registrului sau a net-ului.
Se folosesc pentru a porni executia intr-un bloc.
Simbolul @ - este folosit pentru a specifica controlul unui
eveniment
Declaratiile se pot executa la modificarea valorilor semnalelor,
sau in momentul tranzitiilor pozitive sau negative ale semnalului.
(posedge) (negedge).
reg x, y;
reg x, y;
initial
initial begin
begin x<=1b1;
x=1b1;
y<=1b0;
y=1b0;
end end
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Folosirea atribuirilor nonblocking
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Instructiuni conditionale
Asemanator cu C .
Intotdeauna apar in if(alu_control == 0)
blocurile always si y = x + z;
initial else if (alu_control == 1)
y = x z;
else if (alu_control == 2)
. y = x * z;
if(x) else
begin y = x;
y= 1b1; .
z= 1b0;
end reg [1:0] alu_control;
expression
. ..
if (count < 10) case (alu_control)
count = count+1; 2d0 : y = x + z;
else 2d1 : y = x z;
count = 0; 2d2 : y = x * z;
. default: y=x;
endcase
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Loops
integer count;
integer y=1;
integer x=2;
initial
for (count = 0; count < 128; count = count + 1)
begin
x <= x + y;
y <= x;
end
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Mux4x1
module mux4x1(out, i0, i1, i2, i3, s1, s0);
output out;
input i0, i1, i2, i3;
input s1, s0;
reg out;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Clipire LED la 1 sec
module sec (input CLOCK_50, output reg [8:0] LEDG);
integer count=0;
initial LEDG[0]=1'b0;
endmodule
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL-AMS
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Este derivat din VHDL ((IEEE standard 1076-1993). Include extensii mix-signal
(AMS) pentru a defini sisteme analogice si mix-signal (IEEE 1076.1-1999).
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu de cod: Descrierea unei diode in cod VHDL-AMS
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL_AMS lucrari stiintifice in IEEE Xplore
539 for vhdl-ams (rezultat al cautarii din 2016)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Structura de baza VHDL-AMS
Entity
Descrie interfata unui device fizic sau a unui sistem
Specifica intrarile si iesirile modelului (porturile)
Poate specifica parametrii de intrare ai modelului (A =, B =, C = ..)
Architecture
Descrie modelul
Poate avea atat semnale analogice (continue) cat si digitale (discrete)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu de utilizare: modelarea unui convertor DC/DC
Componente (R, L, C, Diode, Switch, opamp, etc)
Modelare componente digitale din circuitul de modulare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL-AMS Modelare digitala
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ANEXE
Exemplu de unelte de dezvoltare CAD
(Computer Aided Design)
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
Ansoft Simplorer - System Simulation Software for Multi-Domain
Design
Simplorer is a multi-domain system simulation software program.
It is used for the design, modeling, analysis and optimization of high-
performance systems that include electrical, thermal, electromechanical,
electromagnetic, and hydraulic designs. These complex systems are commonly
found in the automotive, aerospace/defense, and industrial automation
industries.
Simplorer provides a wide range of modeling techniques, analysis capabilities,
and post processing. This enables the engineer to investigate system
functionality, performance, and overall design verification. The result is a
dramatic reduction in development time and cost, increased system reliability
and system optimization.
[Link]
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
New in Simplorer v8
Next generation User Interface
Advanced Model Editing
Characterization tools
Enhanced Spice and Pspice model import
New component library concept
Expanded VHDL-AMS functionality
Enhanced Solver Performance
Enhanced Transient Co-simulation with Maxwell
New Dynamic Coupling with Maxwell/RMxprt/Q3D Extractor
3rd Party Co-simulation Coupling
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
Digital VHDL-AMS Modelarea blocului modulator
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL-AMS limbaj de modelare pentru mix-signal (analog/digital) dar si pentru
proiecte care vizeaza tehnologii mixte (Electric, Mecanic, Termic, Magnetic, etc.).
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Behavioral Simulation:
ModelSim is an industrial strength high level VHDL/Verilog simulator from
Mentor Graphics.
The Hamburg site for VHDL provides a wealth of information on high level
behavioral modeling and synthesis tools. Here is another comprehensive site for
analog and mixed signal extensions to VHDL (VHDL-AMS).
Behavioral Synthesis:
FPGA vendors such as Xilinx and Altera have their own tools for synthesis from
VHDL. For ASIC design, Synopsys and Leonardo Spectrum from Mentor
Graphics can be used with the Tanner libraries to synthesize custom layout from
VHDL.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Referinte bibliografice:
[1] Prof. Sherief Reda Division of Engineering, Brown University Spring Reconfigurable Computing
[2] [Link]
[3] [Link]
[4] - Accolade VHDL Reference Guide - [Link]
[5] Steve Chwirka - Applying VHDL-AMS and other Advanced Modeling Techniques
[6] - [Link]
[7] [Link]
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016