Confronta l'implementazione di un semplice design di automazione su un MCU rispetto a un FPGA / CPLD


8

Lavoro con MCU dagli anni '90 e recentemente mi sono avventurato nella scena FPGA con i chip della serie Spartan6 di Xilinx. Supponendo un semplice design di automazione industriale con sensori e motori e un po 'di intelligenza per collegare tutto, su quale tipo di dispositivo potrei finire il design più velocemente e più facilmente, MCU o FPGA? Anche i punti piccoli o "ovvi" sono apprezzati perché sono nuovo agli FGPA in generale.


Anche una soluzione FPGA implicherebbe quasi sicuramente anche un processore, accanto all'FPGA, implementato al suo interno o in un computer più grande collegato. Le strutture di programma memorizzate sono semplicemente più prontamente mirate per l'implementazione delle parti complesse degli algoritmi di quanto non lo sarebbero le logiche specializzate o le macchine a stati, quindi si risparmia in seguito solo per cose che devono essere veloci (o massicciamente parallele) ma semplici.
Chris Stratton,

Grandi risposte da Richard & Martin di seguito. Può essere allettante provare ad applicare un'abilità o una tecnologia appena apprese al problema successivo, ma in questo caso (per i motivi descritti dai signori sopra) penso che un MCU sia la strada da percorrere.
Radian,

Risposte:


11

Non c'è motivo di utilizzare FPGA a meno che non sia necessario . Anche due ingegneri di talento simile nei settori MCU e FPGA utilizzerebbero un MCU per un compito di automazione relativamente semplice.

Pro MCU:

  • Gli MCU di solito hanno tutte le periferiche esterne al mondo pronte all'uso
  • La compilazione richiede pochi secondi (gli FPGA richiedono minuti o ore)
  • Ci sono un ordine di grandezza (o due!) Più ingegneri che possono aiutare, o riprendere da dove eri rimasto. (Per un confronto divertente, non necessariamente statisticamente valido, confronta il numero di domande e risposte su Stack Overflow per C vs VHDL o FPGA )

Utilizzare un FPGA se è necessario perché:

  • Il crunching numerico richiesto non può essere soddisfatto in termini di potenza, peso, dimensioni o budget di costi con un microprocessore
  • Esistono scadenze rigide in tempo reale che non possono essere garantite con il software (ad esempio i tempi di risposta nel regno dei microsecondi)
  • L'uso della logica FPGA può rendere più semplice fare affermazioni affidabili sui tempi di risposta
  • Puoi ottenere grandi risparmi in termini di costi, energia, ecc. Utilizzando tipi di dati personalizzati (ad esempio un virgola mobile a 12 bit)

O:

  • Il tuo compito ti dice che devi :)

+1 Per il 3 ° proiettile con "un ordine di grandezza (o due!) Più ingegneri che possono aiutare". L'ultima volta che ho usato questo criterio, è stato per scegliere il linguaggio di programmazione.
Nick Alexeev

5

Alcuni motivi per cui credo che usare un microcontrollore (MCU) sarebbe più facile per te:

  • Hai esperienza con MCU. Imparare i dettagli di ogni nuovo chip richiede tempo.
  • Gli MCU hanno periferiche integrate che dovresti implementare (o acquistare) su un FPGA. Ad esempio, la maggior parte degli MCU ha una porta I2C che sarà utile se leggi da un sensore I2C. Inoltre, la maggior parte delle MCU ha una sorta di convertitore da analogico a digitale e modulatore di larghezza di impulso, entrambi i quali saranno probabilmente necessari per un buon controllo del motore.
  • Gli algoritmi complessi sono più facili da esprimere in C che in VHDL (non ho esperienza con Verilog).
  • I ritardi a livello umano sono facili in un MCU, ma richiedono risorse significative in un FPGA.
  • Per una semplice automazione industriale, la larghezza dei bit standard e le basse velocità delle MCU sono probabilmente sufficienti.

In entrambi i casi è necessario fare attenzione al codice che scrivi, in modo che funzioni correttamente in tutte le situazioni, in particolare le condizioni pericolose.

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.