Zadanie: Należy zaprojektować trzybitowy licznik liczący w
kodzie Graya.
Wejścia układu:
- wirtualny przycisk BTN0 stanowiący zegar ( nazwa sygnału - clk_i ),
- wirtualny przycisk BTN3 stanowiący reset asynchroniczny ( nazwa sygnału
- rst_i ).
Wyjścia układu:
- dioda świecąca LED0 - bit 0 licznika Graya ( nazwa sygnału - led_o(0)
),
- dioda świecąca LED1 - bit 1 licznika Graya ( nazwa sygnału - led_o(1)
),
- dioda świecąca LED2 - bit 2 licznika Graya ( nazwa sygnału - led_o(2)
).
W trybie lokalnym zegar
generowany jest poprzez naciskanie mechanicznego przycisku BTN0 i
dlatego mogą wystąpić drgania zestyków, czyli generacja więcej niż jednego
impulsu zegara po pojedynczym naciśnięciu przycisku. W trybie zdalnym przyciski
wirtualne posiadają emulację drgań zestyków, należy ją wyłączyć.
Należy wykonać symulację funkcjonalną oraz zweryfikować układ praktycznie
poprzez zaprogramowanie płytki testowej.
Minimalne wymagania
dotyczące symulacji: Wykonać reset dwa razy: na początku symulacji
i w jej trakcie, ale w taki sposób, aby było widać jego działanie na wyjściu
licznika. Symulacja 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 (2
downto 0));
end top;
Plik z ograniczeniami projektowymi
dla płytki Nexys-A7 (układ FPGA xc7a100tcsg324-1): isp2.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.