I l progetto del tavolino con display multiuso Table Pixel ci ha dato modo di mostrarvi le potenzialità dei LED RGB organizzati a matrice, perché una tale struttura consente di realizzare visualizzatori per grafica e testo, anche di grandi dimensioni; tale progetto ha sicuramente messo a molti l appetito, però è confinato nell ambito dilettantistico e delle applicazioni senza particolari pretese, dato che la pur valida Arduino Mega che pilota le strip ha una potenza di calcolo inadatta a visualizzare animazioni veloci. Un ulteriore limite è insito nella velocità di invio dei dati alle strip Neopixel, che è subordinata al numero di LED MATRIX di BORIS LANDONI Pannello grafico a LED RGB a matrice di punti gestito da una scheda controller basata su FPGA che può essere utilizzata distintamente come demoboard per valutare le potenzialità della Spartan 6 on-board. Prima puntata. 40 Settembre 2016 ~ Elettronica In
Hi-Tech LED RGB componenti la matrice, il che impone un refresh che va sempre più rallentato quanto più grande è il numero di diodi luminosi componenti la matrice. Ecco quindi nascere l idea di realizzare un nuova versione di display grafico utilizzando una soluzione modulare basata su blocchi a matrice di punti (dove ciascun punto è un LED RGB) pilotati tramite un apposito bus da una potentissima scheda di controllo, interamente programmabile e capace di gestire animazioni anche velocissime, grazie all FPGA di cui è dotata. Già, la chiave di tutto è il Field Programmable Gate Array Spartan 6 della Xilinx, che può eseguire programmi ad elevatissima velocità, grazie anche alla capacità di elaborazione parallela (multithread) che lo caratterizza; il modello utilizzato nel progetto l abbiamo scelto perché sul mercato rappresenta il più prestante FPGA disponibile in contenitore TQFP, quindi ancora saldabile con strumentazione tradizionale. Per realizzare il nostro display modulare utilizziamo come scheda di controllo la board che descriveremo nelle prossime pagine, la quale in realtà non è limitata a tale applicazione ma è un controllore generico e molto potente e versatile, di cui comprenderete le doti e le possibilità di impiego nei prossimi paragrafi e in articoli futuri. La parte visualizzatrice è invece composta da matrici di punti a LED RGB dotate di shiftregister; il tutto permetterà di gestire un visualizzatore gigante con risoluzione di 320x240 pixel, ognuno dei quali è caratterizzato da una definizione True Color a 256 colori per punto a una frequenza di refresh di 25 Hz, più che sufficiente a mostrare immagini in movimento flickerfree (ossia senza sfarfallìo). Elettronica In ~ Settembre 2016 41
BNC HI-SPEED I/O CN1 CN2 FPGA FLASH USB Serial 2Wire Hi-Speed up to 480Mbit CLK FPGA SPARE SD-Card BNC CN3 32K x 8 EEPROM HI-SPEED I/O CN4 Fig. 1 Schema a blocchi della demoboard. Ci occuperemo dei display in un secondo momento, perché ora è il caso di concentrare la nostra attenzione sulla scheda controller, che è una potentissima e versatile board di sviluppo basata su FPGA XC6SL9 Spartan 6, di cui 62 dei 102 I/O sono disponibili per un utilizzo generico, mentre i restanti sono assegnati a funzioni dedicate come seriali USB, memoria EEPROM, SDcard, Boot Flash, ecc. Sebbene qui sia usata come controller del display, può realizzare un infinità di applicazioni. All FPGA abbiamo abbinato una Flash della Winbond siglata 25Q64FVSIG, costituente la memoria di boot dell FPGA: in essa risiede un bootloader (che semplifica notevolmente la programmazione) e possono essere stivati, grazie al bootloader stesso, ben 15 firmware sfruttando la possibilità di contenere 16 slot per bitstream (così si chiamano i programmi per l FPGA); dei 16 slot, uno (lo 0) è assegnato fisso al bootloader e 15 ai programmi. Il bitstream da avviare viene scelto dal menu del bootloader direttamente dal terminale. La Flash è da 64 Mbit ad accesso seriale, implementato grazie a link configurabili dual/quad SPI. Oltre che sulla Flash, l FPGA può contare su una memoria di lavoro nella quale stiva dati di configurazione ed altro ancora: si tratta di una EEPROM tradizionale, anch essa ad accesso seriale. La scheda è stata progettata affinché l FPGA esegua calcoli su richiesta di un computer via USB a 480 Mbps, ma anche programmi scritti su SD-Card (non a caso dispone di uno slot per microsd); quanto al collegamento USB, è stato utilizzato un innovativo chip FT2232HL della FTDI che permette di ottenere, da un unica connessione USB 2.0, due porte seriali virtuali che in realtà a livello hardware sono una seriale ad alta velocità e una parallela a 8 bit; le due porte sono una di controllo e configurazione (tramite terminale) e l altra per lo streaming dei dati da mandare al display. Il chip d interfaccia USB è pienamente programmabile e le configurazioni sono scritte in una seconda EEPROM ad accesso seriale. La programmazione può avvenire direttamente da USB grazie al bootloader precaricato; pertanto sia per l utilizzo che l upload di programmi non è necessario usare il cavo JTAG Xilinx, il che significa un notevole risparmio di denaro e una semplificazione nella gestione della scheda. Per testare immediatamente la scheda, oltre che il bootloader viene fornito un applicativo per gestire pannelli grafici con LED RGB a matrice di punti (max. 4 pannelli 32x32). La gestione del display, tramite PC, avviene per mezzo del software gratuito Jinx. La scheda dispone anche di un ingresso e un uscita seriali con BNC, pienamente configurabili CARATTERISTICHE TECNICHE g Matrice modulare componibile tra 32x16 a 320x240 g Frequenza di refresh: 25 Hz g Definizione: 16,7 milioni di colori g Gestione da FPGA con bootloader e 15 slot firmware g Interfaccia USB g Riproduzione scene luminose da USB e SD-Card g Tensione di alimentazione scheda: 5 Vcc g Corrente assorbita scheda: 100 ma 42 Settembre 2016 ~ Elettronica In
ad esempio per essere utilizzati come ingresso e uscita di un segnale seriale ripetuto su più board connesse in cascata. In future applicazioni possono anche diventare ingressi di segnali da monitorare, ma in questa applicazione funzionano come appena spiegato. L hardware della demoboard è schematizzato nella Fig. 1, che vi suggeriamo di guardare prima di procedere all analisi circuitale. SCHEMA ELETTRICO È ora il caso di approfondire la conoscenza della scheda analizzandone lo schema elettrico e partendo dall FPGA (siglata U1) la quale, visto che l unità nasce come evaluation board, prevede il prolungamento di tutti gli I/O verso piazzole, alcune pensate per ospitare connettori, altre per montare pin-strip o dip-switch; per ciascun gruppo di linee è possibile montare sul bus corrispondente uno o più connettori, pin-strip ecc. che risulteranno in parallelo. I connettori previsti sono 5: CN1, CN2, CN3, CN4, CN5 (in parallelo a questi si collegano gli altri, che sostanzialmente li ripetono); per il display gigante a matrice utilizziamo gli ultimi due, ossia CN4 e CN5, in quanto uno gestisce un gruppo di moduli 32x32 pixel, 64x32 pixel o 128x32 pixel (una sola connessione non potrebbe, per ragioni di velocità, servire l intero pannello). Abbiamo deciso di prolungare tutti gli I/O verso connettori e piazzole dove montare sia dispositivi di input, sia connettori, per fornirvi la possibilità di utilizzare più comodamente la board se decidete di sviluppare con essa applicazioni diverse dal controllo di matrici di LED RGB. L unità di elaborazione (ALU) e i dispositivi logici dell FPGA Demoboard montata sul retro di un pannello a matrice di 32x16 LED RGB: è la versione base del nostro visualizzatore modulare. che lo richiedono, riceve il clock dall oscillatore a quarzo IC1 (Xpresso della Fox); il clock entra nel pin 84 della Spartan 6. Alle linee IO_L52P_3 (6), IO_LIP_ HSWAPEN_0 (144), IO_L36N_3 (29), IO_L37P_3 (27) sono collegati i canali dati del lettore di SD-Card, rispettivamente DAT0, DAT1, DAT2, CD/DAT3; il clock della SD-Card si connette a IO_L50P_3 (piedino 10) mentre il canale CMD va al pin 11 (IO_L49N-3). Tutte queste linee sono rese accessibili anche dai test-point TP1 (DAT2), TP2 (CD/ DAT3), TP3 (CMD), TP4 (CLK), TP5 (DAT1) e TP6 (DAT6). E qui va aperta una parentesi: per velocizzare l accesso alla Card, dalla quale il firmware dell FPGA PC con terminale USB Fig. 2 - Schematizzazione dell elaborazione dell FPGA nella demoboard. permette di eseguire programmi o, nel caso del display a matrice, di scaricare i dati per costruire le immagini in tempo reale, abbiamo previsto di utilizzare la modalità più rapida, che non è la classica SPI cui Arduino e derivati ci hanno abituati e che viene usata dai microcontrollori consumer; qui impieghiamo la modalità full-speed separando i dati dai comandi (che invece nei bus tipo SPI e I²C viaggiano su un unico filo o su due nel caso dell SPI con MISO e MOSI) e utilizzando per la lettura e scrittura dei dati ben quattro linee bidirezionali, che sono DAT0, DAT1, BOOT FLASH CPU + SOFTWARE DI CONTROLLO 0 Boatloader 1 15 SD-Card Elettronica In ~ Settembre 2016 43
Mensile di elettronica applicata, attualità scientifica, novità tecnologiche. Elettronica In w w w. e l e t t r o n i c a i n. i t oltre l elettronica