Sunteți pe pagina 1din 5

2015/02/26 05:25

1/5

Laboratorul 3 - Sintetizarea modulelor Verilog

Laboratorul 3 - Sintetizarea modulelor


Verilog
n laboratoarele anterioare au fost prezentate elementele principale ale limbajului Verilog i au fost
descrise o serie de circuite digitale, folosind acest limbaj de descriere a hardware-ului. Verificarea
comportamentului descris s-a fcut folosind simulatorul ISim, inclus n mediul de dezvoltare Xilinx ISE.
Scopul final pentru un cod Verilog este ns de a realiza implementri hardware care se comport
precum descrierea Verilog. Acest lucru poate fi obinut n mod automat printr-un proces numit
sintetizare (eng. synthesis). Un utilitar de sintetizare preia descrierea Verilog sau VHDL i poate
genera fiiere de configurare pentru circuite integrate reconfigurabile (ex. PLA, CPLD, FPGA) sau chiar
mtile necesare pentru realizarea unui ASIC (Application-Specific Integrated Circuit) prin diferite
tehnologii *MOS.
Exist mai multe utilitare capabile de sintetizarea circuitelor digitale, de la diveri productori, care
sunt n principal axate pe anumite tehnologii specifice acestora. Pentru programarea plcilor de
dezvoltare de la laborator, care sunt dotate cu FPGA-uri de la Xilinx, se folosete mediul de dezvoltare
Xilinx ISE care, pe lng simulatorul ISim, conine i un utilitar de sintetizare.

FPGA-uri
Un FPGA (Field-Programmable Gate Array) este un circuit integrat care poate fi programat pentru a se
comporta ca orice alt circuit digital. Spre deosebire de un procesor, care stocheaz i execut
instruciuni, programarea unui FPGA nseamn reconfigurarea hardware a acestuia pentru a realiza
funcionalitatea dorit.
Primele FPGA-uri au fost introduse n anii '80, iar utilizarea lor principal era n testarea prototipurilor
pentru ASIC-uri. Avantajele aduse de FPGA-uri au fcut ns ca ele s fie folosite acum, att pentru
testare, ct i n multe alte domenii precum prelucrarea de semnale, criptografie i HPC (High
Performance Computing).
FPGA-urile sunt construite dintr-un numr mare de blocuri logice configurabile (eng. configurable logic
block - CLB), identice, interconectate printr-o matrice de fire i switch-uri programabile (Fig. 1).

AC Wiki - http://elf.cs.pub.ro/ac/wiki/

Last update: 2014/11/03 20:53

lab:lab03

http://elf.cs.pub.ro/ac/wiki/lab/lab03

Fig. 1: Structura unui FPGA


n general, un CLB este compus dintr-un element combinaional reconfigurabil i un bistabil. De obicei
elementul combinaional este un LUT (Look-Up Table), iar bistabilul este de tip D. Arhitectura unui
bloc difer ns de la productor la productor, motiv pentru care trebuie folosite utilitarele de
sintetizare specifice productorului. Fig. 2 prezint un CLB tipic.

Fig. 2: Configurable Logic Block


Numrul de celule dintr-un FPGA variaz de la model la model, putnd ajunge pn la cteva sute de
mii i chiar milioane. Un exemplu este familia Virtex-7 de la Xilinx care conine peste 2 milioane de
celule.
n cadrul laboratorului se folosete placa de dezvoltare Spartan3E Starter Board de la Digilent, care
este dotat cu un FPGA din familia Spartan-3E (XC3S500E) produs de ctre Xilinx. Acest FPGA ofer
~500.000 de pori logice organizate n ~10.000 de celule. Pe lng cipul FPGA, placa de dezvoltare
ofer i o serie de periferice conectate la acesta, cum ar fi:

o memorie volatil DDR-SDRAM de 64MB


o memorie nevolatil Flash paralel de 16MB
o memorie nevolatil Flash serial de 16MB
un display LCD cu 2 linii i 16 caractere

http://elf.cs.pub.ro/ac/wiki/

Printed on 2015/02/26 05:25

2015/02/26 05:25

3/5

Laboratorul 3 - Sintetizarea modulelor Verilog

butoane, switch-uri i LED-uri


generator de ceas de 50MHz

Lista complet a perifericelor, precum i modul de interconectare i folosire a acestora mpreun cu


cipul FPGA pot fi consultate n manualul de utilizare a plcii.

Sintetizarea folosind Xilinx ISE


Mediul de dezvoltare Xilinx ISE permite programarea cipurilor FPGA produse de ctre Xilinx. Versiunea
WebPACK poate fi folosit pentru a sintetiza circuite i programa cipurile FPGA din gama low-cost ale
acestui productor, cum ar fi familia Spartan.
n Xilinx ISE sintetizarea unui circuit se face selectnd modul Implementation i este mprit n dou
etape. n prima etap, reprezentat de procesul Synthesize, este generat o descriere generic a
circuitului ce urmeaz a fi implementat, sub forma unei liste de primitive i conexiunile dintre ele. n a
doua etap, reprezentat de procesul Implement Design, primitivele sunt mapate pe resursele oferite
de cipul FPGA int, iar apoi conexiunile dintre ele sunt rutate prin matricea de interconectare din
interiorul FPGA-ului.

Schema circuitului sintetizat de Xilinx ISE se poate vizualiza rulnd procesul Synthesize - XSTView
RTL Schematic. Selectnd opiunea Start with a schematic of the top-level block, iniial schema va
conine doar un black-box pentru modulul top-level. Implementarea unui black-box poate fi expandat
prin dublu-click.
Nu toate modulele pot fi expandate pn la nivel de pori logice. n procesul de sintetizare, Xilinx ISE
va infera anumite funcionaliti precum: sumatoare (eng: adders), comparatoare (eng: comparators),
multiplicatoare (eng: multipliers), numrtoare (eng: counters) etc. care nu mai pot fi expandate.
Lista tuturor funcionalitilor inferate se gsete n Synthesis Report disponibil n Design
Summary/Reports din lista de procese.

La crearea proiectului Xilinx, trebuie selectat cipul FPGA int pentru care vor fi sintetizate circuitele.
Pentru a putea programa placa de dezvoltare acesta trebuie s corespund cu cipul FPGA de pe plac.
Pentru a putea testa un modul Verilog pe placa de dezvoltare, intrrile i ieirile acestuia trebuie
rutate la pinii cipului FPGA. Acest lucru se face cu un fiier de constrngeri care asigneaz fiecrui bit
dintr-un port al modulului un anumit pin al cipului. Alegerea pinilor care se conecteaz la porturile
modulului Verilog se face n funcie de perifericele care vrem s produc intrile i s primeasc
ieirile modulului. Legturile dintre pinii cipului FPGA i perifericele plcii de dezvoltare se gsesc n
manualul de utilizare.

Fiierul de constrngeri trebuie creat nainte de sintetizarea circuitului. Urmrii tutorialul de asignare
a pinilor de IO pentru a vedea cum se creeaz acest fiier.

AC Wiki - http://elf.cs.pub.ro/ac/wiki/

Last update: 2014/11/03 20:53

lab:lab03

http://elf.cs.pub.ro/ac/wiki/lab/lab03

n final, programarea cipului FPGA se face cu fiierul de configurare generat pentru acesta (extensia
.bit). Urmrii tutorialul de programare a FPGA-ului pentru a vedea cum se realizeaz acest lucru.

Un singur modul, i dependenele acestuia, poate fi sintetizat la un moment dat. Acest modul se
numete modulul top-level i este marcat cu un simbol special n lista de module ale proiectului.
Fiierul de constrngeri va referi porturile acestui modul.
Modulul top-level poate fi modificat prin click-dreapta pe un alt modul i selectarea opiunii Set as Top
Level Module. n aceast situaie, fiierul de constrngeri trebuie actualizat pentru a folosi porturile
noului modul top-level.

Exerciii
1. (2p) Urmrii tutorialul de debugging i rezolvai bug-urile din sumator, apoi setai un breakpoint
la linia 35 i rulai simularea pn la a 5-a iteraie (bitul 4) a celei de-a treia perechi de numere
testate.
Implementarea sumatorului este una didactic, Verilog permind o descriere mult mai
simpl pentru un sumator pe orici bii cu operatorul +.
2. (2p) Testai pe placa de dezvoltare modulul comp1. Generai i vizualizai schema circuitului.
Hint: Funcionalitatea modulului comp1 este explicat n exerciiul 5 din laboratorul 1.
Hint: Scheletul de cod conine deja fiierul de constrngeri (comp1.ucf) i configuraiile necesare
pentru programarea plcii (comp1.ipf).
Hint: Rulai procesul Configure Target Device din modul Implementation pentru programarea
plcii. Placa este programat n momentul n care se aprinde LED-ul portocaliu.
Hint: Studiai fiierul de constrngeri i manualul de utilizare a plcii de dezvoltare pentru a
descoperi corespondena dintre porturile modulului comp1 i perifericele plcii.
3. (4p) Testai pe placa de dezvoltare modulul simple_alu. Folosii ca intrri pentru a switch-urile SW0
-SW3, pentru b butoanele BTN_NORTH, BTN_EAST, BTN_SOUTH i BTN_WEST, iar pentru op butonul
ROT_CENTER. Afiati ieirea modulului pe LED-urile LED0-LED7.
Hint: Pornii de la scheletul de cod.
Hint: Funcionalitatea modulului simple_alu este explicat n exerciiul 4 din laboratorul 2.
Hint: Urmrii tutorialul de asignare a pinilor de IO pentru generarea fiierului de constrngeri.
Nu uitai configurarea de tip PULLDOWN a porturilor pentru butoane i switch-uri.
Hint: Urmrii tutorialul de programare a FPGA-ului pentru configuraiile necesare programrii
plcii.
4. (4p) Implementai i testai pe placa de dezvoltare un circuit care poate compara 2 numere pe
cte 4 bii. Circuitul trebuie s aib 3 ieiri corespunztoare situaiilor: mai mic, egal, mai mare.
Hint: Urmrii tutorialul de creare a unui proiect.
Hint: Folosii o descriere comportamental a circuitului.

Resurse

Schelet de cod
PDF laborator
Manualul plcii de dezvoltare
Soluie laborator (disponibil ncepnd cu 01.11.2014)

http://elf.cs.pub.ro/ac/wiki/

Printed on 2015/02/26 05:25

2015/02/26 05:25

5/5

Laboratorul 3 - Sintetizarea modulelor Verilog

Referine

http://en.wikibooks.org/wiki/Programmable_Logic/FPGAs
Datasheet-ul cipului XC3S500E (FPGA-ul folosit pe placa de laborator)

From:
http://elf.cs.pub.ro/ac/wiki/ - AC Wiki
Permanent link:
http://elf.cs.pub.ro/ac/wiki/lab/lab03
Last update: 2014/11/03 20:53

AC Wiki - http://elf.cs.pub.ro/ac/wiki/