Zadanie: Celem ćwiczenia jest opracowanie systemu
mikroelektronicznego z procesorem PicoBlaze, w którym część sprzętowa realizuje
multipleksowane wyświetlanie na wyświetlaczu LED. Do zadań oprogramowania
należy odczyt przycisków i w zależności od tego zwiększanie lub zmniejszanie
licznika i wysłanie tej informacji na wyświetlacz LED.
Rys. 1 Proponowany podział projektu na moduły. Na
rysunku nie zaznaczono połączeń pomiędzy modułami.
Dokładny opis działania:
Po resecie wyświetlacz
powinien wyświetlić "0000".
Dla uproszczenia zakładamy,
że regulacji podlega tylko 1 cyfra (najmniej znacząca), wyświetlana w postaci
szesnastkowej.
Naciśnięcie przycisku BTN0
powinno zwiększać o 1 wyświetlaną wartość, np. "0000" →
"0001".
Naciśnięcie przycisku BTN1
powinno zmniejszać o 1 wyświetlaną wartość, np. "000a" →
"0009".
Po przepełnieniu licznik
powinien się przekręcać, tj. "000f" + 1 → "0000",
"0000" - 1 → "000f".
Należy w podstawowym
zakresie zabezpieczyć się przed drganiami przycisków.
Procesor PicoBlaze należy
taktować zegarem systemowym o częstotliwości 100 MHz.
Reset jest podłączony do
przełącznika SW7.
Procesor PicoBlaze posiada
synchroniczne wejście resetu (aby reset zadziałał musi pojawić się zbocze
zegara).
Możliwości usprawnienia
ćwiczenia (dla chętnych – za dodatkowe punkty):
Ustawianie wszystkich cyfr,
a nie tylko jednej (przyciskami BTN3 i BTN2 można zmieniać, która cyfra podlega
regulacji).
Tryb wyświetlania i edycji:
standardowo wyświetlacz tylko wyświetla wprowadzone wartości bez możliwości
ustawiania (tryb wyświetlania), ale po dłuższym naciśnięciu przycisku BTN3 (np.
przez ponad 0.5 sek.) następuje wejście do trybu edycji, gdzie możemy
przyciskami zmieniać wartości cyfr. W trybie edycji aktualnie ustawiana cyfra
powinna migać. Wyjście z trybu edycji - także przez dłuższe naciśnięcie
przycisku BTN3.
W użyciu jest prawa połowa
(4 cyfry) wyświetlacza 7-segmentowego (lewa połowa może także coś wyświetlać –
ignorujemy to).
Wejścia i wyjścia układu:
clk_i – zegar 100MHz,
rst_i – wejście resetu,
button_i – wejście przycisków BTN3-BTN0,
led7_an_o – wyjście sterujące anodami wyświetlaczy LED.
led7_seg_o – wyjście sterujące segmentami wyświetlaczy LED.
Należy zweryfikować układ praktycznie poprzez zaprogramowanie płytki testowej.
Symulacja nie jest obowiązkowa, ale jest zalecana.
Ostrzeżenia ”[Synth
8-3332] Sequential element (....) is unused and will be removed from module
(....)” w tym ćwiczeniu można zignorować.
Strona z
aktualnym kodem VHDL procesora PicoBlaze do pobrania, pełną dokumentacją i
prezentacjami typu screencast (login i hasło takie same jak do dostępu do
laboratorium zdalnego): PicoBlaze
Fragment głównego pliku
projektowego VHDL z deklaracją sygnałów:
entity top is
Port ( clk_i : in STD_LOGIC;
rst_i : in STD_LOGIC;
button_i : in STD_LOGIC_VECTOR (3
downto 0);
led7_an_o : out STD_LOGIC_VECTOR (3
downto 0);
led7_seg_o : out STD_LOGIC_VECTOR (7 downto 0));
end top;
Plik z ograniczeniami projektowymi dla płytki Nexys-A7 (układ FPGA
xc7a100tcsg324-1): isp6.xdc