Zadanie: Należy zaprojektować czterobitowy
licznik liczący w kodzie Johnsona.
Wejścia układu:
- przycisk BTNC na płytce prototypowej (środkowy) stanowiący zegar ( nazwa
sygnału - clk_i ),
- przycisk BTNR na płytce prototypowej (prawy) stanowiący reset
asynchroniczny ( nazwa sygnału - rst_i ).
Wyjścia układu:
- dioda świecąca LD0 - bit 0 licznika Johnsona ( nazwa sygnału - led_o(0)
),
- dioda świecąca LD1 - bit 1 licznika Johnsona ( nazwa sygnału - led_o(1)
),
- dioda świecąca LD2 - bit 2 licznika Johnsona ( nazwa sygnału - led_o(2)
),
- dioda świecąca LD3 - bit 3 licznika Johnsona ( nazwa sygnału - led_o(3) ).
W trybie
stacjonarnym zegar generowany jest poprzez naciskanie mechanicznego przycisku i
dlatego mogą wystąpić drgania zestyków, czyli generacja więcej niż jednego
impulsu zegara po pojedynczym naciśnięciu przycisku.
Należy wykonać symulację funkcjonalną oraz zweryfikować układ praktycznie
poprzez zaprogramowanie płytki testowej.
Minimalne wymagania dotyczące symulacji i weryfikacji na płytce: wykonać reset dwa razy: na początku symulacji/weryfikacji i w jej trakcie, ale w taki sposób, aby było widać jego działanie na wyjściu licznika. Symulacja/weryfikacja musi obejmować wszystkie stany licznika. Częstotliwość zegara w symulacji - dowolna.
Fragment głównego pliku projektowego VHDL z deklaracją sygnałów:
entity top is
Port ( clk_i : in STD_LOGIC;
rst_i : in STD_LOGIC;
led_o : out STD_LOGIC_VECTOR (3 downto 0));
end top;
Plik z ograniczeniami
projektowymi dla płytki Basys 3 (układ FPGA xc7a35tcpg236-1): iup4.xdc
Następujące ostrzeżenia oprogramowania Vivado można zignorować w tym ćwiczeniu:
[Power 33-232] No user defined clocks were found in the design! Power estimation will be inaccurate until this is corrected.
[Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis.
[Place 46-29] place_design is not in timing mode. Skip physical synthesis in placer.
[Place 30-574] Poor placement for routing between an IO pin and BUFG.