Analisi e Sintesi di un contatore BCD con Quartus II
Dunque un contatore conta i fronti positivi del segnale di clock. Project overview – Contatore binario Un contatore binario è una rete sequenziale sincrona che memorizza un numero binario e lo incrementa a ogni fronte positivo del segnale di clock. Dunque un contatore conta i fronti positivi del segnale di clock. z = y Per sommare 1 a una configurazione di n bit bastano n half adder! + 1 Yn-1 .. 0 Stato presente (n variabili) Yn-1 .. 0 Stato futuro (n variabili) Rn CLK
Project overview – Contatore binario Counter x24 Bit 4 CLOCK 1 ENABLE 1 RESET
Project overview – Contatore decimale Counter x24 Bit BCD to 7SEG 7 4 CLOCK 1 ENABLE 1 RESET
Project overview – Contatore decimale Counter x24 Bit BCD to 7SEG 7 4 CLOCK 1 ENABLE RESET Rete combinatoria di controllo del Reset
Contatore binario x8 (3 bit) Vediamo ora come realizzare un contatore binario da 3 bit. Ci servirà un sommatore da 3 bit, che potrebbe essere realizzato con 3 full adder e 3 Flip Flop D (ognuno memorizza un bit) come da figura. Ma si noti che il CI è posto a 0 e l’operando B è posto a 1. Lo stesso risultato si può ottenere ponendo CI a 1 e B a 0. A questo punto si potrebbe semplificare grandemente la rete combinatoria eliminando l’operatore B e sostituendo i 3 FULL-ADDER con 3 HALF-ADDER CI S A B CO D Q CK COUNT0 COUNT1 COUNT2 1 CI S A B CO D Q CK CI S A B CO D Q CK CO CLK
Segnali di controllo Il contatore binario x8 della slide precedente non può essere controllato: appena acceso, il contatore inizia a contare ininterrottamente. Dunque abbiamo progettato un contatore perfettamente funzionante ma inutilizzabile! Il contatore diventa più interessante se possiamo controllarlo. Ipotizziamo a titolo di esempio i seguenti possibili comandi. I comandi dovranno essere SINCRONI, in modo da assicurare che, se la frequenza di clock è stata ben calcolata, sia soddisfatto il requisito sul tempo di set up minimo dell’ingresso D dei FF rispetto al fronte positivo del Clock: RESET – Il conteggio riparte da zero (qualunque sia il valore di conteggio corrente) ENABLE – Il contatore “conta” cioè incrementa il suo valore in risposta ai fronti positivi del clock solo se il comando di ENABLE è attivo, altrimenti il contatore mantiene il suo valore; ipotizziamo che il reset prevalga sull’enable
Reset Si può generare lo stato futuro del contatore con un mux da 3 bit a due vie controllato dal segnale di reset. Una via va messa a 0: Y[2..0] = 0.RESET + RESET/ . y[2..0] Dall’espressione si vede che il mux da 3 bit si riduce a tre AND a due ingressi Ogni variabile di stato futuro sarà zero se RESET=1, altrimenti sarà uguale all’altro ingresso dell’AND (uscita della rete dei 3 adder) In questa realizzazione il reset ha priorità su tutti gli altri comandi G D Q R3 RESET/