Strona główna
|
Katedra Systemów Mikroelektronicznych,
Wydział Elektroniki,
Telekomunikacji i Informatyki, Politechnika Gdańska
|
|
Prosty kalkulator z klawiaturą PS/2
Zadanie: Zaprojektować i wykonać układ prostego
kalkulatora 4-cyfrowych liczb całkowitych z operacjami dodawania i odejmowania.
Układ powinien naśladować działanie tradycyjnego kalkulatora (ale z ograniczeniem
operacji na liczbach 4-cyfrowych).
Argumenty i operatory wprowadzane są poprzez klawiaturę PS/2, dane oraz wynik
wyświetlane są na wyświetlaczu LED płytki prototypowej.
Przykład działania dla operacji 1234+96=1330:
Klawisz (PS2) | Wyświetlacz |
| 0000 |
1 | 0001 |
2 | 0012 |
3 | 0123 |
4 | 1234 |
+ | 1234 |
9 | 0009 |
6 | 0096 |
= | 1330 |
ESC. | 0000 |
- Projekt należy podzielić na kilka bloków.
- Należy zapewnić asynchroniczny reset wszystkich przerzutników.
- W projekcie nie mogą występować zatrzaski (latch).
- 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
#########################################################################################
#########################################################################################
# Seven-segment LED display:
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 "rst_i" LOC = "L14" ; # BTN3 active high
#########################################################################################
#########################################################################################
# PS2 port:
NET "ps2_clk_i" LOC = "M16" ; #clock from PS/2
NET "ps2_data_i" LOC = "M15" ; #PS/2 data
#########################################################################################

Rys.1 Opis podłączeń poszczególnych segmentów wyświetlacza.
Przykład wyświetlenia cyfry '2'
Informacje dodatkowe - odczyt klawiatury