Benvenuti a un nuovo appuntamento con la Rubrica Firmware Reload di Elettronica Open Source. In questa Rubrica del blog EOS abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi passati ancora di interesse per Professionisti, Makers, Hobbisti e Appassionati di elettronica. I kit di sviluppo forniti da Xilinx rappresentano soluzioni di progetto in grado di ridurre significativamente i tempi di sviluppo e di migliorare la produttività. Xilinx propone una serie di piattaforme “Targeted Design” che contengono schede hardware di valutazione contenenti i dispositivi programmabili delle famiglie più recenti, strumenti di sviluppo come la recente Suite Vivado®, IP core, progetti di esempio e supporto per schede di formato medio con a bordo FPGA (FMC), tali da poter iniziare rapidamente lo sviluppo di nuove applicazioni.
PIATTAFORME E SOLUZIONI
In questo articolo prendiamo in considerazione la piattaforma Zynq-7000 AP SoC Intelligent Drives, che supporta dispositivi System On Chip della famiglia Zynq-7000. La piattaforma fornisce tutto l’hardware necessario, gli strumenti di sviluppo, i motori passo-passo, i core IP e alcuni progetti di esempio per la realizzazione di applicazioni embedded per sistemi di automazione industriale. La piattaforma è indicata per progetti che richiedono il controllo di posizionamento e/o capacità di networking industriale.
APPLICAZIONI
I campi di applicazione sono i seguenti:
- Controlli elettrici, Servomeccanismi
- Robotica, Strumentazione CNC
- PLC, Sistemi di Controllo Embedded
- Switch Ethernet industriali, Gateway
- Sistemi per l’Energia e il Controllo di Potenza
- Invertitori, Convertitori, UPS
COMPOSIZIONE DEL KIT
Queste sono le parti presenti nella piattaforma:
- Kit di valutazione Zynq-7000 SoC ZC702
- Controller FMC per motori passo-passo, inclusi motori
- Dispositivo ISM Networking FMC
- Suite di progetto ISE® (Embedded Edition)
- IP Core e progetti di esempio “Hardware Validated”
- Schemi elettrici e file relativi al circuito stampato
- Documentazione esplicativa
HARDWARE
Analizziamo ora nel dettaglio le varie parti relative all’hardware.
Zynq-7000 SoC ZC702 Evaluation Kit
- Scheda di valutazione ZC702 con a bordo il dispositivo XC7Z020 CLG484
- 1 EPP
- Scheda di valutazione AMS
- Suite di progetto ISE: Embedded Design dedicata al dispositivo XC7Z7020 CLG484 - 1EPP
- File relativi al design del circuito e progetti di esempio
- Documentazione
- Cavi e alimentatore
Avnet Motor Control FMC e Kit Motori
- Scheda FMC card, in grado di pilotare due motori passo-passo
- Driver integrato per supportare due motori da 12-24V con algoritmo di controllo delle performance implementato nel Zynq-7000 AP SoC
- Convertitori (su scheda) A/D di tipo Delta-Sigma per il sensing di alta precisione e interfaccia Xilinx XADC per l’utilizzo di convertitori XADC sul chip Zynq-7000 AP
- Sensore/Encoder ad effetto Hall e porte GPIO
- Supporto base per FPGA o per eventuale altro dispositivo esterno
Avnet ISM Networking FMC
- Adattatore per network industriale
- Dispositivo IEEE 1588 10/100 PHY a due vie
- Interfaccia CAN a due vie
- Porta RS232
- Porta RS485
- Connettori GPIO
TOOLS & IP
Come già accennato, il tool software di sviluppo Xilinx fornito insieme al kit Zynq-7000 SoC ZC702 è la Suite ISE® Embedded Edition, per la quale il dispositivo di riferimento è Zynq™-7000 XC7Z020 CLG484-1 EPP. Essa comprende: Xilinx Platform Studio (XPS), Software Development Kit (SDK), un’ampia serie di IP plug-and-play comprendenti il Soft Processor Microblaze™ e sue periferiche, oltre al completo flusso di progetto a partire dalla codifica RTL fino al bit stream finale. La versione Embedded Edition fornisce gli strumenti di base, le tecnologie e il familiare flusso di progetto di Xilinx. Questo include la gestione intelligente dei clock per la riduzione dei consumi in regime dinamico, la modalità Team Design per poter realizzare progetti condivisi da team multi-site, la Design Preservation per garantire la ripetibilità dei timing, oltre all’opzione Partial Reconfiguration che consente una maggiore flessibilità a livello di sistema, la riduzione degli ingombri, dei consumi e dei costi.
XILINX PLATFORM STUDIO
Xilinx Platform Studio (XPS) è un componente chiave della suite ISE Embedded Edition, in quanto consente al progettista hardware di costruire agevolmente, connettere e configurare sistemi basati su processori embedded, dalla semplice macchina a stati al completo sistema a microprocessore RISC a 32-bit. XPS fornisce viste grafiche di design e sofisticati wizard in modalità “correct- by-design” per guidare gli sviluppatori attraverso gli step necessari a creare sistemi customizzati a processore in tempi rapidi. Il vero potenziale di XPS emerge dalla sua possibilità di configurare e integrare più core IP plug-and-play del catalogo Xilinx Embedded IP, insieme ad esempi di progetto di provenienza custom o da terze parti e descritti in linguaggio Verilog o VHDL. Attualmente, i processori personalizzati possono essere sviluppati secondo specifiche necessità progettuali, quali ad esempio: requisiti delle periferiche e di IO, reattività in tempo reale, potenza di elaborazione su impieghi generici, prestazioni in virgola mobile, memoria su chip o meno, consumi di alimentazione minimali, etc. Gli sviluppatori firmware e software traggono beneficio dall’integrazione di XPS con lo strumento di Xilinx SDK, il quale permette la generazione automatica di software per sistemi critici come ad esempio Boot Loader, Bare Metal BSP[*] e Linux BSP.
Questa capacità assicura che il porting di un sistema operativo e lo sviluppo delle applicazioni possano iniziare senza ritardi causati dallo sviluppo del firmware. Nota: il termine Bare Metal si riferisce alle tecniche atte a consentire al programmatore di poter controllare direttamente e manipolare il core sottostante, effettuando settaggi con accesso a livello di registro fino ad agire direttamente sui byte di dato e singoli bit. Il programmatore agisce quindi direttamente sull’hardware di basso livello, senza l’intermediazione di un sistema operativo. Vengono gestite tipicamente risorse quali timer, interrupt e I/O. I compilatori C avanzati odierni producono codice efficiente e consentono ai Bare Metal programmer di lavorare con un linguaggio ad alto livello anziché fare ricorso a linguaggi Assembly. Nota: con il termine BSP si intende Board Support Package ovvero, per un sistema embedded, un BSP rappresenta l’interfaccia del Kernel verso i driver di un determinato dispositivo. Il Board Support Package costituisce un’interfaccia standardizzata fra l’hardware e il sistema operativo. Come tale, non permette di accedere direttamente all’hardware ma fa da intermediario nella comunicazione tra il kernel e gli asset hardware come i device controller, il microprocessore (CPU), la memoria, i bus interni ed esterni. Lo si può intendere, più semplicemente, come un set di librerie che fornisce un’interfaccia software omogenea con le funzionalità hardware presenti in un sistema embedded.
CONFIGURARE E PERSONALIZZARE I SOCS PROGRAMMABILI DI ZYNQTM-7000 CON XPS
Il System On Chip Zynq-7000 AP comprende un microprocessore dual ARM Cortex A9 più un set di periferiche che svolgono funzioni quali Ethernet, I2C, SDIO, USB e CAN. Il tutto è accoppiato ad una Logica Programmabile Xilinx ove possono essere istanziati, oltre alla logica convenzionale, anche periferiche soft custom, dispositivi vari e acceleratori. XPS consente di sveltire le fasi di creazione del progetto mediante wizard grafici di semplice utilizzo. Questi comprendono il setup dei domini di clock, la gestione degli interrupt, del DMA, le connessioni esterne per le periferiche hardware e le connessioni di interfaccia per le periferiche soft entro la Logica Programmabile. Questo significa che i progettisti possono immediatamente iniziare i propri progetti personalizzati senza il rischio di definire interfacce o connessioni incompatibili tra loro. Un sistema di esempio per elaborazione di immagini ha le seguenti parti componenti:
AXI Interface
- Porte ad Impiego Generico 32-bit AXI Master/Slave
- Porte High-Speed 32/64-bit AXI Slave
- Porte 64-bit AXI Accelerator Coherency
- Controllori DMA General Purpose
- Systems, peripherals, trace and debug clocks
Hardened Zynq-EPP peripheral interfaces
- Quad SPI/SRAM/NOR/NAND Flash
- Gigabit Ethernet
- USB 2.0
- Secure Digital
- UART
- I2C
- SPI
- CAN
- GPIO
Interrupts
Peripheral connections to Multiplexed I/O
PERSONALIZZARE XILINX MICROBLAZETM CON XPS
Xilinx Microblaze viene incontro a svariati set di requisiti per l’elaborazione di progetti specifici. Con un notevole potenziale di scalabilità e personalizzazione, con esso si può creare una semplice macchina a stati a 8-bit o arrivare a descrivere anche un complesso System-On-Chip quale un processore RISC a 32 bit. È possibile creare centinaia di differenti progetti basati su Microblaze, mediante l’impiego di XPS per integrare IP pre-validate di tipo interno al processore quali pipeline, clock, timer e interrupt controller; ma anche IP di tipo periferico al processore, quali controllori di memoria, USB, CAN bus, I2C, Ethernet, FPU, e quanto ancora sia reperibile dal catalogo Xilinx Embedded IP. Quando questa capacità di configurazione del processore “off-the-shelf” viene combinata con la possibilità di integrare parti di codice RTL di terze parti e blocchi IP custom, i progettisti sono in grado di produrre sistemi custom tali da riscontrare i loro specifici requisiti.
AGGIUNGERE NUOVE PERIFERICHE PLUG AND PLAY E ALTRI DISPOSITIVI CON XPS
XPS supporta l’integrazione “drag-and-drop” di core IP dal catalogo Xilinx Embedded all’interno di sistemi basati su processore. Alcuni esempi di tali core IP sono ad esempio periferiche, dispositivi vari e acceleratori come bridge AXI, GPIO, PLBV4.6 bridge, BRAM, oltre a controllori di memoria esterna, interfacce per periferiche seriali convenzionali e Quad SPI, convertitori analogico/digitali, Grafica, Clocks/Timer, UART, I2C, controllori di interrupt, etc.
INTEGRAZIONE DI PERIFERICHE DI TIPO CUSTOM O DI TERZE PARTI CON XPS
Sebbene già diverse tipologie di sistemi possano essere create a partire dalle periferiche presenti nel catalogo Xilinx, è spesso necessario importare altre periferiche per svolgere nuove funzionalità. Il “wizard Create and Import Peripheral” permette di generare periferiche tipo AXI in Verilog o VHDL (o anche in linguaggio misto) e quindi di importarle in un progetto XPS al fine di poterle connettere a una qualsiasi delle interfacce di sistema: AXI4-Lite, AXI4 (Burst-enabled) e AXI4-Stream. Il wizard, inoltre, permette di integrare i propri moduli periferici PLB o PLB-based. Al momento dell’importazione in XPS, la propria periferica custom viene trattata come qualunque altro modulo “off-the-shelf” presente nel catalogo Xilinx Embedded IP.
CONNETTERE PERIFERICHE IN XPS
XPS rende semplice il collegamento dei pin di I/O o delle terminazioni interne della Logica Programmabile. Per questo tipo di connessioni, infatti, sia che debbano transitare fuori dal chip verso un pin fisico sulla scheda hardware o verso un altro dispositivo all’interno della Logica Programmabile, XPS garantisce il corretto instradamento e l’adeguatezza dei livelli di tensione di segnale. Per la famiglia di dispositivi Zynq-7000 AP, XPS gestisce anche la configurazione del multiplexer interno di I/O che smista le vie fisiche dei dispositivi di sistema verso i rispettivi pin di I/O.
GENERARE SOFTWARE CRITICO CON XPS
I sistemi proprietari che vengono realizzati entro logiche programmabili quali FPGA Xilinx o System On Chip come Zynq-7000 AP richiedono firmware personalizzato per la gestione dell’hardware - anch’esso custom - in tutte le fasi, a partire dal Boot iniziale fino alla configurazione del dispositivo (mediante trasferimento del bit stream), alla inizializzazione e infine all’interfaccia tipica del dispositivo (mediante lo stack software). La creazione di un tale firmware può essere anche molto complicata a causa della stretta dipendenza tra hardware e firmware. XPS supera questo inconveniente, consentendo un approccio semplificato per la condivisione dei dati riguardanti il progetto hardware, utile quando si presentino aspetti critici nel progetto. Questo compito viene realizzato mediante lo strumento SDK, il quale è in grado - in modo automatico - di configurare, assemblare e gestire tutti gli aspetti citati, comprendendo:
- Boot Loader
- Security Software
- Gestione del Bitstream
SDK, inoltre, per sistemi che sono stati disegnati a partire dal catalogo Embedded IP di Xilinx, genera automaticamente i driver Bare-Metal e i BSP, per l’inclusione nel codice senza SO o RTOS, e pure i driver Linux e BSP. In questo modo, XPS permette al progettista di scavalcare il firmware sottostante e gli sviluppi BSP di basso livello che sarebbero altrimenti richiesti prima di procedere con le fasi di progetto del Boot, del SO e delle applicazioni.
DOCUMENTAZIONE E PROGETTI DI ESEMPIO
Concludiamo la trattazione esponendo, nel seguente elenco, i progetti di riferimento che vengono forniti insieme al kit di Zynq-7000 AP SoC Intelligent Drives.
Motor Control FOC per PMSM (Permanent Magnet Synchronous Motor) con Encoder
Questo progetto implementa un FOC (Field Oriented Control, Controllo a Orientamento di Campo) per PMSM con encoder ad anello chiuso per misure di coppia, velocità e posizione. È comprensivo di software (per processore Cortex A9) e hardware (su FPGA) su dispositivo Zynq-7000. L’analisi del motore viene effettuata con una specifica GUI e sotto il controllo di interfaccia COM.
Motor Control FOC for Stepper motor with Encoder
Questo progetto implementa un FOC per un motore passo-passo con encoder ad anello chiuso per misure di coppia, velocità e posizione. È comprensivo di software (per processore Cortex A9) e hardware (su FPGA) su dispositivo Zynq-7000. L’analisi del motore viene effettuata con una specifica GUI e sotto il controllo di interfaccia COM.
Motor Control Sensorless FOC for BLDC motor
Questo progetto implementa uno SFOC (Sensorless Field Oriented Control) per motori BLDC (Brushless DC) senza encoder per ridurre il costo complessivo dei materiali. Il progetto realizza la stima angolare ed è partizionato fra software (su Cortex A9) e hardware (FPGA) per il dispositivo Zynq-7000 per il controllo delle prestazioni. L’analisi del motore viene effettuata con una specifica GUI e sotto il controllo di interfaccia COM.
POWERLINK master
Questo progetto implementa il protocollo Ethernet real-time POWERLINK Master entro il dispositivo Zynq-7000 e opera RTOS LINUX per controllare altri dispositivi POWERLINK slave.
CENNI SU XILINX
Xilinx è uno dei maggiori leader nel segmento industriale dei semiconduttori e dei dispositivi logici programmabili. Sviluppa, produce e distribuisce un’ampia gamma di circuiti integrati avanzati, oltre a tools software di sviluppo e proprietà intellettuali, nel senso di funzioni predefinite di tipo system-level che vengono distribuite - sotto forma di core software - da Xilinx e dai suoi partners, al fine di programmare i propri chip per realizzare funzioni logiche personalizzate.