Divizorul de frecvență
Unele aplicații au nevoie de un semnal de ceas cu o frecvență mai mică decât cea a ceasului principal al unui circuit (în cazul de față este vorba de oscilatorul de 50MHz de pe placa de dezvoltare cu FPGA). Frecvența și perioada unui semnal sunt invers proporționale (f = 1/T), astfel înjumătățirea frecvenței implică dublarea perioadei. Un semnal cu frecvența de 50MHz are perioada de 20ns.
După cum s-a văzut în lucrarea 3 de laborator, cel mai simplu divizor de ceas este un numărător. Dar această implementare are limitări. Fiecare bit are o frecvență de două ori mai mică decât bitul precedent, deci există o multime discretă de valori posibile de frecvență pe care acestă implementare le poate oferi. Spre exemplu, pentru ceasul de 50MHz, valorile posibile de ieșire sunt: 25Mhz, 12,5Mhz, 6,25Mhz, 3,125Mhz, 1,5625Mhz, etc. Dacă dorim un semnal de ceas cu frecvența de 15Mhz, această implementare nu o poate oferi.
Pentru a rezolva această cerință, se va utiliza tot un numărător, dar în alt mod. În loc de a izola un bit care să fie folosit pe post de semnal de ceas, numărătorului i se va da o valoare limită de numărare, iar când se ajunge la valoarea respectivă, numărătorul neagă semnalul de ceas de ieșire, conform formelor de undă din figură. Prin urmare, dacă perioada semnalului de ceas al numărătorului este de Tc, atunci numărătorul se va incrementa la fiecare Tc unități de timp (fiecare front de ceas), ceea ce înseamnă că va ajunge la valoarea limită, notată n după n * Tc unități de timp. Întârzierea de un ceas introdusă de registrul de ieșire mai introduce o perioadă de ceas, prin urmare semnalul de ieșire se schimbă după fiecare (n + 1) * Tc unități de timp. Astfel, perioada semnalului de ieșire este dată de schimbarea acestuia de două ori (0 -> 1, 1 -> 0), schimbare care durează cât două numărări complete până la limita n. Deci, perioada semnalului de ieșire este Tn = 2 * (n + 1) * Tc. Trecând în frecvență, fn = fc / (2 * (n + 1)), unde n este valoarea limită dată numărătorului.
Interfața
Interfața divizorului de frecvență va conține următoarele semnale:
- semnalul de ceas și semnalul de reset ca intrări (fiind circuite secvențiale);
- valoarea limită, dată ca intrare;
- semnalul de ceas divizat, dat ca ieșire a circuitului.
== Implementare