0% au considerat acest document util (0 voturi)
28 vizualizări431 pagini

SRC

Documentul prezintă noțiuni introductive privind sistemele reconfigurabile de calcul. Sunt prezentate tipuri de circuite reconfigurabile precum FPGA și CPLD, limbaje de descriere hardware și fluxul de proiectare pentru circuite reconfigurabile. De asemenea, sunt trecute în revistă avantajele sistemelor reconfigurabile față de alte tipuri de sisteme de calcul.

Încărcat de

Edward Ptr
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
28 vizualizări431 pagini

SRC

Documentul prezintă noțiuni introductive privind sistemele reconfigurabile de calcul. Sunt prezentate tipuri de circuite reconfigurabile precum FPGA și CPLD, limbaje de descriere hardware și fluxul de proiectare pentru circuite reconfigurabile. De asemenea, sunt trecute în revistă avantajele sistemelor reconfigurabile față de alte tipuri de sisteme de calcul.

Încărcat de

Edward Ptr
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

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 dect 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 cretere de pe piaa 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 aplicaiei) este un microcip


proiectat pentru o aplicaie 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 aplicaii, inclusiv de
control al emisiilor auto, monitorizarea mediului, i asisteni
personali digitali (PDA-uri).

ASSP (application-specific standard product)


Este un dispozitiv semiconductor cu circuite integrate (IC), pentru o
aplicaie specific i vndut la mai mult de un utilizator (i, prin urmare,
"standard"). Ca un ASIC (circuit integrat de aplicatii specifice), ASSP
este pentru o aplicaie special, dar acesta este vndut ctre orice numr
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,,.
[Link]/ - Xilinx
[Link]/ - Altera
[Link]/ - Lattice
[Link]/ - Actel
[Link]/ - 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 - [Link]
Acromags 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 Acromags Artix-7 FPGA modules, you can greatly increase
DSP algorithm performance for faster throughput using multiple
channels and parallel hardware architectures. Free up CPU cycles
by offloading algorithmic-intensive tasks to the FPGA co-processor.

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.

Acromags 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 Acromags 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 cant 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
[Link]
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
[Link]
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
[Link]
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 [Link]

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

RadTolerant
FPGAs
Embedded
Processors
Intellectual
Property

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Firma Atmel [Link]

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

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

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
(Transistortransistor logic) atat functiile date de portile logice
(ex, AND) cat si functiile de amplificare sunt realizate de catre
tranzistoare exemplu: seria 74LSxx, ~1960-...
2. SPLD (simple programmable logic devices) ~1970-...
circuite cu 2 nivele de logica (SPLD)
3. MPGA (mask-programmable gate arrays) ~1970-...
folosite pentru realizarea circuitelor integrate pentru aplicatii
specifice (application-specific integrated circuits ASIC)
4. large programmable logic devices ~1980-...
- mai multe SPLD intr-un singur circuit (CPLD)
- arii de porti logice programabile + interconexiuni =(FPGA)
5. noi clase de circuite integrate
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
CIRCUITE INTEGRATE
Circuite integrate pe scara mic i medie (Small scale and medium scale
integration)
-pn la 200 de pori per circuit
-cele mai folosite: circuitele 74xx + pori, flip flop, latch-uri, decodoare,
numrtoare, registri etc.
Circuite integrate pe scara mare (Large scale integration)
- de la 200 la 200 000 numr de pori per circuit
- memorii de capacitate mic, circuite programabile
Circuite integrate pe scar foarte mare (Very large scale integration)
- peste 200 000 pori per circuit
- numrul portilor este nlocuit adesea de numrul tranzistoarelor,
deoarece aceste circuite au memorii integrate, etc.
Proiectarea sistemelor folosind circuitele integrate pe scar mic sau
medie are ca avantaj nelegerea uoar a functionalitii circuitului dar ca
dezavantaj major ar fi faptul ca nu se pot folosi pentru proiecte elaborate fr
a crete mrimea plcii obtinute, a puterii consumate i a costului.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Notiuni Circuite Digitale
Un site foarte bun pentru reluarea notiunilor de circuite:
[Link]

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

Blocuri I/O

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 funcie logic este manual proiectat i optimizat. Se pot obine
circuite compacte, viteze mari de lucru, consum de putere mic. Este o
tehnic care se folosete rar, deoarece duce la costuri mari de proiectare
i productivitate mic.
Proiectare folosind celule standard (Standard Cell Design) folosete
blocuri logice predefinite (ca la circuitele de tip 74xx) care sunt puse la
dispoziia 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 pori (Gate Array Design). Proiectarea
Full Custom si Standard Cell presupune realizarea mtilor particulare
pentru producerea circuitelor, ceea ce este o metod scump. Pentru
circuitele care folosesc arii de pori, mtile sunt identice ceea ce conduce
la un pre mai mic.
Proiectarea care folosete 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 folosete circuite programabile

ROM este un circuit logic de tip SOP (sum-of-products) cu o arie fix de pori
AND i o arie programabil de pori OR. Se pot implementa M funcii (outputs)
pentru N intrri (inputs). Programarea ROM-ului const n specificarea tabelei
de adevr a funciilor.

PLA - Programmable Logic Array - este un circuit logic de tip SOP (sum-of-
products) cu o arie programabil de pori AND i o arie programabil de pori
OR. Se pot implementa funcii folosind mintermenii disponibili care se pot utiliza
de ctre mai multe funcii.

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

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 pori AND i o arie fix de pori OR.
Se pot implementa funcii folosind mintermenii disponibili pentru fiecare
funcie de ieire. (PAL este marc nregistrata Advanced Micro Devices )

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

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

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 numr de blocuri logice programabile (PLA,


PAL i mai puin 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
Aplicaii 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 pori AND i OR dar nu au nevoie
de un numr 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) fr a
intrerupe alimentarea

Design-ul se partiioneaz n blocurile SPLD care compun


CPLD-ul, fcnd n acest mod s se obtin un rezultat
predictibil n ceea ce privete performanele 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 legtur sau a firelor de legtur ntre
ele.
blocul logic - Logic Block un circuit de baz care este
multiplicat n aria programabil. Cnd un circuit este
implentat ntr-o arie programabil, este mai nti descompus
n circuite mai mici care sunt mapate n blocul logic.

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

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Circuitele de tip FPGA sunt o variant mbunti a tehnologiei care
foloseste arii de pori i ofer un cost redus pentru prototipizare.
Tipuri de circuite:
Nevolatile, programabile o singur dat (anti-fuse anti fuzibil)
Nevolatile, reprogramabile (flash)
Volatile (SRAM)
Un astfel de circuit este ns mai mult dect o arie de pori. Acesta
conine celule de intrare i ieire I/O Cells, celule logice, memorii,
microprocesoare, circuite pentru gestionarea clock-ului, transceiver
de vitez mare, resurse de rutare programabil, cea din urm fiind i
principala mbuntire fa de ariile de pori standard.
Un FPGA este de fapt un circuit de logic programabil si care are o
mulime de fire de legtur programabile

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

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 msoar n numr de pori
echivalente cu implementarea tradiional, sau numrul de pori NAND
cu 2 intrri.
2. Densitatea logic - Logic Density - cantitatea de logic pe unitate
de arie.
3. Performana de vitez Speed-Performance - parametru care
msoar viteza maxim la care poate opera un circuit implementat in
aria programabil.
Spre exemplificare, pentru circuitele combinaionale (circuite pentru
care ieirea este dependent numai de intrrile curente, ieirea fiind
dat de combinarea intrrilor - comparatoare, decodoare, multiplexoare,
demultiplexoare etc) performana este dat de cea mai mare ntrziere
de-a lungul oricrei ci. Pentru circuitele secveniale (circuite logice
pentru care ieirile la un moment de timp specificat sunt funcie de
intrrile de la momentul respectiv, si de asemenea de un numr finit de
intrri precedente) performana este dat de frecvena maxim de ceas
pentru care circuitul implementat functionez corect
4. Resurse interne disponibile
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Xilinx Spartan-3E - familie de circuite
Familia de circuite de tip Spartan este de cost redus, si volum mare.

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 (imbuntit cu flash nevolatil)
Spartan-3ADSP (imbuntit pentru procesare de semnale)

compatibilitate a pinilor pentru familia de circuite.


memorii on-chip si uniti de gestionare a clock-ului
pn la 1 600 000 pori 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 poziionate ntre dou fire de


legatur. n momentul n care sunt programate devin circuite cu
rezisten mic, permind 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 FALL07
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

[Compton02]
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 cutare (LUT) care poate avea un numr diferit de intrri n
funcie de tipul circuitului. Astfel, pentru Virtex 6 de la Xilinx, LUT are 6 intrri, Virtex 4 are 4
intrri. Mai multe LUT formeaz un CLB (Configurable Logic Block) bloc logic configurabil.
Aceasta este o denumire care la un alt productor de circuite este diferit. CLB este denumirea
folosit de firma Xilinx. Altera foloseste penrtu circuitele sale (ex familia de circuite Stratix)
denumirea de module logice adaptive - adaptive logic modules (ALMs). Este de asemenea posibil
s se foloseasc mux-uri pentru a implementa logica.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
a
b 4-input
y
Logica programabila
c LUT
mux
d flip-flop
q
e
clock

Switch
box

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

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

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

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

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

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 [Maxfield04]
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


CICC99)
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: [Link]
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, [Link] Bucuresti, 2016
Univ. Politehnica
Extensia de limbaj
VHDL. Are un atribut denumit 'foreign care permit arhitecturilor si subprogramelor sa
fie modelate in alte limbaje.
Verilog. Foloseste Programming Language Interface (PLI) mecanism de interfata
intre modelul Verilog si uneltele de dezvoltare pentru Verilog. Un vanzator de unelte
pentru Verilog poate specifica functii in limbajul C si apelarea din descrierea surselor
in Verilog.
Utilizarea acestor functii speciale va face ca modelele sa fie nestandard si se poate sa
nu poata fi folosite de alte unelte Verilog. Utilizarea nu este recomandata.
Biblioteci
VHDL. O biblioteca este pentru a stoca entitati compilate, arhitecturi, pachete si
configuratii.
Sunt utile pentru proiecte cu multiple design-uri.
Verilog. Nu exista conceptul de biblioteca in Verilog. Aceasta se datoreaza faptului ca
la origini este un limbaj interpretativ.
Constructii de nivel low level
VHDL. Operatori logici simpli pentru 2 intrari care sunt construiti in limbaj: NOT,
AND, OR, NAND, NOR, XOR si XNOR. Orice specificare de timp trebuie facuta
dupa clauza after.
Verilog. Verilog a fost dezvoltat avand la baza modelarea la nivel de poarta.
Example: User Defined Primitive(UDP), tabele de adevar si blocuri pentru
specificarea
Ioana intarzierilor
Dogaru, Radu Dogaru, intr-undemodul.
Curs Sisteme Reconfigurabile Calcul, Univ. Politehnica din Bucuresti, 2016
Gestionarea proiectelor mari

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:
[Link]
[Link]
[Link]
[Link]
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 VHDL87.
IEEE std 1076-1993 al doilea standard VHDL. Este referit prin abrevierea
VHDL93.
IEEE std 1164-1993 - package STD_LOGIC_1164. Include tipuri referitoare la
hardware si functii de conversie.
IEEE std 1076a - imbunatateste folosirea variabilelor partajate
IEEE std 1076.1 VHDL-AMS, - standard extins pentru analogic.
IEEE std 1076.2 pachete matematice. Este divizat intr-un pachet pentru numere
reale si alt pachet pentru imaginare.
IEEE std 1076.3 operatori si tipuri descrisi pentru sinteza.
IEEE std 1076.4 VITAL (VHDL Initiative Towards ASIC Libraries). De exemplu
folosit pentru specificarea timpilor pentru simulare
IEEE std 1076.5 modelarea bibliotecilor in VHDL.
IEEE std 1076.6 defineste partea pentru sinteza RTL.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu comparativ C si VHDL
VHDL
C
Initially: A,B,C,X,Y,Z,Ans =1

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

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

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

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] - [Link]
[3] - Accolade VHDL Reference Guide - [Link]
[4] Prof. Sherief Reda Division of Engineering, Brown University Spring - Reconfigurable
Computing
[5] - Dr. Gilles SASSATELLI- Lecture on Reconfigurable Technologies

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

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

VHDL este utilizat in mod frecvent pentru simularea design-ului


electronic si sinteza acestora.
Sinteza este procesul in care sursa VHDL este compilata si mapata in
tehnologii de genul FPGA sau ASIC.
Producatorii de FPGA ofera unelte de sinteza gratuit sau ieftine.
Uneltele pentru programare ASIC sunt in general foarte scumpe.

Nu toate constructiile VHDL sunt sintetizabile (desi sunt simulabile).


De exemplu: constructii care au explicit timpi, wait for 10 ns

subset al VHDL synthesizable = IEEE 1076.6

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Pachete gratuite pentru design si simulare care folosesc ambele
limbaje: VHDL/Verilog:

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Considerente privind procesul de proiectare (unelte software)
pentru Sisteme Reconfigurabile

Design Entry Realizarea design-ului


Se pot folosi mai multe tehnici pentru a introduce un design: prin realizarea
schemei, sau prin descriere a hardware-ului folosind un limbaj dedicat (HDL-
Hardware Description Language) sau prin combinarea celor doua metode.
O alta metoda, mai putin folosita si limitata de uneltele de dezvoltare, este prin
realizarea de masini de stari (state machine)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Synthesis Sinteza = Este procesul prin
care se translateaza codul VHDL sau
Verilog intr-un format netlist. In
procesul de sinteza se verifica si sintaxa
codului si se analizeaza ierarhia in
design. Netlist-ul este salvat intr-un
fisier NGC( Native Generic Circuit)
(pentru Xilinx Synthesis Technology
(XST)).

Implementarea
Este un process care consta dintr-o secventa de 3 pasi:
1. Translate - translatarea
2. Map - maparea
3. Place and Route plasarea si rutarea

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
1. Translate este un process care combina toate intrarile din netlist
si constrangerile intr-un fisier care va contine logica design-ului.
Informatia este salvata ca un fisier NGD (Native Generic Database)
se foloseste programul NGD Build.
Constrangerile reprezinta alocarea porturilor din design la elemente
fizice (pini, butoane, switch-uri etc). Informatia este stocata intr-un
fisier UCF (User Constraints File).
Uneltele folosite pentru a crea sau modifica UCF - PACE, Constraint
Editor (editor de constrangeri)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
2) Maparea este un process care divide intreg circuitul cu
elemente logice in sub-blocuri astfel incat sa se potriveasca cu
blocurile logice din FPGA. In acest process se potrivesc
elementele logice definite de fisierul NGD cu elementele FPGA
(Combinational Logic Blocks (CLB), Input Output Blocks (IOB))
si se genereaza fisierul NCD (Native Circuit Description) care
reprezinta fizic maparea design-ului in componentele FPGA. Se
foloseste in acest scop programul MAP.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
3) Place and Route Se foloseste in acest scop programul
PAR. Procesul plaseaza sub-blocurile rezultate in procesul de
mapare in blocurile logice in mod corespunzator cu conectica
blocurilor logice si in functie de constrangeri.
Unealta PAR preia fisierul NCD (maparea) si il foloseste ca
intrare si produce a rutare completa. Iesirea fisierului NCD
constituie informatia de rutare.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Device Programming Programarea circuitului
Design-ul trebuie incarcat in FPGA si pentru aceasta trebuie convertit intr-un format
astfel incat sa fie acceptat de catre circuit. Programul BITGEN realizeaza
[Link] rutarii NCD este furnizat programului BITGEN care va genera un
stream (flux) de biti (un fisier cu extensia .BIT) care va fi folosit la configurarea
circuitului FPGA. Acest lucru se va realiza folosind un cablu (care va depinde de
tehnica folosita).

Verificare design-ului - Design Verification


Verificarea se poate face in diferite etape

Behavioral Simulation (RTL Simulation)


Este primul pas in simulare este realizata inainte de a face procesul de sinteza. Are
ca scop verificarea RTL (comportarea) codului si de a confirma ca design-ul se
comporta conform asteptarilor.
Simulare Behavioral se poate realiza pt design in VHDL sau Verilog. In acest process
se observa semnalele, variabilele, procedurile, functiile si se pot introduce
breakpoints. Este o simulare rapida si permite modificarea codului HDL daca este
cazul. Deoarece design-ul nu este inca sintetizat la nivel de porti, nu se cunosc timpii
si resursele utilizate.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Functional simulation (Post Translate Simulation)

Simularea functionala da informatii despre operarea logica a


circuitului. Se poate verifica functionalitatea folosind acest process
dupa procesul de translatare. Daca functinalitatea nu este cea
asteptata, se modifica codul si se parcurg din nou pasii de
implementare.

Static Timing Analysis

Se face dupa procesele MAP sau PAR.


Raportul Post MAP timing listeaza intarzierile pentru caile de
semnal.

Raportul Post Place and Route timing informatii privind intarzierile


in intreg designul.
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
Odat faza de rutare si plasare terminat un alt program va extrage
starea elementelor de comutaie din matricele de rutare i va
genera o descriere sub forma unui ir de bii (bitstream). ntr-o
descriere simplificatoare biii n 0 corespund unui comutator
deschis, iar cei in 1 unui comutator nchis (n realitate lucrurile
sunt mai complicate!). Fisierul de tip Bitstream generat poate fi
uneori transformat si intr-un fiier de tip JEDEC, fiier coninnd
i alte informaii, fiier a crui form i coninut sunt standardizate.
Fiierul Bitstream poate fi acum ncrcat (download) n circuitul
fizic (conectat n circuit i alimentat!) cu ajutorul unui program
dedicat i al unui dispozitiv de programare extern (JTAG
programmer). Dispozitivul de programare se conecteaz cu
circuitul reconfigurabil prin intermediul interfeei JTAG standard
i utilizeaz unul din porturile externe ale calculatorului gazd
(paralel, serial sau USB). Dup realizarea ncrcrii programrii,
circuitul reconfigurabil se va comporta conform descrierii din
sursa HDL.
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
ETAPE IN PROCESUL DE PROIECTARE
EXEMPLU UTILIZARE ISE PROJECT NAVIGATOR XILINX
Fisiere intrare (HDL, Schematic, ambele)

Sinteza

Implementare

Programare dispozitiv (generare .bit sau alta metoda spec.)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modul Schematic DESIGN ENTRY (1)

Se apeleaza
pentru a asocia
simboluri unor
module VHDL
Module VHDL
Aceste
simboluri pot fi
apoi inserate in
modulul
schematic

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
DESIGN ENTRY (2) Fisiere intrare (HDL, Schematic, ambele)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
DESIGN ENTRY (3)
Fisiere intrare (HDL, Schematic, ambele)

Aici HDL
Este VHDL

Reguli specifice

Avantajos pentru
proiecte de
complexitate
mare permite
rapiditate in
dezvoltare
Nu este neaparat mai eficient decat descrierea schematica
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
SINTEZA (1)

Aici s-a sintetizat doar


Modulul [Link]

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

Pentru a sintetiza toate modulele implicate se activeaza modulul


top (din varful) din ierarhia de module in acel exemplu modulul .sch

Fisier NGC
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
IMPLEMENTARE ( 1- Translate)

Se iau in considerare constrangerile (UCF) => fisier NGD

IMPLEMENTARE ( 2 - Map)
Se identifica si se aloca CLB, IOB, etc. din FPGA conform net-list
generat anterior

Se poate utiliza Modelsim pentru


analiza statica a propagarilor

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
IMPLEMENTARE ( 3 Place and Route)

Permite vizualizarea alocarii


pe FPGA aintregului proiect

Permite analiza puterii consumate


Alte utilitare, aici se poate face o simulare care include si
timpii specifici de propagare (post-Place and Route) cea
mai exacta, care precede simularea functionala (pe chip)
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
Generate Programming File

iMPACT software pentru configurare care permite


configurarea circuitelor reconfigurabile folosind 2 procedee:
Xilinx Slave Serial (Single Bit Serial) - Two-line
implementation with performance up to 66 Mbits.
JTAG (IEEE 1149.1) = (Boundary Scan mode) foloseste o
interfata cu 4 fire, folosita pentru testare si diagnosticare

iMPACT foloseste mai multe tipuri de cabluri:


Parallel Cable IV
Platform Cable USB II

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

Xilinx Parallel Cable IV cablul se conecteaza pe portul paralel al


PC-ului si la sistemul care se configureaza prin intermediul portului
JTAG. Se poate programa circuitul, se asigura suport pentru debug, si
control al executie.
Hardware debugger (on-chip debugger) = ChipScope tool.

Joint Test Action Group (JTAG) - IEEE 1149.1 Standard Test


Access Port and Boundary-Scan Architecture
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Interfata JTAG o interfata speciala cu 4/5 pini adaugati unui chip.
Mai multe circuite pe o placa pot avea linii JTAG conectate impreuna
(daisy-chained).
Pinii portului JTAG sunt:
[Link] (Test Data In)
[Link] (Test Data Out)
[Link] (Test Clock)
[Link] (Test Mode Select)
[Link] (Test Reset) optional.

Test Access Ports (TAPs)


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

Platform Cable USB II - cablu compatibil cu portul USB folosit la


configurarea si programarea in-circuit pentru toate circuitele Xilinx
(PROM, FPGA, CPLD).
Este folosit si la debug pentru embedded software si firmware
(program microcontroler) foloseste aplicatii de la Xilinx, cum ar fi
Embedded Development Kit si ChipScope Pro Analyzer.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Alocarea resurselor in diferite arhitecturi FPGA

Prin utilizarea aceluiasi cod .vhd pentru circuite din familii


diferite (Xilinx Project Navigator ISE6 10

Inmultitor de 4x4 biti -> rezultat pe 8 biti

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
CPLD
144 macro-cells

Concl: se poate implementa


Si pe CPLD-ul cel mai ieftin
Cu 36 macrocell

Fit este echivalentul Place and Route la FPGA


Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Fitter report ->

Din 2 FB-uri (Functional


Blocks)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Dublu click pe un anume MC (macro cell) - CPLD

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Double click -> schema de detaliu

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ECS
Element de biblioteca
(nu mai este detaliata schema
la nivel de porti)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Este direct alocat un inmultior disponibil in arhitectura Spartan 3

De comparat cu CPLD

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Se mentine functia
de biblioteca

De comparat cu Spartan 3
(! Mai putine porti !!)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Detaliu alocarea resurselor pe FPGA

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Pentru aceasta familie de circuite se poate face si o analiza a
puterii consumate

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Cele din fam. Virtex sunt
mai scumpe

Situatie similara cu cea de la Spartan 3 de ce ?


S-a alocat un inmultitor de 18x18 biti

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Alocarea pe chip (aplicatia Floorplanner)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Efectul acestei alocari nerationale:
- un circuit scump, ineficient folosit
- putere consumata 411 mW !! (fata de 24 in cazul Spartan 2)

Morala: Nu intotdeauna FPGA/CPLD cu arhitecturi complexe sunt


cele mai adecvate unei aplicatii. Este necesar un astfel de studiu
inainte de a alege o anumita arhitectura.
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
1) High impedance = hi-Z, tri-stated, floating starea unei iesiri care
nu este comandata de catre circuit. Semnalul nu este nici high nici
low este in stare "tristated = "floating" wire
In circuitele digitale, un fir cu high impedance are o tensiune in
jurul valorii de 0 sau chiar mai mica. Pentru a verifica ca un fir este
in stare hi-Z, se foloseste un rezistor pull-up cu rol de a conecta firul
la high sau low. Un semnal non-hi-Z nu va putea fi conectat la high
sau low in acest fel.

2) Referitor la limbajele HDL amanunte se gasesec la:


[Link]
Tutoriale Verilog - [Link]
[Link]/verilog/[Link]
Exemplu: Detalii despre operatorii de egalitate
([Link]

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Operatori standard:
Valorile, semnalele si variabilele unui tip pot fi combinate in expresii prin folosirea
operatorilor

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Instructiuni conditionale (de control ) descriu functii
combinationale, indica prioritati in operatii, sau specifica alte
comportamente de high-level
If-Then-Else

if first_condition then if outer_condition then


statements statements
elsif second_condition then else
statements if inner_condition then
else statements
statements end if;
end if; end if;
Se pot folosi mai multe niveluri
de declaratii if-then-else

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Conditia specificata intr-o constructie de tipul if-then-else
trebuie sa evalueze un tip Boolean.

procedure Mux(signal A, B, S: in std_logic;


signal O: out std_logic) is
if S = '1' then CORECT!
begin
O <= B;
if S then -- Error: S is not Boolean!
else
O <= B;
O <= A;
else
end if;
O <= A;
end Mux;
end if;
end Mux;

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Case Statements
Poate fi folosita ca o constructie alternativa la if then- else

case control_expression is
when test_expression1 =>
statements
when test_expression2 =>
statements
when others =>
statements
end case;
Expresiile de test trebuie sa fie mutual exclusive, nu pot fi adevarate in acelasi
timp 2 expresii de test. Diferenta fata de if then-else consta in faptul ca cea
din urma implica o prioritate a conditiile, in timp ce pentru instructiunea
case acest lucru nu este valabil.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Bucle FOR permite specificarea unui numar fix de interatii in descrierea
unui design. Bucla for include o declaratie automata pentru index
library ieee;
use ieee.std_logic_1164.all;
entity parity10 is
port(D: in std_logic_vector(0 to 9);
ODD: out std_logic);
constant WIDTH: integer := 10;
end parity10; Exemplu:
architecture behavior of parity10 is
Generator de paritate de 8-
begin
bit folosind o bucla for.
process(D)
variable otmp: Boolean;
Begin
otmp := false;

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
for i in 0 to D'length - 1 loop
if D(i) = '1' then
otmp := not otmp;
end if;
end loop;
if otmp then
ODD <= '1';
else
ODD <= '0';
end if;
end process;
end behavior;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Functii si Proceduri
Functiile si procedurile in VHDL se numesc generic subprograms, si
reprezinta o analogie directa cu functiile si procedurile definite in
limbaje de programare de nivel inalt
Procedura subprogram care are o lista de argumente care constau
din intrari, iesiri si nu returneaza nicio valoare.
Functia - subprogram care are numai intrari in lista de argumente si
returneaza o valoare.
Subprogramele pot fi definite local (intr-o arhitectura) sau intr-un
package. Declaratiile din subprogram sunt secventiale (ca in proces).
Pot fi apelate dintr-o zona concurenta dintr-o arhitectura sau dintr-un
proces. De asemenea se pot apela din alt subprogram.
De evitat scrierea functiilor si procedurilor recursive, acestea nefiind
sintetizabile!

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
package my_package is
function my_global_function(...)
return bit;
my_package a fost compilat intr-o
end my_package; biblioteca
package body my_package is
use
function my_global_function(...)
work.my_package.my_global_function;
return bit is
entity my_design is
begin
begin
...
...
end my_global_function;
end my_design;
end my_package;
...
my_global_function() a fost declarata in
package my_package
Se obtine un subprogram global
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Subprograme locale
Se declara local, intr-o arhitectura.
architecture my_architecture of my_design is
begin
my_process: process(...)
function my_local_function(...)
return bit is
begin
...
end my_local_function;
begin
...
end process my_process;
end my_architecture;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Functii = Un subprogram cu zero sau mai multe argumente de tip intrari si
care returneaza o singura valoare de iesire.

function maxval (arg1, arg2: integer) return integer is


variable result: integer;
begin function rising_edge (signal s: std_logic)
if arg1 > arg2 then return boolean is
begin
result := arg1; return (s'event and (To_X01(s) = '1') and
else (To_X01(s'last_value) = '0'));
end;
result := arg2;
end if;
return result;
end maxval;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Proceduri => Nu returneaza valori, argumentele includ atat intrari cat si
iesiri. Se folosesc pentru a modulariza o descriere complexa a unui design. Se
folosesc in zona concurenta dintr-o arhitectura sau intr-un proces.
procedure jkff (signal Rst, Clk: in std_logic; signal J, K: in std_logic; signal Q,Qbar: inout
std_logic) is
begin
if Rst = 1 then Q <= '0';
elsif Clk = 1 and Clkevent then
if J = '1' and K = '1' then Ex: JK flip-flop cu reset asincron:
Q <= Qbar;
Variabilele declarate intr-o
elsif J = '1' and K = '0' then procedura nu se stocheaza intre
Q <= '1'; diferite executii ale procedurii.
elsif J = '0' and K = '1' then La procese, variabile isi
Q <= '0'; pastreaza valorile intre executii.
end if; end if;
Qbar <= not Q;
end jkff;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Test Benches VHDL folosit in procesul de simulare
Se aplica secvente de stimuli la intrarea circuitului care se testeaza (the Unit
Under Test, sau UUT). Formele de unda de test reprezinta valorile
semnalelor la diferite momente de timp.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: cod VHDL pentru
simulare

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Utilizare Project Navigator Pentru Simulare si Modelare
(generare Testbench si apel Modelsim)

Unui modul VHDL (sau alta descriere) i se poate


asocia un testbench:

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Se pot prescrie unele informatii de timing

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
In zona de culoare albastra se pot programa semnalele de test
In zona de culoare galbena se poate preciza (iesirea) dorita

Tastez save si verific ca de fapt s-a generat un fisier VHDL


Care este o descriere a testbench (forme de unda + modul asociat)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Este evidentiat acest bench (banc de lucru) pot fi mai multe
Si se deschid automat unelte de simulare asociate

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Se vede ca unui bench ii corespunde un modul VHDL

Acesta va fi transmis si analizat de Modelsim care are utilitare mai


perfectionate pentru vizualizare forme de unda etc.
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
O simulare minimala se obtine direct in Project Navigator
Prin activarea Generate Expected Simulation Results

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Se pot face simulari asociate diferitelor etape din procesul de proiectare
(behavioral, translate .. Dar cea mai completa ca informatii este
post place and route

Fereastra
deschisa de
Modelsim

Aici se observa clar efectele luarii in considerare a unor timpi de


propagare specifici pozitionarii si rutarii efectuate la place and
route la care se adauga si informatiile temporale specifice
device-ului FPGA/CPLD folosit in proiect

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Bench2 este de fapt o ierarhie de module VHDL care contin
inglobate informatii de timing pe care unealta Project
Navigator le furnizeaza. In acest caz VHDL este folosit si ca
limbaj de simulare

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemple cod VHDL
Descrierea unui comparator folosind IEEE 1164 standard logic

Comentariu --
declarare library se incarca biblioteca
IEEE.
Use - specifica ce anume din biblioteca
ieee este disponibil pentru design-ul
realizat (declarat prin entitate si
arhitectura).
Forma generala include 3 campuri,
separate prin punct.

Blocul arhitectura descrie


std_logic si std_logic_vector, sunt tipuri de
functionalitatea date standard din IEEE 1164 standard si in
comparatorului biblioteca asociata IEEE

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: counter
cu reset asincron,
incarcare paralela
si dimensiune
configurabila.

utilizare 'unsigned'
type si generics.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
4-bit synchronous
up counter.
active high,
synchronous reset.
Active high enable.

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

Verilog este un limbaj de descriere hardware similar ca


sintaxa cu limbajul de programare C

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modulele descrise in Verilog
reset toggle
module toggle(q, clk, reset); q

<functionality of module>
clk

endmodule
Reconfigurable Computing
S. Reda, Brown University

Fiecare modul poate fi definit pentru 4 nivele de abstractie

Behavioral sau la nivel algoritmic


Dataflow level
Gate level
Switch level

Verilog permite ca diferite nivele de abstractizare sa fie introduse in


acelasi modul

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Concepte de baza
Comentarii prin introducerea // sau prin /* - */ pentru un bloc de
mai multe linii
specificare numere.

<size><base format><number>

Nr de biti

d sau D pentru decimal Numar care


Examples: h sau H depinde de
4b1111 pentruhexadecimal baza
12habc b sau B pentru binary
16d235 o sau O pentru octal
12h13x X sau x: dont care
-6d3 Z sau z: high impedence
12b1111_0000_1010 _ : folosit pentru claritate

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tipuri de date
Net-urile reprezinta conexiuni intre elementele. Se declara
folosind cuvantul cheie wire.
wire a;
wire b, c;
wire d=1b0;

Registri reprezinta elemente de stocare a datelor. Ei au aceeasi


valoare pana cand o alta valoare este inscrisa in ei. In Verilog, un
registru este mai mult o variabila care poate stoca o valoare. Nu
necesita un clock asa cum au nevoie registrii hardware.
reg reset;
initial
begin
reset = 1b1;
#100 reset=1b0;
end
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Un net sau un registru poate fi declarat ca vector. Exemple
de declaratii:
wire a;
wire [7:0] bus;
wire [31:0] busA, busB, busC;
reg clock;
reg [0:40] virt_address;

Este posibil sa se adreseze biti sau parti din vector


busA[7]
bus[2:0]
virt_addr[0:2]

Se foloseste integer pentru numarare. Exemplu.


integer counter
initial
counter = -1;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Real
real delta;
initial
begin
delta = 4e10;
delta = 2.13;
end
integer i;
initial
i = delta;

Tablouri (Array). Se pot defini tablouri de tip intreg, real


sau registri
integer count[0:7];
reg [4:0] port_id[0:7];
integer matrix[4:0][0:255];
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Memorie. Folosit pentru modelare RAM si ROMs. Se
modeleaza folosind tablouri de registri uni-dimensionali.
Example.
reg mem1bit[0:1023];
reg [7:0] membyte[0:1023];
membyte[511];

Parameteri. Definire constante care nu pot fi folosite ca


variabile.
parameter port_id=5;

Sirurile pot fi stocate in registri. Latimea variabilei registru


trebuie sa fie suficient de mare pentru a stoca tot sirul.
reg [8*19:1] string_value;
initial
string_value = Hello Verilog World;
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Module si porturi
module fulladd4(sum, c_out, a, b, c_in);
output [3:0] sum;
output c_out;
input [3:0] a, b;
input c_in;


endmodule

Declararea porturilor (input, output, inout)


sunt implicit declarate ca wire.
Daca iesirea stocheaza valoarea, trebuie declarate ca reg

module DFF(q, d, clk, reset);


output reg q;
input d, clk, reset;


endmodule
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Declarare module (Stil ANSI C)

module fulladd4(output reg[3:0]


sum,
output reg c_out,
input [3:0] a, b,
input c_in);


endmodule

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Instantierea modulelor
module Top;
reg [3:0] A, B; externe, intrarile pot fi reg sau wire;
reg C_IN; interne trebuie sa fie wire
wire [3:0] SUM;
wire C_OUT; Extern trebuie sa fie wire
// one way
fulladd4 FA1(SUM, C_OUT, A, B, CIN);
// another possible way
fulladd4 FA2(.c_out(C_OUT), .sum(SUM), .b(B), .c_in(C_IN), .a(A));

endmodule
module fulladd4(sum, c_out, a, b, c_in);
output [3:0] sum;
output c_out;
input [3:0] a, b;
input c_in;


endmodule
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modelare la nivel de poarta (structural)

.
wire Z, Z1, OUT, OUT1, OUT2, IN1, IN2;

and a1(OUT1, IN1, IN2);


nand na1(OUT2, IN1, IN2);
xor x1(OUT, OUT1, OUT2);
not (Z, OUT);
buf final (Z1, Z);
.

Toate instantele se executa concurent ca in hardware.


Numele instantei nu este necesar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Tablouri de instante pentru porti
wire [7:0] OUT, IN1, IN2;

// array of gates instantiations


nand n_gate [7:0] (OUT, IN1, IN2);

// which is equivalent to the following


nand n_gate0 (OUT[0], IN1[0], IN2[0]);
nand n_gate1 (OUT[1], IN1[1], IN2[1]);
nand n_gate2 (OUT[2], IN1[2], IN2[2]);
nand n_gate3 (OUT[3], IN1[3], IN2[3]);
nand n_gate4 (OUT[4], IN1[4], IN2[4]);
nand n_gate5 (OUT[5], IN1[5], IN2[5]);
nand n_gate6 (OUT[6], IN1[6], IN2[6]);
nand n_gate7 (OUT[7], IN1[7], IN2[7]);
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modelare Dataflow
Modulul este definit pentru a specifica comunicarea datelor intre
registri hardware si modul in care datele sunt procesate in design

Atribuirea continua constructia principala in modelarea


comunicarii datelor
assign out = i1 & i2;
assign addr[15:0] = addr1[15:0] ^ addr2[15:0];
assign {c_out, sum[3:0]}=a[3:0]+b[3:0]+c_in;

Atribuirea continua este activa permanent si expresia de atribuire


este evaluata in momentul in care se modifica variabila din
dreapta.

Partea stanga trebuie sa fie un scalar sau un vector.


Partea dreapta (operandul drept) trebuie sa fie registri, fire, intregi,
real.

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

Operatorii sunt similari celor din C (mai putin ++ sau )

Arithmetic: *, /, +, -, % and **
Logical: !, && and ||
Relational: >, <, >= and <=
Equality: ==, !=, === and !==
Bitwise: ~, &, |, ^ and ^~
Reduction: &, ~&, |, ~|, ^ and ^~
Shift: <<, >>, >>> and <<<
Concatenation: { }
Replication: {{}}
Conditional: ?:

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

module mux4(out, i0, i1, i2, i3, s1, s0);


output out;
input i0, i1, i2, i3;
output s1, s0;

assign out = (~s1 & ~s0 & i0) |


(~s1 & s0 & i1) |
(s1 & ~s0 & i2) |
(s1 & s0 & i3);

// OR THIS WAY
assign out = s1 ? (s0 ? i3:i2) : (s0 ? i1:i0);

endmodule

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Modelarea comportamentala
Design-ul este exprimat la nivel algoritmic (nu
mai este nevoie de o gandire in termeni de porti .
sau comunicare date). .
reg a, b, c;
Proiectarea la acest nivel este foarte
asemnanatoare cu programarea in C. initial a=1b0;
.
Algorimul este implementat intre doua declaratii .
: always si initial. always
begin
b = a ^ 1b1;
Fiecare always si initial reprezinta o activitate
separata. De retinut ca ruleaza in paralel. c = a + b;
end
.
Pot fi mai multe initial si always dar nu pot fi
.
intercalate

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
initial
initial blocul incepe la timpul 0, se executa o singura data
Daca sunt mai multe blocuri initial, fiecare bloc incepe sa fie
executat concurent de la momentul 0, fiecare bloc terminand
executia independent de celelalte.
Declarari multiple comportamentale se grupeaza folosind begin si
end.

reg x, y, m;
initial m=1b0;

initial
begin
x=1b0;
y=1b1;
end

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
always
always incepe la timpul 0 si executa instructiunile in
blocul always in mod continuu (ca la bucle).
Modeleaza un bloc in care activitatea circuitului digital
se repeta continuu.

integer count;

count=0;

always
begin
count=count+1;
end

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Evenimente
Un eveniment event modificarea valorii registrului sau a net-ului.
Se folosesc pentru a porni executia intr-un bloc.
Simbolul @ - este folosit pentru a specifica controlul unui
eveniment
Declaratiile se pot executa la modificarea valorilor semnalelor,
sau in momentul tranzitiilor pozitive sau negative ale semnalului.
(posedge) (negedge).

input clock; input clock; input clock1, clock 2;


integer count; integer count; integer count;

count=0; count=0; count=0;

always @(clock) always @(clock) always @(clock1 or clock2)


begin begin begin
count=count+1; count=count+1; count=count+1;
end end end
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Proceduri de atribuire
Atribuirile procedurale actualizeaza valorile variabilelor pentru reg,
integer, sau real.
Valorile raman nemodificate pana cand se foloseste alta asignare
2 tipuri de atribuiri procedurale: blocking si nonblocking.

Blocking statements, folosesc Nonblocking statements, folosesc


operatorul =, sunt executate in operatorul <=, sunt executate fara a
ordinea in care sunt bloca declaratiile dintr-un bloc
specificate in blocul secvential secvential.

reg x, y;
reg x, y;
initial
initial begin
begin x<=1b1;
x=1b1;
y<=1b0;
y=1b0;
end end

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

always @(posedge clock) always @(posedge clock)


begin begin
a = b; a <= b;
b = a; b <= a;
end end

Nonblocking elimina conditiile de


intrecere. Pe frontul crescator al ceasului,
se citesc valorile din partea dreapta, se
evalueaza expresiile si se asigneaza partii
din stanga.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Instructiuni conditionale
Asemanator cu C .
Intotdeauna apar in if(alu_control == 0)
blocurile always si y = x + z;
initial else if (alu_control == 1)
y = x z;
else if (alu_control == 2)
. y = x * z;
if(x) else
begin y = x;
y= 1b1; .
z= 1b0;
end reg [1:0] alu_control;
expression
. ..
if (count < 10) case (alu_control)
count = count+1; 2d0 : y = x + z;
else 2d1 : y = x z;
count = 0; 2d2 : y = x * z;
. default: y=x;
endcase
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Loops
integer count;
integer y=1;
integer x=2;

initial
for (count = 0; count < 128; count = count + 1)
begin
x <= x + y;
y <= x;
end

initial initial Trebuie sa contina


count = 0; count = 0; un numar sau o
while (count < 128) repeat(128) valoare a
begin begin semnalului, se
. . evalueaza o
. . singura data la
count = count +1; count = count +1;inceput
end end

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Mux4x1
module mux4x1(out, i0, i1, i2, i3, s1, s0);
output out;
input i0, i1, i2, i3;
input s1, s0;
reg out;

always @(s1 or s0 or i0 or i1 or i2 or i3)


begin
case({s1, s0})
2d0: out = i0;
2d1: out = i1;
2d2: out = i2;
2d3: out = i3;
endcase
endmodule

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu: Clipire LED la 1 sec
module sec (input CLOCK_50, output reg [8:0] LEDG);

integer count=0;

initial LEDG[0]=1'b0;

always @(posedge CLOCK_50)


begin
count=count+1;
if(count == 50_000_000)
begin
count=0;
if(LEDG[0]) LEDG[0]=1'b0;
else LEDG[0]=1'b1;
end
end

endmodule
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL-AMS

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Este derivat din VHDL ((IEEE standard 1076-1993). Include extensii mix-signal
(AMS) pentru a defini sisteme analogice si mix-signal (IEEE 1076.1-1999).

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu de cod: Descrierea unei diode in cod VHDL-AMS

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL_AMS lucrari stiintifice in IEEE Xplore
539 for vhdl-ams (rezultat al cautarii din 2016)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Structura de baza VHDL-AMS

Entity
Descrie interfata unui device fizic sau a unui sistem
Specifica intrarile si iesirile modelului (porturile)
Poate specifica parametrii de intrare ai modelului (A =, B =, C = ..)
Architecture
Descrie modelul
Poate avea atat semnale analogice (continue) cat si digitale (discrete)
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Exemplu de utilizare: modelarea unui convertor DC/DC
Componente (R, L, C, Diode, Switch, opamp, etc)
Modelare componente digitale din circuitul de modulare

Definire a specificatiilor convertorului de putere


Input/Output Voltage, Putere
Mod de operare (CCM, DCM, Current or Voltage mode)
Specificatii de curent
Frecventa de comutare
Load/line regulation

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL-AMS Modelare digitala

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
ANEXE
Exemplu de unelte de dezvoltare CAD
(Computer Aided Design)

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ansoft Simplorer - System Simulation Software for Multi-Domain
Design
Simplorer is a multi-domain system simulation software program.
It is used for the design, modeling, analysis and optimization of high-
performance systems that include electrical, thermal, electromechanical,
electromagnetic, and hydraulic designs. These complex systems are commonly
found in the automotive, aerospace/defense, and industrial automation
industries.
Simplorer provides a wide range of modeling techniques, analysis capabilities,
and post processing. This enables the engineer to investigate system
functionality, performance, and overall design verification. The result is a
dramatic reduction in development time and cost, increased system reliability
and system optimization.

[Link]

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
New in Simplorer v8
Next generation User Interface
Advanced Model Editing
Characterization tools
Enhanced Spice and Pspice model import
New component library concept
Expanded VHDL-AMS functionality
Enhanced Solver Performance
Enhanced Transient Co-simulation with Maxwell
New Dynamic Coupling with Maxwell/RMxprt/Q3D Extractor
3rd Party Co-simulation Coupling
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Digital VHDL-AMS Modelarea blocului modulator

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
VHDL-AMS limbaj de modelare pentru mix-signal (analog/digital) dar si pentru
proiecte care vizeaza tehnologii mixte (Electric, Mecanic, Termic, Magnetic, etc.).

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Behavioral Simulation:
ModelSim is an industrial strength high level VHDL/Verilog simulator from
Mentor Graphics.

A light version of it (ModelSim XE II) is included with Xilinx's ISE


WebPACK and a free license can be obtained from Xilinx.

Dolphin SMASH: Multi-domain simulator, a version of SPICE with support for


VHDL, VHDL-AMS and other simulation extensions - free download with limited
abilities-. HAMSTER site: VHDL-AMS simulation environment -free download-.

The Hamburg site for VHDL provides a wealth of information on high level
behavioral modeling and synthesis tools. Here is another comprehensive site for
analog and mixed signal extensions to VHDL (VHDL-AMS).

Behavioral Synthesis:
FPGA vendors such as Xilinx and Altera have their own tools for synthesis from
VHDL. For ASIC design, Synopsys and Leonardo Spectrum from Mentor
Graphics can be used with the Tanner libraries to synthesize custom layout from
VHDL.

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016
Referinte bibliografice:
[1] Prof. Sherief Reda Division of Engineering, Brown University Spring Reconfigurable Computing
[2] [Link]
[3] [Link]
[4] - Accolade VHDL Reference Guide - [Link]
[5] Steve Chwirka - Applying VHDL-AMS and other Advanced Modeling Techniques

[6] - [Link]

[7] [Link]

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

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