La progettazione di sistemi FPGA a bassa potenza è diventata un requisito non negoziabile nel design digitale moderno, in particolare per applicazioni portatili, alimentate a batteria e a livello termico. Come field-programmable gate array (FPGAs) sono sempre più implementati in edge computing, dispositivi IoT e infrastruttura wireless, la capacità di ridurre il consumo energetico senza sacrificare le prestazioni dà un vantaggio competitivo decisivo.

Fondamenti del consumo di energia in FPGA

Per ottimizzare il codice VHDL per una bassa potenza, un progettista deve prima cogliere i due componenti principali del consumo di energia FPGA: potenza dinamica e potenza statica. L'alimentazione dinamica domina durante il funzionamento attivo ed è regolata dall'equazione ben nota \(P {dinamica} = \alpha \cdot C \cdot V^2 \cdot f\), dove \alpha\\) è il fattore di attivazione di commutazione (il ciclo di transizione del segnale

Le architetture FPGA contribuiscono ad aggiungere fonti di consumo distinte da ASIC. L'interconnessione programmabile è un importante consumatore di potenza grazie ai lunghi percorsi di routing e a molti transistors. La logica si blocca, sia LUT che ALM, dissipano anche la potenza basata sulla funzione configurata. Le reti di orologio, che distribuiscono un segnale ad alto livello attraverso l'intero chip, possono consumare il 20-30% della potenza dinamica totale se non gestita con attenzione le strategie di analisi.

Tecniche di Coding VHDL per la riduzione di potenza

1. Gamma di orologio

Il segnale orario è uno dei metodi più efficaci per ridurre l’energia dinamica. Sabling il segnale dell’orologio ai moduli inattivi, l’attività di commutazione in quei blocchi scende a zero, eliminando la potenza sprecata su inutili caricamenti e scarica di elementi sequenziali. In VHDL, il clock gating può essere implementato da Eing a global clock con un segnale abilitato, ma è necessario evitare gli orari.

Questo modello utilizza l'abilitazione nativo del flip-flop, mantenendo la distribuzione dell'albero dell'orologio ed evitando i pericoli di ore di gated. Per il clock gating incise a livello del blocco, istantane la cella di gating dell'orologio del venditore (ad esempio, BUFGCE sui dispositivi Xilinx) per spegnere le sezioni dell'albero dell'orologio durante i periodi di inattività.

2. Minimizing Switching Attività

L'attività di commutazione (\alpha\) moltiplica direttamente la potenza dinamica. Il codice VHDL può introdurre modifiche inutili attraverso i protocolli di comunicazione poveri, le assegnazioni del segnale ridondanti o la codifica dello stato inefficiente.

  • Usa codifica grigia per contatori e macchine statali che raramente hanno bisogno di aggiornare bit di uscita. La codifica grigia assicura solo un bit di modifiche per transizione di stato, riducendo il numero di giri sull'autobus di uscita. Ad esempio, un contatore binario attiva più bit contemporaneamente, portando ad un \(\alpha\) più alto sulle linee dell'autobus.
  • Data gating[[]: Disattivare o tenere gli input dei dati stabili quando un modulo non viene accessibile. Se un datapath è inattivo, impostare i registri di input ad una costante nota (ad esempio, tutti gli zeri) piuttosto che permettere a volte casuali di attivare la logica a monte.
  • Rimozione delle assegnazioni del segnale non necessarie[[]: Evitare di assegnare i valori predefiniti ai segnali che sono utilizzati solo in condizioni di condizione.
  • Utilizzare le uscite registrate con abilita[]: Invece di utilizzare uscite puramente combinate che si attivano con ogni cambiamento di input, registrare gli output e aggiornarli solo quando i dati sono validi.

3. Codifica di stato efficace per macchine di stato finite

La scelta di sistemi di codifica dello stato influenza direttamente l'attività di commutazione, l'area e il tempo. Per i progetti di potenza bassa, la codifica di un punto di stato corrisponde a uno stato) minimizza il numero di transizioni tra stati attivi, perché solo due bit si attivano quando si sposta da stato A a B: il bit corrente va basso e il successivo va alto.

4. Pipelining e ritiming per ridurre la propaganda degli spicchi

Gli errori sono brevi, non voluti transizioni di segnale che si propagano attraverso la logica combinata, causando la dissipazione di potenza extra nei circuiti a valle. I percorsi combinati profondi sono particolarmente inclini a glitchches perché diversi ritardi di segnale di ingresso causano la logica di produrre temporaneamente un valore errato prima di impostare.

5. L'uso di orologi abilita e di potere giù modalità

Mentre VHDL non può controllare direttamente l'alimentazione, il codice può attivare o attivare i moduli solo quando necessario. Ad esempio, un ricevitore wireless può solo bisogno del suo blocco di elaborazione della banda di base quando un pacchetto viene ricevuto.

6. Condivisione delle risorse per ridurre l'area e l'interruttore

Quando più operazioni simili vengono eseguite su diversi dati, la condivisione di risorse hardware (ad esempio, un moltiplicatore o ALU utilizzato in modo multiplo tempo) riduce il numero totale di celle logiche e risorse di routing, riducendo così sia la potenza dinamica che statica.

Sintesi e tecniche di attuazione per il basso potere

Anche se la codifica VHDL imposta le basi per una bassa potenza, le fasi di sintesi e di implementazione offrono anche potenti leve. I moderni fornitori FPGA forniscono opzioni di sintesi che mirano a bassa potenza. Ad esempio, Xilinx Vivado include una strategia di sintesi "Power Optimization" che utilizza l'inserimento di gating clock, il ripiegamento e l'ottimizzazione basata su LUT per ridurre al minimo il passaggio.

La stima di potenza è una parte critica del flusso. Strumenti come Xilinx Power Estimator (XPE) e Intel PowerPlay forniscono stime anticipate basate su tassi di gioco, frequenze di clock e selezione dei dispositivi. Queste stime diventano più accurate dopo la sintesi e l'implementazione quando i dati reali di velocità di attivazione da simulazione (tipicamente in formato VCD o SAIF) possono essere importati.

Risorse esterne per ulteriori letture:

Verifica e convalida dei disegni a basso potere

Simulare il design con i modelli di input tipici e peggiori durante la raccolta di attività di commutazione utilizzando un banco di prova VHDL. Molti strumenti di simulazione possono generare un file di Val Change Dump (VCD), questo file può essere letto da strumenti di stima di potenza per calcolare l'effettiva potenza dinamica. Per la potenza statica, lo strumento utilizza valori di perdita per il dispositivo di destinazione.

Un'altra migliore pratica è quella di dividere il design in domini di potenza nella gerarchia VHDL. Separando chiaramente i moduli che possono operare a tensioni o frequenze diverse, il design diventa più facile da ottimizzare con IP di gestione dell'alimentazione specifica del fornitore. Ad esempio, un sistema potrebbe avere un dominio ad alte prestazioni (ad esempio, per DSP) che funziona a 200 MHz, e un dominio di controllo che funziona a 20 MHz.

  • Progettazione con bassi tassi di attivazione in mente. Considerare l'attività di ogni segnale, in particolare busses che emette ai pad I/O di FPGA dove i carichi capacitivi sono grandi.
  • Registrare segnali critici[]] per rompere i percorsi combinati e ridurre la propagazione degli scintilli.
  • Partizione del tuo design[[] in blocchi separati da orologio. Assicurarsi che i blocchi di idle siano tenuti in un reset o in uno stato costante.
  • Usi strumenti di sintesi power-aware[[] e valutare costantemente i trade-off tra area, velocità e potenza.
  • Simulare e verificare il consumo di energia[[] presto nel ciclo di progettazione.
  • Considerare la famiglia FPGA[[[] – i dispositivi più recenti con tensioni di nucleo inferiori (ad esempio, 0.95 V vs 1.2 V) offrono significative riduzioni di potenza statica.
  • Sono incluse le logiche di prova non necessarie[[ che rimangono attive nella produzione. Se sono incluse le caratteristiche di debug (ad esempio, i core del chipscope) assicurano che siano disabilitate o con un orologio nella costruzione finale.
  • Utilizza primitivi a bassa potenza specifica del fornitore[[] come porte a clock dedicate (BUFGCE), blocchi DSP che possono essere spenti e bloccano RAM in modalità power-down quando non è stato effettuato l'accesso.

Conclusioni

Ridurre il consumo energetico nei progetti FPGA inizia al primo stadio: scrivere un codice VHDL efficiente. Comprendendo la fisica sottostante, applicando tecniche di codifica mirate come il gating orologio, la minimizzazione delle attività di commutazione, la codifica efficiente dello stato, e sfruttando strumenti di sintesi e implementazione che ottimizzano per il potere, i progettisti possono ottenere un notevole risparmio energetico senza compromettere funzionalità o prestazioni.