Strona główna
|
Katedra Systemów Mikroelektronicznych,
Wydział Elektroniki,
Telekomunikacji i Informatyki, Politechnika Gdańska
|
|
Sterowanie wyświetlaczem LED z wykorzystaniem procesora Picoblaze
Wstęp
Celem ćwiczenia jest opracowanie systemu mikroelektronicznego z procesorem
Picoblaze, w którym część sprzętowa realizuje dzielenie częstotliwości zegara
oraz 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ł na bloki blokowy. Na rysunku zaznaczono porty podbloków,
które powinny zostać wykorzystane w projekcie, nie zaznaczono natomiast połączeń pomiędzy blokami.
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
oraz kontrolować puszczenie przycisków.
- Procesor Picoblaze należy taktować zegarem o częstotliwości 1 kHz.
- Reset można podłączyć do przełącznika SW7.
- Procesor Picoblaze posiada synchroniczne wejście resetu - reset następuje w przypadku
wysokiego stanu na końcówce reset oraz przy wystąpieniu narastającego zbocza zegara clk.
Możliwości usprawnienia ćwiczenia (dla chętnych)
- 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.
Aktualnie ustawiana cyfra powinna mrugać. Wyjście z trybu edycji - także przez dłuższe naciśnięcie przycisku BTN3.
Plik ucf do zadania, płytka Digilent Spartan-3, układ Spartan-3 3S200 FT256-4:
#########################################################################################
# Clock:
NET "clk_i" LOC = "T9" ; # 50 MHz clock
#########################################################################################
# Reset:
NET "rst_i" LOC = "K13" ; # SW7 active high
#########################################################################################
NET "led7_an_o<3>" LOC = "E13" ; # leftmost digit, active low
NET "led7_an_o<2>" LOC = "F14" ; # active low
NET "led7_an_o<1>" LOC = "G14" ; # active low
NET "led7_an_o<0>" LOC = "d14" ; # rightmost digit, active low
#
NET "led7_seg_o<7>" LOC = "E14" ; # segment 'a', active low
NET "led7_seg_o<6>" LOC = "G13" ; # segment 'b', active low
NET "led7_seg_o<5>" LOC = "N15" ; # segment 'c', active low
NET "led7_seg_o<4>" LOC = "P15" ; # segment 'd', active low
NET "led7_seg_o<3>" LOC = "R16" ; # segment 'e', active low
NET "led7_seg_o<2>" LOC = "F13" ; # segment 'f', active low
NET "led7_seg_o<1>" LOC = "N16" ; # segment 'g', active low
NET "led7_seg_o<0>" LOC = "P16" ; # segment 'dp', active low
#########################################################################################
#########################################################################################
# Push-buttons:
NET "button_i<3>" LOC = "L14" ; # BTN3 active high
NET "button_i<2>" LOC = "L13" ; # BTN2 active high
NET "button_i<1>" LOC = "M14" ; # BTN1 active high
NET "button_i<0>" LOC = "M13" ; # BTN0 active high
#########################################################################################
Informacja dodatkowe