Miernik częstotliwości
Zadanie:
Zaprogramować układ FPGA tak, aby na ekranie VGA wyświetlana
była wartość częstotliwości sygnału dostarczanego
do wejścia fin.
Wyświetlany rezultat ma składać się z dziesięciu znaków,
przy czym co najmniej 6 z nich musi reprezentować cyfry,
a pozostałe mają wyświetlać jednostkę oraz punkt dziesiętny.
Kształty znaków prezentowanych na ekranie należy odczytać
z zewnętrznej pamięci RAM. Każdy ze znaków zapisany jest
na polu o wymiarach 8 x 16 pikseli. Pod pierwszym adresem
przypisanym danemu znakowi znajduje się osiem bitów
odpowiadających górnej linii. Najbardziej znaczący bit
odpowiada punktowi położonemu najbardziej na lewo, itd.
Kolejne linie są umieszczone pod kolejnymi adresami pamięci.
Każdy znak zajmuje łącznie 16 bajtów.
Znak | Adres [hex]
odpowiadający pierwszej linii znaku (górnej) |
0 | 0x00 |
1 | 0x10 |
2 | 0x20 |
3 | 0x30 |
4 | 0x40 |
5 | 0x50 |
6 | 0x60 |
7 | 0x70 |
8 | 0x80 |
9 | 0x90 |
puste | 0xA0 |
punkt dziesiętny | 0xB0 |
H | 0xC0 |
z | 0xD0 |
k | 0xE0 |
M | 0xF0 |
Zadanie należy wykonać etapowo, dodając kolejne
porcje projektu. Przykładowy podział pracy:
- generacja sygnałów synchronizujących hsyncb i
vsyncb oraz
wyświetlenie dowolnego prostego obrazu (pojedyncza linia lub prostokąt),
- wyświetlenie dowolnego ciągu dziesięciu znaków nie
reprezentującego jeszcze wartości mierzonej częstotliwości,
- realizacja pełnego projektu.
Projekt można wzbogacić o następujące funkcje (nie obowiązkowe):
- wygaszanie nieznaczących zer,
- sygnalizacja przepełnienia zakresu pomiarowego,
- automatyczna zmiana zakresu pomiarowego poprzez zmianę czasu bramkowania,
- pomiar oparty o zliczanie impulsów lub pomiar czasu jednego
okresu w zależności od częstotliwości badanego przebiegu
W celu przetestowania projektu należy zaprogramować go na płytce testowej.
Do zaprogramowania należy użyć wygenerowanego pliku *.bit
oraz pliku
zawierającego kształty znaków zad_mier.hex
W pierwszym podejściu jako
sygnał mierzony podłączyć hsyncb (powinno być około 31.5kHz)
lub vsyncb (powinno być 60Hz).
Informacje dodatkowe:
Plik ucf do zadania, płytka XS40, układ XC4010XL PC84:
net clk loc=p13;
net rst loc=p44;
net data<0> loc=p41;
net data<1> loc=p40;
net data<2> loc=p39;
net data<3> loc=p38;
net data<4> loc=p35;
net data<5> loc=p81;
net data<6> loc=p80;
net data<7> loc=p10;
net address<0> loc=p3;
net address<1> loc=p4;
net address<2> loc=p5;
net address<3> loc=p78;
net address<4> loc=p79;
net address<5> loc=p82;
net address<6> loc=p83;
net address<7> loc=p84;
net address<8> loc=p59;
net address<9> loc=p57;
net address<10> loc=p51;
net address<11> loc=p56;
net address<12> loc=p50;
net address<13> loc=p58;
net address<14> loc=p60;
net ceb loc=p65;
net web loc=p62;
net oeb loc=p61;
net rgb<0> loc=p25;
net rgb<1> loc=p26;
net rgb<2> loc=p24;
net rgb<3> loc=p20;
net rgb<4> loc=p23;
net rgb<5> loc=p18;
net hsyncb loc=p19;
net vsyncb loc=p67;
net cpu_rst loc=p36;
net fin loc=p7;