Logo Katedry
Strona główna
Katedra Systemów Mikroelektronicznych, Wydział Elektroniki, Telekomunikacji i Informatyki, Politechnika Gdańska Logo Wydziału
English English version

Generator parzystości

Zadanie: Należy zaprojektować układ generujący bit parzystości słowa 8-bitowego. Słowo bitowe podawać poprzez przełączniki SW0-SW7 znajdujące się na płytce prototypowej. Parzystość wyświetlać na wyświetlaczu LED: E - parzysta liczba "jedynek" w 8-bitowym słowie wejściowym (ang. even), O - nieparzysta liczba jedynek (ang. odd).

Widok płytki


Należy wykonać symulację funkcjonalną oraz zweryfikować układ praktycznie poprzez zaprogramowanie płytki testowej. Na płytce prototypowej znajdują się 4 wyświetlacze siedmiosegmentowe o wspólnej anodzie połączone w sposób multipleksowany. Wynik należy wyświetlić na wyświetlaczu AN3. Połączenie multipleksowane jest wykonane poprzez wspólne połączenie wszystkich wyprowadzeń segmentowych tj. połączenie segmentów A w 4 wyświetlaczach, połączenie segmentów B w 4 wyświetlaczach itd. Wspólne anody służą do aktywacji danego znaku. Poszczególne segmenty pojedynczego wyświetlacza uaktywniane są podaniem stanu niskiego na wyprowadzenia A - G. Włączenie poszczególnych wyświetlaczy aktywowane jest stanem niskim na wyprowadzeniach AN0 - AN3 (zanegowana wspólna anoda). Przykładowo, jeśli chcemy wygasić wyświetlacze 0-2 wówczas na wyprowadzenia AN0 - AN2 należy podać '1'. Jeśli równocześnie na wyświetlaczu nr 3 chcemy wyświetlić znak "A", wówczas dodatkowo należy podać następujące sygnały: AN3='0' oraz A='0', B='0', C='0', D='1', E='0', F='0', G='0', DP='1'.

Plik ucf do zadania, płytka Digilent Spartan-3, układ Spartan-3 3S200 FT256-4:
#########################################################################################
# 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
#########################################################################################

#########################################################################################
# Slide switches:
# sw7 Sw6 sw5 sw4 sw3 sw2 sw1 sw0
NET "sw_i<0>" LOC = "F12" ; # active high when in UP position
NET "sw_i<1>" LOC = "G12" ; # active high when in UP position
NET "sw_i<2>" LOC = "H14" ; # active high when in UP position
NET "sw_i<3>" LOC = "H13" ; # active high when in UP position
NET "sw_i<4>" LOC = "J14" ; # active high when in UP position
NET "sw_i<5>" LOC = "J13" ; # active high when in UP position
NET "sw_i<6>" LOC = "K14" ; # active high when in UP position
NET "sw_i<7>" LOC = "K13" ; # active high when in UP position
#########################################################################################

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