lunedì 7 settembre 2015
Wave Sheet
FPGA: Engineering Change Orders
Durante il ciclo di sviluppo purtroppo le specifiche possono cambiare all'ultimo minuto, queste modifiche sono chiamate in gergo ECO (Engineering Change Orders) e possono in alcuni casi essere introdotte per compensare problemi di design del sistema.
Il sistema, al solo scopo di facilitare la comprensione, è rappresentato semplicemente nel diagramma da un doppio moltiplicatore con pipeline.
Il design utilizza come usuale un PLL per generare la frequenza di sistema e dopo aver tanto atteso visualizziamo il fatidico Timing requirements not met da Quartus. La frequenza massima per il nostro sistema che TimeQuest riporta supera di poco i 250 MHz.
La procedura "standard" richiederebbe di modificare i parametri del PLL e ricompilare il progetto, così facendo innanzitutto non è detto che la frequenza massima dopo la modifica sia sempre superiore ai 250 MHz.
E' però possibile evitare la compilazione completa, che in sistemi complessi può richiedere diverse ore, cambiando solamente le proprietà relative al PLL, vediamo come.
Nel report di compilazione del Fitter andiamo innanzitutto ad individuare la sezione PLL Usage nella categoria Resource Section, facendo click col pulsante destro sul pll scegliamo Locate Node / Locate in Resource Property Editor.
Il valore M del moltiplicatore verrà aggiornato di conseguenza e tutti i campi modificati verranno evidenziati in rosso.
Ricordiamo infatti l'equazione della frequenza di uscita del PLL in modalità normale:
Altre equazioni come quelle per la variazione della fase ad esempio sono reperibili nella documentazione di Altera.
Scegliamo adesso Edit / Check and Save All Netlist Changes per applicare le modifiche fatte
Prima però eseguiamo TimeQuest per controllare se abbiamo effettivamente risolto tutti i problemi, le violazioni dei tempi di Setup sono sparite ed andando nella scheda Clocks è possibile vedere che la frequenza in uscita dal PLL è effettivamente stata modificata a 250 MHz.
Quartus ci offre inoltre tramite la finestra Change Manager richiamabile dal menù View / Utility Windows che ci da un resoconto delle modifiche ECO così attuate
Questo flusso di sviluppo rapido è molto utile anche durante l'ottimizzazione di progetti in continua modifica per evitare di eseguire una doppia compilazione se la frequenza desiderata non è raggiungibile.
Oltre al PLL è possibile modificare altre celle elementari così come lo standard, lo slew rate ed il current strenght dei pin di I/O.
NB: A causa della differente struttura dei PLL nei dispositivi Cyclone V le funzionalità ECO non sono supportate, è possibile però utilizzare l'IP Altera PLL Reconfig come descritto nell'application notes 661 di Altera per variare i parametri del PLL a tempo di esecuzione.
lunedì 24 agosto 2015
FPGA: Scripting con TCL
Altri EDA dispongono di comandi specifici per l'automazione di diversi task, è necessario quindi consultare la documentazione di ogni software specifico per tali comandi.
venerdì 7 agosto 2015
FPGA: Xilinx ISE ed Internet Explorer 11
Seppur il software ISE sia ormai superato da Vivado è ancora necessario per poter sviluppare per famiglie di dispositivi come Spartan-6, Virtex-6, Coolrunner e le generazioni precedenti.
Un problema che può verificarsi (verificato su Windows 7) dopo l’aggiornamento di Internet Explorer all’ultima versione è la mancanza di funzionamento di ChipScope Inserter ed ChipScope Pro Analyzer con messaggi di errore come “Can't load ..\..\java6\nt\jre\bin\client\jvm.dll.”
Per risolvere la problematica aggiungiamo nella variabile d’ambiente PATH i seguenti valori se non presenti:
C:\Xilinx\14.7\ISE_DS\ISE\\lib\nt;C:\Xilinx\14.7\ISE_DS\ISE\\bin\nt;C:\Xilinx\14.7\ISE_DS\ISE\bin\nt;C:\Xilinx\14.7\ISE_DS\ISE\lib\nt;C:\Xilinx\14.7\ISE_DS\ISE\..\..\..\DocNav;C:\Xilinx\14.7\ISE_DS\PlanAhead\bin;C:\Xilinx\14.7\ISE_DS\EDK\bin\nt;C:\Xilinx\14.7\ISE_DS\EDK\lib\nt;C:\Xilinx\14.7\ISE_DS\EDK\gnu\microblaze\nt\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnu\powerpc-eabi\nt\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnuwin\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnu\arm\nt\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnu\microblaze\linux_toolchain\nt_be\bin;C:\Xilinx\14.7\ISE_DS\EDK\gnu\microblaze\linux_toolchain\nt_le\bin;C:\Xilinx\14.7\ISE_DS\common\bin\nt;C:\Xilinx\14.7\ISE_DS\common\lib\nt;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
E’ anche possibile creare una variabile dell’utente al posto della variabile di sistema per risolvere in modo ancora più rapido ed evitare di controllare tutti i percorsi esistenti.
Dove è possibile naturalmente adattare alla propria versione di ISE i PATH e rimuovere il percorso per la versione Java di Oracle se non installata.
lunedì 27 luglio 2015
Cyclone V SoC: Ethernet senza router con DE1-SoC
La documentazione di Terasic per la DE1-SoC è ben fatta e seguendo il manuale e gli esempi si sarà in grado di programmare il processore ARM, usare l'area logica programmabile e capire l'interazione tra queste due componenti.
Sul sito web è presente un'immagine pronta all'uso di un sistema Linux Console che è possibile scrivere su una scheda MicroSD da almeno 4GB come descritto nella DE1-SoC Getting Started Guide o nel tutorial Using Linux on the DE1-SoC.
Riassumendo è necessario:
- preparare la MicroSD ed inserirla nella DE1-SoC
- impostare tutti i dip switch sul retro della scheda su OFF per configurare la FPGA dal processore ARM all'avvio
- accendere il sistema
- collegare il cavo micro USB al PC
- Utilizzare programmi come Putty per aprire un terminale con la DE1-SoC
iface eth0 inet static
address 192.168.0.3
netmask 255.255.255.0
broadcast 192.168.0.255
al posto di
iface eth0 inet dhcp
che possiamo semplicemente commentare ponendo il cancelletto (#) all'inizio della riga.
Dopodichè premiamo ESC per tornare in modalità comandi e scriviamo ":wq" (senza virgolette) e battiamo invio per salvare ed uscire.
Così facendo utilizzeremo un IP statico al posto di un IP dinamico che senza un router è "macchinoso" assegnare. Riavviamo tramite il comando "reboot" la DE1-SoC.
Nella scheda di rete sul pc, collegata alla DE1-SoC, impostiamo invece i seguenti parametri
Cyclone V SoC: Gli strumenti di sviluppo per ARM
Diamo ora uno sguardo a quali sono gli strumenti di sviluppo per questo nuovo SoC.
La FPGA è programmabile come di consueto tramite Quartus II, il processore ARM necessita invece dell'installazione della SoC Embedded Design Suite (SoC EDS), una suite di sviluppo disponibile anch'essa come Quartus nella versione gratuita Web Edition o nella versione a pagamento Subscription Edition.
La differenza principale è la possibilità nella versione a pagamento di sviluppare bare-metal, ovvero di programmare il processore al livello più basso, senza un sistema operativo, e di utilizzare il compilatore di casa ARM. Generalmente se si necessità di funzionalità avanzate come la comunicazione di rete si opta per un sistema dotato di un sistema operativo, lo sviluppo bare-metal è quasi sempre relegato ad applicazioni real-time dove è necessario un determinismo maggiore.
La versione gratuita limita lo sviluppo ad applicazioni Linux/Android tramite GCC ma in molti casi questo non rappresenta un grosso limite. Lo sviluppo bare-metal di processori complessi come l'ARM Cortex A9 non è "consigliato" nei progetti più comuni mentre può avere più senso sviluppare applicazioni e driver specifici per Linux.
Per un elenco completo delle differenze tra le due versioni rimando alla pagina ufficiale.
Vediamo adesso cosa include il SoC EDS:

- ARM DS-5: l'ambiente di sviluppo basato su Eclipse che include praticamente tutto quello di cui si ha bisogno per lo sviluppo di applicazioni basate su Linux.
L'utilizzo del compilatore GCC in ambiente Windows non è consigliato da Altera e presenta problemi non presenti nella versione Linux. Ad esempio nella versione attuale (GCC 4 inclusa in DS-5) si hanno problemi di compilazione con programmi contenenti istruzioni NEON. E' quindi consigliabile innanzitutto installare SoC EDS su un sistema Linux in caso di problemi.
E' da notare che è possibile utilizzare il compilatore gratuito GCC per lo sviluppo bare-metal anche senza l'utilizzo di DS-5, tramite makefile per esempio, anche se vedremo solamente lo sviluppo di applicazioni Linux sul processore ARM, lasciando a chi volesse intraprendere lo sviluppo bare-metal alla corposa documentazione disponibile.






















