Układ kombinacyjny

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 (w trybie zdalnym – poprzez przełączniki wirtualne SW0-SW3 podłączone do płytki 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 znajduje się 8 wyświetlaczy siedmiosegmentowych o wspólnej anodzie połączonych w sposób multipleksowany. W użyciu jest prawa połowa (4 cyfry) wyświetlacza 7-segmentowego (lewa połowa może także coś wyświetlać – ignorujemy to). 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 AN1AN3 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.

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

Plik z ograniczeniami projektowymi dla płytki Nexys-A7 (układ FPGA xc7a100tcsg324-1):  iup2s.xdc 

 

Wersja pliku z ograniczeniami projektowymi przeznaczona dla trybu zdalnego (obsługa przełączników wirtualnych): iup2z.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.