Perché implementare il microcontrollore in FPGA?


16

Attualmente sto "studiando" FPGA, cosa possono fare, come lo fanno, ecc.

In più di un posto ( ad esempio qui ) ho visto progetti che implementano un semplice microcontrollore con FPGA.

Quindi la mia domanda:
vorrei sapere, qual è lo scopo di fare tali implementazioni? Perché usare un microcontrollore implementato in FPGA invece di avere un micro a bordo? Quali sono i vantaggi? E forse anche quali sono gli aspetti negativi?


Molti di questi usano core IP fissi, ma far rotolare i tuoi può essere una grande esperienza di apprendimento.
Chris Stratton,

1
@ChrisStratton - Puoi aggiungere altro o pubblicare un link sui core IP fissi? Sì, sono sicuro che può essere un'ottima esperienza di apprendimento. Ma questo è uno dei motivi per cui sto ponendo questa domanda. Mi chiedo se sia qualcosa di più di una semplice esperienza di apprendimento.
James C,

1
La maggior parte delle persone che lo usano usano qualcosa come Microblaze, Picobloze, Nios II, ecc., Questi sono fondamentalmente progetti di processori "in una lattina" (libreria) che è possibile ottenere in licenza e inserire nel progetto. Il contrasto sarebbe quello di svilupparne uno tu stesso nella sorgente HDL, forse dallo schema a blocchi presentato nella tua tipica lezione CS101. Ci sono un certo numero di pratiche interessanti da affrontare nel trasformare il disegno della lezione in hardware funzionante.
Chris Stratton,

1
Vedi Open Core per molti esempi di core CPU open source.
RBerteig,

3
Ho un esempio Avevamo un microcontrollore obsoleto per un vecchio prodotto. Non è stato possibile trovare un microcontrollore sostitutivo adatto con il giusto mix di periferiche. L'uso di un FPGA con un processore incorporato ci ha permesso di implementare il nostro mix ideale di periferiche sull'FPGA.
Kkrambo,

Risposte:


24

Benefici:

  • interfaccia incredibilmente veloce tra il microcontrollore e qualsiasi interfaccia personalizzata o logica I / O su chip.
  • interfacce di debug e processore personalizzabili
  • inoltre, spesso una logica di controllo più semplice rispetto alla scrittura del codice di controllo con, diciamo, VHDL

Svantaggi:

  • Forse è necessario un FPGA più costoso per adattarsi sia al microcontrollore che alla logica personalizzata, rispetto al solo fatto di avere la logica personalizzata sull'FPGA
  • Forse più difficile da implementare, soprattutto con le memorie e se il nucleo è complesso, rispetto a un microcontrollore già pronto su un chip separato.

3
Vantaggio aggiuntivo: design più semplice, un chip in meno.
DoxyLover,

4
Unico inconveniente: concedere più licenze IP
Mikhail,

Che ne dici di consumo energetico come un aspetto negativo?
Craig McQueen,

@CraigMcQueen È teoricamente possibile generare un microcontrollore in un FPGA che non è stato ancora prodotto come hardware autonomo. In tal caso, non vi è alcun consumo di energia da confrontare. In ogni caso, è troppo specifico per il dispositivo per essere un lato positivo / lato negativo.
Albero

Tutti ottimi commenti. E bene, direi che generalmente gli FPGA hanno un grande consumo energetico, poiché l'utilizzo della logica è di solito molto lontano dal 100% all'interno di una macrocellula. Ciò è leggermente compensato dal fatto che gli FPGA possono utilizzare sofisticate tecniche di minimizzazione della potenza. I processi di produzione (tecnologie) possono essere abbastanza simili tra un FPGA e un processore della stessa era. I processori hanno blocchi di memoria dedicati e FPGA. Se questi corrispondono alle tue esigenze, beh, dipende da quanto sei fortunato a trovare un FPGA che soddisfi esattamente le tue esigenze.
PkP

26

Se il progetto sta per utilizzare un FPGA per il lavoro sporco, e ha la capacità di riserva, perché sarebbe andare a scapito di un chip in più quando si può semplicemente implementare in FPGA?

Per molti ambienti di controllo procedurale può essere notevolmente più semplice implementare la configurazione richiesta in un linguaggio come C piuttosto che provare a farlo in VHDL o Verilog. Aggiungendo il microcontrollore all'FPGA ottieni il meglio da entrambi i mondi: la potenza del VHDL / Verilog ecc. Per i sistemi logici e di interfacciamento e la semplicità di un linguaggio procedurale per i sistemi di controllo e gestione principali.


10
La prima frase di questa risposta è il motivo principale. Ciò avviene principalmente quando si dispone già di un FPGA con una certa capacità di riserva sulla scheda. (Almeno) un chip in meno e meno complessità della scheda. Non metteresti un FPGA su una scheda solo per implementare un microcontrollore con esso, ma quando hai già un FPGA, è un bel modo per ridurre i costi delle parti e la complessità della scheda. Almeno è per questo che lo facciamo.
reirab

13

In estensione alle risposte di Majenko e PkP:

Questa tendenza di incorporare una CPU nel design FPGA ha portato a diversi sistemi eterogenei come:

  • Famiglia Zynq-7000 di Xilinx
  • FPGA SoC Arria / Cyclon / Stratix di Altera
  • FPGA SmartFusion di MicroSemi

Esiste anche un chip FPGA Intel Atom + Altera sul mercato: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

La maggior parte dei micro controller gratuiti per FPGA soffre di un cattivo supporto della catena degli strumenti. Le CPU ARM integrate sono dotate di supporto per traccia / debug, compilatori (catena di strumenti gcc) e supporto completo per Linux. Ecco un sondaggio presentato a FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482

Modifica 1:
Esiste anche la classe di dispositivi PSoC (Sistema programmabile su chip) di Cypress. Questi dispositivi includono un microcontrollore (M8C, 8051, ARM Cortex M0 o Cortex M3) e classici controller o dispositivi I / O integrati SoC (I²C, SPI, Timer, CAN, DAC, ADC, OpAmp, ...) e programmabili parte. Questa parte non è programmabile come i classici FPGA, ma può essere utilizzata per implementare controller I / O aggiuntivi o acceleratori hardware integrati. PSoC ti consente di utilizzare componenti analogici nel tuo design.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

Panoramica PSoC: PSoC


10

Se avessi solo bisogno di un microcontrollore e non avessi un FPGA, sarebbe insolito utilizzare un FPGA con firmware del microcontrollore. Tuttavia, non tutti i progetti crescono in quella direzione. Molte attività hanno chiaramente bisogno di un FPGA, ma alla fine si imbattono in un'attività che non è davvero adatta per una soluzione VHDL. A volte un problema è semplicemente gestito al meglio da una CPU di uso generale. Oppure, a volte è il contrario: alcuni compiti semplicemente non sono adatti per una CPU di uso generale - hanno bisogno di parallelismo.

A quel tempo, hai una scelta. Puoi aggiungere un chip aggiuntivo al tuo dispositivo o puoi capire di avere un sacco di porte di riserva sull'FPGA che non stai utilizzando. Licenza un po 'di IP e puoi avere una CPU di uso generale funzionante in pochissimo tempo!

Un altro dettaglio interessante è che puoi personalizzare alcuni firmware di microcontrollori. Conosco progetti che incorporano un Power PC, ma eliminano tutte le porte necessarie per il supporto in virgola mobile e una buona parte della previsione del ramo. Ciò lo ha reso abbastanza piccolo da adattarsi parallelamente al firmware basato su VHDL.


9

Esistono diversi motivi validi per creare un'istanza di un microprocessore o di un microcontrollore in un FPGA. Eccone tre:

  1. Vuoi solo conoscere il funzionamento di un processore. Gli FPGA offrono infiniti modi per sondare ciò che accade all'interno del processore mentre esegue il codice. Questo è solo per l'apprendimento.

  2. Stai implementando un grande sistema che richiede le velocità a livello di hardware di un FPGA (più veloce dell'esecuzione del software su un microprocessore) ma il tuo progetto richiede una macchina a stati complessi, che è più facilmente implementabile utilizzando software in esecuzione su un semplice processore come Xilinx PicoBlaze che in un FSM hardware. Si noti che un PicoBlaze può funzionare a una velocità di 240 MHz nelle ultime tecnologie di processo FPGA e che il processore PicoBlaze esegue un'istruzione ogni due cicli di clock, in modo da ottenere una macchina a stati veloce e coerente che è facilmente programmabile nel software.

  3. Espandendo su (2), è necessaria una macchina a stati in grado di gestire gli interrupt. I processori sono davvero utili per questo perché sanno già come salvare e ripristinare in sicurezza lo stato prima e dopo aver assistito all'interruzione.

Ecco un avvertimento: se vuoi un processore veloce con un set di istruzioni standard e un grande ecosistema di sviluppo, allora vuoi un processore veloce e hard-core come i due ARM Cortex-A9 in un SoC Xilinx Zynq. Il fabric FPGA nel SoC Zynq consente ancora di creare un'istanza di più core del processore in logica programmabile, ma ARM Cortex-A9 può eseguire sistemi operativi standard come Linux e IDE standard come Android.

Tra ARM Cortex-A9 e PicoBlaze, ci sono molti processori software che puoi implementare con la logica programmabile disponibile da molte fonti. Ad alcune persone piace girare i propri processori e questa è una grande attività educativa. Tuttavia, i microprocessori necessitano di strumenti di sviluppo software e la creazione / il debug di tali strumenti richiede ordini di grandezza maggiori sforzi rispetto alla creazione del processore stesso. È sempre necessario compensare il possibile vantaggio di un microprocessore personalizzato con il tempo e lo sforzo necessari per creare / eseguire il debug del core del processore e degli strumenti.

Informativa completa: lavoro per Xilinx ma sono abbastanza sicuro di non aver affermato che gli FPGA siano sempre la soluzione. Se un microcontrollore da 50 centesimi può fare il lavoro, è meglio usarlo. Gli FPGA e i SoC Zynq sono destinati a progetti che richiedono un forte sollevamento oltre le capacità dei microcontrollori.


Caloroso benvenuto, Steven!
PkP

1
Buona risposta, ma chi ha bisogno di una macchina a stati in grado di gestire le interruzioni? Gli interrupt sono un male necessario per i processori fetch-decode-execute perché la gestione dello stimolo esterno richiede l'uso esclusivo del processore per eseguire l'ISR. In un FPGA, lo stimolo esterno viene gestito in un blocco logico separato mentre anche la macchina a stati continua a funzionare; nessuna necessità di salvare e ripristinare lo stato. Fondamentalmente, gli interrupt sono una soluzione imperfetta a un problema che HDL non ha in primo luogo.
Ben Voigt,

Naturalmente hai ragione per le macchine a stati implementate dall'hardware, Ben. È sempre possibile collegare il pin di "interruzione" come un altro input della macchina a stati. Tuttavia, molte macchine a stati complessi sono semplicemente più comprensibili quando implementate con un processore che esegue C, o almeno più comprensibili per alcuni sviluppatori. Questo è quando hai bisogno di un interrupt.
Steven Leibson,

2

A volte potresti usare un FPGA perché hai un software che gira su un processore fisico obsoleto e non disponibile che vuoi resuscitare. Sebbene non sia compatibile con i pin (sebbene siano stati visti supporti in stile DIP), ciò consente di essere precisi in termini di cicli. È improbabile che un'emulazione di software puro su un microprocessore di materie prime sia così. Ad esempio apple2fpga

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.