La progettazione con FPGA è stata il filo conduttore del mio lavoro negli ultimi vent’anni. Ho lavorato soprattutto con Altera, ma ho utilizzato anche dispositivi Xilinx e l’ambiente Vivado. La mia preferenza è rimasta per gli strumenti Altera: prima MAX+PLUS II, poi Quartus.
Pensare per blocchi, scendere fino al codice
Il mio approccio è sempre stato quello di vedere il progetto come un insieme di blocchi funzionali. Ogni blocco poteva contenerne altri, in una gerarchia che permetteva di passare dall’architettura generale ai dettagli dell’implementazione.
Alla fine di quel percorso c’era il codice: in questo esempio Verilog, ma nei miei progetti ho utilizzato anche VHDL. Schemi e linguaggi non erano due modi di lavorare contrapposti: erano livelli diversi dello stesso progetto.
Con le FPGA ho realizzato una grande varietà di sistemi. Questo esempio mostra un controller per un DMD della Texas Instruments, destinato a un sistema di visualizzazione a 30.000 frame al secondo.
La scheda DE10-Standard
La piattaforma di sviluppo utilizzata per controllare e sperimentare il sistema prima del trasferimento sulla scheda proprietaria.
DE10-Standard, vista dall’alto con i principali componenti identificati. Immagine tratta dalla figura 2-1 del manuale della scheda, fornita dall’autore. Seleziona la fotografia per ingrandirla.
Caratteristiche della piattaforma
FPGA SoC
Cyclone V SX — 5CSXFC6D6F31C6N
Logica programmabile
110K elementi logici; 41.509 ALM
Memoria integrata
5.761 Kbit
Clocking
6 PLL FPGA e 3 PLL HPS
Processore HPS
ARM Cortex-A9 MPCore dual-core a 925 MHz
Cache e RAM HPS
512 KB di cache L2 condivisa; 64 KB di scratch RAM
Uscita video
VGA con DAC a 24 bit
Ingresso video
Decoder TV NTSC/PAL/SECAM e connettore TV-In
Espansioni
GPIO a 40 pin, HSMC, ingresso ADC e connettore LTC
Comunicazioni
Gigabit Ethernet; 2 porte USB 2.0 host; USB-UART sul lato HPS
Audio
Codec a 24 bit, line-in, line-out e ingresso microfono
Conversione analogica
ADC a 12 bit, 8 canali, 500 kSPS; intervallo 0–4,096 V
Programmazione
USB-Blaster II integrato; memoria di configurazione EPCS128
Interfaccia utente
10 interruttori, 5 tasti utente, 11 LED e 6 display a 7 segmenti; LCD 128 × 64 sul lato HPS
Alimentazione
12 V DC
Fonte delle specifiche: Terasic — DE10-Standard Development and Education Kit. La scheda integra logica FPGA e sistema processore HPS: non tutte le periferiche sono collegate allo stesso dominio. L’elenco descrive le dotazioni della piattaforma, non implica che siano tutte impiegate nel progetto.
I 30.000 frame/s riguardano il sistema DMD descritto dall’autore: non sono la frequenza di aggiornamento dell’uscita VGA della DE10-Standard.
Un controller DMD su Cyclone V
Dalla piattaforma di sperimentazione alla realizzazione su scheda proprietaria.
Scheda di sviluppoDE10-Standard
FPGAAltera Cyclone V
Sistema descritto dall’autore30.000 frame/s
La scheda di controllo e sperimentazione era una DE10-Standard con FPGA Cyclone V. Dopo questa fase, il progetto venne trasferito su una scheda proprietaria.
SPV5.bdf — vista dei collegamenti e dei blocchi del progetto. Seleziona l’immagine per ingrandirla.SPVsimple.bdf — organizzazione gerarchica dei blocchi e delle interfacce. Seleziona l’immagine per ingrandirla.SPV6_VGA_DLP_VGA.bdf — una vista dei moduli e delle connessioni. Seleziona l’immagine per ingrandirla.
Questa pagina documenta il progetto attraverso il racconto dell’autore, tre schermate dell’ambiente e un modulo sorgente. Il valore di 30.000 frame/s si riferisce al sistema descritto: non è una prestazione verificata dalla sola pubblicazione di questo codice.
Il sorgente Verilog completo
Modulo DLP_coamd_top, riportato integralmente come fornito dall’autore, senza correzioni automatiche. L’intestazione del sorgente indica Quartus Prime Lite 20.1.1 e la data del 23 maggio 2023.
È uno dei moduli del progetto, non un progetto Quartus autonomo e completo. Il sorgente è presentato come documento originale: non è stato compilato o validato in questa pagina.