Licznik w kodzie Graya

Zadanie: Należy zaprojektować trzybitowy licznik liczący w kodzie Graya.

Wejścia układu:
- przycisk BTN0 stanowiący zegar ( nazwa sygnału - clk_i ),
- przycisk BTN3 stanowiący reset asynchroniczny ( nazwa sygnału - rst_i ).

Wyjścia układu:
- dioda świecąca LD0 - bit 0 licznika Graya ( nazwa sygnału - led_o(0) ),
- dioda świecąca LD1 - bit 1 licznika Graya ( nazwa sygnału - led_o(1) ),
- dioda świecąca LD2 - bit 2 licznika Graya ( nazwa sygnału - led_o(2) ).

 

 


 


Rys. 1  Zdjęcie płytki Digilent Spartan 3.

 

Zegar generowany jest poprzez naciskanie mechanicznego przycisku BTN0 i dlatego mogą wystąpić drgania zestyków,
czyli generacja więcej niż jednego zegara po pojedynczym naciśnięciu przycisku.

Należy wykonać symulację funkcjonalną oraz zweryfikować układ praktycznie poprzez zaprogramowanie płytki testowej.



Plik ucf do zadania, płytka Digilent Spartan-3, układ Spartan-3 3S200 FT256-4:


# Push-buttons:
NET "rst_i" LOC = "L14" ; # pressed high BTN3
NET "clk_i" LOC = "M13" ; # pressed high BTN0
NET "clk_i" CLOCK_DEDICATED_ROUTE = FALSE;
# LEDs:
NET "led_o<0>" LOC = "K12" ; # high on
NET "led_o<1>" LOC = "P14" ; # high on
NET "led_o<2>" LOC = "L12" ; # high on
#