Progettazione di circuiti sequenziali low power con clock gating

In questo articolo si analizza un modo efficace per progettare circuiti sequenziali low power, con la tecnica clock gating e con l’ausilio di un contatore Johnson programmabile multi-stage, che garantisce un basso consumo di potenza dinamica rispetto ai circuiti convenzionali

Pubblicato il 2 febbraio 2015

Con le tecnologie attuali, le frequenze di clock sempre più vantaggiose e la crescente enfasi sulla riduzione della potenza, il design a basso consumo sta assumendo un ruolo fondamentale. I team di progettazione non possono più preoccuparsi solo dell’isolamento e delle relative tecniche sul PCB. Con la maggior parte dei SoC contenenti più circuiti sequenziali, ogni bit è importante, rendendo così ancora più incisiva la progettazione di modelli efficienti a bassa potenza. I circuiti sequenziali sono prevalentemente utilizzati per progettare macchine a stati finiti (FSM), divisori di clock e contatori.

figura1

Fig. 1 – Johnson counter

In un tipico design, tutte le operazioni del computer (aritmetiche, logiche e processi di memoria) vengono eseguite in modo sincrono rispetto al clock, aumentando quindi il numero di circuiti sequenziali in un sistema elettronico. A causa della concorrenza messa in atto per salvare ogni mW, in questa epoca di dispositivi a batterie mobili è importante non solo separare il circuito in domini e sottodomini in termini di PCB, ma anche e soprattutto abilitare e disabilitare i sottosistemi a livello software.
Il contatore Johnson fornisce particolari tipi di sequenze di dati in modo sincrono, essenziali in diverse importanti applicazioni (ad esempio, convertitore D/A, FSM e divisori di clock). Con una maggiore integrazione di dispositivi, i blocchi in un SoC sono formati da più sottosistemi in esecuzione a diverse frequenze, che vanno dai MHz ai GHz.
In questo articolo sarà descritto un metodo di risparmio energetico ottenuto sostituendo più divisori di clock con un sistema programmabile (Johnson Counter) multi-stage con clock gating, che può fornire fattori di divisione di clock che vanno da 8 a qualsiasi valore.

Contatore Johnson (Johnson ring counter)

Il contatore Johnson è un insieme di registri a scorrimento disposti in cascata, con uscita invertita dell’ultimo flip-flop D e reintrodotto come ingresso al primo flip-flop; tutti gli altri flip-flop sono collegati all’uscita del precedente (Fig, 1).

Il vantaggio principale di questo tipo di contatore è che si ha bisogno solo della metà del numero di flip-flop rispetto a un ring counter standard; un contatore Johnson di “n-stage” farà circolare un singolo bit di dati dando una sequenza di 2n stati diversi.

figura2

Fig. 2 – Tabella di verità del contatore Johnson

Invece, un ring counter standard è formato da una sequenza di registri a scorrimento con uscita non invertita in feedback. Tipicamente, un modello composto di un singolo bit 1 viene fatto circolare e lo stato si ripete ogni N cicli di clock se vengono utilizzati N flip-flop. Può essere usato come un contatore di ciclo a N stati.

Nel modello Johnson, l’inversione di Q, prima di essere reimmessa nell’ingresso D, seleziona il sistema stesso a contare in modo differente. Invece di contare attraverso una serie fissa di modelli come il contatore ring standard, ad esempio per un contatore a 4 bit, “0001” (1), “0010” (2), “0100” (4), “1000” (8) e ripetere, il contatore Johnson 4 bit passa blocchi di quattro logico “0” e poi quattro logico “1” producendo così un pattern a 8 bit. Poiché l’uscita invertita Q è collegata all’ingresso D, questo modello 8-bit si ripete continuamente. Ad esempio, “1000”, “1100”, “1110”, “1111”, “0111”, “0011”, “0001”, “0000”. Tipica applicazione dei contatori Johnson è la conversione digitale-analogico, così come modelli di riconoscimento dei bit. In particolare, un contatore Johnson a 3 stadi può essere utilizzato come generatore di 3 onde quadre sfasate di 120°, collegando le uscite in A, B e not-B della figura 1.

Collegando semplici porte logiche come AND o OR alle uscite del flip-flop del circuito, può essere utilizzato per rilevare un numero o valore impostato. Contatori a 2, 3 o 4 stadi possono anche essere utilizzati per dividere la frequenza del segnale di clock, variando le loro connessioni di feedback. Un esempio di contatore commerciale è CD4017 di Texas Instruments, utilizzato nei circuiti elettronici come divisore sincrono.

Problematiche nei circuiti sequenziali

Il più grande svantaggio del circuito mostrato in figura 1 è la non configurabilità per la modifica del fattore di divisione. Un design di N-flip-flop può produrre solo un clock di 2N come periodo.
Inoltre, il design non è a basso consumo e non fornisce un meccanismo per risparmiare potenza dinamica efficiente. Ad esempio, si può vedere nella figura 2 che Q3 cambia la sua uscita solo in impulsi di clock 1 e di impulsi di clock 5. Per tutti altri stati di clock il flip-flop memorizza più e più volte gli stessi dati e questo porta all’inutile dissipazione di potenza nei cicli di clock.

Clock Gating

Clock gating è una tecnica che può essere utilizzata per controllare la potenza dissipata a causa dei segnali di clock. Nei circuiti digitali sincroni, il clock è responsabile di una parte rilevante della dissipazione di potenza (fino al 40%). La tecnica Clock Gating sequenziale ha dimostrato di ridurre la potenza fino al 60% su blocchi di progettazione.

I circuiti sequenziali in un sistema sono considerati la principale fonte di potenza dissipata, in particolare dal clock, che è l’unico segnale che passa per tutto il tempo.

Ogni sistema digitale esegue le proprie operazioni funzionali alla cadenza di uno o più segnali di clock che rappresentano a sua volta un indice di elaborazione del processore. La tecnica Clock Gating consiste nello spegnere i sottosistemi del processore che non lavorano, oppure ridurre la frequenza del clock al valore minimo. Questo si ottiene attivando il clock solo per i blocchi che ne necessitano.

figura3

Fig. 3 – Circuito Johnson ottimizzato in termini di consumo di potenza

Ogni circuito sequenziale può essere migliorato mediante un’efficace tecnica del clock gating. Il contatore Johnson mostrato in figura 1 è ri-progettato (Fig. 3) per sostenere fattori di divisione flessibili, al fine di produrre frequenze di uscita variabili.
Per far ciò, vengono aggiunti più stadi di ritardo, con la combinazione logica necessaria per scegliere il fattore di divisione desiderato.

La figura 3 rappresenta il circuito Johnson migliorato: comprende le fasi di ritardo in cascata B1, B2, B3, B4, un inverter I, un ingresso di clock CLK di riferimento, una logica clock gating (CGL) e una di controllo (Divisore e Subtractor) per selezionare la combinazione di flip-flop desiderata.

Nel circuito si sono impiegati 19 flip-flop D che possono raggiungere qualsiasi fattore di divisione compreso tra 8 e 38. I fattori di divisione richiesti possono essere ulteriormente aumentati, con l’aggiunta di flip-flop e multiplexer.

Come visualizzato in figura 3, al fine di risparmiare energia, l’uscita del circuito di controllo viene alimentata da CGL per abilitare o disabilitare il clock di ritardo in conformità con il fattore di divisione richiesto. Dato un fattore di divisione di 2N, N è il numero di flip flop richiesti per raggiungere la frequenza di clock voluta.

figura4

Fig. 4 – Contatore Johnson con fattore di divisione 10

Un sottrattore è stato inserito per facilitare la selezione del multiplexer e abilitare la logica clock gating.

In base al fattore di divisione fornito dall’utente, il sottrattore fornisce N-4 come uscita e ciascuno dei bit dell’uscita binaria del sottrattore funziona come le corrispondenti linee di selezione per i 4 multiplexer (1°, 2°, 3°, 4°) e consente a CGL di cancellare il clock dei flip-flop inutilizzati.
Questo rende il design programmabile, riducendo il consumo di potenza dinamico del contatore.

Si consideri come esempio un fattore di divisione 10, cioè 2N = 10 (Fig. 4). Poiché un tipico contatore Johnson richiede N flip-flop per un fattore di divisione di 2N, per ottenere un fattore di divisione 10 sono necessari 5 flip-flop. Il subtractor alimenterà le linee di selezione del multiplexer, con rappresentazione binaria 0001; questa controlla non solo la logica clock gating ma seleziona anche il percorso tra shunt e quelli ritardati.

Con il clock gating aggiunto nella progettazione, qualsiasi logica sequenziale formata da registri a scorrimento può essere resa più efficiente. Una raccolta di tali circuiti SoC è in grado di risparmiare energia e aumentare la durata della batteria del dispositivo.

Maurizio Di Paolo Emilio



Contenuti correlati

Scopri le novità scelte per te x