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 za pomocą następujących symboli: E - parzysta liczba "jedynek" w 8-bitowym słowie wejściowym (ang. even), O - nieparzysta liczba jedynek (ang. odd).

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 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'.

 

Minimalne wymagania dotyczące symulacji: zainicjalizować przełączniki na OFF, a następnie co 100 ms przełączać kolejne przełączniki na ON aż do momentu, kiedy wszystkie przełączniki będą ON.

 

Fragment głównego pliku projektowego VHDL z deklaracją sygnałów:

 

entity top is

    Port ( sw_i : in STD_LOGIC_VECTOR (7 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):  isp1s.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.