Tutti i vantaggi della programmabilità

LOGICHE PROGRAMMABILI –

Le logiche programmabili rappresentano, insieme alle memorie e ai microcontrollori, una delle tre tecnologie fondamentali che concorrono allo sviluppo dei sistemi digitali relativamente alle funzionalità speciali dei sistemi embedded.

I microcontrollori sono dispositivi logici che grazie alla programmazione possono implementare qualsiasi funzione, disponendo di sufficente tempo per l’elaborazione e sufficente spazio per la memorizzazione. Una Mcu dotata di memoria adeguata sia in termini di dimensioni che di funzionalità potrebbe virtualmente implementare qualsiasi funzionalità, ma non in maniera ottimale relativamente ad aspetti come le prestazioni real-time. In particolare, funzionalità specifiche come quelle della comunicazione o dell’acquisizione dati, nei sistemi embedded sono tanto critiche da necessitare di soluzioni più di natura application-specific che di natura general purpose. Le logiche programmabili vanno considerate come dispositivi hardware riconfigurabili, quindi capaci di offrire tutta la potenzialità dell’esecuzione hardware con la flessibilità della programmabilità. Le logiche programmabili sono l’alternativa alle logiche fisse, per l’implementazione di funzionalità da eseguire in modalità hardware e ovviando a importanti problematiche come il rischio del cambio delle specifiche di sviluppo che portano ad allungare, anche in maniera smisurata, i tempi di completamento della fase di progettazione e conseguentemente il time-to-market. Le logiche programmabili consentono di modificare il circuito tutte le volte che si desidera, fino ad ottenere la souzione e le prestazioni desiderate. La tecnologia che consente questa flessibilità, da cui il termine “programmabile” attribuito a queste logiche, è basata sulle memorie non volatili e riscrivibili. Non si tratta della programmazione nei termini di codice eseguibile da una Mcu, ma di codice binario di configurazione che consente all’hardware di assumere uno schema funzionale complesso tramita l’interconnessione di blocchi funzionali di base. La memoria di programmazione è quindi un sistema riscrivibile in cui, in termini binari, viene descritta la configurazione hardware che deve assumere la logica programmabile al momento dell’accenzione (power-up) oppure durante l’esecuzione (run-time) nel caso delle logiche riconfigurabili.

L’evoluzione delle logiche programmabili

Le logiche programmabili sono evolute nel tempo, relativamente alla tecnologia della riprogrammabilità, portando a due famiglie fondamentali di logiche programmabili, le Cpld (Complex programmable logic devices) e le Fpga (Field programmable gate array). Le Cpld sono una evoluzione delle logiche programmabili classiche in termini di complessità e rappresentano una soluzione ottimale per funzionalità specifiche e dedicate. Le Fpga implementano il concetto più generale di logica programmabile partendo dagli elementi base della logica (le porte logiche) per l’implementazione potenziale di qualsiasi funzionalità logica. Le Fpga sono dispositivi logici programmabili ad elevata densità e di conseguenza sono soluzioni ideali per funzionalità molto complesse, anche superiori a quelle di una Mcu, e conseguentemente non ottimali in termini di dimensioni, costi e consumi, per funzionalità limitate e di relativa complessità. Le Cpld non sono molto dense (dell’ordine dei 10000 gate) rispetto alle Fpga (dell’ordine del 100000 di gate), ma offrono una serie di vantaggi che non sono riscontrabili nelle Fpga, come per esempio la predicibilità del timing, oppure il bassissimo consumo di potenza elettrica, fattori questi particolarmente importanti nelle applicazioni ultra embedded. Le Fpga sono molto dense, ma soprattutto offrono un livello di integrazione che è molto prossimo a quello del System-on-Chip. Le Fpga si stanno evolvendo molto rapidamente in termini sistemistici tanto da passare dal ruolo di componente del sistema Mcu-memoria-Pld, al ruolo di sistema che ingloba memoria ed Mcu sotto forma di core e una ampia libreria di Intellectual Property. In particolare sono proprio le IP a rendere la Fpga particolarmente attrattiva per gli sviluppatori in quanto questi avrebbero, in maniera immediata e verificata, la possibilità di aggiungere funzionalità molto complesse come per esempio gli algoritmi di digital signal processing semplicemente includendoli in fase di programmazione della logica. I dispositivi logici programmabili rappresentano attualmente il segmento di logiche digitali in più rapida crescita grazie alla crescente densità con cui si stanno caratterizzando, alle prestazioni di sistema sempre più vicine al modello SoC e per la modalità semplice della progettazione supportata da ambienti di sviluppo ad alto livello.

Oltre la Fpga, il multi-processing on chip

La logica programmabile, che vede attualmente nella tecnologia Fpga una delle sue più complesse implementazioni, è solo una fase dello sviluppo di nuove tecnologie che porteranno al system-on-chip logico programmabile. Un importante passo in questa direzione è l’UltraScale Multi-Processing System on Chip (MPSoC) di Xilinx. Questa è un’architettura basata sullo standard di fatto a 28 nm Zynq 7000 All Programmable SoC e UltraScale All Programmable Fpga. MPSoC implementa la scalabilità di processing da 32 a 64 bit con supporto della virtualizzazione, combina motori di elaborazione software e hardware, motori di elaborazione grafica e video, elaborazione di segnali e di pacchetti, modalità di interconnesione e di memorizzazione di nuova generazione, gestione avanzata dell’alimentazione e soluzioni tecnologiche per la sicurezza e l’affidabilità del sistema. Grazie ad un mix ottimizzato di processori embedded eterogenei, Zynq UltraScale MPSoC è in grado di ottenere prestazioni di processing, di fulusso di I/O e di banda di memoria di altissimo profilo. Zynq 7000 (All Programmable SoC) è una piattaforma hardware completamente programmabile che interpreta in pieno le esigenze emergenti del mondo dello sviluppo dei sistemi embedded di nuova generazione. La concorrenza di diverse architetture di elaborazione general purpose, application specific, della logica programmabile Fpga e della funzionalità mixed-signal rende questo dispositivo perfettamente adattabile ai complessi requisiti di sviluppo deli sistemi embedded ad elevate prestazioni. Il Processor System on-chip è connesso alla logica programmabile attraverso una serie di porte multiple Arm Amba Axi. In tal modo viene creato un sistema di accoppiamento dei due elementi chiave dell’architettura Zynq, i processori e la logica programmabile. Le interfacce Axi sono particolarmente flessibili e adattabili attraverso un sistema di configurazione che consente il dimensionamento a 32 e 64 bit, master o slave, e la bufferizzazione. È disponibile anche un’Acceleration Coherency Port a 64 bit. In totale ci sono nove interfacce Axi per interconnettere il sistema di processori al sistema della logica programmabile.

Logica programmabile e mobile
I dispositivi mobili, in particolare gli smarthphone, rappresentano uno dei campi applicativi ove la logica programmabile ha più opportunità di maniferstare tutta la sua potenzialità in termini di livello di integrazione e rapidità di approntamento di soluzioni che si adattano perfettamente alle esigenze applicative. Uno degli aspetti chiave è la gestione del flusso particolarmente ricco di media informativi. In questo contesto applicativo il costo, le dimensioni e il consumo di potenza sono fattori determinanti, oltre alla capacità di elevata integrazione. La famiglia iCE40 di Fpga di Lattice Semiconductor ha questi requisiti. A meno di 0.50 dollari in volume, 25 µW di consumo di potenza e solo 1,40 x 1,48 mm di dimensione, questa Fpga evidenzia i requisiti fondamentali per l’implementazione delle funzionalità che richiede la Mobile Industry Processor Interface, l’associazione tra società che operano nel complesso ecosistema dei dispositivi mobili impegnati a definire e promuovere le specifiche di implementazione per i dispositivi mobili. iCE40 è una Fpga ultra low-power di tipo non volatile capace fino a 7680 Lut (Look-Up Table). Oltre alle Lut, questa Fpga integra anche una Embedded Block Ram, una Non-volatile Cofiguration Memory e i Phase Locked Loops. Grazie a queste caratteristiche iCE40 è una Fpga adatta alle esigenze tipiche delle applicazioni ad elevati volumi e caratterizzate da bassi costi, proprio come nel campo consumer. È un dispositivo Cmos a 40 nanometri di geometria di integrazione che si caratterizza per funzionalità come il low-swing differential I/O programmabile e la capacità di spegnere dinamicamente i Pll. Ciò consente di gestire il consumo di potenza sia in maniera statica che in maniera dinamica. I blocchi logici (Plb e Ebr) sono organizzati in uno schema bidimensionale di righe e colonne, in cui ogni colonna ha blocchi logici o Ebr. Le celle di comunicazione sono collocate in periferia di questo schema matriciale, organizzati a banchi. I Plb contengono i blocchi logici, aritmetici e i registri. I blocchi sono connessi con canali di routing orizzontali e verticali che, grazie al software di “place and route”, vengono automaticamente allocati in maniera ottimale.

Tecnologie della prossima generazione

Le tecnologie della prossima generazione puntano soprattutto su un’estrema risuzione della geometria di integrazione e sulla tecnologia di integrazione del silicio in modalità tridimenionale. Altera per esempio dispone già di prodotti di logica programmabile a 14 nanometri e 20 nanometri con architettura di natura mixed-system in cui convergono elevate funzionalità come i transceiver ad elevate prestazioni, il digital signal processing, il general purpose processing e la logica custom. Grazie ai transceiver ad alta velocità (32 Gbps su silicio a 20 nanometri) è possibile affrontare applicazioni che richiedono una elevata banda di comunicazione ed allo stesso tempo richiedono bassi consumi di potenza. La tecnologia 3D die-stacking consente di ottenere livelli di integrazione di sistema che permettono di implementare l’architettura mixed-system in maniera ottimale sia relativamente alla interconnesione interna, sia relativamente alla integrazione tramite Fpga con le estensioni di memoria sia statica, sia dinamica, oltre che con i moduli transceiver ottici. Grazie a queste tecnologie innovative, i dispositivi Fpga riescono ad ottenere prestazioni di calcolo intensivo dell’ordine dei 5 teraFlops in singola precisione Ieee754. La tecnologia Fpga che Altera ha utilizzato per la sua famiglia Stratix 10 è basata sul processo Tri-Gate a 14 nanometri di Intel. I principali elementi di innovazione che sono stati inglobati nei chip Fpga di Altera sono i transceiver, le mixed-signal IP e la logica digitale. Grazie a questa tecnologia le Fpga Stratix 10 sviluppano una prestazione di core doppia rispetto alla generazione precedente, raggiungendo in tal modo l’operatività di core a 1 GHz e ottenendo allo stesso tempo una capacità di contenumento dei consumi di potenza fino al 70%. Accanto a queste prestazioni più che significative, Stratix 10 stabilisce una serie di record tecnologici di grande rilievo rispetto alla precedente generazione, come la densità di elementi logici che supera i quattro milioni, la potenza di calcolo che supera i 10 TeraFlops in precisione singola, una connettività basata su transceiver quattro volte più veloce (24 e 56 Gbps transceiver). Grazie all’elevata densità di integrazione, la Fpga Stratix 10 consente di realizzare livelli di system-on-chip estremamente complessi e performanti, per esempio inglobando un quad-core 64-bit Arm Cortex-A53 processor system, oppure, in soluzione multi die, integrando sottosistemi come la Dram, la Sram, moduli Asic, processori application-specific e i componenti necessari alla realizzazione dei front-end analogici.

Eraseble Pld: simple e complex

La logica programmabile è fondamentale per la progettazione ottimale di un’ampia gamma di applicazioni in cui ricorrono funzioni speciali che non sono disponibili nelle Mcu, oppure sono poco efficenti se implementate in modalità software. Le Cpld in particolare rappresentano una soluzioni ottimale tra i semplici array di logica programmabile e le complesse Fpga. Oltre al vantaggio di poter soddisfare in maniera ottimale, sia in termini dimensionali che di consumo lo sviluppo di funzioni logiche limitate, hanno il vantaggio, soprattutto rispetto a molte Fpga, si disporre di una memoria di configurazione non volatile, tanto da non richiedere l’utilizzo di una Rom esterna. In tal modo, la Cpld, oltre a implementare logica aggiuntiva in un sistema, può anche implementare la funzione di start up del sistema all’accenzione (boot loader). Le stesse Cpld possono essere utilizzate per implementare la logica e il meccanismo di caricamento della configurazione delle Fpga dalla memoria non volatile esterna. La versione electrically eraseble delle Pld, sia semplici che complesse, consente allo sviluppatore di disporre di un elevato grado di flessibilità nella progettazione di sistema, in quanto riprogrammabili. Le Epld di Atmel coprono sia gli standard industriali come le 16V8 e le 22V10 con le logiche programmabili semplici, sia le logiche programmabili complesse. In particolare la famiglia di Cpld ATF15xx implementa la modalità di power down Idt (Input Transition Detection) che consente al dispositivo di mettersi automaticamente in modalità power down quando nessun elemento logico sta commutando. Queste Cpld di Atmel supportano anche la programmazione in-system basata su Jtag, e ciò rende ulteriormente flessibile e vantaggioso l’utilizzo delle logiche programmabili complesse.

Logica programmabile System-on-Chip

Logica programmabile e System-on-Chip sono un importante connubio di tecnologie che danno allo sviluppatore un’enorme flessibilità nella progettazione e nella gestione del progetto. Il logica programmabile, in particolare quella Fpga, da tempo che sta evolvendo nella direzione del SoC, da una parte per offrire maggiore funzionalità a parità di densità logica del dispositivo, dall’altra per emulare il più possibile la natura del sistema cui la stessa ligica programmabile si rivolge per implementare funzionalità application-specific. L’integrazione nella Fpga di core di microcontrollori industry standard, come per esempio quelli ad architettura Arm, oppure di blocchi costruttivi di base delle funzionalità di digital signal processing sono solo alcuni degli innumerevoli esempi di integrazione nella logica di uso generale di funzioni logiche predefinite e ottimizzate direttamente sul silicio. Il PSoC di Cypress è un esempio emblematico di questa tendenza. PSoC implementa un’architettura logica altamente configurabile in modalità SoC, in pratica un equivalente basato su flash di una Asic field-programmable, ovviando ai problemi di lead-time e Nre. Il vantaggio del PSoC sta anche nella integrazione di fuznionalità analogiche e digitali configurabili e controllabili da una Mcu on-chip. La potenzialità del PSoC è considerevole se si pensa che può integrare fino a 100 funzioni periferiche ottimizzate sia in termini dimensionali che di consumo di potenza elettrica. Il PSoC 5LP di Cypress in particolare integra un Arm Cortex-M3 a 32 bit e un Dma controller operante a 80 MHz, implementa una tecnologia ultra low-power e dispone di uno schema di routing delle periferiche analogiche e digitali praticamente su qualsiasi pin.

Logica programmabile e analogica
Una delle sfide più importanti che la logica programmabile deve affrontare per affermarsi come soluzione ottimale per lo sviluppo di applicazioni di natura embedded è quella dell’integrazione della funzionalità analogica all’interno del sistema digitale. L’integrazione della tecnologia mixed-signal nella logica programmabile è l’ultimo tassello dello svilupppo tecnologico della Fpga verso il SoC. Xilinx ha sviluppato la tecnologia Analog Mixed Signal che consente di ottenere l’integrazione dell’analogica all’interno dei dispositivi logici programmabili. Questa tecnologia è disponibile per tutte le serie Xilinx 7 di Fpga e Zynq 7000 SoC Platform. Le principali caratteristiche della tecnologia Analog Mixed Signal di Xilinx sono l’integrazione in un contesto programmabile di funzionalità di sistema come la conversione analogico/digitale a 12 bit multiplata su 17 canali e capace di 1 Msps e i sensori di temperatura e di alimentazione. Grazie a queste risorse è possibile ottenere un aumento delle prestazioni di sistema potendo monitorare le tensioni, le correnti e le temperature di sistema indipendentemente dalla complessità del sistema applicativo. Inoltre, per il livello di integrazione che se ne ottiene è possibile ridurre significativamente la part-list dei componenti analogici e mixed-signal del sistema, con una significativa riduzione dei costi. Vari sono gli ambiti applicativi dove l’uso congiunto della logica programmabile Fpga con la tecnologia Analog Mixed Signal può essere oltre che vantaggiosa anche innovativa: controllo del touchscreen; gestione di sensori remoti; controllo motore; sicurezza; gestione dei sistemi industriali; automazione. Per esempio, nella realizzazione di sensori remoti l’integrazione del front-end analogico è un aspetto particolarmente critico sotto vari aspetti tra cui le dimensioni, il consumo di potenza elettrica e la comunicazione dei dati. La natura eterogenea dei sensori può richiedere un front-end analogico abbastanza complesso da non rientrare nelle specifiche realizzative del sistema embedded. La possibilità di integrare il front-end analogico con un soft processor in un contesto di logica programmabile permette di rientrare più facilmente nelle specifiche di progettazione del sistema embedded e di risolvere più facilmente problematiche collaterali come quelle della trasmissione remota dei dati.

Modellazione e simulazione
Lo sviluppo di applicazioni basate sulla logica programmabile, in particolare quella Field Programmble, richiede approcci di sviluppo che vanno oltre quello dell’Ide tradizionale che consente di programmare ed emulare il dispositivo target. L’interazione con altri sistemi e il controllo della complessa funzionalità interna del dispositivo logico-programmabile sono fattori dello sviluppo che richiedono un approccio basato sul concetto di modellazione, inteso come processo astratto di sviluppo dell’applicazione indipendente dalla piattaforma hardware di riferimento e che a questa si collega attraverso la simulazione che integra in maniera software la piattaforma hardware, oppure in modalità Hil (Hardware-in-the-loop). Mathworks per esempio ha integrato nell’ambiente di modellazione e simulazione Matlab/Simulink un ciclo di sviluppo basato sulla modellazione per cui è possibile modellare in maniera astratta l’applicazione in ambiente Matlab o Simulink, generare il codice (Hdl) per la piattaforma di logica programmabile target e verificarne la correttezza funzionale direttamente sull’hardware in modalità interattiva con il modello (Cosimulazione e Fpga-in-the-Loop). Questa estensione dell’ambiente di modellazione e simulazione alla simulazione ed emulazione dell’hardware logico-programmabile è basato su due moduli, Hdl Coder per generare codice Verilog e Vhdl per Fpga di Altera e Xilinx, e su Hdl Verifier che utilizza simulatori Hdl e testbenches hardware-in-the-loop Fpga compatibili con le schede Fpga che gli stessi produttori di Fpga rendono disponibili.
Grazie a questo approccio modellistico allo sviluppo di applicazioni basate sulla logica programmabile, l’utilizzo di tecnologie complesse come quella Fpga è affrontabile anche da chi non ha profonde conoscenze di progettazione digitale hardware. L’approccio alla progettazione di sistema ad alto livello, come LabView di National Instruments ha messo a disposizione dello sviluppatore una modalità di progettazione grafica che consente di utilizzare l’hardware logico programmabile senza considerare la sua interconnessione fisica ma solo quella logica. LabView utilizza un linguaggio grafico per la progettazione di sistema, per cui il livello di astrazione rispetto all’hardware di riferimento è molto elevato, rendendo in tal modo semplice l’utilizzo della logica programmabile anche a non esperti, pur utilizzando nel ciclo di sviluppo logica programmabile hardware. A tale scopo National Instruments mette direttamente a disposizione dello sviluppatore l’hardware di prototipazione utilizzando la tecnologia Rio (Reconfigurable I/O) che, tra le varie tipologie di sistemi programmabili, include anche la logica programmabile Fpga.

Pubblica i tuoi commenti