Pierwsze kroki z CPLD (Xilinx CoolRunner II): obsługa przycisków
W powyższym komponencie występuje czterobitowy rejestr przesuwający taktowany odpowiednim sygnałem zegarowym (KClk). Sygnał z przycisku jest doprowadzony do wejścia KeyIn. Stan rejestru jest przetworzony przez odpowiedni zespół kombinacyjny, którego zadaniem jest wykryć dwa wyróżnione stany rejestru przesuwającego: stan samych jedynek oraz samych zer na wyjściu rejestru. Sygnały określające wykrycie jednego z wyróżnionego stanu rejestru przesuwającego są doprowadzonone do jednobitowego zatrzasku, którego wyjście sygnalizuje osiągnięty stan stabilny przycisku.
Rys. 4. Realizacja komponentu przy użyciu elementów logicznych
Schemat blokowy z rysunku 3 można zobrazować schematem pokazanym na rysunku 4. Układ ten zbudowany jest z zespołu 4 przerzutników D połączonych w rejestr przesuwający. Zgodnie z sygnałem taktującym (KClk) rejestr ten wypełni się samymi jedynkami lub zerami logicznymi w zależności od stanu naciśnięcia przycisku. Wystąpienie w rejestrze każdej innej kombinacji zero-jedynkowej oznacza okres drgania styków. Dobierając odpowiednio częstotliwość impulsów taktujących rejestrem przesuwającym wpływamy na czas, w obrębie którego należy spodziewać się osiągnięcia stanu stabilnego (upływ czasu określony przez cztery impulsy taktujące o określonej częstotliwości). Stan rejestru jest przetworzony przez czterowejściową bramkę NAND, której zadaniem jest wykryć na wyjściu rejestru stanu samych jedynek logicznych (odpowiada to zwolnionego przyciskowi z rysunku 1 jeżeli jego sygnał Key jest bezpośrednio doprowadzony do wejścia KeyIn). Zadaniem czterowejściowej bramki OR jest wykrycie na wyjściu rejestru stanu samych zer logicznych (co odpowiada naciśniętemu przyciskowi). Wyjścia obu bramek sterują prostym przerzutnikiem RS, który odtwarza stabilny stan przycisku oraz przedłuża ostatni stabilny stan przycisku w sytuacji gdy jest wykryte zjawisko dzwonienia styków.
Możliwe kombinacje przedstawia tabela:
Wyjście bramki NAND | Wyjście bramki OR | Stan przerzutnika RS |
1 | 0 | Wpisz do przerzutnika RS jedynkę logiczną (Status=1) |
0 | 1 | Wpisz do przerzutnika RS zero logiczne (Status=0) |
1 | 1 | Nie zmieniaj stanu (pamiętaj ostatni stan). |
Należy zauważyć, że stan NAND=0 i OR=0 nigdy nie wystąpi.
Andrzej Pawluczuk