Sunteți pe pagina 1din 317

SISTEME RECONFIGURABILE DE CALCUL

NOTIUNI INTRODUCTIVE

Abrevieri frecvente in proiectarea hardware folosind circuite reconfigurabile


ASIC - Application Specific Integrated Circuit
•CLB - Configurable Logic Blocks
•CPLD - Complex Programmable Logic Devices
•FPGA - Field-Programmable Gate Arrays
•HDL - Hardware Description Language
•IOB - Input/Output Blocks
•LUT - Look-Up Table
•PAL - Programmable Array Logic
•PLA - Programmable Logic Array
•PLD - Programmable Logic Devices
•SoC - System-On-Chip
•VHDL - Very High Speed Integrated Circuit HDL
•VLSI - Very Large Scale Integration
• CAD - Computer-aided design
• EDA – Electronic Design Automation
• IP – Intellectual Property
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cursul va trata urmatoarele probleme:
Istoric, tendinte si motivatia utilizarii circuitelor reconfigurabile
•Comparatie cu alte tipuri de proiectare hardware: ASIC si microprocessor.
· Trecere in revista a diferitelor tipuri de circuite reconfigurabile. Generalitati
despre dispozitivele logice programabile
· Arhitecturi circuite de tip FPGA si CPLD
• Unelte de proiectare (Computer-Aided Design - CAD) pentru FPGA design
·Notiuni de limbaje de descriere hardware HDL (Hardware Description
Language). Comparatie Verilog si VHDL cu prezentarea avantajelor si
respectiv a dezavantajelor pe care le are fiecare tip de limbaj. Prezentare a
notiunilor principale de programare VHDL si Verilog.
· Prezentare firme care produc circuite reconfigurabile: Actel, Atmel, Altera
si Xilinx. Studii de caz pentru diferite familii de circuite.
· Prezentare circuite de la firma Xilinx din familiile Spartan, Virtex etc.

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:

Lucrarile practice vor folosi placi de dezvoltare de la firma Digilent


Basys2 sau Xess care au in componenta circuite de la firma Xilinx din
familia de circuite Spartan II, Spartan II-E si Spartan 3E. Se vor avea in
vedere urmatoarele probleme:
· Familiarizarea cu programarea FPGA si folosirea placilor de
dezvoltare
· Etapele parcurse de la tema de realizat pana la programarea
circuitului, testare si verificare a design-ului.
· Realizarea de proiecte folosind module VHDL, scheme si ierarhii
· Folosirea programelor de simulare (ISE Simulator sau ModelSim)
• Implementarea structurii de microprocessor soft (masina de stare)
PicoBlaze pe un mediu hardware reconfigurabil

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.

Motivatia folosirii circuitelor reconfigurabile:

•Acceleratoare pentru realizarea aplicatiilor ce necesita calcul


intensiv - în domeniul "high performance computing" (datorita
paralelismului care este o caracteristica a unui astfel de sistem)
•Realizarea rapida a prototipurilor si a productie de serie mica

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Calculatoarele Clasice sunt alcatuite din hardware si software

Procesorul este o functie fixa, determinata la momentul fabricatiei


hardware-ul este static
– software-ul (totalitatea programelor) este incarcat (instalat) dupa
procesul de fabricare  software-ul este dinamic

Sistemele de Calcul Reconfigurabile  partea de hardware


se poate modifica conform unei aplicatii, dupa procesul de
fabricare

 Hardware-ul este dinamic

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Embedded Systems
Sistemele integrate (embedded systems) includ aproape orice
sistem de calcul altul decât computerele traditionale.

Reprezinta unul dintre domeniile cu cea mai rapida crestere.


Exemplele includ:
•telefoane mobile,
•dispozitive medicale,
•sisteme de alarmă,
•sistemele auto,
•playere audio portabile, etc.

Multe dintre cele mai interesante sisteme de calcul sunt sisteme de


tip embedded:

- 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:

1960: G. Estrin at UCLA, “The Fixed Plus Variable Structure


Computer”
1985: Firma Xilinx introduce circuitele de tip FPGA
– FPGA(field-programmable gate arrays = arii de porti logice
probramabile) – sunt considerate a fi o culme a dispozitivelor logice
programabile
– sunt programate prin scrierea celulelor de memorie static RAM
– volatilitatea acestora este considerata a fi un dezavantaj pentru
implementare de functii logice
• Anii 90
– cercetatorii realizeaza ca volatilitatea circuitelor FPGA bazate pe
SRAM este de fapt cheia pentru multe tipuri de aplicatii noi si incep sa
lucreze cu sisteme de calcul bazate pe circuite de tip FPGA, aceste
sisteme dezvoltate obtinand performante egale cu cele ale
supercomputerelor.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
In prezent:

Pentru piata de dispozitive hardware reconfigurabile

- Industria circuitelor de tip FPGA reprezinta unul dintre sectoarele


cu cea mai rapidă creștere de pe piața semiconductoarelor

-Companiile noi (start-up) intra pe piata cu noi tipuri de dispozitive

-Sunt folosite pentru puterea lor de calcul atat in sisteme de tip


embedded cat si pentru calculatoare de performanta inalta (high
performance)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ce este un FPGA?

FPGA = Field-programmable gate array = Retea de porti logice


programabile
Este un circuit reconfigurabil cu granulatie fină (a fine-grained
reconfigurable fabric)

Este folosit în mai multe tipuri aplicatii, cum ar fi prototipizare si


testare precum si ca accelarator software.

Este realizat din mai multe componente:


•blocuri logice – circuit de baza multiplicat in aria programabila
•blocuri I /O,
•canale de rutare (interconectare) si comutatoare programabile care
realizeaza conectarea elementelor de logica la firele de legatura sau a
firelor de legatura intre ele.
•mai multe blocuri de "hard". (sumatoare, memorii RAM, inmultitoare)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Reprezentare arhitectura 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.

•Exemple de limbaje HDL >> Verilog si VHDL

•Se folosesc medii de dezvoltare/programare in functie de


fabricantul de circuite (ex. Xilinx, Altera, etc)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fluxul de proiectare:

•Sinteza logicii – procesul de abstractizare a codului HDL in termeni


de porti logice (se face si optimizarea in ceea ce priveste numarul de
porti logice, aria si timpii de intarziere)

•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

•Realizare fisier de configurare (bitstream) care va programa


circuitul FPGA
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
Logica Reconfigurabila (FPGA) in
System-On-A-Chip (SoC)

SoC = un circuit integrat in care se afla incapsulate


componentele de baza necesare pentru a defini un
sistem de calcul. (intr-un singur circuit).

Custom DSP RAM


RAM FPGA Logic
Custom Logic CPU

DSP CPU Analog FPGA

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)

 Is a single processor core;

 Normally can be used for general purpose, but needs to be supported with Memories
and IOs;

 Microcontroller (MCU)

 Typically has a single processor core;

 Has Memory blocks, basic IOs and other basic peripherals;

 Mainly used for basic control purpose, such as embedded applications;

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

 Can have a single or multiple powerful processor cores;

 Has larger Memory blocks, a variety of IOs, and other peripherals;

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

 A number of SoCs have been developed by a large eco-system of design


companies, eg-, SnapdragonTM by Qualcomm®, Tegra® by Nvidia®, Ax by
Apple®, OMAPTM by Texas Instruments, etc…

 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

Physical optimization HW/ SW Application development


and fabrication co-verification and test

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

 The basic components of a SoC include:


 A system master, such as a microprocessor or DSP;
 System peripherals, such as Memory block, timer, external digital/ analog interfaces;
 A system bus that connects master and peripherals together using a specific bus
protocol.
 More sophisticated modules are integrated in modern SoCs, such as multicores,
DSPs, GPUs, and multiple buses connected by bus bridges.

A simple system on Chip System Master


(Processor)

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

AHB to APB UART


ARM AMBA 3 AHB-Lite System Bus
Bus bridge

System Boot ROM 7-segment


AHB APB
RAM UART
ROM VGA GPIO
RAM Timer
Control ROM Table Peripheral
Display Peripheral

An example of ARM-based SoC


Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Design a Simple ARM-based SoC
 In this set of teaching materials we are going to design a simplified version of
ARM-based SoC and prototype it onto a FPGA chip. The SoC will consist only
some basic components:

 An ARM Cortex-M0 microprocessor;

 A single AHB Lite bus; ARM-University


 Customer-made physical IPs;
Program

ARM Cortex-M0
Microprocessor

ARM AMBA 3 AHB-Lite System Bus

System Boot ROM 7-segment


AHB
RAM UART
ROM VGA GPIO
RAM Timer
Control ROM Table Peripheral
Display

EDK: A simplified ARM-based SoC

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)

Un ASIC (circuit integrat specific aplicaţiei) este un microcip


proiectat pentru o aplicaţie specială, cum ar fi un anumit tip de
protocol de transmisie. In contrast cu circuitele integrate generale,
cum ar fi microprocesorul şi cipurile de memorie cu acces aleator ,
ASIC-urile sunt folosite într-o gamă largă de aplicaţii, inclusiv de
control al emisiilor auto, monitorizarea mediului, şi asistenţi
personali digitali (PDA-uri).

ASSP (application-specific standard product)


Este un dispozitiv semiconductor cu circuite integrate (IC), pentru o
aplicaţie specifică şi vândut la mai mult de un utilizator (şi, prin urmare,
"standard"). Ca un ASIC (circuit integrat de aplicatii specifice), ASSP
este pentru o aplicaţie specială, dar acesta este vândut către orice număr
de companii. (Un ASIC este proiectat şi construit la comanda pentru o
companie anume.)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•FPGA
•Avantaje:
•lucreaza paralel – se pot implementa sisteme de calcul de
mari performante – High Performance Computing
•Foarte bune pentru prototipizare si productie de serie
mica
•Dezavantaje: cost mediu spre mare

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Principalii producatori de circuite de tip FPGA si CPLD
sunt Xilinx, Altera, Lattice, Atmel, Actel,,.
www.xilinx.com/ - Xilinx
www.altera.com/ - Altera
www.latticesemi.com/ - Lattice
www.actel.com/ - Actel
www.atmel.com/ - Atmel

Exista firme care folosesc in


produsele lor comerciale
circuite FPGA
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu
High-performance computing - https://www.acromag.com
Acromag’s high-performance XMC FPGA modules feature a
user-customizable Artix®-7, Xilinx® Kintex-7, Virtex-6, Virtex-5
or Spartan-6 Xilinx FPGA. These modules allow you to develop and
store your own instruction sets in the FPGA for a variety of adaptive
computing applications. Select from several models with up to 410K
logic cells optimized for logic, DSP, or PowerPC. The DDR3
SDRAM and a PCI Express interface rapidly move data.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
With Acromag’s Artix-7 FPGA modules, you can greatly increase
DSP algorithm performance for faster throughput using multiple
channels and parallel hardware architectures. Free up CPU cycles
by offloading algorithmic-intensive tasks to the FPGA co-processor.

These modules are ideal for high-performance customized


embedded systems. Optimize your system performance by integrating
high speed programmable logic with the flexibility of software
running on MicroBlaze™ soft processors.

Acromag’s Engineering Design Kit provides software utilities and


example VHDL code to simplify your program development and get
you running quickly. A JTAG interface enables on-board
debugging. Additional Xilinx tools help finish your system faster.
Maximize FPGA performance with Vivado® or ISE® Design Suite.
And with ChipScope™ Pro tools, you can rapidly debug logic and
serial interfaces
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Although there is no limit to the uses for Acromag’s FPGA I/O
boards, several applications are ideal for this new technology.
Common uses include sonar, radar, hardware simulation,
automated test equipment, protocol conversion, in-circuit
diagnostics, military servers, telecommunication, and digital
signal processing. Typical applications for conduction-cooled
models include manned and unmanned vehicles, battleground
SIGINT and communications systems, deployment on tanks, or any
system where ambient or forced air can’t provide adequate cooling.
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
http://www.xilinx.com/publications/prod_mktg/7-Series-Product-Brief.pdf
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
http://www.xilinx.com/publications/prod_mktg/7-Series-Product-Brief.pdf
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
http://www.altera.com/products/fpga.html
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
•Cyclone® V FPGAs •Stratix® V FPGAs
•Cyclone IV FPGAs •Stratix IV FPGAs
•Cyclone III FPGAs •Stratix III FPGAs
•HardCopy® V ASICs
•MAX® V CPLDs
•MAX II CPLDs
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Arria® V FPGAs
•Arria II FPGAs
•Arria GX FPGAs

•MAX® V
CPLDs
•MAX II
CPLDs

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Firma ACTEL – MICROSEMI http://www.actel.com/

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•IGLOO Lowest
Power FPGAs
•ProASIC3 Low
Power FPGAs
•SmartFusion
Mixed Signal
FPGAs
•Fusion Mixed
Signal FPGAs

•RadTolerant
FPGAs
•Embedded
Processors
•Intellectual
Property

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Firma Atmel http://www.atmel.com/products/fpga/default.asp

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
The AT40KAL family are FPGAs with the ability to implement Cache Logic
design, where part of the FPGA can be reprogrammed without loss of register
data, while the remainder of the FPGA continues to operate without disruption.
This is ideal for building adaptive filters, variable coefficient multipliers and other
designs where the datapath can change to increase system performance.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FPGA Integrated Development Systems (IDS)

A tool for creating fast, predictable designs with ATA6625 AT40K,


AT40KAL, and AT6000 series FPGAs using HDL Planner for VHDL
and Verilog Entry. This tool can be used with other popular synthesis
tool environments. The IDS is available as a standalone tool, or
integrated into system designer software as a complete package for
FPSLIC/FPGA.

FPSLIC - Field Programmable System Level Integrated Circuits

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Resurse bibliografice:
[1] Prof. Sherief Reda Division of Engineering, Brown University Spring -
Reconfigurable Computing
[2] Prof. Russell Tessier - Reconfigurable Computing
[3] Dr. Gilles SASSATELLI- Lecture on Reconfigurable Technologies
[4] Marco Platzner Computer Engineering Group - Reconfigurable Computing
[5] ARM-University Program

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Circuite discrete ~1940-50 Implementarea
• Porti logice discrete ~1950-60 logicii digitale
• Circuite integrate (IC)
1. ex. TTL O clasa de circuite digitale dezvoltata cu ajutorul
tranzistoarelor cu jonctiune bipolara si rezistoare
(Transistor–transistor logic) – atat functiile date de portile logice
(ex, AND) cat si functiile de amplificare sunt realizate de catre
tranzistoare  exemplu: seria 74LSxx, ~1960-...
2. SPLD (simple programmable logic devices) ~1970-...
circuite cu 2 nivele de logica (SPLD)
3. MPGA (mask-programmable gate arrays) ~1970-...
folosite pentru realizarea circuitelor integrate pentru aplicatii
specifice (application-specific integrated circuits – ASIC)
4. large programmable logic devices ~1980-...
- mai multe SPLD intr-un singur circuit (CPLD)
- arii de porti logice programabile + interconexiuni =(FPGA)
5. noi clase de circuite integrate
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
CIRCUITE INTEGRATE
Circuite integrate pe scara mică şi medie (Small scale and medium scale
integration)
-până la 200 de porţi per circuit
-cele mai folosite: circuitele 74xx + porţi, flip flop, latch-uri, decodoare,
numărătoare, registri etc.
Circuite integrate pe scara mare (Large scale integration)
- de la 200 la 200 000 număr de porţi per circuit
- memorii de capacitate mică, circuite programabile
Circuite integrate pe scară foarte mare (Very large scale integration)
- peste 200 000 porţi per circuit
- numărul portilor este înlocuit adesea de numărul tranzistoarelor,
deoarece aceste circuite au memorii integrate, etc.
Proiectarea sistemelor folosind circuitele integrate pe scară mică sau
medie are ca avantaj înţelegerea uşoară a functionalităţii circuitului dar ca
dezavantaj major ar fi faptul ca nu se pot folosi pentru proiecte elaborate fără
a creşte mărimea plăcii obtinute, a puterii consumate şi a costului.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Notiuni Circuite Digitale
Un site foarte bun pentru reluarea notiunilor de circuite:
http://www.play-hookey.com/digital/

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Un circuit combinational are in general m intrari si n iesiri. Iesirile in acest
caz sunt definite in mod unic pentru fiecare combinatie de intrari
y1=f1(x1,x2,...,xn)
y2=f2(x1,x2,...,xn)
.........................
ym=fm(x1,x2,...,xn)
unde f1, f2,...,fm sunt funcţii
booleene cu argumentele
x1,x2,...,xn
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Mask-Programmable Gate Array (MPGA)
Logica
combinationala
si secventiala
Canale
de rutare

Blocuri I/O

Proiectarea (la fabricant)


implica folosirea
elementelor de biblioteca
- Dispozitive prefabricate alcatuite din arii si a uneltelor de
de tranzistoare, porti logice /elemente dezvoltare care
secventiale realizeaza maparea si
– canale de rutare rutarea corespunzatoare
– Blocuri I/O functiei implementate
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Metode de implementare a logicii:
Full Custom Logic – logică particularizată în întregime. În acest caz
fiecare funcţie logică este manual proiectată şi optimizată. Se pot obţine
circuite compacte, viteze mari de lucru, consum de putere mic. Este o
tehnică care se foloseşte rar, deoarece duce la costuri mari de proiectare
şi productivitate mică.
•Proiectare folosind celule standard (Standard Cell Design)– foloseşte
blocuri logice predefinite (ca la circuitele de tip 74xx) care sunt puse la
dispoziţia utilizatorului într-o bibliotecă de celule. Design-ul se poae reliza
în schematic sau prin folosirea limbajelor de descriere hardware HDL
(Hardware Description Language). Plasarea si rutarea celulelor se face
automat. Se reduce astfel timpul de proiectare precum şi costul acesteia.
•Proiectarea care foloseste arii de porţi (Gate Array Design). Proiectarea
Full Custom si Standard Cell presupune realizarea măştilor particulare
pentru producerea circuitelor, ceea ce este o metodă scumpă. Pentru
circuitele care folosesc arii de porţi, măştile sunt identice ceea ce conduce
la un preţ mai mic.
•Proiectarea care foloseşte circuite programabile
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Programabilitatea dispozitivelor logice

• MPLD mask-programmable PLDs


programate de fabricant (ca la MPGA)
FPLD field-programmable PLD
- complet prefabricate, testate si incapsulate
- programate de catre utilizator
- reduc timpul de realizare a aplicatiilor
- exista variante reprogramabile

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

Structura de baza a interconexiunilor programabile este


modelata la nivel logic de un comutator controlat de un
semnal c
c=0  comutator deschis; c=1 comutator inchis

Modelul la nivel de switch


Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Porti programabile AND cu n intrari
– se combina interconexiunile programabile cu functia logica

Porti programabile OR cu n intrari


– se combina interconexiunile programabile cu functia logica

Portile programabile n-AND si n-OR


se pot combina in arii de logica
implementata pe doua nivele


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 AND


-6 intrari

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

- Memorie cu n linii de adresa si m iesiri


memorie de (2n x m) bit

Exemplu:
n=3 linii de adresa
m=2 iesiri

Se implementeaza tabela de adevar


a functiei logice, stilul de calcul se
va denumit look-up table
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Proiectarea care foloseşte circuite programabile

ROM – este un circuit logic de tip SOP (sum-of-products) cu o arie fixă de porţi
AND şi o arie programabilă de porţi OR. Se pot implementa M funcţii (outputs)
pentru N intrări (inputs). Programarea ROM-ului constă în specificarea tabelei
de adevăr a funcţiilor.

PLA - Programmable Logic Array - este un circuit logic de tip SOP (sum-of-
products) cu o arie programabilă de porţi AND şi o arie programabilă de porţi
OR. Se pot implementa funcţii folosind mintermenii disponibili care se pot utiliza
de către mai multe funcţii.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
PLA (Programmable Logic Array)

Plane programabile AND si plane programabile OR


-Mai compacte si mai flexibile decat ROM:
-Portile AND pot calcula orice produs (nu numai mintermeni)
-Planele AND nu calculeaza toti termenii 2n

Sunt primele circuite pentru implementarea logicii programabile


– sunt realizate de catre Philips in anii 1970

– PLA-urile nu au fost considerate un succes comercial


- procesul de fabricare era costisitor
- circuitele aveau viteze mici

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
PAL - Programmable Array Logic - este un circuit logic de tip SOP (sum-
of-products) cu o arie programabilă de porţi AND şi o arie fixă de porţi OR.
Se pot implementa funcţii folosind mintermenii disponibili pentru fiecare
funcţie de ieşire. (PAL este marcă înregistrata Advanced Micro Devices )

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
•Comparativ cu circuitele PLA, circuitele de tip PAL- sunt
considerate mai compacte si mai rapide
•Au existat in numeroase versiuni cu numar diferit de intrari si iesiri
•Iesirile pot fi folosite pentru a implementa circuite secventiale
•Comercial sunt considerate un succes – exista si un standard
industrial PALs 16R8 by AMD

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SPLD (simple PLDs)
– sunt arii programabile AND-OR
- ROM: plane fixe AND plane programabile OR
- PLA: plane programabile AND, plane programabile OR -
- PAL: plane programabile AND, plane fixe OR

– SPLD sunt folosite pentru a implementa design-uri pana la ~200 porti


– pentru a implementa functii mai complexe, cu numar mai mare de
intrari solutia SPLD nu este indicata:
- planele AND devin prea mari
- planele multi-level sunt
considerate mai eficiente

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:

– CPLD: SPLD multiple plus interconexiuni


programabile
– FPGA: arii de porti logice programabile +
interconexiuni programabile
- combina conceptele de "field-programmable"
si "gate array"

→ Field-Programmable Gate Array

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
CPLD : Complex Programmable Logic Devices

Comercial CPLD-urile sunt introduse de firma Altera


– exista in diferite variante si la alte firme: AMD,
Lattice, Cypress, Xilinx, etc.

Sunt alcatuite din:


-Un numar de blocuri SPDL (macrocelule)
-Blocuri de I/O
-Interconexiuni programabile (mai complexe sau mai
putin complexe) situate intre macrocelule si blocurile de
I/O (input/output)

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

Este alcatuit dintr-un număr de blocuri logice programabile (PLA,


PAL şi mai puţin ROM) conectate de o arie programabilă de fire
de interconectare.
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
Aplicaţii tipice pentru circuitele de tip CPLD

În circuitele de tip CPLD se pot realize proiecte destul de


complexe, cum ar controller graphic, controller LAN, UART
etc. Ca regulă generală: se vor folosi aceste circuite pentru
proiecte care au nevoie de porţi AND şi OR dar nu au nevoie
de un număr mare de circuite de tip flip-flop. Datorită faptului
ca sunt reprogramabile, este posibil să se reconfigureze in
sistem (un exemplu ar fi să se schimbe protocolul pentru un
circuit care implementează un protocol de comunicare) fără a
intrerupe alimentarea

Design-ul se partiţionează în blocurile SPLD care compun


CPLD-ul, făcând în acest mod să se obtină un rezultat
predictibil în ceea ce priveşte performanţele de viteză. Un
avantaj al circuitelor CPLD este predictibilitatea implementarii.
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
TEHNOLOGII RECONFIGURABILE

Definitie:
• Set de resurse configurabile care pot fi interconectate in diferite
moduri.
Arhitecturi:
•Realizari ale functiilor Boolean prin folosirea sumei de produse
(PALs,PLAs,PLDs…)
•Arii de celule (FPGA)
Tehnologii de programare:
•Fuse – prin folosirea fuzibililor
•Antifuse – prin folosirea anti-fuzibililor
•Static RAMs (SRAM)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fiecare tip de circuit programabil contine:
• Interconexiuni — resursele de conexiuni.
• comutatoare programabile —permit conectarea elementelor
de logică la firele de legătură sau a firelor de legătură între
ele.
• blocul logic - Logic Block — un circuit de bază care este
multiplicat în aria programabilă. Când un circuit este
implentat într-o arie programabilă, este mai întâi descompus
în circuite mai mici care sunt mapate în blocul logic.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FPGA — Field-Programmable Gate Array
Este o structură care permite implementarea logicii de
capacitate mare.
FPGA-ul clasic este alcatuit din 3 componente:
•arii de blocuri logice programabile; (alcatuite din LUT-uri,
registri si multiplexoare)
•Interconexiuni programabile
•Blocuri I/O

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Circuitele de tip FPGA sunt o variantă îmbunătăţiţă a tehnologiei care
foloseste arii de porţi şi oferă un cost redus pentru prototipizare.
Tipuri de circuite:
· Nevolatile, programabile o singură dată (anti-fuse – anti fuzibil)
· Nevolatile, reprogramabile (flash)
· Volatile (SRAM)
Un astfel de circuit este însă mai mult decât o arie de porţi. Acesta
conţine celule de intrare şi ieşire I/O Cells, celule logice, memorii,
microprocesoare, circuite pentru gestionarea clock-ului, transceiver
de viteză mare, resurse de rutare programabilă, cea din urmă fiind şi
principala îmbunătăţire faţă de ariile de porţi standard.
Un FPGA este de fapt un circuit de logică programabilă si care are o
mulţime de fire de legătură programabile

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
• FPGA: Field Programmable Gate Array
• Arii de porti logice (de uz general) programabile

CLB CLB CLB

CLB CLB CLB CLB Configurable Logic Block

CLB CLB CLB CLB

CLB CLB CLB CLB

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Utilizarea resurselor de interconectare

CLB CLB

CLB Configurable Logic Block

CLB

CLB 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

Un multiplexor cu 2n intrari va avea n linii de selectie, folosite


pentru a selecta care linie de intrare este transmisa catre
iesire

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Look-up table n-LUT

– n-LUT  n intrari si o singura iesire


– o tabela LUT poate implementa orice functie logica a
intrarilor

– la nivel logic, o tabela n-LUT reprezinta o memorie de (2n x


1) biti, functia logica este determinata de continutul de
memorie

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

Configurarea blocului logic este data de continutul memoriei LUT si


de semnalul de control al MUX-ului
- 4-LUT cu 16 biti de configurare
- Multiplexor cu 1 bit de configurare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Celulele logice - Logic-cells
O celula logica este alcatuita din LUT (Look-up table) –
tabela de cautare, D flip-flop

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

PIP Programmable Interconnection Point

Z
A
B DFF CLB
LUT
C
D

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
FPGAs vs. CPLDs
Ambele sunt circuite digitale programabile, dar fiecare are
caracteristicile sale.
· FPGAs sunt circuite "fine-grain" adica cu granulatie mica. Acest fapt
se traduce prin aceea ca vor contine foarte multe blocuri mici de logica
si flip-flops (pana la 100000). CPLDs sunt "coarse-grain“ – circuite cu
granulatie mare. Contin un numar relativ mic (100 max) de blocuri mari
de logica cu flip-flops.
· FPGAs sunt bazate pe memorie RAM. Trebuie sa fie configurate la
fiecare alimentare cu tensiune. CPLD folosesc tehnologia EEPROM. Vor
fi active la power-up daca au fost programate cel putin odata.
. CPLD au timpi mai mici de la intrare la iesire – si acest lucru este dat de
arhitectura cu granulatie mare, de ex. un singur bloc logic va putea
stoca ecuatii mari.
. FPGA au resurse de rutare speciale pentru a implementa eficient
numaratoare binare si functii aritmetice (sumatoare, comparatoare) si
RAM. CPLD nu are aceste facilitati.
FPGA poate contine design-uri mari, in timp ce CPLD poate contine
numai
Ioana design-uri
Dogaru, Radu mici.
Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Parametrii principali pentru circuitele programabile sunt:
1. Capacitatea logică Logic Capacity - cantitatea de logică care poate
fi mapată într-un singur circuit, şi se măsoară în număr de porţi
echivalente cu implementarea tradiţională, sau numărul de porţi NAND
cu 2 intrări.
2. Densitatea logică - Logic Density - cantitatea de logică pe unitate
de arie.
3. Performanţa de viteză Speed-Performance - parametru care
măsoară viteza maximă la care poate opera un circuit implementat in
aria programabilă.
Spre exemplificare, pentru circuitele combinaţionale (circuite pentru
care ieşirea este dependentă numai de intrările curente, ieşirea fiind
dată de combinarea intrărilor - comparatoare, decodoare, multiplexoare,
demultiplexoare etc) performanţa este dată de cea mai mare întârziere
de-a lungul oricărei căi. Pentru circuitele secvenţiale (circuite logice
pentru care ieşirile la un moment de timp specificat sunt funcţie de
intrările de la momentul respectiv, si de asemenea de un număr finit de
intrări precedente) performanţa este dată de frecvenţa maximă de ceas
pentru care circuitul implementat functioneză corect
4. Resurse interne disponibile
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Xilinx Spartan-3E - familie de circuite
Familia de circuite de tip Spartan este de cost redus, si volum mare.

• Famillile de circuite Spartan FPGA:


– Spartan-II, Spartan-IIE
– Spartan-3 Generation
• Spartan-3 (densitate mare)
• Spartan-3E (optimizat pentru costul logicii)
• Spartan-3A (optimizat pentru costul pinilor)
• Spartan-3AN (imbunătăţit cu flash nevolatil)
• Spartan-3ADSP (imbunătăţit pentru procesare de semnale)

– compatibilitate a pinilor pentru familia de circuite.


– memorii on-chip si unităţi de gestionare a clock-ului
– până la 1 600 000 porţi sistem.

În tabelul de mai jos se prezintă comparativ diferite circuite din


famila Spartan3.
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
Tehnologii de programare:
•OTP (One -time programmable) – programarea se poate face
o singura data si se realizeaza prin tehnicile:
1) fuse – fuzibil
2) antifuse – anti-fuzibil
• Numar limitat de reconfigurari (x.103 )
(E)EPROM
• Configurarea se va face la fiecare power-up
SRAM

Anti-fuzibilii sunt circuite deschise poziţionate între două fire de


legatură. În momentul în care sunt programate devin circuite cu
rezistenţă mică, permiţând realizarea conexiunilor intre fire

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fuse (PLA)

– dupa fabricare starile “on” pot fi programate la starea “off”


– programabile o singura data

• EPROM/EEPROM (SPLD, CPLD)


– comutatoarele sunt implementate folosind tranzistoare
“floating gate transistors”
– programabile electric; se sterg folosind lumina ultravioleta
(EPROM) sau electric (EEPROM/Flash)
– re-programabile

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:

- EE178 Lecture Module 2 Eric Crabill SJSU / Xilinx


- Architecture of FPGAs and CPLDs: A Tutorial Stephen Brown and Jonathan
Rose Department of Electrical and Computer Engineering University of Toronto
- Curs Sasatelli
- Marco Platzner Computer Engineering Group- Reconfigurable Computing
- Dr. Phillip Jones - Reconfigurable Computing Laboratory Iowa State University

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)

Avantaje: Avantaje: Avantaje:


•Performante foarte •Este la mijloc intre •Software-ul este
bune si eficienta solutii hardware si foarte flexibil la
Dezavantaje: software schimbari
•Fara flexibilitate •Performante mult Dezavantaje:
(nu poate fi mai bune decat in •Performantele sunt
modificat dupa software dependente de
procesul de •Mult mai flexibil clock
fabricatie) decat o solutie •Set fix de
• cost mare hardware instructiuni dat de
S. Reda EN2911X FALL’07
hardware
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
Dezvoltarea circuitelor integrate – Tipuri de proiectare

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

– Design particularizat (full-custom design)


• proces indelungat de dezvoltare, cost mare (toate fazele sunt
realizate in procesul de dezvoltare al circuitului integrat)
• performante foarte bune in ceea ce priveste puterea consumata, aria
ocupata, etc.
– Design “semicustom”
• se reduc timpii de dezvoltare si costul
• se folosesc elemente predefinite pentru a reduce timpul de proiectare
(cell-based designs)
• Pentru MPGAs (Mask Programmable Gate Array) se reduce timpul
de fabricare prin folosirea elementelor prefabricate
•Circuitele FPGA sunt complet prefabricate, testate si incapsulate
(off-the-shelve devices) “disponibile de-a gata”
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Caracteristicile stilurilor de proiectare

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ce este un ASIC (Application-Specific IC )

– este opusul unui circuit integrat de uz general


- functia unui ASIC este definita in timpul procesului de fabricare
- pentru un circuit integrat de uz general, functia acestuia este
definita dupa procesul de fabricare.

Un circuit FPGA este un circuit integrat de uz general

 ASIC-urile sunt proiectate in mod tipic folosind proiectarea


bazata pe celule (cell-based) si MPGA (uneori full-custom)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Caracteristica Sistemelor de Calcul Reconfigurabile

Paralelism, specializare, adaptare la nivel hardware

• Paralelism particularizat pentru a


corespunde obiectivelor design-ului
• Logica specializata pentru a
indeplini anumite functii specifice
• Functionalitati care se pot modifica
in functie de cerintele problemei

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Folosirea circuitelor reconfigurabile
1. Productie mica/medie de IC
2. Prototipizare si emulare logica
3. Accelerare algoritmi de sortare, programare dinamica, cu aplicatii in
domenii cum ar fi: procesare semnale si imagini, criptografie,
bioinformatica, recunoastere forme etc.
i. Unitati functionale reconfigurabile folosind un procesor
(instructiuni specifice)
ii. Unitati reconfigurabile folosite ca si coprocesor
iii. Unitati reconfigurabile accesate prin I/O externe sau retele

[Compton’02]
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Calculul temporal vs. calculul spatial

Executia temporala Executia spatiala


(software) (reconfigurable computing)

Cheia de a acelera procesele de calcul este abilitatea de a


extrage paralelismul (concurenta) din algoritmi. Acest lucru se
poate realiza folosind sistemele reconfigurabile. Un astfel de
device este si FPGA-ul.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu de programare functie intr-un LUT (Look-up Table)

Informatia poate fi stocata in SRAM. 4-6input Look-Up Table (LUT) este o marime tipica
O celulă logică este o tabelă de căutare (LUT) care poate avea un număr diferit de intrări în
funcţie de tipul circuitului. Astfel, pentru Virtex 6 de la Xilinx, LUT are 6 intrări, Virtex 4 are 4
intrări. Mai multe LUT formează un CLB (Configurable Logic Block) – bloc logic configurabil.
Aceasta este o denumire care la un alt producător de circuite este diferită. CLB este denumirea
folosită de firma Xilinx. Altera foloseste penrtu circuitele sale (ex familia de circuite Stratix)
denumirea de module logice adaptive - adaptive logic modules (ALMs). Este de asemenea posibil
să se folosească mux-uri pentru a implementa logica.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
a
b 4-input
y
Logica programabila
c LUT
mux
d flip-flop
q
e
clock

Switch
box

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
În circuitele FPGA se folosesc
si alte unităţi, cum ar fi: RAM,
ALU, multiplicatoare,
sumatoare.
Unităţile logice sunt conectate
folosind o interconectare
reconfigurabilă.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Configurare FPGA

Programmable logic
element
[Maxfield’04]
• FPGA sunt alcatuite dintr-o arie de blocuri logice programabile
(programmable logic blocks) iar functionalitatea este determinata prin
bitii de configurare programabili
• Blocurile logice sunt conectate de un set de resurse de rutare
(routing resources) care sunt de asemenea programabile.
 Logica poate fi mapata in resursele reconfigurabile (reconfigurable
fabric)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fluxul de proiectare
Fluxul de proiectare SPLD

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fluxul de proiectare FPGA (similar pentru CPLD)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fisierul de
configurare

FPGA-urile pot fi dinamic reprogramate inainte de a rula logica


(runtime) sau in timpul rularii logicii (virtual hardware)
• full
• partial
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016 [Maxfield’04]
Implementarea unui design in FPGAs, implica descompunerea design-ului si
maparea in Blocul Logic (LB)

RTL Circuit Array

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

Selectare segmente de fire si


comutatoare (switch) pentru
interconexiuni.

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

• De ce sunt importante resursele de interconectare?


- Resursele de rutare ocupa o arie foarte mare.
– Intarzierile date de fire cresc in functie de lungime ->
se recomanda evitarea firelor de legatura lungi atunci
cand acestea nu sunt necesare
– Miniaturizarea tehnologica reduce marimea
circuitului, dar conduce la cresterea intarzierilor in
fire.

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

– are propriul stil in a defini blocul logic, arhitectura de


rutare si uneltele de dezvoltare (CAD) pentru mapare,
plasare si rutare

– circuitele actuale FPGA au in acest sens

- Structura blocului logic este bazata pe LUT


- arhitectura de rutare este de tip insula sau ierarhica

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Definitii rutare generala
track
channel

CLB CLB CLB CLB


segment

• Un segment de fir este un fir care nu este traversat de un


switch programabil
• O cale (track) – este o secventa de unul sau mai multe
segmente de fir intr-o linie. Segmentele pot fi conectate prin
intermediul comutatoarelor la capete.
• Un canal de rutare (routing channel) este un grup de cai
paralele. Latimea canalului width este data de numarul cailor
din canal.

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

– Fiecare logic element are la iesire un bit de date.


– Intre elemente exista interconexiuni programabile
– Caile de interconectare (tracks) sunt grupate in canale

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.

Ar fi simplu daca numai blocurile logice din aceeasi coloana sau


rand ar trebui sa comunice. Realitatea este insa alta!

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Switch care conecteaza fire bidirectionale segment-segment

track
channel

CLB CLB CLB CLB


segment

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

Marimea “switch box” creste ca o functie patratica a numarului de fire de intrare.

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

•Fire scurte pentru trafic local •Rutare intr-un “group” de


•Fire scurte care se pot conecta blocuri logice la un nivel local
folosind matricile de switch-uri •Fire lungi ierarhice care
realizand astfel fire lungi conecteaza diferite grupuri
•Contin si fire lungi pentru a
permite o comunicare eficienta
fara a mai trece prin switch-uri

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

CLB CLB CLB CLB CLB CLB

Segmented:
CLB CLB CLB CLB CLB CLB

CLB CLB CLB CLB CLB CLB


Hierarchical:
CLB CLB CLB CLB CLB CLB

CLB CLB CLB CLB CLB CLB


Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Un model FPGA -> (o abstractizare a modelului comercial si o
generalizare)
Modelul “Toronto” – utilizat in cercetare in ceea ce priveste
arhitectura blocurilor logice si arhitectura resurselor de rutare
Aria modelului este una simetrica (exista si versiuni pentru arii
ierarhice)
Blocul logic contine un LUT, un registru si un MUX

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

• Static – aplicatia nu ruleaza in momentul configurarii


• Partial static (=reconfigurare partiala) diferita parti ale aplicatiei sunt
executate in fragmente temporale pe acelasi suport configurat
•Dinamic – aplicatia se poate modifica ca raspuns la schimbarile
exterioare (in timpul executiei)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
• Circuitele reconfigurabile pot contine elemente care nu sunt reconfigurabile
si care sunt interfata cu blocurile logice folosind interconexiunile programabile
Example:
–Memorii incapsulate (Embedded memory)
–Inmultitoare, sumatoare, etc.
–Procesoare incapsulate

• Este constisitor a se implementa memorii


folosind blocuri logice configurabile → se
adauga blocuri RAM

• Pozitia si marimea variaza in functie de


device.

• Fiecare bloc poate fi folosit independent sau


combinat pentru a forma memorii RAM mai
mari

• Pot fi single sau dual-port RAMs

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Multiplicatoare si sumatoare incapsulate

•Multiplicatoarele sunt inerent mai


incete daca sunt implementate prin
conectarea unui numar mare de
blocuri logice programabile ->
solutia este de a adauga blocuri de
multiplicatoare in hard

•Tipic, acestea sunt localizate in


apropierea blocurilor de memorie
RAM incapsulata

•Unele FPGA folosesc blocuri


Multiply-And-Accumulate (MAC)
(utilizate in aplicatiile DSP)

MAC = multiply-accumulate = realizeaza produsul a doua numere si adauga produsul la un


acumulator.

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

Switch-ul implicit este Celulele SRAM


OFF; cand este Flash stocheaza
programat este ON. programabilitatea
Avantaje: device-ului
•Intarzieri neglijabile Switch implicit este Avantaje:
•Arie mica ON; cand este •Pot fi reconfigurate
Dezavantaje: programat este OFF. rapid, si de cate ori
•Nu sunt chiar Avantaje: este necesar
reconfigurabile, sunt •Programarea nu se •Nu necesita pasi de
programabile o pierde cand circuitul fabricatie suplimentari
singura data nu mai este alimentat Dezavantaje:
Dezavantaje: •Ocupa arie mai mare
•Necesita mai multi •Se pierde
pasi in procesul de programarea daca nu
fabricatie
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
mai sunt alimentate
Switch in tehnologie Antifuse
– Anti-fuzibilii - sunt “one-time programmable”(OTP)
programabili o singura data.
• Pulsul de tensiune elimina dielectricul
• Necesita programarea o singura data.
Metal 3

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

– Resurse de rutare mici (rapid)


– Securizare
– Toleranta buna la erorile de fabricatie
– Rezistenta aproximativ 100 

antifuse polysilicon ONO dielectric

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

•Elemente logice (LUTs si flip flops)


•Rutare segmentata

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

•Se pot programa de multe ori


•Fiecarui bit de programare i se asociaza aproximativ 5
tranzistori
•Arie mare de dispozitive alocate pentru programare -> reduce
viteza comparativ cu EPROM si antifuse.

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)

•Interesant, clusterele logice mai mici sunt mai eficiente (Betz –


CICC’99)
•Include si aria necesara pentru rutare
•Clusterele mici (ex. Un singur BLE per cluster) nu sunt
“prietenoase” pentru programele de tip CAD (Computer Aided
Design)
•Cele mai multe circuite comerciale au 4-8 BLE per cluster
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Numarul de intrari per Cluster

•Prin reducerea numarului de intrari, se reduce dimensiunea


circuitului si acesta devine si mai rapid
•Cele mai multe FPGA (Xilinx, Lucent) au 4 BLE per cluster cu
mai multe intrari decat ar avea nevoie in realitate

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

– Fc -> la cate cai de rutare se poate conecta un pin?


– Daca clusterul logic e mic FC este mare FC = W
– Daca clusterul logic este mare, Fc poate fi mic.

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

– Switch box – furnizeaza arii de interconectare optimizate


– Flexibilitatea nu este atat de importanta ca factorul FC
– Ex: 6 tranzistoare sunt necesare pentru FS= 3

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple de circuite

•Xilinx - familia XC4000EX


-FS = 3
-FC = 0.2
-I = 8
-Num BLE – about 2.5

•Altera – familia Flex10K


-FS = 3
-FC = 0.25
-I = 22
-Num BLE – about 28

° Altera nu foloseste segmentarea, toate liniile traverseaza parti


mari din circuite.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Switchbox 0 1 2

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

– FPGA mecesita buffere pentru a izola retelele RC


– Arhitectii trebuie sa decida unde vor plasa aceste bufere.

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

– Pentru 4-input LUTs - 16 bits de informatie disponibili


– Pot fi conectate (chain) prin retelele programabile

– Un aspect cheie il reprezinta flexibilitatea

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Xilinx XC4000 Series Devices

– Ideal pentru stocare de date de dimensiuni mici


– Nu se pierde spatiu

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Xilinx XC4000 Dual Port Mem

– Accesare date in mod concurent.


– Acces de tip granulatie fina (Fine-grained access)
– Acces sincron
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Memorii de tip granulatie mare (coarse-grained)

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

4096 bit SRAMs

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)

Altera 10K Xilinx 4000E


Size EABs trans CLBs trans
32x1 1 12288 1 2400
32x8 1 12288 8 19200
128x8 1 12288 32 76800
512x8 2 24576 128 307200
Pentru 512x8 fine-grained – de 10X mai mare dimensiunea
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu- studiu de caz: Altera Cyclone II

• Blocuri bi-dimensionale de Logic Array Blocks (LABs), cu 16 Logic Elements


(LEs) in fiecare LAB.
• Blocuri de memorie integrate (Embedded memory blocks) (M4K) si
multiplicatoare (18x18)
• PLL (Phased Locked Loops) – utilizate pentru a genera semnale de clock intr-o
gama de frecvente
• Ex: Circuitul EP2C35 din familia Cyclone: 60 coloane, 45 randuri si 33216 LEs.
105 M4K blocks si 35 multiplicatoare integrate.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Organizarea elementului logic (modul normal)

LE are 2 moduri de operare: normal si aritmetic


Modul normal – implementari pentru logica generala
• 4-input LUT
• 6 input connections
• 3 output connections
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Organizarea elementului logic (Logic element) in modul aritmetic

Modul aritmetic este potrivit pentru implementare: sumatoare,


numaratoare, acumulatoare, comparatoare
• LUT-ul este impartit in doua 3-input LUTs (ideal pentru implementarea
unui sumator de 2-bit)

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

•Multitrack – constau in randuri (directlink, R4, R24) si coloane (register


chain, C4, C16)
•Interconexiunile R4/C4 traverseaza 4 blocuri (stanga, dreapta / sus, jos)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Embedded RAMs si multiplicatoare

• ideal pentru aplicatii DSP


• 4608 RAM bits • 250 Mhz
•250 MHz • configurabil ca si 1 inmultitor
• port single sau dual pe 18 bit, sau ca 2 inmultitoare
• configurabil ca si FIFO independente de 9 biti fiecare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Elementul IO (Input/Output) si structrura (IOE)

• Element IO, structura (IOE) (permite


semnale bidirectionale)
• 5 IOE per rand I/O block
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
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Informatii privind preturile circuitelor reconfigurabile (FPGA) –
DIGI-KEY CORPORATION: http://www.digikey.com/
2 exemple:
-Spartan IIE (300 porti) aprox. 25$

- Virtex 4 aprox. 2000$ (contine o serie de unitati functionale performante


- DSP, microcontroller, interfete Ethernet etc..)

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.

modelul in HDL poate fi


refolosit pentru mai multe
proiecte

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.

Figura 1. HDL – capabilitati de


modelare in functie de nivelul de
abstractizare
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Compilarea
VHDL.
Multiple unitati de design (perechi entitate/arhitectura = entity/architecture), care se
afla in acelasi fisier sistem, pot fi compilate separate. Un design bine proiectat va avea
fiecare unitate in alt fisier.

Verilog.
Trebuie tinut cont de ordinea in care se face compilarea codului scris intr-un singur
fisier si compilarea mai multor fisiere. Rezultatele simularii se pot schimba prin simpla
schimbare a ordinii compilarii.

Tipuri de date
VHDL.
Se pot folosi mai multe tipuri de date definite in limbaj cat si definite de utilizator.
Exista functii dedicate care fac conversia dintr-un tip in alt tip de date. VHDL este
preferat, deoarece ofera o flexibilitate mai mare.

Verilog.
Comparat cu VHDL, tipurile de date din Verilog sunt mai simple, usor de folosit si
apropiate modelarii structurii hardware in opozitie cu modelarea hardware abstracta.
Nu sunt premise tipuri de date definite de utilizator. Exemplu de tipuri de date: net,
wire, reg (registru).
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Reutilizarea design-ului
VHDL. Procedurile si functiile pot fi plasate in pachet (package) astfel incat sa fie
disponibile pentru orice design.
Verilog. Nu exista un concept de pachet ca in VHDL. Functiile si procedurile utilizate
intr-un model trebuie definite in modul. Pentru a le face accesibile din diferite module,
se vor plasa in fisiere separate si incluse unde este nevoie prin folosirea directivei de
compilare “include”.
Usurinta de invatare
Verilog este probabil mai usor de invatat. VHDL poate parea mai putin intuitiv dar
dupa invatare este mai robust, mai puternic. Sunt mai multe posibilitati de a modela
acelasi circuit, mai ales pentru structuri mari, ierarhice.
Constructii de nivel inalt
VHDL. Sunt mai multe posibilitati in modelarea de nivel inalt in VHDL decat in
Verilog. Tipul de date abstract poate fi folosit cu urmatoarele declaratii:
* package – pentru reutilizarea modelului,
* configuration - configurare structura design,
* generate – pentru structuri repetitive,
* generic – model generic care poate fi caracterizat individual, de exemplu latimea unui
vector
Toate aceste declarati din limbaj sunt utile in sintetizarea unui model.
Verilog. In afara de parametrizarea unui model prin supraincarcarea parametrilor, nu
exista echivalent
Ioana Dogaru, pentru
Radu Dogaru, Curs modelare
Sisteme Reconfigurabile de nivel
de Calcul, inalt.din Bucuresti, 2016
Univ. Politehnica
Extensia de limbaj
VHDL. Are un atribut denumit 'foreign care permit arhitecturilor si subprogramelor sa
fie modelate in alte limbaje.
Verilog. Foloseste Programming Language Interface (PLI) – mecanism de interfata
intre modelul Verilog si uneltele de dezvoltare pentru Verilog. Un vanzator de unelte
pentru Verilog poate specifica functii in limbajul C si apelarea din descrierea surselor
in Verilog.
Utilizarea acestor functii speciale va face ca modelele sa fie nestandard si se poate sa
nu poata fi folosite de alte unelte Verilog. Utilizarea nu este recomandata.
Biblioteci
VHDL. O biblioteca este pentru a stoca entitati compilate, arhitecturi, pachete si
configuratii.
Sunt utile pentru proiecte cu multiple design-uri.
Verilog. Nu exista conceptul de biblioteca in Verilog. Aceasta se datoreaza faptului ca
la origini este un limbaj interpretativ.
Constructii de nivel “low level”
VHDL. Operatori logici simpli pentru 2 intrari care sunt construiti in limbaj: NOT,
AND, OR, NAND, NOR, XOR si XNOR. Orice specificare de timp trebuie facuta
dupa clauza after.
Verilog. Verilog a fost dezvoltat avand la baza modelarea la nivel de poarta.
Example: User Defined Primitive(UDP), tabele de adevar si blocuri pentru
specificarea
Ioana intarzierilor
Dogaru, Radu Dogaru, intr-undemodul.
Curs Sisteme Reconfigurabile Calcul, Univ. Politehnica din Bucuresti, 2016
Gestionarea proiectelor mari

VHDL. Declaratiile configuration, generate, generic si package sunt foloste pentru a


gestiona proiecte mari.
Verilog. Nu exista declaratii specifice care sa ajute gestionarea proiectelor mari.
Operatori
Majoritatea operatorilor sunt la fel in cele 2 limbaje. Verilog are operatori unari de
reducere, ceea ce in VHDL se rezolva prin bucle. VHDL are modul operator care nu
este si in Verilog.
Parametrizarea modelelor.
VHDL. Un model specific de o anumite latime de biti poate fi instantiat printr-un
model generic de n-bit, folosind o declaratie de tip generic. Modelul generic nu va fi
sintetizabil decat daca este instantiat si este data valoarea generica.
Verilog. O latime specifica de bit intr-un model poate fi instantiata de la un model
generic n-bit folosind suprascrierea parametrilor. Modelul generic trebuie sa aiba o
valoare implicita definita.
Proceduri si task-uri
VHDL permite apelarea procedurilor concurente. Verilog nu permite apelul concurent.
Usurinta intelegerii codului
VHDL este un limbaj concis cu radacini in limbajul Ada. Verilog este mai apropiat de
C deoarece constructia lui este 50% C si 50% Ada.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Replicarea structurala
VHDL. Declaratia generate statement – permite folosirea unui numar de instante ale
aceluiasi design si conectarea potrivita a acestora.
Verilog. Nu are un echivalent pentru generate.

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!!!

Este un limbaj de descriere hardware Hardware Description


Language (HDL)

Conceptual, este FOARTE diferit de limbaje de programare de uz


general, cum ar fi C sau C++

C/C++ - instructiunile se executa secvential (una dupa alta in


ordinea in care sunt introduse)
VHDL este inerent concurent (paralel), mai multe instructiuni se
executa simultan
Tutoriale:
http://www.seas.upenn.edu/~ese201/vhdl/vhdl_primer.html
http://www.vhdl-online.de/tutorial/
http://hapssupportnet.synplicity.com/download/VHDL-
Handbook.pdf
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL – Aria de utilizare
•Hardware design
•ASIC: technology mapping
•FPGA: CLB mapping
•Solutii standard, modele, descrieri comportamentale

•Software design
•VHDL - C interface (unelte specifice)
•cercetare (hardware/software co-design). Intrebarea care se pune este ce parte
trebuie implementate in software si ce parte in hardware. (constrangerile vor fi
date de performante, cerinte si pret)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Standarde pentru limbajul VHDL
VHDL este construit prin folosirea mai multor standarde IEEE:
• IEEE std 1076-1987 – primul standard VHDL. Este referit prin abrevierea VHDL’87.
• IEEE std 1076-1993 – al doilea standard VHDL. Este referit prin abrevierea
VHDL’93.
• IEEE std 1164-1993 - package STD_LOGIC_1164. Include tipuri referitoare la
hardware si functii de conversie.
• IEEE std 1076a - imbunatateste folosirea variabilelor partajate
• IEEE std 1076.1 VHDL-AMS, - standard extins pentru analogic.
• IEEE std 1076.2 – pachete matematice. Este divizat intr-un pachet pentru numere
reale si alt pachet pentru imaginare.
• IEEE std 1076.3 – operatori si tipuri descrisi pentru sinteza.
• IEEE std 1076.4 VITAL (VHDL Initiative Towards ASIC Libraries). – De exemplu
folosit pentru specificarea timpilor pentru simulare
• IEEE std 1076.5 – modelarea bibliotecilor in VHDL.
• IEEE std 1076.6 – defineste partea pentru sinteza RTL.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu comparativ – C si VHDL
VHDL
C
Initially: A,B,C,X,Y,Z,Ans =1

A=B+C A <= B + C
X=Y+Z X <= Y + Z
Ans = A + X Ans <= A + X

Current Values: Current Values:


A=1 A=1
B=1 B=1
C=1 C=1
X=1 X=1
Y=1 Y=1
Z=1 Z=1
Ans = 1 Ans = 1

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

Current Values: Current Values:


A=2 A=1
B=1 B=1
C=1 C=1
X=1 X=1
Y=1 Y=1
Z=1 Z=1
Ans = 1 Ans = 1

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

Current Values: Current Values:


A=2 A=1
B=1 B=1
C=1 C=1
X=2 X=1
Y=1 Y=1
Z=1 Z=1
Ans = 1 Ans = 1

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

Current Values: Current Values:


A=2 A=1
B=1 B=1
C=1 C=1
X=2 X=1
Y=1 Y=1
Z=1 Z=1
Ans = 4 Ans = 1

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

“Simulates in parallel ever delta time step”


Current Values: Current Values:
A=2 A=1
B=1 B=1
C=1 C=1
X=2 X=1
Y=1 Y=1
Z=1 Z=1
Ans = 4 Ans = 1

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

“Simulates in parallel ever delta time step”


Current Values: Current Values:
A=2 A=1
B=1 B=1
C=1 C=1
X=2 X=1
Y=1 Y=1
Z=1 Z=1
Ans = 4 Ans = 1

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

“Simulates in parallel ever delta time step”


Current Values: Current Values:
A=2 A=2
B=1 B=1
C=1 C=1
X=2 X=2
Y=1 Y=1
Z=1 Z=1
Ans = 4 Ans = 2

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

“Simulates in parallel ever delta time step”


Current Values: Current Values:
A=2 A=2
B=1 B=1
C=1 C=1
X=2 X=2
Y=1 Y=1
Z=1 Z=1
Different
Ans = 4 Ans = 2

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

“Simulates in parallel ever delta time step”


Current Values: Current Values:
A=2 A=2
B=1 B=1
C=1 C=1
X=2 X=2
Y=1 Y=1
Z=1 Z=1
Ans = 4 Ans = 2

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

“Simulates in parallel ever delta time step”


Current Values: Current Values:
A=2 A=2
B=1 B=1
C=1 C=1
X=2 X=2
Y=1 Y=1
Z=1 Z=1
Ans = 4 Ans = 2

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

“Simulates in parallel ever delta time step”


Current Values: Current Values:
A=2 A=2
B=1 B=1
C=1 C=1
X=2 X=2
Y=1 Y=1
Z=1 Z=1
Ans = 4 Ans = 4

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

A <= B + C after 2ns


X <= Y + Z after 2ns
Ans <= A + X after 2ns
“Simulates in parallel ever delta time step”

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

A <= B + C after 2ns


X <= Y + Z after 2ns
Ans <= A + X after 2ns
“Simulates in parallel ever delta time step”

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

Concurenta: Declaratiile sunt active continuu, ordinea nu este importanta.


Sunt potrivite pentru modele paralele.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Abstractizare – permite descrierea diferitelor parti din sistem. Informatia care este prea
in detaliu si nu este importanta pentru descriere va fi indepartata. Nivelul de
abstractizare este caracterizat de informatii comune pentru toate modelele de la acest
nivel. Nivelul de abstractizare in proiectarea IC

La nivelul comportamental se descrie functionarea modelului. Nu exista clock


pentru sistem, tranzitii ale semnalelor etc. Uzual, este simulabil, nu si sintetizabil.

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

o <= transport i1 + i2 * i3 after 100 ns;

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
RT Level in VHDL

In VHDL comportamentul functional este modelat folosind procesul (processes).

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

Fiecare elemnt al circuitului (ex. U86) este instantiat ca si componenta (ND2) si


este conectata la semnalele corespunzatoare (n192, n191, n188). Fiecare poarta
folosita apartine unei biblioteci unde se gasesc si informatii aditionale cum ar fi
aria, intarzierile de propagare, capacitate etc.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modularitatea si ierarhia

Modularitatea - Se partitioneaza blocuri functionale mari in unitati mici. Existenta


subsistemelor permite mai multor proiectanti sa lucreze in paralel la acelasi proiect.
Ierarhia – un design poate fi alcatuit din module care la randul lor contin sub-
module. Un nivel ierarhic poate contine unul sau mai multe module cu un grad
diferit de abstractizare.

Modularitatea si ierarhia permit organizarea unui proiect.

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.

Modulele continute trebuie definite la nivel de sistem (system level). Se descrie


interfata (intrari, iesiri, formatul datelor), marimea clock-ului, mecanismul de reset. Pe
baza acestei informatii se poate implementa si modelul de simulare. Modelul
comportamental poate fi integrat in sistem folosind modele deja existente.

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

Fiecare tranzitie la un nivel de abstractizare de nivel mai scazut va fi verificat prin


validari functionale (validation). Pentru acest scop, se simuleaza descrierea in asa fel
incat pentru toti stimulii (=semnale de intrare pentru simulare) se compara cu
raspunsurile modulului.

VHDL este potrivit pentru proiectare de la system level la gate level.


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
Numai un subset al limbajului VHDL este sintetizabil!

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

signal mySignal: bit; -- an example signal

MYsignal <= '0', -- start with '0'


'1' AFTER 10 ns, -- and toggle after
'0' after 10 ns, -- every 10 ns
'1' afTer 10 ns;

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

ENTITY test_circuit IS Define component name and


PORT(B,C,Y,Z,Ans); Input/output ports
END test_circuit;

Declare internal ARCHITECTURE structure OF test_circuit IS


signals, signal A : std_logic_vector(7 downto 0);
components signal X : std_logic_vector(7 downto 0);

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

Exemplu: un modul fulladder poate fi realizat din 2 module halfadders (module1,


module2) si o poarta OR (module3).
O arhitectura structurala va contine o lista de componente si definirea
interconexiunilor.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Declararea si instantierea unei componente

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

Toate procesele se executa paralel, fara sa conteze entitatea sau nivelul


ierarhic unde sunt localizate. Comunica intre ele prin intermediul semnalelor.
(signals)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Obiecte, tipuri de date si operatori
Obiectele (objects) – folosite pentru a reprezenta si stoca date.
Tipuri de baza (folosite la descrierea unui design pentru sinteza sau folosite pentru a
crea teste functionale – unde de test): signals, variables si constants (semnale,
variabile si constante). Fiecare obiect declarat are un tip de date specific - data type
(cum ar fi bit sau integer) cu un set unic de posibile valori. Exemplu: un obiect de tip
bit poate avea numai doua valori posibile, '0' si '1',

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)

Tipul Std_logic_vector type std_logic_vector is array ( natural range <>) of std_logic;


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
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
Exemplu: 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 antitate si arhitectura). Forma
generala include 3 campuri, separate prin
punct.

std_logic si std_logic_vector, sunt tipuri de


date standard din IEEE 1164 standard si in
biblioteca asociata IEEE

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.

Semnalul Load – indica cand datele de intrare sunt valide


Semnalul led Done – va fi activat in momentul ibn care datele de iesire sunt valide

Modelul Generic se va verifica pentru semnale de 8 biti..


3) Se vor face testari ale modelelor: 1) la nivel de algoritm se va folosi acelasi fisier 2). Se vor instantia
ambele modele RTL si la nivel de porta sintetizabila si se vor simula si testa in acelasi timp.

Fisierul de test:
file: gcd_test_data.txt file: gcd_test_data_hex.txt
21 49 7 15 31 7 // Decimal 21 49 7
25 30 5 19 1E 5 // Decimal 25 30 5
19 27 1 13 1B 1 // Decimal 19 27 1
40 40 40 28 28 28 // Decimal 40 40 40
250 190 10 FA 6E A // Decimal 250 190 10
5 250 5 5 FA 5 // Decimal 5 250 5

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Algoritmul folosit este dupa cum urmeaza:

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Algoritmul modelat in C
#include <stdio.h>
main ()
{
int A_in, B_in, A, B, Swap, Y, Y_Ref, Passed;
FILE *file_pointer;
file_pointer = fopen("gcd_test_data.txt", "r");
Passed = 1;
while (!feof(file_pointer))
{
/*------------------------------------*/
/* Read test data from file */
/*------------------------------------*/
fscanf (file_pointer, "%d %d %d\n", &A_in, &B_in, &Y_Ref);
/*----------------------------------*/
/* Model GCD algorithm */
/*----------------------------------*/
A = A_in;
B = B_in;
if (A != 0 && B != 0)
{
while (B != 0)
{
while (A >= B)
{
A = A - B;
}
Swap = A;
A = B;
B = Swap;
}
}
else
{
A = 0;
}
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Y = A;
/*------------------------------*/
/* Test GCD algorithm */
/*------------------------------*/
if (Y != Y_Ref)
{
printf ("Error. A=%d B=%d Y=%d Y_Ref= %d\n", A_in, B_in, Y, Y_Ref);
Passed = 0;
}
}
if (Passed = 1) printf ("GCD algorithm test passed ok\n");
}

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Algoritmul descris in VHDL
Modelul in VHDL urmareste principiul din C. Cand se citesc valorile intregi din fisierul de test,
acestea vor fi introduse intr-o variabila, nu vor putea fi citite si assignate unui semnal. Rezultatele
vor fi inscrise intr-un fisier. Deoarece este la nivel de algoritm, entitatea folosita nu va contine nici
intrari si nici iesiri.
VHDL algorithmic level model
library STD;
use STD.TEXTIO.all;
entity GCD_ALG is
end entity GCD_ALG;
architecture ALGORITHM of GCD_ALG is
--------------------------------------------
-- Declare test data file and results file
--------------------------------------------
file TestDataFile: text open
read_mode is "gcd_ test_data.txt";
file ResultsFile: text open write_mode is
"gcd_alg _test_results.txt";
begin
GCD: process
variable A_in, B_in, A, B, Swap, Y, Y_Ref: integer range 0 to 65535;
variable TestData: line;
variable BufLine: line;
variable Passed: bit := '1';
begin
while not endfile(TestDataFile) loop
-------------------------------------
-- Read test data from file
-------------------------------------
readline(TestDataFile, TestData);
read(TestData, A_in);
read(TestData, B_in);
read(TestData, Y_Ref);
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
------------------------------------
-- Model GCD algorithm
------------------------------------
A := A_in;
B := B_in;
if (A /= 0 and B /= 0) then
while (B /= 0) loop
while (A >= B) loop
A := A - B;
end loop;
Swap:= A;
A := B;
B := Swap;
end loop;
else
A := 0;
end if;
Y := A;
---------------------------------
-- Test GCD algorithm
---------------------------------
if (Y /= Y_Ref) then -- has failed
Passed := '0';
write(Bufline, st ring'("GCD Error: A="));
write(Bufline, A_in);
write(Bufline, string'(" B="));
write(Bufline, B_in);
write(Bufline, string'(" Y="));
write(Bufline, Y);
write(Bufline, string'(" Y_Ref="));
write(Bufline, Y_Ref);
writeline(ResultsFile, Bufline);
end if;
end loop;
if (Passed = '1') then -- has passed
write(Bufline, string' ("GCD algorithm test has passed"));
writeline(ResultsFile, Bufline);
end if;
end process;
end architecture ALGORITHM;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Algoritmul in Verilog
Modelul Verilog va urma de asemenea principiile descrise in C.
O diferenta majora este aceea ca Verilog nu poate citi valori zecimale dintr-un fisier. Datele citite dintr-un
fisier sunt:
1) citire folosind $readmemh sau $readmemb si
2) stocarea in memorie. Datele de citire vor fi in format binary sau in hex. Se va folosi fisierul
"gcd_test_data_hex.txt"
Verilog algorithmic level model
module GCD_ALG;
parameter Width = 8;
reg [Width-1:0] A_in, B_in, A, B, Y, Y_Ref;
reg [Width-1:0] A_reg,B_reg,Swap;
parameter GCD_tests = 6;
integer N, M;
reg Passed, FailTime;
integer SimResults;
// Declare memory array for test data
// ----------------------------------
reg [Width-1:1] AB_Y_Ref_Arr[1:GCD_tests*3];
//----------------------------------
// Model GCD algorithm
//----------------------------------
always @(A or B)
begin: GCD
A = A_in;
B = B_in;
if (A != 0 && B != 0)
while (B != 0)
while (A >= B) begin
A = A - B;
Swap = A;
A = B;
B = Swap;
end
else
A = 0;
Y = A;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
end
//------------------------------
// Test GCD algorithm
//-----------------------------
initial begin
// Load contents of
// "gcd_test_data.txt" into array.
$readmemh("gcd_test_data_hex.txt", AB_Y_Ref_Arr);
// Open simulation results file
SimResults = $fopen("gcd.simres");
Passed = 1;
/ Set to 0 if fails
for (N=1; N<=GCD_tests; N=N+1) begin
A_in = AB_Y_Ref_Arr[(N*3)+1];
B_in = AB_Y_Ref_Arr[(N*3)+2];
Y_Ref=AB_Y_Ref_Arr[(N*3)+3];
#TestPeriod
if (Y != Y_Ref) begin // has failed
Passed = 0;
$fdisplay (SimResults, " GCD Error:
A=%d B=%d Y=%d. Y should be %d", A_in, B_in, Y, Y_Ref);
end
end
if (Passed == 1) // has passed
$fdisplay (SimResults, "GCD algorithm test has passed");
$fclose (SimResults);
$finish;
end
endmodule

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Proiectarea modelului la nivel RTL in VHDL si Verilog

Modelul va avea intrari si iesiri.


Intrari: Clock, Reset_N si Load,
Iesirea:Done.
Cand Load este la nivel logic 1, datele de intrare sunt disponibile la iesire si se incarca in registri separati
A_hold si B_ hold.

Cand Done=1, semnifica ca s-a calculat cel mai mare divizor comun.
Procesul va dura cativa cicli de ceas.

Modelul se imparte in 3 procese process (VHDL) si /always (Verilog)

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.

Al doilea if – verifica daca B_hold are valoarea 0.


Daca da, semnalul Done=1, valoarea A_ hold este incarcata la iesirea Y prin intermediul unei functii de
multiplexare.

Problema este sintetizabila pentru un model generic cu semnale de 8 biti.


In Verilog se seteaza parametrul Width=8. Nu mai nevoie de a fi instantiat separate inainte de a fi sintetizat.
In VHDL – se foloseste generic. Valoarea este specificata numai in momentul instantierii

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL RTL model
library IEEE;
use IEEE.STD_Logic_1164.all, IEEE.Numeric_STD.all;
entity GCD is
generic (Width: natural);
port (Clock,Reset,Load: in std_logic;
A,B: in unsigned(Width-1 downto 0);
Done: out std_logic;
Y: out unsigned(Width-1 downto 0));
end entity GCD;
architecture RTL of GCD is
signal A_New,A_Hold,B_Hold: unsigned(Width-1 downto 0);
signal A_lessthan_B: std_logic;
begin
----------------------------------------------------
-- Load 2 input registers and ensure B_Hold < A_Hold
---------------------------------------------------

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
LOAD_SWAP: process (Clock)
begin
if rising_edge(Clock) then
if (Reset = '0') then
A_Hold <= (others => '0');
B_Hold <= (others => '0');
elsif (Load = '1') then
A_Hold <= A;
B_Hold <= B;
else if (A_lessthan_B = '1') then
A_Hold <= B_Hold;
B_Hold <= A_New;
else A_Hold <= A _New;
end if;
end if;
end process LOAD_SWAP;

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SUBTRACT_TEST: process (A_Hold, B_Hold)
begin
-------------------------------------------------------
-- Subtract B_Hold from A_Hold if A_Hold >= B_Hold
------------------------------------------------------
if (A_Hold >= B_Hold) then
A_lessthan_B <= '0';
A_New <= A_Hold - B_Hold;
else
A_lessthan_B <= '1';
A_New <= A_Hold;
end if;
-------------------------------------------------
-- Greatest common divisor found if B_Hold = 0
-------------------------------------------------
if (B_Hold = (others => '0')) then
Done <= '1';
Y <= A_Hold;
else
Done <= '0';
Y <= (others => '0');
end if;
end process SUBTRACT_TEST;
end architecture RTL;

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Verilog RTL model always @(A_Hold or B_Hold)
module GCD (Clock, Reset, Load, A, B, Done, begin: SUBTRACT_TEST
Y); //--------------------------
parameter Width = 8; ------------------------
input Clock, Reset, Load; // Subtract B_Hold from
input [Width-1:0] A, B; A_Hold if A_Hold >= B_Hold
output Done; //--------------------------
output [Width-1:0] Y; ------------------------
reg A_lessthan_B, Done; if (A_Hold >= B_Hold) begin
reg [Width-1:0] A_New, A_Hold, B_Hold, Y; A_lessthan_ B = 0;
//-------------------------------------------- A_New = A_Hold - B_Hold;
--------- end
// Load 2 input registers and ensure B_Hold < else begin
A_Hold A_lessthan_B = 1;
//-------------------------------------------- A_New = A_Hold;
--------- end
always @(posedge Clock) //--------------------------
begin: LOAD_SWAP --------------------
if (Reset) begin // Greatest common divisor
A_Hold = 0; found if B_Hold = 0
B_Hold = 0; //--------------------------
end --------------------
else if (Load) begin if (B_Hold == 0) begin
A_Hold = A; Done = 1;
B_Hold = B; Y = A_Hold;
end end
else if (A_lessthan_B) begin else begin
A_Hold = B_Hold; Done = 0;
B_Hold = A_New; Y = 0;
end end
else end
A_Hold = A_New; endmodule
end

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Referinte bibliografice:
[1] Douglas J. Smith - VHDL & Verilog Compared & Contrasted - Plus Modeled Example Written in
VHDL, Verilog and C
[2] - http://www.vhdl-online.de/tutorial/englisch/t_13.htm
[3] - Accolade VHDL Reference Guide - http://www.acc-eda.com/vhdlref/
[4] Prof. Sherief Reda Division of Engineering, Brown University Spring - Reconfigurable
Computing
[5] - Dr. Gilles SASSATELLI- Lecture on Reconfigurable Technologies

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

S-ar putea să vă placă și