Divisore Programmabile di frequenza





Introduzione

Il progetto presentato in queste pagine e' un divisore di frequenza programmabile. Il progetto, basato sul versatile microcontrollore a 8 bit della famiglia 10F322 prodotto dalla Microchip, prende spunto dal funzionamento del blocco NCO (Numeric Controled Oscilator) in esso presente. Le applicazioni di questo semplice progetto sono tanti: divisore per PLL, generatore di frequenze, etc.

Idea di base

Il punto di partenza e' il funzionamento del blocco NCO (Numeric Controled Oscilator) presente nel micro controllore 10F322 e in particolare la relazione che lega la frequenza di uscita Fout prodotta a partire dalla frequenza di ingresso Fin. La relazione e' la seguente:

Fout= Fin * FWORD / (2^21)

Dove la FWORD e' una parola digitale a 16 bit con cui si definisce la frequenza di uscita del generatore numerico del micro. ( vedi NCO_tutorial in questo sito). I due byte che definiscono la parola FWORD va caricato nei registri NCOxINCH e NCOxINCL del blocco NCO. Il segnale di ingresso al blocco NCO può provenire da diverse sorgenti sia interne che esterne. Se si sceglie come sorgente un segnale esterno di frequenza Fext applicato al pin RA1 del micro opportunamente configurato come ingresso per il blocco NCO, allora Fout e' il valore della frequenza Fext diviso la quantità' N cosi definita:

N= (2^21) / FWORD

allora Fout si può scrivere:

Fout = Fext /N

Quindi operativamente, fissato il valore N, si ricava il valore di FWORD espresso come parola digitale a 16 bit e lo si carica nei registri di incremento. Per esempio, se vogliamo dividere per la quantità N= 100 allora il valore di FWORD e':

FWORD = 2097152  / 100 = 20971d

 che, espresso come parola digitale in formato esadecimale a 16 bit, diventa:

FWORD ( h) = 51EBh

Scrivendo questo valore nei registri NCOxINCH e NCOxINCL del blocco NCO otterremo nel pin di uscita il nostro segnale con frequenza ridotta dal fattore N. Essendo FWORD una parola a 16 bit ( massimo valore 65535) il valore di N può assumere valori continui compresi tra 32 a 2097152.