32
De obicei, în documentația de specialitate, pentru a fi mai sugestivă funcționalitatea, este utilizat un
tabel. Astfel, funcționalitatea acestuia este descrisă după cum urmează:
CE R CLK Q
1 0
(^)
Q+1
- 1 0
0 0 Q
- , 0, 1 Q
Table 2: Modul de funcționare a unui numărător
Se poate deduce din Table 2: Modul de funcționare a unui numărător că singurul mod în care
numărătorul numără este atunci când CE = 1, R = 0 și Clk e pe frontul crescător. În schimb dacă R = 1 și Clk e
pe frontul crescător, atunci ieșirea Q va fi resetată la 0, iar în toate celelalte condiții ieșirea Q rămâne
nemodificată.
Implementarea unui numărător cu bistabili se poate vedea în următoarea figură:
Figure 40: Implentarea cu bistabili a unui numărător pe 2 biți
În FPGA există și noțiunea de reset asincron, care nu depinde de frontul pozitiv sau negativ al clockului.
În cazul resetului asincron, indiferent de starea celorlalți pini, numărătorul se va reseta.
! Notă importantă : una dintre cele mai frecvente greșeli în implementarea cu FPGA este divizarea clock-
ului utilizând bistabili. În interiorul FPGA există trasee separate de date și de clock. Intrările și ieșirile
bistabililor sunt conectate la traseele de date, de aceea, în momentul în care se dorește, utilizând un bistabil,
obținerea unui nou clock, acel clock va fi transmis pe un traseu de date. Acest traseu de date este predispus
perturbațiilor și, de aceea, nu este indicat să se utilizeze acest clock obținut la ieșirea unui bistabil. De
asemenea, dacă se vor face astfel de greșeli, Vivado va genera foarte multe mesaje de avertizare (warning
message). Această problemă va fi rezolvată prin utilizarea unui pin de CE (clock enable), astfel, logica din
acea componentă va fi validată doar când CE este 1 și, astfel, poate fi realizată “divizarea” semnalului de
clock.
Un contraexemplu poate fi văzut în figura următoare:
- , 0, 1 Q