lab vhdl id 258689 Nieznany

background image

Ćwiczenie laboratoryjne 1

Celem pierwszego ćwiczenia jest poznanie jak można sterować diodami i wyświetlaczami 7-
segmentowymi. W ćwiczeniu jako wejścia użyte zostaną przełączniki SW, wyjścia układu zostaną
podłączone do diód LED oraz do wyświetlaczy siedmiosegmentowych.

Część 1
Zestaw DE2 zawiera 18 przełączników dwustanowych, oznaczonych SW 17-0. Wykorzystane
zostaną one jako wejścia układu. Wyjściami układu będą diody LED, oznaczone LEDR 17-0.
Przykład napisany w VHDL bezpośrednio łączy przełączniki SW z diodami LED, świecące diody
pokażą wartość binarną ustawioną przełącznikami SW.

LIBRARY ieee;
USE ieee.std_logic_1164.all;
--prosty układ łączący przełączniki SW z czerwonymi diodami LEDR
ENTITY przyklad1 IS
PORT(SW

:IN STD_LOGIC_VECTOR(17 downto 0);

LEDR :OUT STD_LOGIC_VECTOR(17 downto 0));

END przyklad1;
ARCHITECTURE Behavior OF przyklad1 IS
BEGIN

LEDR<=SW;

END Behavior;

Przed zaprogramowaniem układu FPGA konieczne jest zapoznanie się z dokumentacją zestawu
DE2 (User Manual). Przełączniki i diody są podłączone do określonych pinów programowanego
układu. Przykładowo SW0 jest podłączony do pinu N25, dioda LEDR0 do AE23.

Przebieg ćwiczenia:

1. Stwórz nowy projekt w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Otwórz nowy plik w edytorze tekstowym, przepisz kod VHDL z rysunku 1 i zapisz plik w

swoim projekcie.

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu. Skompiluj projekt.
4. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW.

Część 2

Rysunek 2a pokazuje prosty multiplekser 2 na 1 z wejściem selekcyjnym (adresowym) s. Jeżeli s=0
wyjście m zostanie połączone z wejściem x, dla s=1 m=y. Rys. 2b to tablica prawdy multipleksera,
rys.2c przedstawia stosowany najczęściej symbol.

background image

Multiplekser możemy opisać w języku VHDL następującym wyrażeniem:

m<=(NOT (s) AND x) or (s AND y);

Rys.3 przedstawia realizację przy pomocy multiplekserów o jednym wejściu adresowym
przesyłania na wyjście jednej z dwóch liczb ośmiobitowych (X,Y dwie liczby ośmiobitowe). Dla
s=0 na wyjściach m0 do m7 pojawi się liczba X(x0,x1,x2..x7). Obok symbol multipleksera „2 na
1”, który przełącza dwie 8-bitowe magistrale X,Y.

Rys. 3. Realizacja przy pomocy multiplekserów o jednym wejściu adresowym przesyłania

na wyjście jednej z dwóch liczb ośmiobitowych i symbol multipleksera „2 na 1”,
który przełącza dwie 8-bitowe magistrale X,Y.

Przebieg ćwiczenia:

1. Stwórz nowy projekt w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Opisz w VHDL multiplekser „2 na 1”, który przełącza dwie 8-bitowe magistrale X,Y.

Przełącznik SW17 zestawu DE2 użyj jako wejście adresowe s, przełącznikami SW7-0
wprowadzać będziemy X, przełącznikami SW15-8 ustawimy Y. Stany ustawiane
przełącznikami SW pokazujemy na diodach LEDR (diody czerwone), wyjścia M
podłączymy do diód zielonych LEDG7-0.

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu.
4. Skompiluj projekt.
5. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW i obserwując diody.

Część 3
Rys.4a przedstawia realizację przesyłania stanu jednego z pięciu wejść (u,v,w,x,y) na wyjście m
przy pomocy multiplekserów o jednym wejściu adresowym sterowanych trzema różnymi sygnałami
adresowymi. Rysunki kolejne przedstawiają tablicę prawdy układu, symbol układu multipleksera „5
na1”. Rys.5 to multiplekser „5 na 1” przełączający pięć 3-bitowych magistrali U,V,W,X,Y na

0

1

0

1

s

x7

y7

x6

y6

0

1

0

1

y0

x0

m7

m6

m0

Y

8

X

8

M

8

s

background image

3_bitowe wyjście M.

S2 S1 S0

m

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

u
v

w

x
y
y
y
y

Rysunek 4. Multiplekser 5 na 1-budowa, tablica prawdy i symbol multipleksera

Rys. 5. Multiplekser „5 na 1” przełączający 3-bitowe magistrale U,V, W, X, Y na 3-bitowe wyjście
M

Wykonaj następujące czynności w celu zaimplementowania 3-bitowego multipleksera:

1. Stwórz nowy projekt w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Opisz w VHDL 3-bitowy multiplekser „5 na 1”, który przełącza 3-bitowe magistrale

U,V,W,X,Y. Przełączniki SW17-15 zestawu DE2 użyjemy jako wejście adresowe S,

0

1

0

1

s2

s0

s1

u

v

w

x

y

m

0

1

0

1

000

001

010

011

100

s2
s1
s0

u

v
w

x

y

y

000

001

010

011

100

3

s2
s1
s0

U

V
W

X

Y

3

3

3
3

3

M

background image

przełącznikami SW14-0 wprowadzać będziemy 3-bitowe liczby U,V,W,X,Y. Stany
ustawiane przełącznikami SW pokazujemy na diodach LEDR (diody czerwone), wyjścia M
podłączymy do diód zielonych LEDG2-0.

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu.
4. Skompiluj projekt.
5. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW i obserwując diody.

Część 4
Rysunek nr 6 przedstawia dekoder, który steruje wyświetlaczem 7-segmentowym o wspólnej
anodzie (segmanty zapalają się przy logicznym stanie 0) . Dekoder sterowany jest sygnałami s0, s1,
s2. Zadaniem układu jest wyświetlenie na wyświetlaczu kolejno czterech liter H, A, L, O zgodnie z
tabelą prawdy-tab.1. Segmenty wyświetlacza oznaczamy kolejno cyframi 0, 1, 2, 3, 4, 5, 6.

Rysunek 6. 7-segmentowy dekoder sterujący wyświetlaczem siedmiosegmentowym.

S2 S1 S0

Wyświetlane

litery

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
0 0 0

H

E
L

O

Tabela 1. Kody wyświetlanych liter

Wykonaj następujące czynności w celu zaimplementowania dekodera do sterowania wskażnikiem:

1. Stwórz nowy projekt w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Opisz w VHDL 3-bitowy dekoder, który steruje wyświetlaczem 7-segmentowym. Wejścia

sterujące s2, s1, s0 podłącz do przełączników SW2-0. Wyjścia dekodera podłącz do
wyświetlacza HEX0 zestawu. Deklaracja wyjścia układu powinna być następująca:

HEX0: OUT STD_LOGIC_VECTOR(0 TO6);

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu.
4. Skompiluj projekt.

0

0

0

7-segmentow y

dekoder

3

6

0

4

2

5

1

s0

s1

s2

background image

5. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW i obserwując wyświetlacz.

Część 5

Układ z rys.7 pozwala na wyświetlenie 5 różnych znaków na wyświetlaczu 7-segmentowym. Kody
znaków ustawiamy przy pomocy przełączników SW14-0, o kolejności ich wyświetlania decyduje
kod wprowadzany przełącznikami SW17-15. Znaki do wyświetlenia to H, E, L, L, O. Litery
powinny przesuwać się na pięciu wyświetlaczach zgodnie z tabelą Tab.2.

Rysunek 7. Układ do wyświetlania pięciu znaków na wyświetlaczu 7-segmentowym

Kod VHDL do układu z rys.7.

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY hello IS

PORT(SW

:IN STD_LOGIC_VECTOR(17 DOWNTO 0);

HEX0 :OUT STD_LOGIC_VECTOR(0 TO 6));

END hello;

ARCHITECTURE Behavior OF hello IS

COMPONENT mux_3bit_5to1

PORT(S,U,V,W,X,Y :IN STD_LOGIC_VECTOR(2 DOWNTO );

M

:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));

END COMPONENT;

COMPONENT wys_7seg

PORT(s

:IN STD_LOGIC_VECTOR(2 DOWNTO );

wyj

:OUT STD_LOGIC_VECTOR(0 TO 6));

END COMPONENT;
SIGNAL M: STD_LOGIC_VECTOR(2 DOWNTO );
BEGIN

M0:mux_3bit_5to1 PORT MAP(SW(17 DOWNTO 15),SW(14 DOWNTO 12),SW(11

DOWNTO 9),SW(8 DOWNTO 6),SW(5 DOWNTO 3),SW(2 DOWNTO 0),M);

000

001

010

011

100

7-segmentow y

dekoder

3

SW17
SW16
SW15

SW14-12

SW11-9
SW8-6

SW5-3

SW2-0

3

6

0

4

2

5

1

7

3

3

3
3

3

background image

H0:wys_7seg PORT MAP(M,HEX0);

END Behavior;

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY mux_3bit_5to1 IS

PORT(S,U,V,W,X,Y :IN STD_LOGIC_VECTOR(2 DOWNTO );

M

:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));

END mux_3bit_5to1;

ARCHITECTURE Behavior OF mux_3bit_5to1 IS

--kod do wprowadzenia
END Behavior;

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY wys_7seg IS

PORT(s

:IN STD_LOGIC_VECTOR(2 DOWNTO );

wyj

:OUT STD_LOGIC_VECTOR(0 TO 6));

END wys_7seg;

ARCHITECTURE Behavior OF wys_7seg IS

--kod do wprowadzenia
END Behavior;

Opisany powyżej układ rozbuduj do układu sterującego pięcioma wyświetlaczami 7-
segmentowymi. Na wyświetlaczch powinny przesuwać się litery zgodnie z tabelą 2.

SW17 SW16 SW15

Wyświetlane litery

0 0 0

H E L L O

0 0 1

E L L O H

0 1 0

L L O H E

0 1 1

L O H E L

1 0 0

O H E L L

Tabela 2. Przesuwanie słowa HELLO na pięciu wyświetlaczach.

Wykonaj następujące czynności w celu zaimplementowania układu do sterowania 5
wyświetlaczami:

1. Stwórz nowy projekt w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Opisz w VHDL układ do wyświetlania przesuwających się na pięciu wyświetlaczach liter H,

E, L, L, O. Przełaczniki SW17-15 podłączymy do wejść adresowych pięciu 3-bitowch
multiplekserów. Przełączniki SW14-0 podłączyć do 3-bitowych wejść multiplekserów tak

background image

aby uzyskać sterowanie zgodnie z tabelą tab.2. Podłączyć wyjścia multiplekserów do wejść
dekoderów sterujących wyświetlaczami HEX4, HEX3, HEX2, HEX1, HEX0.

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu.
4. Skompiluj projekt.
5. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW i obserwując wyświetlacze.

Część 6
Rozbudowując układ z poprzedniego punktu zrealizować projekt przesuwający w lewo
pięcioliterowe słowo HELLO na ośmiu wyświetlaczach siedmiosegmentowych. Sterowanie
przesuwaniem realizujemy przy pomocy przełączników SW17-15. Słowo przesuwać ma się
zgodnie z tabelą 3.

SW17 SW16 SW15

Wyświetlane litery

0 0 0

H E L L O

0 0 1

H E L L O

0 1 0

H E L L O

0 1 1

H E L L O

1 0 0

E L L O H

1 0 1

L L O H E

1 1 0

L O H E L

1 1 1

O H E L L

Tabela 3. Przesuwanie słowa HELLO na ośmiu wyświetlaczach.

Wykonaj następujące czynności w celu zaimplementowania układu do sterowania 8
wyświetlaczami:

1. Stwórz nowy projekt w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Opisz w VHDL układ do wyświetlania przesuwających się na pięciu wyświetlaczach liter H,

E, L, L, O. Przełaczniki SW17-15 podłączymy do wejść adresowych pięciu 3-bitowch
multiplekserów. Przełączniki SW14-0 podłączyć do 3-bitowych wejść multiplekserów tak
aby uzyskać sterowanie zgodnie z Tabelą 3. Podłączyć wyjścia 8 multiplekserów do wejść 8
dekoderów sterujących wyświetlaczami HEX7, HEX6, HEX5, HEX4, HEX3, HEX2,
HEX1, HEX0.

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu.
4. Skompiluj projekt.
5. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW i obserwując wyświetlacze.

Część 7.
Zadania do zrealizowania na zajęciach
Zad.1.
Projekt układu realizującego funkcję logiczną zadaną tablicą prawdy. Numer indeksu zamieniony
na liczbę binarną określa wariant realizowany przez studenta-decyduje o bramkach, z których
realizowany jest układ oraz określa tablicę prawdy układu.
Zadania do zrealizowania określają następujące tabele:

background image

tabela 4.

tabela 5.

X3 X2 X1 X0 Y

b7 b6 b5

elementy

0

0

0

0

0

0

0

0

3NAND-3AND

0

0

0

1 b0

0

0

1

MUX3

0

0

1

0

1

0

1

0

MUX4

0

0

1

1 b2

0

1

1

2NOR-4AND

0

1

0

0

1

1

0

0

2NAND-2OR

0

1

0

1 b3

1

0

1

2NAND-2NOR

0

1

1

0

0

1

1

0

MUX2

0

1

1

1

0

1

1

1

3NAND-3AND

1

0

0

0 b1

1

0

0

1

1

1

0

1

0

0

1

0

1

1 b0

1

1

0

0

0

1

1

0

1

1

1

1

1

0

1

1

1

1

1 b4

Tabela 4 to tablica prawdy układu, tabela 5 określa z jakich elementów ma być zrealizowany układ.
Objaśnienia do tabel:
MUX2-multiplekser o dwóch wejściach adresowych,
MUX3-multiplekser o trzech wejściach adresowych,
MUX4-multiplekser o tczterech wejściach adresowych,
2AND-dwuwejściowa bramka AND,
3NAND-bramka NAND o trzech wejściach,
b7, b6, b5, b4, b3, b2, b1, b0-kolejne bity numeru indeksu zamienionego na liczbę binarną.

Przykładowy projekt układu
Numer indeksu binarnie: 11111111;
Zgodnie z tabelą 5 układ będzie realizowany z trójwejściowych bramek NAND i trójwejściowych
bramek AND. Funkcja logiczna realizowana w układzie ma postać:

f(x3,x2,x1,x0)= x3'x2'x1+x1'x0+x3'x2x1'+x3x2x1+x3x2'x1'+x3x1x0
Schemat układu
Kod układu w VHDL

Zad.2.
Projektowanie transkoderów
Transkoder ma być zaprojektowany jako układ kombinacyjny. Sygnałem wejściowym
projektowanych transkoderów jest liczba czterobitowa wprowadzana z przełączników SW3-0.
Sygnał wyjściowy transkodera to ciąg binarny w kodzie określonym realizowanym wariantem. Trzy
młodsze bity decydują o elementach z jakich będzie wykonany transkoder, trzy starsze bity
określają kod wyjściowy. Wprowadzana liczba ma być pokazana dziesiętnie na wyświetlaczach
HEX1, HEX0, ciąg wyjściowy pokazujemy na diodach świecących.

b5

b4

b3

Kod wyjściowy

b2 b1 b0

elementy

background image

0

0

0

BCD 8421

0

0

0

MUX2

0

0

1

BCD 2421(Aikena)

0

0

1

MUX3

0

1

0

BCD 5211

0

1

0

MUX4

0

1

1

BCD 7421

0

1

1

NAND

1

0

0

Greya

1

0

0

NOR

1

0

1

84-2-1

1

0

1

MUX3

1

1

0

2z5

1

1

0

MUX2

1

1

1

Wattsa

1

1

1

MUX4

Tabela 6.

Tabela 7.

Przykładowy projekt układu zamieniającego czterobitową liczbę binarną na kod Johnsona. Układ
zrealizowany został na multiplekserach o trzech wejściach adresowych.

Tabela prawdy układu:

x3 x2 x1 x0

Kod Johnsona

0 0

0

0

00000

0 0

0

1

00001

0 0

1

0

00011

0 0

1

1

00111

0 1

0

0

01111

0 1

0

1

11111

0 1

1

0

11110

0 1

1

1

11100

1 0

0

0

11000

1 0

0

1

10000

Tabela 8.

Schemat układu
Kod układu w VHDL

Zad. 3.
Obsługa wyświetlacza 7-segmentowego
Zaprojektować układ sterujący czterema wyświetlaczami 7-segmentowymi. Na wyświetlaczach
mają się wyświetlać wyrazy czteroliterowe. Układ może być sterowany z licznika czterobitowego.
Napis ma się przesuwać w lewo lub prawo. Zadanie do wykonania określa tabela 9.

b3 b2 b1

b0

napis

b4

Kierunek przesuwania

0

0

0

0

POLE

0

Lewo

0

0

0

1

HELA

1

Prawo

0

0

1

0

CELA

0

0

1

1

bELA

0

1

0

0

dOLA

0

1

0

1

COLA

0

1

1

0

FALA

0

1

1

1

OLAF

background image

1

0

0

0

dALI

1

0

0

1

CALI

1

0

1

0

PALI

1

0

1

1

HALO

1

1

0

0

SOLO

1

1

0

1

SOLI

1

1

1

0

LUbI

1

1

1

1

LUFA

Tabela 9.

Przykładowy projekt układu wyświetlającego słowo LUbA przesuwane na czterech
wyświetlaczach w LEWO.
Schemat układu
Kod układu w VHDL

Ćwiczenie laboratoryjne 2
Celem tego ćwiczenia jest zaprojektowanie układu do konwersji liczby binarnej na liczbę BCD oraz
realizacja układu sumującego dwie liczby BCD.
Część 1
Z zagadnieniem przetwarzania kodu dwójkowego (BIN) na kod dwójkowo-dziesiętny i odwrotnie
mamy do czynienia przy wprowadzaniu i wyprowadzaniu informacji z urządzeń cyfrowych. Kod
wewnętrzny układów cyfrowych to kod dwójkowy, natomiast dla człowieka bardziej czytelnym jest
kod dziesiętny. Ponieważ istnieje wiele algorytmów konwersji BIN/BCD i BCD/BIN oraz
możliwości realizacji tych samych algorytmów różnymi układami temat ten jest realizowany
osobno.
Schemat funkcjonalny układu znajduje się na rys. 8. Zadaniem komparatora jest wykrycie czy
liczba V jest większa od 9. Układ A to układ korekcji, który do trzech młodszych bitów bitów (dla
liczb większych od 9) dodaje 110. Wynik dodawania pojawia się na wjściu multiplekserów tylko
dla liczb większych od 9 (z=1). Układ B to układ sterowania wyświetlaczem 7-segmentowym.
Wyświetlacz d1 wyświetla liczbę dziesiątek. 7-segmentowy dekoder steruje wyświetlaczem d0,
który wyświetla jedności.
Należy zaprojektować układ do konwersji 4-bitowego numeru V=v3v2v1v0 na dwie cyfry
dziesiętne D=d1d0 zgodnie z tablicą 10.

Wartość binarna

Wartość dziesiętna

0 0 0 0

0 0

0 0 0 1

0 1

0 0 1 0

0 2

0 0 1 1

0 3

0 1 0 0

0 4

0 1 0 1

0 5

0 1 1 0

0 6

0 1 1 1

0 7

1 0 0 0

0 8

1 0 0 1

0 9

1 0 1 0

1 0

background image

1 0 1 1

1 1

1 1 0 0

1 2

1 1 0 1

1 3

1 1 1 0

1 4

1 1 1 1

1 5

Tabela 10. Tabela konwersji BIN/BCD

Rysunek 8. Schemat funkcjonalny układu do konwersji liczby binarnej na liczbę BCD.

Wykonaj następujące czynności w celu zaimplementowania układu konwersji:

1. Stwórz nowy projekt w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Opisz w VHDL układ komparatora, układ multipleksera, dekoder 7-segmentowy, układ

sterowania wyświetlaczem B oraz układ korekcji A. Przełącznikami SW3-0 będzie
wprowadzany liczba binarna V. Wyświetlacze HEX1, HEX0 będą pokazywały odpowiednio
d1 i d0.

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu.
4. Skompiluj projekt.
5. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW i obserwując wyświetlacze.

Część 2
Rysunek 9 przedstawia sumator pełny, jego symbol i tablicę prawdy sumatora. Sumator pozwala na

Układ B

3

6

0

4

2

5

1

7

7-segmentow y

dekoder

3

6

0

4

2

5

1

7

Komparator

Układ A

0

1

0

1

0

1

0

1

m3

m2

m1

m0

0

v0

v1

v2

v3

z

background image

dodawanie liczb jednobitowych. W celu wykonania operacji dodawania na liczbach wielobitowych
zbudować należy sumator kaskadowy rysunek 10.

Wykonaj następujące czynności w celu zaimplementowania układu sumatora:

1. Stwórz nowy projekt w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Opisz w VHDL układ sumatora czterobitowego wykorzystując jako komponent pełny

sumator jednobitowy. Przełącznikami SW7-4 oraz SW3-0 wprowadzamy odpowiednio
liczby A, B. SW8 podłączyć do wejścia przeniesienia cin. Przełączniki SW podłączyć do
diód LEDR, wyjścia układu podłączyć do diód LEDG.

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu.
4. Skompiluj projekt.
5. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW i obserwując diody.

Część 3.

background image

Ćwiczenie laboratoryjne 3

Celem ćwiczenia jest poznanie zasad funkcjonowania przerzutników, rejestrów i liczników różnych
typów i sposobów ich projektowania.

Część I
Projektowanie przerzutników
W układach cyfrowych przerzutniki wykorzystywane są jako elementy zapamiętujące informację.
Przerzutnik bistabilny może znajdować się w jednym z dwóch stanów. Klasyfikacja określająca
sposób funkcjonowania przerzutników określa stany w jakich znajdują się wejścia i wyjścia
przerzutnika w dwóch kolejnych taktach ts i ts+1. W praktyce wykorzystujemy następujące typy
przerzutników: RS, D, JK, T, DV, E. Sposób funkcjonowania przerzutnika może być zadany tabelą
przełączeń.
Zadania do wykonania

1. Zapoznać się z tabelami przełączeń podstawowych typów przerzutników.
2. Wykorzystując bramki NAND zbudować przerzutnik MS (typ przerzutnika określa

prowadzący).

3. W języku VHDL opisać strukturalnie dany przerzutnik.
4. Opisać powyższe przerzutniki funkcjonalnie.
5. Sprawdzić działanie przerzutników w symulacji.

Część II

Projektowanie rejestrów

Celem ćwiczenia jest zapoznanie studentów z różnymi typami rejestrów , metodami ich
projektowania. Zapoznanie się z instrukcjami VHDL opisującymi struktury regularne. Do realizacji
ćwiczenia niezbędna jest znajomość teorii dotyczącej budowy i działania rejestrów. Operacje
realizowane w projektowanych rejestrach:

- Y1 - ustawienie stanu początkowego rejestru (np. zerowanie)
- Y2 - zapis informacji do rejestru
- Y3 - iloczyn logiczny dwóch słów
- Y4 - suma logiczna dwóch słów
- Y5 - iloczyn logiczny dwóch słów
- Y6 - przesunięcie informacji w rejestrze ( Y6l - w lewo , Y6p2 - w prawo o dwa bity),
- Y7 – inwertowanie zawartości rejestru

Dane do rejestru wprowadzamy z przełączników , wyjście rejestru na diody

Realizacja ćwiczenia polega na :

- przygotowanie elementów składowych (przerzutniki , zaprojektowanie rejestru

jednobitowego – opisać go funkcjonalnie i strukturalnie)

- zaprojektowanie rejestru jednobitowego (opisać go funkcjonalnie i strukturalnie )
- na podstawie rejestru 1-bitowego zaprojektować rejestr n-bitowy zgodnie z tabelą

wariantów

- sprawdzenie poprawności działania rejestrów za pomocą symulatora
- przydzielenie pinów wejściowych i wyjściowych
- zaprogramowanie układu
- prezentacja działającego układu

background image

Tabela wariantów realizowanych przez studentów

B3

B1

B0

długość rejestru i

typ przerzutnika

B2

B5

B4

operacje

0

0

0

6 T

0

0

0

y2 y3 y4 y6l

0

0

1

8 JK

0

0

1

y2 y5 y4 y6p2

0

1

0

7 D

0

1

0

y2 y3 y5 y6l2

0

1

1

6 RS

0

1

1

y2 y5 y1 y6p

1

0

0

7 T

1

0

0

y2 y1 y4 y6p2

1

0

1

8 JK

1

0

1

y2 y3 y4 y6p

1

1

0

9 D

1

1

0

y2 y3 y5 y6l

1

1

1

9 JK

1

1

1

y2 y4 y5 y6l2

Przykład

Rejestr 8-bitowy-zerowanie,zapis,suma modulo2
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity rej8 is

port (

X:in STD_logic_vector(7 downto 0);
clk:in std_logic;
Y1:in std_logic;
Y2:in std_logic;
Y5:in std_logic;
out1:out std_logic_vector(7 downto 0));

end rej8;
architecture rej8b of rej8 is
component tr is

-- komponent rejestr jednobitowy

port

(

Y1:in std_logic;
Y2:in std_logic;
Y5:in std_logic;
clk:in std_logic;
X:in std_logic;
out1:out std_logic);

end component tr;
begin

b3

b1

b0

typ

przurzutnika

b2

b5

operacje

b4

b6

długośc

rejestrów

0

0

0

T

0

0

y2-y4-y3

0

0

7

0

0

1

JK

0

1

y2-y3-y5

0

1

6

0

1

0

D

1

0

y2-y5-y1

1

0

5

0

1

1

RS

1

1

y2-y4-y5

1

1

8

1

0

0

JK

0

0

y2-y4-y3

0

0

7

1

0

1

T

0

1

y2-y3-y5

0

1

6

1

1

0

RS

1

0

y2-y5-y1

1

0

5

1

1

1

D

1

1

y2-y4-y5

1

1

8

background image

G_1:for i in 0 to 7 generate

rej1:tr port map(Y1,Y2,Y5,clk,out1=>out1(i),X=>X(i));

end generate G_1;
end rej8b;

Komponenty rejestru

rejestr jednobitowy

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use work.all;
entity tr is

port

(

X:in STD_logic;
clk:in std_logic;
Y1:in std_logic;
Y2:in std_logic;
Y5:in std_logic;
out1:out std_logic);

end tr;
architecture rej of tr is
component przerzutnikT is -- komponenty rejestru 1-bitowego/*

port(

T:in std_logic;
clk:in std_logic;
Q:out std_logic;
nQ:out std_logic);

end component przerzutnikT;
component not1 is

port(

in1:in std_logic;
y:out std_logic);

end component not1;
component or33 is

port(

in1:in std_logic;
in2:in std_logic;
in3:in std_logic;
y:out std_logic);

end component or33;

component and33 is

port(

in1:in std_logic;
in2:in std_logic;
in3:in std_logic;
y:out std_logic);

end component and33;

signal a11, a2,a21,a22,a3,TT,nQ,nX,outt1:std_logic;
begin

out1<=outt1;
nn:not1 port map(in1=>X,y=>nX);
--operacja resetY1
b1:and33 port map(in1=>y1,in2=>outt1,in3=>y1,y=>a11);
--operacja zapisY2
b2:and33 port map(in1=>Y2,in2=>nX,in3=>outt1,y=>a2);

background image

b21:and33 port map(in1=>Y2,in2=>X,in3=>nQ,y=>a21);
n2:or33 port map(in1=>a2,in2=>a21,in3=>a2,y=>a22);
--operacja moduloY5
b3:and33 port map(in1=>Y5,in2=>X,in3=>x,y=>a3);
ns2:or33 port map(in1=>a11,in2=>a22,in3=>a3,y=>TT);
p1:przerzutnikT port map(clk=>clk,T=>TT,Q=>outt1,nQ=>nQ);

end rej;

Przerzutnik T

library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity przerzutnikT is

port( t : in STD_LOGIC;

clk : in STD_LOGIC;
Q : out STD_LOGIC;
nQ : out STD_LOGIC

);

end przerzutnikT;

architecture przerzutnikT of przerzutnikT is
begin

xx:process(clk,t)
variable QQ :std_logic:='1';
variable NQQ : std_logic:='0';

begin

if clk= '0' and clk'event then

if t='1' then QQ:= not QQ;

NQQ:= not QQ;

end if;

end if;
Q<=QQ;
NQ<=NQQ

;

end process xx;

end przerzutnikT;

Część III
Wykorzystanie VHDL do projektowania liczników asynchronicznych i synchronicznych.

Celem ćwiczenia jest poznanie zasad funkcjonowania przerzutników różnych typów oraz

projektowanie liczników synchronicznych i asynchronicznych. Projektowane będą 2 liczniki
maksymalnie 5-bitowe. Stany wyjściowe liczników pokazujemy dziesiętnie na wyświetlaczach 7
segmentowych
Realizacja ćwiczenia :
- przygotowanie elementów składowych (transkodery)
- sprawdzenie poprawności działania w trakcie symulacji
- przydzielenie pinów wejściowych i wyjściowych
- zaprogramowanie układu
- prezentacja działającego układu

background image

Liczniki projektujemy zgodnie z poniższymi tabelami :
Tabela 1

b3

b2

b1

b0

Licznik
synchroniczny

Typ przerzutnika

0

0

0

0

modulo 10

JK

0

0

0

1

modulo 13

D

0

0

1

0

modulo 11

RS

0

0

1

1

modulo 12

T

0

1

0

0

modulo 14

JK

0

1

0

1

modulo 9

D

0

1

1

0

pracujący

w

kodzie Greya

RS

0

1

1

1

pracujący

w

kodzie Aikena

T

1

0

0

0

kod 84-2-1

JK

1

0

0

1

kod 5211

D

1

0

1

0

kod Greya

RS

1

0

1

1

modulo 15

T

1

1

0

0

kod Greya

JK

1

1

0

1

modulo 10

D

1

1

1

0

kod 5211

RS

1

1

1

1

kod Aikena

T

b3

b2

b1

b0

sekwencja

Typ
przerzutnika

0

0

0

0

0 2 46 8 10 9 7 5 3 1 0 …

JK

0

0

0

1

0 1 0 2 0 3 0 1

D

0

0

1

0

0 1 4 7 10 9 6 5 3 2 0

RS

0

0

1

1

mod 15 , s=1 góra s=0 dół

T

0

1

0

0

s=0 : 0 1 2 3 4 5 6 7 0 …

s=1 : 0 3 5 1 4 2 6 7 0 …

JK

0

1

0

1

s=0 : 0 1 2 3 4 5 6 0 …
s=1 : 1 64 2 0 5 3 1…

D

0

1

1

0

s=0 : 0 1 2 3 4 5 6 7 8 9 0
s=1 : 0 4 9 1 3 6 5 8 2 0

RS

0

1

1

1

s=0 : 0 6 2 4 5 3 9 1 8 7

s=1 : 0 1 2 3 4 5 6 7 8 9

T

1

0

0

0

s=0 : 0 1 2 3 4 5 6 7 0 …

s=1 : 0 3 5 1 4 2 6 7 0 …

JK

1

0

0

1

0 1 0 2 0 3 0 1

D

1

0

1

0

0 1 4 7 10 9 6 5 3 2 0

RS

1

0

1

1

mod 15 , s=1 góra s=0 dół

T

1

1

0

0

s=0 : 0 1 2 3 4 5 6 7 0 …
s=1 : 0 3 5 1 4 2 6 7 0 …

JK

1

1

0

1

s=0 : 0 1 2 3 4 5 6 0 …
s=1 : 1 64 2 0 5 3 1…

D

1

1

1

0

s=0 : 0 1 2 3 4 5 6 7 8 9 0
s=1 : 0 4 9 1 3 6 5 8 2 0

RS

1

1

1

1

s=0 : 0 6 2 4 5 3 9 1 8 7
s=1 : 0 1 2 3 4 5 6 7 8 9

T

background image

Tabela 2

Wykonaj następujące czynności w celu zaimplementowania układu rejestrów i liczników:

1. Stwórz nowe projekty w programie Quartus II. Z biblioteki układów wybierz układ Cyclone

II EP2C35F672C6.

2. Opisz w VHDL układ rejestru o odpowiedniej długości. Przełaczniki SW17-15 podłączymy

do wejść wyboru operacji realizowanej w rejestrze. Przełącznikami SW14-0 wprowadzać
będziemy słowa wejściowe. Wartość wprowadzaną do rejestru pokazujemy na diodach,
wyjście rejestru podłączyć do diód.

3. Podłącz wejścia i wyjścia do odpowiednich pinów układu.
4. Skompiluj projekt.
5. Zaprogramuj skompilowanym projektem układ FPGA. Sprawdź działanie układu,

przełączając przełączniki SW i obserwując diody.

background image

Warianty realizowanych licznków

Tabela 2

typ przerzutnika

JK
JK
JK
JK
JK

JK

JK

JK

D
D
D
D
D

D

D

D

background image

Wyszukiwarka

Podobne podstrony:
CCNA4 lab 3 3 2 pl id 109125 Nieznany
Lab nr 3 id 258529 Nieznany
CCNA4 lab 4 3 7 pl id 109128 Nieznany
lab 04 id 257526 Nieznany
bd lab 04 id 81967 Nieznany (2)
CCNA4 lab 5 2 2 pl id 109130 Nieznany
lab fizycz id 258412 Nieznany
PMK lab potoczny id 363423 Nieznany
Lab 3 WDAC id 257910 Nieznany
BP20122013 lab 1n id 92525 Nieznany
CCNA4 lab 1 1 6 pl id 109122 Nieznany
3 endoprotezy lab IMIR id 3308 Nieznany
Lab 4 Tablice id 258003 Nieznany
Lab 13 id 257441 Nieznany
Lab 1 ASM51 id 749292 Nieznany
lab 11 id 257664 Nieznany
lab zagadnienia 2 id 258726 Nieznany
CCNA4 lab 4 2 1 pl id 109127 Nieznany

więcej podobnych podstron