Zadanie: Należy zaprojektować układ kombinacyjny realizujący funkcję logiczną której wyjście określa liczbę jedynek ustawionych na wejściu. Wejście podłączone jest do przełączników SW0-SW3 na płytce prototypowej. Wyjściem jest 7-segmentowy wyświetlacz LED na którym ma się wyświetlać liczba przełączników (SW0-SW3) ustawionych na ON (1). Należy wyświetlać siedmiosegmentowe symbole cyfr: 0, 1, 2, 3 i 4.
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 AN0. 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 1-3 wówczas na wyprowadzenia AN1 – AN3 należy podać '1'. Jeśli równocześnie na wyświetlaczu nr 0 chcemy wyświetlić znak "A", wówczas dodatkowo należy podać następujące sygnały: AN0='0' oraz A='0', B='0', C='0', D='1', E='0', F='0', G='0', DP='1'.
Minimalne wymagania dotyczące symulacji i weryfikacji na płytce: zainicjalizować przełączniki na OFF (0), a następnie (w symulacji co 100 ms) przełączać przełączniki tak, aby wypróbować wszystkie 16 możliwych kombinacji (w dowolnej kolejności).
Fragment głównego pliku projektowego VHDL z deklaracją sygnałów:
entity top is
Port ( sw_i : in STD_LOGIC_VECTOR (3 downto 0);
led7_an_o : out STD_LOGIC_VECTOR (3 downto 0);
led7_seg_o : out STD_LOGIC_VECTOR (7 downto 0));
end top;
W sygnale led7_seg_o segment A jest podłączony do bitu 7, segment B do bitu 6,
itd.
Rys
1. Opis podłączeń poszczególnych segmentów wyświetlacza. Przykład wyświetlenia
cyfry '2'
Plik z ograniczeniami projektowymi dla płytki Basys 3 (układ FPGA xc7a35tcpg236-1): iup2.xdc
Następujące ostrzeżenia oprogramowania Vivado można zignorować w tym ćwiczeniu:
[Power 33-232] No user defined clocks were found in the design! Power estimation will be inaccurate until this is corrected.
[Timing 38-313] There are no user specified timing constraints. Timing constraints are needed for proper timing analysis.
[Place 46-29] place_design is not in timing mode. Skip physical synthesis in placer.