Strona główna
|
Katedra Systemów Mikroelektronicznych,
Wydział Elektroniki,
Telekomunikacji i Informatyki, Politechnika Gdańska
|
|
Prosty pomiar czasu
Zadanie: Układ ma mierzyć czas z dokładnością do
setnych części sekundy. Kolejne naciśnięcia przycisku BTN0 wywołują
następujące działanie:

Rys.1 Działanie stopera po kolejnych
naciśnięciach przycisku.
Czas wyświelany ma być na wyświetlaczu LED w postaci: SS.DD,
gdzie: SS=sekundy, DD=setne części sekundy. Przekroczenie czasu 59.99 sekund
można zasygnalizować wyświetleniem specjalnego
symbolu oznaczającego przepełnienie, np. ("--.--").
Przycisk BTN3 to dodatkowy reset asynchroniczny.
Uwaga: Układ należy zabezpieczyć przed drganiami przycisku (dot. BTN0)! Dobrze jest założyć, że
po naciśnięciu przycisku, styki przycisku mogą drgać przez czas aż do 50 ms.

Rys.2 Przykładowy przebieg napięcia podczas naciskania przycisku.
W układzie należy osadzić, jako component,
dzielnik częstotliwości z poprzedniego ćwiczenia oraz blok sterowania
wyświetlaczem.
Napisać testbench.
Przed implementacją wykonać symulację układu z wykorzystaniem pliku testbench.
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
#########################################################################################
#########################################################################################
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 "start_stop_button_i" LOC = "M13" ; # BTN0 active high
NET "rst_i" LOC = "L14" ; # BTN3 active high
#########################################################################################

Rys. 2 Opis podłączeń poszczególnych segmentów wyświetlacza.
Przykład wyświetlenia cyfry '2'