[FPGA] MAXimator - Licznik
: środa 23 mar 2016, 21:24
Zanim przejdę do omówienia budowy i zasady działania licznika, omówię podstawowy element z którego się je buduje, przerzutnik D.
Przerzutnik typu D (data lub delay) występuje w dwóch wersjach, LATCH oraz FLIP-FLOP. Różnica polega na tym że LATCH jest wyzwalany poziomem a FLIP-FLOP zboczem.
LATCH w momencie podania sygnału wysokiego na wejście CLK (często jest zwane E od enable), przerzutnik jest przeźroczysty, każda zmiana stanów logicznych na wejściu D jest przekazywana na wyjście Q. W momencie zmiany sygnału zegarowego (CLK lub E) na niski, stan przerzutnika zostaje zatrzaśnięty i nie zmienia się w momencie zmiany stanu logicznego na wejściu D.
FLIP-FLOP ustala swój stan tylko w momencie zmiany sygnału zegarowego CLK z niskiego na wysoki, nazywa się to wyzwalanie zboczem narastającym. W tym momencie stan z wejścia D jest przekazywany na wyjście Q.
Obydwa przerzutniki posiadają dodatkowe wyjście QN, na tym wyjściu jest zanegowany stan wyjścia Q, czyli odwrotny, jeśli na Q jest 1, to na QN jest 0 i odwrotnie jak na Q jest 0 to na QN będzie 1.
Poniżej przedstawiam przerzutnik D FLIP-FLOP na bramkach NAND oraz wykres z symulacji.
Do budowy układów nie polecam samodzielnie wykonanych przerzutników z bramek, odpowiednie przerzutniki są w bibliotekach Quartusa dla układów Altery oraz XILINX ISE/VIVADO dla układów Xilinxa.
Poniżej przerzutnik D-FF z biblioteki oraz wykres z symulacji.
Do budowy liczników i rejestrów przesuwnych, stosuje się przerzutniki D typu FLIP-FLOP, czyli tych wyzwalanych zboczem. Należy tylko przerobić taki przerzutnik na dzielnik częstotliwości, Wykonuje to się podłączając do wejścia D wyjście QN, takie sprzężenie zwrotne powoduje że przy każdym narastającym zboczu przerzutnik zmieni stan na przeciwny. Działa to tak, jeśli na wyjśiu Q mamy 1 to na wyjściu QN mamy 0 które jest podawane na wejście D, w momencie pojawienia się zbocza narastającego, stan z wejścia D (w tym momencie 0) jest przekazywany na wyjście Q. Skoro na wyjściu Q jest 0 to na QN będzie 1, ta jedynka będzie przekazywana na wejście D. W momencie pojawienia się kolejnego zbocza narastającego, jedynka z wejścia D będzie przekazana na wyjście Q... itd... itd...
Kilka przerzutników można połączyć w jeden większy n bitowy licznik, każdy przerzutnik odpowiada za jeden bit, poniższy schemat i symulacja 4 bitowego licznika powinna rozwiać wszelkie wątpliwości.
Przerzutnik typu D (data lub delay) występuje w dwóch wersjach, LATCH oraz FLIP-FLOP. Różnica polega na tym że LATCH jest wyzwalany poziomem a FLIP-FLOP zboczem.
LATCH w momencie podania sygnału wysokiego na wejście CLK (często jest zwane E od enable), przerzutnik jest przeźroczysty, każda zmiana stanów logicznych na wejściu D jest przekazywana na wyjście Q. W momencie zmiany sygnału zegarowego (CLK lub E) na niski, stan przerzutnika zostaje zatrzaśnięty i nie zmienia się w momencie zmiany stanu logicznego na wejściu D.
FLIP-FLOP ustala swój stan tylko w momencie zmiany sygnału zegarowego CLK z niskiego na wysoki, nazywa się to wyzwalanie zboczem narastającym. W tym momencie stan z wejścia D jest przekazywany na wyjście Q.
Obydwa przerzutniki posiadają dodatkowe wyjście QN, na tym wyjściu jest zanegowany stan wyjścia Q, czyli odwrotny, jeśli na Q jest 1, to na QN jest 0 i odwrotnie jak na Q jest 0 to na QN będzie 1.
Poniżej przedstawiam przerzutnik D FLIP-FLOP na bramkach NAND oraz wykres z symulacji.
Do budowy układów nie polecam samodzielnie wykonanych przerzutników z bramek, odpowiednie przerzutniki są w bibliotekach Quartusa dla układów Altery oraz XILINX ISE/VIVADO dla układów Xilinxa.
Poniżej przerzutnik D-FF z biblioteki oraz wykres z symulacji.
Do budowy liczników i rejestrów przesuwnych, stosuje się przerzutniki D typu FLIP-FLOP, czyli tych wyzwalanych zboczem. Należy tylko przerobić taki przerzutnik na dzielnik częstotliwości, Wykonuje to się podłączając do wejścia D wyjście QN, takie sprzężenie zwrotne powoduje że przy każdym narastającym zboczu przerzutnik zmieni stan na przeciwny. Działa to tak, jeśli na wyjśiu Q mamy 1 to na wyjściu QN mamy 0 które jest podawane na wejście D, w momencie pojawienia się zbocza narastającego, stan z wejścia D (w tym momencie 0) jest przekazywany na wyjście Q. Skoro na wyjściu Q jest 0 to na QN będzie 1, ta jedynka będzie przekazywana na wejście D. W momencie pojawienia się kolejnego zbocza narastającego, jedynka z wejścia D będzie przekazana na wyjście Q... itd... itd...
Kilka przerzutników można połączyć w jeden większy n bitowy licznik, każdy przerzutnik odpowiada za jeden bit, poniższy schemat i symulacja 4 bitowego licznika powinna rozwiać wszelkie wątpliwości.