Prefazione
XIII
stema digitale ricevente. I dati ricavati dalla prima implementazione sono
stati utilizzati per la realizzazione del prototipo finale, per il quale sono sta-
te effettuate anche ulteriori ottimizzazioni al codice VHDL mediante la mo-
difica di alcuni componenti e l’aggiunta di nuovi.
La realizzazione del codice VHDL e le varie implementazioni sulle
FPGA sono stati effettuati utilizzando il software Xilinx ISE 5.2.03i; i siste-
mi sono stati poi simulati utilizzando ModelSim 5.6e. Per la visualizzazione
dei segnali analogici sono stati utilizzati gli oscilloscopi LeCroy WaveMaster
8600A e Tektronix TDS3032B; per la generazione del clock e dei segnali di
ingresso, nonché per l’acquisizione dei segnali in uscita dal sistema digitale
è stato utilizzato il mainframe modulare Tektronix TLA721, equipaggiato
con il Pattern Generator TLA7PG2 e l’analizzatore di stati logici TLA7AA2;
infine, il software MATLAB 6.0 è stato utilizzato per interpolare i dati ac-
quisiti dall’analizzatore di stati logici ed ottenerne una rappresentazione
grafica utile a confrontarli con quelli forniti in ingresso.
Il sistema è stato sollecitato con ingressi di vario genere (onde quadre e
triangolari, sinusoidi e segnali a dente di sega di varia ampiezza e frequen-
za); le relative uscite sono state confrontate direttamente allo scopo di veri-
ficare la qualità del trasferimento. Tutte le specifiche richieste sono state ri-
spettate; inoltre, è stato possibile effettuare alcune verifiche anche a fre-
quenze di clock in ingresso ben superiori ai valori di specifica, ed anche in
questo caso il sistema ha risposto in maniera corretta, rivelandosi stabile ed
efficiente.
La trattazione è articolata in sei capitoli, il primo dei quali funge da in-
troduzione; il secondo descrive le schede, gli strumenti e gli standard adope-
rati; il terzo capitolo fornisce una panoramica della struttura generale del
sistema digitale ricevente.
Nel quarto capitolo è descritta la fase del trasferimento relativa al colle-
gamento tra due FPGA identiche; infine, il quinto e il sesto capitolo riguar-
dano l’implementazione finale del prototipo e tutti i risultati ottenuti.
Capitolo 1 – Introduzione
1
Capitolo 1 :
Introduzione
1.1 Introduzione
1.1.1 Specifiche del lavoro
Il lavoro qui presentato è stato svolto in collaborazione con il
CO.RI.S.T.A. (COnsorzio di RIcerca su Sistemi di Telesensori Avanzati); lo
scopo è la realizzazione di una infrastruttura di memorizzazione per
l’immagazzinamento di segnali provenienti dal SAR (Synthetic Aperture
Radar) di un aereo.
Al sistema viene inviato un segnale radar analogico che deve essere ac-
quisito e opportunamente convertito in digitale. I relativi campioni, in nu-
mero sufficiente (stimato intorno a 8000), devono poi essere memorizzati in
una struttura opportuna per le successive analisi. La frequenza di invio del
segnale è di 1 kHz (un segnale ogni millisecondo).
Il materiale fornito dal CO.RI.S.T.A. per la realizzazione comprende:
ξ due schede V2MB1000 Development Board, prodotte dalla Memec De-
sign e basate sulla FPGA (Field Programmable Gate Array) Virtex-II
prodotta dalla Xilinx;
ξ una scheda MAX104 Evaluation Kit, basata sull’ADC (Analog-to-Digital
Converter) MAX104, prodotto dalla Maxim;
ξ cavi twistati, software di programmazione e altro materiale di supporto.
Il MAX104 si occupa di campionare il segnale in ingresso, quantizzarlo e
codificarlo in 8000 segnali digitali (campioni); la V2MB1000 si occupa invece
della ricezione dei campioni dal MAX104 e della loro successiva memorizza-
Capitolo 1 – Introduzione
2
zione in una struttura interna.
La velocità del trasferimento è fissata a 2.4 Gb/s: la frequenza di cam-
pionamento del MAX104 è infatti pari a 300 MHz e l’ampiezza dei campioni
è di 8 bit (300 MHz x 8 bit = 2.4 Gb/s); poiché l’ADC trasferisce dati, con
ampiezza doppia e frequenza dimezzata, in standard LVPECL (uno stan-
dard differenziale di cui si dirà nel seguito), la V2MB1000 dovrà essere in
grado di ricevere i 16 bit in parallelo a 150 MHz (dunque ancora a 2.4 Gb/s)
in tale standard.
Il lavoro consiste pertanto nel programmare opportunamente la FPGA
secondo queste specifiche, e nel realizzare opportune interfacce per consen-
tire il collegamento ottimale tra le due schede.
1.2 Struttura di questa documentazione
1.2.1 Capitolo 2
Il Capitolo 2 presenta una descrizione dettagliata di tutti i sistemi
hardware utilizzati.
In particolare, nel primo paragrafo si descrivono la FPGA Virtex-II, la
relativa Development Board, il software utilizzato per programmarla, il
convertitore A/D MAX104 e la relativa Evaluation Board.
Il secondo paragrafo è dedicato alla descrizione degli standard differen-
ziali, con particolare attenzione ai due utilizzati in questo lavoro (LVPECL e
LVDS).
Nel terzo paragrafo vengono descritti gli strumenti di misura: il main-
frame Tektronix TLA721, gli oscilloscopi LeCroy WaveMaster 8600A e Te-
ktronix TDS3032B e il multimetro digitale Fluke 187 True RMS.
Capitolo 1 – Introduzione
3
1.2.2 Capitolo 3
Nel Capitolo 3 è descritta la struttura del sottosistema digitale riceven-
te. In particolare, nel primo paragrafo è descritto il sistema a livello di dia-
gramma a blocchi e sono spiegate le scelte effettuate in fase di progetto e le
modalità di applicazione dei requisiti; gli altri tre paragrafi presentano le
strutture principali che compongono il sistema ricevente: la FIFO, la RAM e
i buffer differenziali. Per ognuna di esse è riportata una descrizione detta-
gliata, sia dei segnali di ingresso ed uscita, sia delle modalità di implemen-
tazione, sia del funzionamento.
1.2.3 Capitolo 4
Il Capitolo 4 è dedicato al trasferimento dati effettuato utilizzando due
schede V2MB1000, una delle quali per generare segnali pseudo-casuali allo
scopo di simulare il comportamento del MAX104.
Il primo paragrafo descrive dunque il generatore di segnali: struttura
generale, codice VHDL implementato, blocchi funzionali (analizzati singo-
larmente e dettagliatamente in sottoparagrafi ad essi dedicati). Ulteriore
spazio è dedicato ai vincoli imposti al sistema, alle simulazioni effettuate ed
ai risultati ottenuti.
Il secondo paragrafo analizza il sistema digitale ricevente nella sua pri-
ma realizzazione. Anche in questo caso sono stati analizzati singolarmente i
componenti, il codice VHDL, i vincoli, le simulazioni e i risultati ottenuti.
Il terzo paragrafo tratta il collegamento tra le due schede: impostazione
degli strumenti, realizzazione di cavi e connettori appositi e risultati ottenu-
ti, documentati da immagini prelevate dall’oscilloscopio.
Capitolo 1 – Introduzione
4
1.2.4 Capitolo 5
I Capitoli 5 e 6 descrivono il trasferimento dati tra la V2MB1000 e la
MAX104 Evaluation Board. Nello specifico, il Capitolo 5 descrive i progetti
realizzati e il collegamento fisico tra i sistemi, con tutte le problematiche re-
lative.
Nel primo paragrafo è descritto un sistema di supporto, realizzato sulla
seconda V2MB1000, per generare il clock a 300 MHz necessario al MAX104;
di esso sono dati la descrizione, lo schema a blocchi e i risultati delle simula-
zioni effettuate.
Il secondo paragrafo descrive il sistema digitale ricevente nella sua ver-
sione finale; sono analizzati, insieme con il codice VHDL realizzato, i sotto-
sistemi di questa versione e le differenze rispetto alla versione precedente;
sono poi presentati i vincoli imposti, i tempi caratteristici ottenuti e i risul-
tati delle simulazioni.
Il terzo paragrafo analizza tutte le problematiche relative al collegamen-
to; in particolare, è affrontato il problema delle terminazioni e sono descritti
i cavi e i connettori appositamente realizzati, nonché le impostazioni delle
schede e degli strumenti di misura.
1.2.5 Capitolo 6
Il Capitolo 6 presenta tutti i risultati del trasferimento. Nel primo para-
grafo sono descritte le varie misure effettuate e sono analizzati i segnali ot-
tenuti, attraverso immagini ottenute con l’ausilio dell’oscilloscopio.
Nel secondo paragrafo vengono descritte le acquisizioni effettuate e ven-
gono presentate immagini di raffronto tra i segnali analogici in ingresso e
quelli ricavati a valle del trasferimento.
Capitolo 2 – Descrizione dei sistemi
5
Capitolo 2 :
Descrizione dei sistemi
2.1 Sistemi hardware e software
2.1.1 La FPGA Virtex-II
La Virtex-II, prodotta dalla Xilinx, è una FPGA basata su tecnologia
CMOS a 0.15/0.12 µm ed 8 livelli di metal. La sua architettura è ottimizzata
per alte prestazioni e basso consumo di potenza, rendendola una potente al-
ternativa ai tradizionali gate array programmati con maschere.
Nel presentarne le caratteristiche si farà riferimento alla FPGA utilizza-
ta per questo lavoro, che è una XC2V1000 a un milione di gate, costituita da
una matrice di 40 x 32 CLB (Configurable Logic Block), ciascuno composto
da 4 slice, per un totale di 5120 slice; il tipo di package è FG456, ossia un
BGA (Ball Grid Array) di tipo wire-bond con 1.00 mm di pitch, dimensioni
fisiche di 23 x 23 mm e 324 terminali di input/output. Lo speed grade è “-4”
(il più basso, relativamente a questo modello di chip) e il range termico è di
tipo C (commerciale), corrispondente ad una temperatura di esercizio com-
presa tra 0°C e 85°C.
Le caratteristiche includono:
ξ 40 blocchi moltiplicatori dedicati;
ξ 40 blocchi da 18 kbit ciascuno di SelectRAM, per un totale di 720 kbit;
ξ 8 DCM (Digital Clock Manager), per la gestione del clock;
ξ Input/Output Block (IOB) programmabili (Figura 2.1), suddivisi in bloc-
chi di ingresso con registri Single-Data Rate o Double Data Rate opzio-
nali, blocchi di uscita con registri e buffer 3-state opzionali e blocchi bi-
direzionali con ogni combinazione di ingressi e uscite;
Capitolo 2 – Descrizione dei sistemi
6
ξ molteplici standard di
I/O supportati, tra i
quali LVTTL (Low Vol-
tage TTL), LVPECL-33
(LVPECL a 3.3 V),
LVDS-33 (LVDS a 3.3
V);
ξ una DCI (Digitally Con-
trolled Impedance), che
fornisce una termina-
zione on-chip per tutti
gli elementi di I/O;
ξ in ogni slice, due gene-
ratori di funzioni (confi-
gurabili come Look-Up Table da 4 ingressi, registri a scorrimento a 16
bit o elementi di memoria SelectRAM distribuita da 16 bit), due elemen-
ti di memoria (configurabili come Flip-Flop D o come latch), porte logi-
che aritmetiche, multiplexer;
ξ 16 linee di collegamento globali (8 per quadrante) per il clock;
ξ per ogni riga o colonna, 24 linee “lunghe” di collegamento, 40 linee “dop-
pie”, 120 linee “hex” e 16 linee di connessione diretta, progettate in modo
da minimizzare gli effetti di cross-talk;
ξ 5 diverse modalità di configurazione.
La logica configurabile interna è composta da quattro elementi principa-
li organizzati in una matrice regolare (si veda la Figura 2.2):
ξ i CLB forniscono elementi funzionali per logica combinatoriale e sincro-
na, ed includono elementi di memorizzazione di base. Dei buffer tristate,
associati ad ogni CLB, pilotano le risorse di routine orizzontali dedicate;
ξ i moduli di memoria Block SelectRAM forniscono elementi di memoriz-
zazione da 18 kbit;
Figura 2.1 – Schema di un IOB
Capitolo 2 – Descrizione dei sistemi
7
ξ i moltiplicatori sono blocchi dedicati per moltiplicazioni a 18 bit x 18 bit;
ξ i blocchi DCM forniscono soluzioni digitali per la compensazione del ri-
tardo nella distribuzione del clock e per la moltiplicazione, la divisione e
lo shift di fase del clock stesso.
2.1.2 La Development Board V2MB1000
La development board V2MB1000, prodotta dalla Memec Design e basa-
ta sulla FPGA Virtex-II, presenta, oltre alla FPGA stessa:
ξ una memoria ROM programmabile (modello XC18V04), utile per pro-
grammare automaticamente la FPGA al momento dell’alimentazione;
ξ una memoria DDR da 32 MB;
ξ due generatori di clock (a 24 e 100 MHz);
ξ tre regolatori di tensione (da 1.5 V, 2.5 V e 3.3 V);
ξ due led (uno per segnalare che la FPGA è programmata e l’altro definibi-
le dall’utente);
ξ due display a 7 segmenti configurabili separatamente;
ξ una serie di 8 dip-switch programmabili;
ξ quattro pulsanti, due riservati e due programmabili;
Figura 2.2 – Elementi principali del Virtex-II
Capitolo 2 – Descrizione dei sistemi
8
ξ una porta seriale RS-232;
ξ due ingressi di programmazione (SelectMAP e JTAG)
ξ due interfacce a 16 bit differenziali (più la massa), una delle quali con
resistori di terminazione da 101 Ω, utili per il trasferimento dati;
ξ due interfacce a 5 bit differenziali (più la massa), una delle quali con re-
sistori di terminazione da 101 Ω, utili per il trasferimento di segnali di
controllo e del clock.
La Figura 2.3 mostra la V2MB1000 Development Board.
2.1.3 Il software di progettazione
Il software utilizzato per la progettazione della FPGA è Xilinx ISE (In-
tegrated Software Environment) Foundation versione 5.2.03i, aggiornato al
Service Pack 3. Il pacchetto ISE Foundation comprende:
ξ Project Navigator: è l’interfaccia principale del software, dalla quale si
accede a tutti i componenti;
ξ XST (Xilinx Synthesis Technology): è il sintetizzatore VHDL di Xi-
Figura 2.3 – La V2MB1000 Development Board
Capitolo 2 – Descrizione dei sistemi
9
linx, preferito ad altri per motivi di praticità;
ξ Architecture Wizard: serve ad implementare i componenti hardware
specifici delle schede utilizzate (in questo caso, solo i DCM);
ξ Core Generator: genera automaticamente l’implementazione di com-
ponenti presenti nelle librerie IP;
ξ Constraints Editor: è un’interfaccia per imporre dei vincoli (soprattut-
to temporali) ai sistemi realizzati;
ξ PACE (Pinout and Area Constraints Editor): complementare al
Constraints Editor, serve ad imporre vincoli sulla locazione dei pin di
ingresso e uscita;
ξ ECS (Engineering Capture System): è un tool automatico di creazio-
ne di schemi RTL dei sistemi realizzati;
ξ Floorplanner: serve ad individuare l’allocazione di net e segnali sulla
FPGA;
ξ FPGA Editor: consente la visualizzazione e la modifica nel dettaglio
della struttura e dei collegamenti dei sistemi realizzati;
ξ Timing Analyzer: è un tool per l’analisi dei tempi caratteristici ottenu-
ti nei progetti;
ξ BitGen: si occupa della generazione del file binario di programmazione;
ξ iMPACT: consente il download dei progetti sulle schede;
ξ ModelSim Xilinx Edition II 5.6e: è il software di simulazione, prodot-
to da ModelSim, allegato al pacchetto ISE Foundation.
Le impostazioni generali del software, relativamente alla scheda
V2MB1000 e alla FPGA Virtex-II utilizzate, sono riportate in Tabella 2.1.
Le impostazioni relative ai processi di sintesi (Synthesize) ed implemen-
tazione (Implement Design) sono riportate rispettivamente nella Tabella 2.2
Capitolo 2 – Descrizione dei sistemi
10
e nella Tabella 2.3; queste impostazioni, quando non diversamente specifica-
to, sono state utilizzate in tutti i progetti realizzati nell’ambito di questo la-
voro. Infine, le impostazioni relative al processo di generazione del file di
programmazione (Generate Programming File) sono state sempre lasciate ai
valori di default.
Scheda Proprietà Valore
Optimization Goal Speed
Optimization Effort High
Synthesis Constraints File
Use Synthesis Constraints File 5
Global Optimization Goal AllClockNets
Generate RTL Schematic Yes
Synthesis Options
Write Timing Constraints
FSM Encoding Algorithm Auto
RAM Extraction 5
RAM Style Auto
ROM Extraction 5
ROM Style Auto
Mux Extraction Yes
Mux Style Auto
Decoder Extraction 5
Priority Encoder Extraction Yes
Shift Register Extraction 5
Logical Shifter Extraction 5
XOR Collapsing 5
Resource Sharing 5
Complex Clock Enable Extraction 5
HDL Options
Multiplier Style Auto
Add I/O Buffers 5
Max Fanout 500
Register Duplication 5
Equivalent Register Removal 5
Register Balancing No
Move First Flip-Flop Stage N/A
Move Last Flip-Flop Stage N/A
Slice Packing 5
Xilinx Specific Options
Pack I/O Registers into IOBs Auto
Tabella 2.2 – ISE Foundation Process Properties (Synthesize)
Impostazione Valore
Device Family Virtex2
Device Xc2v1000
Package Fg456
Speed Grade –4
Design Flow XST VHDL
Tabella 2.1 – ISE Foundation
Project Properties
Capitolo 2 – Descrizione dei sistemi
11
La programmazione della FPGA è stata effettuata utilizzando il cavo
Parallel-IV prodotto dalla Xilinx (Figura 2.4), in grado di trasferire dati alla
velocità massima di 4 Mb/s (nella modalità JTAG utilizzata in questo caso);
per motivi di praticità, in ciascun progetto realizzato si è programmata la
FPGA in maniera indiretta attraverso la PROM presente sulla V2MB1000,
Capitolo 2 – Descrizione dei sistemi
12
che si occupa automaticamente di effettuare il download all’atto dell’accen-
sione.
Scheda Proprietà Valore
Translate Properties Macro Search Path
Trim Unconnected Signals 5
Generate Detailed Map Report
Use Guide Design File (.ncd)
Guide Mode None
Map Properties
Pack I/O Registers/Latches into IOBs Default (For I/O)
Place & Route Effort Level (Overall) Highest
Starting Placer Cost Table (1-100) 50
Place And Route Mode
Normal Place
and Route
Guide File
Guide Mode N/A
Use Timing Constaints 5
Use Bonded I/Os
Generate Detailed PAR Report
Generate Post-Place & Route Static
Timing Report
5
Place & Route
Properties
Generate Post-Place & Route
Simulation Model
Report Type Error Report
Number of Items in Error/Verbose
Report (0-32000)
3
Timing Report (Number of Items) 3
Analyze Clock Skew for All Clocks
Stamp Timing Model Filename
Post-Place & Route
Static Timing Report
Properties
Timing Specification Interaction Report
File
Simulation Model Target Generic_VHDL
Post Translate Simulation Model Name
Post Map Simulation Model Name
Post Place & Route Simulation Model
Name
Correlate Simulation Data to Input
Design
5
Bring Out Global Tristate Net as a Port
Global Tristate Port Name N/A
Bring Out Global Set/Reset Net as a
Port
Global Set/Reset Port Name N/A
Simulation Model
Properties
Generate Testbench File
Report Type Error Report
Number of Items in Error/Verbose
Report (0-32000)
3
Post-Map Static
Timing Report
Properties
Timing Report (Number of Items) 3
Tabella 2.3 – ISE Foundation Process Properties (Implement Design)