Consulting hours

Tuesdays 9:30 - 11:00 at my office (please write to me before coming)

Podstawy Techniki Cyfrowej

laboratorium

Zaliczenie:
Zaliczenie będzie wpisywane na podstawie punktów zdobytych za projekty. Maksymalnie można zdobyć 50 punktów.
(45-50> pkt: 5
(40-45> pkt: 4.5
(35-40> pkt: 4
(30-35> pkt: 3.5
(25-30> pkt: 3

Punktacja na dzień 2015.01.27
Odrabianie zajęć: 20 stycznia, godz. 16:50 w sali 2.6.22.

Możliwość oddawania projektów: 10 lutego, godz. 14:15 w sali 2.6.22.
Ostatnia możliwość oddawania projektów: 20 lutego, godz. 11:00 w sali 2.6.22.

Plan tygodni:

Data Zakres, zagadnienia
2013.09.30 Wprowadzenie. Omówienie sposobu zaliczenia. Zapoznanie się ze środowiskiem Altera Quartus II (v.13.0 SP1). Podstawowe bramki logiczne.
2014.10.07 Zapoznanie się z symulatorem. Programowanie płytki FPGA.
2014.10.14 Tablice Karnaugh, transkoder na bramkach NAND
2014.10.21 Zadanie 1: liczniki asynchroniczne (5pkt, jednoosobowe):
Nalezy zaprojektowac dwa asynchroniczne liczniki modulo n. Pierwszy zbudowany z przerzutników typu D i dowonlych bramek liczacy od 0 do n-1. Drugi zbudowany z przerzutników typu JK i dowonlych bramek liczący analogicznie w dól, czyli od 31 do (32-n). Diody LEDR13-LEDR17 odpowiadaja za wyswietlanie liczby z licznika pierwszego, LEDR0-LEDR4 - z licznika drugiego. SW17 odpowiada za podawanie zegara na oba liczniki jednoczesnie, SW16 - za asynchroniczny reset obu liczników do pozycji wyjściowej. Liczniki powinny zmieniać swój stan co każdy pełny takt zegara, o ile sygnał resetujący nie jest aktywowany.
Wartosc n liczona jest dla kazdego studenta wg wzoru: (numer_indeksu % 13) + 18 (n powinno byc zatem z przedzialu <18-30>).
Dzialanie liczników nalezy przedstawic zarówno w symulatorze jak i na plytce Altery.
Tabele wzbudzeń
2014.10.28 Oddawanie zadania 1
2014.11.04 Zadanie 2: liczniki synchroniczne (10pkt, jednoosobowe):
Należy zaprojektowac dwa synchroniczne liczniki. Pierwszy zbudowany z przerzutników typu D i dowonlych bramek realizujacy kod A danej osoby, drugi zbudowany z przerzutników typu JK i dowonlych bramek realizujacy odpowiedni kod B. Realizacja kodu oznacza wyswietlanie po kolei stanów wystepujacych w danym ciagu, poczawszy od pierwszej liczby z ciagu. Po stanie ostatnim nalezy przejsc do stanu pierwszego i kontynuowac zliczanie. Uklady nalezy zrealizowac na podstawie rozpisanych tabel wzbudzen dla obowiazujacego kodu, osobno dla D i JK (J i K bedace niezaleznymi funkcjami), wraz z minimalizacja funkcji metoda siatek Karnaugh.
Diody LEDR14-LEDR17 odpowiadaja za wyswietlanie liczby z licznika pierwszego, LEDR0-LEDR3 - z licznika drugiego. SW17 odpowiada za podawanie zegara na oba liczniki jednoczesnie, SW16 - za asynchroniczny reset obu liczników do pozycji wyjściowej.
Dzialanie liczników nalezy przedstawic zarówno w symulatorze jak i na plytce Altery. Punktacja: 7pkt za działający licznik, 3pkt za sprawozdanie zawierające poprawnie rozpisane i zminimalizowane tablice Karnaugh.

Kody dla grupy na 8:00
Kody dla grupy na 11:45
Kody dla grupy na 13:30
2014.11.18 Oddawanie zadania 2
2013.11.25 Zadanie 3: wyświetlacz HEX (maksymalnie 10pkt do 2014.12.16, maksymalnie 5pkt za oddanie po terminie, dwuosobowy):

Należy stworzyć układ, który na 8 wyświetlaczach HEX będzie przesuwać wpisaną binarnie cyfrę od 0 do 9. Lista wejść:
- SW17, SW16, SW15, SW14 - switche kodujące binarnie liczbę od 0 do 9 (SW17 ma kodować 8, SW16 - 4, SW15 - 2, SW14 - 1, czyli np. 1000 oznacza 8, 0111 - 7)
- SW0 - jeżeli ma wartość 1 - liczba przesuwa się w prawo, jeżeli 0 to w lewo.
- KEY0 - CLK, zegar. Z każdym taktem 'zegara' cyfra przesuwa się o jedną pozycję.
- SW1 - RESET. Jeżeli ma wartość 1 (górna pozycja) układ wyświetla cyfrę 8 na pierwszym od lewej HEX'ie i nie reaguje na sygnały z innych wejść (po wyłączeniu resetu, układ zaczyna od pozycji zresetowanej)

Do wysyłania sygnałów kodujących liczbę na wyświetlaczu HEX należy użyć pojedynczego transkodera 7447 (BCD-LCD), reszta układu dowolna.

Sposób uzyskania punktów:
- 4pkt za układ działający w pełni wg powyższej specyfikacji (wykątkiem jest sygnał CLK - zamiast KEY0 można użyć innego wejścia),
- kolejny 1pkt jeżeli zmiana kierunku (SW0) nie będzie wpływała na jenoczesną zmianę pozycji wyświetlania liczby,
- kolejne 2pkt za zaprojektowanie i użycie własnego odpowiednika układu 7447 obsługującego zakres 0-F (zamiast 0-9),
- kolejne 3pkt będzie można zdobyć za rozmowę na temat układu (odpowiedź na pytania odnośnie układu) oraz wprowadzenie drobnej modyfikacji w układzie. UWAGA: modyfikacje należy wprowadzić na zajęciach na których oddaje się projekt.

Układ 7447 - tabela prawdy
2014.12.02 Zajęcia odwołane (odrabianie 2015.01.20, godz. 16:50).
2014.12.09 Oddawanie zadania 3
2014.12.16 Wprowadze do VHDL
2014.12.23 Zadanie 4 (5 pkt, dwuosobowy):

- Napis "HELLO" przesuwa się jak baner z częstotliwością 1Hz w lewą stronę na wyświetlaczach HEX. Napis przesuwa się cyklicznie, z tym, że ponownie na wyświetlaczu pojawia się dopiero po całkowitym zniknięciu. (3 pkt)
- Zamiast napisu HELLO przesuwa się 16-bitowa liczba podana aktualnie na SW 0-15 (+1 pkt)
- KEY0-2 - ustawienie częstotliwości przesuwania liczby, odpowiednio: 0.5Hz, 1Hz i 2Hz dla KEY0, KEY1 i KEY2 (+1 pkt)

Do oddania do 20.01, poźniej zdobyte punkty dzielą się przez 2 (czyli maksymalnie 2.5 punktu).

Zadanie 5 (10 pkt, dwuosobowy):

(7pkt) Stwórz grę 2-osobową badającą refleks graczy. Zaprojektowany układ ma po czasie mniej więcej 5 sekund od ustawienia przełącznika SW17 w stan 1, zapalić wszystkie czerwone diody. Gracz który pierwszy zareaguje na zapalone diody wygrywa - gracz który pierwszy wcisnął odpowiedni przycisk (KEY3 dla gracza A, KEY0 dla gracza B). W przypadku gdy któryś z graczy wcisnął przycisk zanim zapaliły się diody wygrywa gracz przeciwny. Zwycięstwo gracza A powinno być sygnalizowane zapaleniem diody LEDG7, natomiast gracza B diodą LEDG0. Gra powinna się zresetować po przełączeniu SW17 w stan 0.

(+3pkt) Rozbudować zadanie o moduł zliczający i wyświetlający punkty - gracze grają do 5 zwycięstw. Punkty gracza A powinny znajdować się na pierwszym wyświetlaczu HEX (licząc od lewej strony), natomiast punkty gracza B powinny znajdować się na ostatnim wyświetlaczu HEX. Po 5 zwycięstwach wynik powinien się już nie móc zmienić. Dopiero przełączenie przyciska SW0 powinno restartować grę do stanu początkowego.

Do oddania do 27.01, poźniej zdobyte punkty dzielą się przez 2 (czyli maksymalnie 5 pkt).
2015.01.13 Zadanie 6 (10 pkt, zadanie jednoosobowe, nieobowiązkowe - na "5.0"):

Należy zaprojektować za pomocą języka VHDL zegarek 24-godzinny (HH.MM.SS). Wymagania:
- godzina powinna być wyświetlana na wyświetlaczu 7-segmentowym,
- czas ma być nastawiany za pomocą przycisków KEY poprzez zwiększenie/zmniejszenie wartości,
- należy skorzystać co najmniej z jedengo komponentu (na przykład do wyświetlania cyfr na wyświetlaczu).

Termin oddania: najlepiej do 27.01. Później nie obniżam oceny, ale trzeba sie liczyć z moja ograniczona dostępnością.
2014.01.20 Oddawanie zadania 4.
2014.01.27 Oddawanie zadania 5 i 6.

Przydatne pliki/informacje:
Tutorial - rysowanie układów Ćwiczenie i układ omawiany na pierwszych zajęciach + podstawy symulatora
Tutorial - symulator
Sterownik USB - strona
Sterownik USB - instrukcje
Plik DE2_pin_assignments.csv
Plik DE2_70_pin_assignments.csv

Zalecana wersja oprogramowania: Quartus II 13.0 SP1 (jest to najnowsza wersja wspierająca układy Cyclone II)

Windows 7 64bit: w celu poprawnego programowania płytki Altera wymagana jest instalacja 64-bitowego jtagserver: 11.0_programmer_windows.exe

Linux: "Error (209053): Unexpected error in JTAG server -- error code 89" /etc/udev/rules.d/98-altera.rules

VHDL (Very high speed integrated circuits Hardware Description Language):
Wprowadzenie do VHDL - jasno wytłumaczone podstawy VHDL
VHDL-Cookbook (pdf) - rozsądna lektura na temat VHDL