Uploaded by fijan94656

tc lab 08 w 04

advertisement
Mirosław Łazoryszczak
Technika cyfrowa
Laboratorium nr 8
Temat:
Kodery, dekodery, transkodery
Synteza sprzętu przy pomocy VHDL
Katedra Architektury Komputerów i Telekomunikacji
Zakład Systemów i Sieci Komputerowych
SPIS TREŚCI
1. Wymagania ................................................................................................. 3
2. Przebieg ćwiczenia....................................................................................... 3
2.1.
Przykład projektowy ............................................................................. 3
2.2.
Realizacja transkodera w języku VHDL .................................................. 5
3. Zadania...................................................................................................... 12
4. Podsumowanie.......................................................................................... 14
5. Literatura................................................................................................... 14
Technika cyfrowa – Laboratorium nr 8
1. W Y M A GAN I A
Wykonanie ćwiczenia obejmującego temat koderów, dekoderów oraz transkoderów wymaga
od studenta znajomości:
• kodów typu „1 z n”, kodu Graya, kodu BCD,
• projektowania układów kombinacyjnych przy pomocy znanych metod,
• zasad działania wyświetlacza siedmiosegmentowego LED,
• podstaw posługiwania się narzędziem Xilinx ISE, a w szczególności tworzenia projektu opartego
na schemacie, wykonania operacji implementacji, przeprowadzenia symulacji opartej na
jednostce testowej (ang. test bench) implementowanej w języku VHDL.
2. PRZEBI EG ĆW I CZEN I A
W warstwie merytorycznej niniejszego ćwiczenia wykorzystywane są ponownie układy
kombinacyjne, których przykładem są kodery, dekodery i transkodery. Układy te stanowią istotną
podgrupę układów logicznych, która jest szeroko wykorzystywana w różnych obszarach techniki
cyfrowej. Kodery oznaczają układy, których zadaniem jest konwersja kodu typu „1 z n” na kod
binarny, dekodery zaś pełnią funkcję odwrotną. Zadaniem natomiast transkoderów jest zamiana
jednego kodu na inny, przy czym zarówno kod wejściowy jak wyjściowy nie jest kodem typu „1 z n”.
Zakres ćwiczenia obejmuje wszystkie etapy projektowania, z którymi uczestnicy laboratoriów
mogli zetknąć się do tej pory. Nowym, lecz niezwykle istotnym elementem jest zapis projektu w
postaci kodu VHDL oraz synteza i implementacja projektu w konkretnej platformie sprzętowej.
2.1. PRZYKŁAD PROJEKTOWY
Zadanie
Zaprojektuj, wykonaj symulację oraz zaimplementuj i przetestuj w układzie rzeczywistym
czterobitowy transkoder kodu binarnego na kod Graya.
Tabela 1: Tablica przejść ilustrująca działanie licznika
Liczba
x
dziesiętna 3
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
1
9
1
10
1
11
1
12
1
13
1
14
1
15
1
x2
x1
x0
y3
y2
y1
y0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
Strona 3 z 14
Technika cyfrowa – Laboratorium nr 8
Tablica prawdy dla jednej z możliwych postaci transkodera kodu binarnego na kod Graya
została przedstawiona w tabeli 1. Klasyczne podejście do zagadnienia projektowania układu
transkodera jako układu kombinacyjnego wymaga wyznaczenia tylu funkcji logicznych, ile wyjść
powinien posiadać projektowany układ. Korzystając z tradycyjnych metod minimalizacji funkcji
logicznych można otrzymać zbiór funkcji boolowskich dla poszczególnych wyjść układu transkodera.
Tabela 2: Tablica Karnaugh dla funkcji
x1x0
00
01
11
10
00
0
0
0
0
01
0
0
0
0
11
1
1
1
1
10
1
1
1
1
x3x2
y3
y3 = x3
Tabela 3: Tablica Karnaugh dla funkcji
x1x0
00
01
11
10
00
0
0
0
0
01
1
1
1
1
11
0
0
0
0
10
1
1
1
1
x3x2
y2
y 2 = x3 x 2 ∨ x 3 x 2 = x 2 ⊕ x 3
Tabela 4: Tablica Karnaugh dla funkcji
x1x0
00
01
11
10
00
0
0
1
1
01
1
1
0
0
11
1
1
0
0
10
0
0
1
1
x3x2
y1
y1 = x1 x 2 ∨ x1 x 2 = x1 ⊕ x 2
Tabela 5: Tablica Karnaugh dla funkcji
x1x0
00
01
11
10
00
0
1
0
1
01
0
1
0
1
11
0
1
0
1
10
0
1
0
1
x3x2
y 0 = x1 x0 ∨ x1 x0 = x 0 ⊕ x1
Strona 4 z 14
y0
Technika cyfrowa – Laboratorium nr 8
Wpisując wartości funkcji z tablicy prawdy do tablic Karnaugh otrzymujemy zestaw tabel oraz
odpowiadających im wyrażeń boolowskich przedstawionych w tabelach 2 – 5.
Realizacja układowa wynikająca wprost z powyższych równań przedstawiona została na rys. 1.
Bufor, który znajduje się pomiędzy sygnałem wyjściowym y3 a sygnałem wejściowym x3 pełni funkcję
techniczną (separującą).
Rys. 1.
Schemat układu realizującego zamianę kodu binarnego na kod Graya
2.2. REALIZACJA TRANSKODERA W JĘZYKU VHDL
Projekt transkodera może być równie dobrze zrealizowany nie tylko w postaci schematu, ale
także w postaci kodu w języku VHDL. Kod taki jest zresztą ogniwem pośrednim pomiędzy schematem,
a postacią wynikową projektu czyli bezpośrednią implementacją w strukturze sprzętowej.
Z przeprowadzonych uprzednio ćwiczeń laboratoryjnych wiadomo, w jaki sposób można zapoznać się
ze strukturą kodu VHDL, stanowiącą realizację wprowadzonego schematu (rys. 2).
Rys. 2.
Uruchomienie podglądu kodu VHDL projektowanego układu
Fragment kodu odpowiadającego za realizację schematu transkodera przedstawiono na
wydruku 1. Styl (sposób) konstrukcji tego kodu określany jest jako strukturalny, ponieważ opisuje
precyzyjnie komponenty, które wchodzą w skład projektu oraz definiuje połączenia pomiędzy nimi.
Z punktu widzenia zastosowania konstrukcji języka VHDL należy zwrócić uwagę na główne elementy
konstrukcji kodu:
Strona 5 z 14
Technika cyfrowa – Laboratorium nr 8
• entity – jednostka projektowa, w której zdefiniowany jest interfejs zewnętrzny układu, czyli
jego wejścia oraz wyjścia,
• architecture – ciało architektury, które określa sposób działania układu o zdefiniowanym
wyżej interfejsie. Znajdują się tutaj także deklaracje elementów (component),
wykorzystywane do konstrukcji układu oraz połączenia pomiędzy tymi komponentami
(pomiędzy słowami kluczowymi begin i end), które realizowane są z kolei na zasadzie
mapowania portów czyli sygnałów zewnętrznych na wejścia poszczególnych funktorów
(komponentów) oraz mapowania wyjść funktorów na wyjścia całego układu.
entity tc8a is
port ( x0 :
x1 :
x2 :
x3 :
y0 :
y1 :
y2 :
y3 :
end tc8a;
in
in
in
in
out
out
out
out
std_logic;
std_logic;
std_logic;
std_logic;
std_logic;
std_logic;
std_logic;
std_logic);
architecture
attribute
component
port (
BEHAVIORAL of tc8a is
BOX_TYPE
: string ;
XOR2
I0 : in
std_logic;
I1 : in
std_logic;
O : out
std_logic);
end component;
attribute BOX_TYPE of XOR2 : component is "BLACK_BOX";
component BUF
port ( I : in
std_logic;
O : out
std_logic);
end component;
attribute BOX_TYPE of BUF : component is "BLACK_BOX";
begin
XLXI_1 : XOR2
port map (I0=>x2,
I1=>x3,
O=>y2);
XLXI_2 : XOR2
port map (I0=>x1,
I1=>x2,
O=>y1);
XLXI_3 : XOR2
port map (I0=>x0,
I1=>x1,
O=>y0);
XLXI_4 : BUF
port map (I=>x3,
O=>y3);
end BEHAVIORAL;
Wydruk 1: Fragment automatycznie utworzonego kodu VHDL transkodera
Znając zasady kodowania VHDL możliwe jest zapisanie projektu bezpośrednio w postaci kodu z
pominięciem schematu. Forma kodu strukturalnego wymaga jednak dokładnej znajomości budowy
układu na takim samym poziomie, jak przy użyciu schematu. Styl taki jest również niezwykle
przydatny w przypadku rozbudowanych, wieloplikowych projektów, umożliwiających realizację
struktur hierarchicznych w przejrzysty sposób.
Inne podejście do projektowania za pomocą VHDL polega na wykorzystaniu równań
boolowskich określających sposób działania układu lub niemal bezpośrednie użycie tablicy prawdy (w
przypadku układów kombinacyjnych). W obu przypadkach konieczne jest utworzenie nowego
projektu, w którym plik nadrzędny projektu posiada typ HDL (rys. 3).
Strona 6 z 14
Technika cyfrowa – Laboratorium nr 8
Następnie postępujemy analogicznie jak w przypadku poprzednich ćwiczeń, z tym że w
przypadku dodawania nowego pliku źródłowego, należy ustawić jego typ jako VHDL Module (rys. 4).
Rys. 3.
Rys. 4.
Okno kreatora nowego projektu z ustawionym typem źródła nadrzędnego (HDL)
Okno kreatora nowego pliku źródłowego z typem ustawionym na moduł VHDL
W kolejnym etapie tworzenia nowego źródła na ekranie pojawi się okno kreatora nowego
źródła, w którym można zdefiniować interfejs zewnętrzny poprzez specyfikację wejść i wyjść. Efektem
działania kreatora po wprowadzeniu wejść i wyjść będzie szablon kodu VHDL. Szablon ten zawierać
będzie wygenerowaną automatycznie jednostkę projektową oraz skojarzoną z nią architekturę
wewnętrzną.
Strona 7 z 14
Technika cyfrowa – Laboratorium nr 8
Rys. 5.
Specyfikacja wejść i wyjść w oknie kreatora modułu VHDL
Fragment kodu modułu VHDL, który powstał w wyniku działania kreatora pliku źródłowego
został przedstawiony na wydruku 2. Zadaniem projektanta jest napisanie fragmentu kodu pomiędzy
słowami kluczowymi begin oraz end.
entity tc8b is
Port ( x3 :
x2 :
x1 :
x0 :
y3 :
y2 :
y1 :
y0 :
end tc8b;
in
in
in
in
out
out
out
out
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC);
architecture Behavioral of tc8b is
begin
-- TUTAJ WSTAW KOD Z WYDRUKU NR 3
end Behavioral;
Wydruk 2: Fragment automatycznie wygenerowane szablonu VHDL
Jedno z możliwych rozwiązań polega na opisaniu architektury za pomocą równań boolowskich,
przedstawionych na początku niniejszego podrozdziału. Zatem fragment kodu, który należy wstawić
do pliku źródłowego we wskazanym miejscu może mieć postać jak na wydruku 3.
y3
y2
y1
y0
<=
<=
<=
<=
x3;
x3 XOR x2;
x2 XOR x1;
x1 XOR x0;
Wydruk 3: Opis architektury transkodera za pomocą równań boolowskich
W tym momencie projekt jest już opisany za pomocą języka VHDL i możliwe jest
przeprowadzenie symulacji działania układu w znany już sposób. Ponieważ jednak celem niniejszego
ćwiczenia jest fizyczna implementacja układu w strukturze rekonfigurowalnej, przedstawione zostaną
Strona 8 z 14
Technika cyfrowa – Laboratorium nr 8
dalsze kroki, które należy wykonać, aby powiązać deklaracje interfejsu w języku VHDL z fizycznymi
wyprowadzeniami układu i zasobami sprzętowymi zestawu uruchomieniowego. W tym celu należy
uruchomić narzędzie Floorplan IO (rys. 6).
Rys. 6.
Uruchomienie narzędzia Floorplan IO
Jeśli w danym projekcie narzędzie to jest uruchamiane po raz pierwszy, na ekranie pojawi się
komunikat z pytaniem o dodanie pliku UCF (User Constraint File) do projektu. W pliku tym
definiowane są własności poszczególnych wejść i wyjść układu, które są wykorzystywane w projekcie.
Na pytanie w oknie dialogowym należy odpowiedzieć twierdząco (rys 7).
Rys. 7.
Okno potwierdzenia utworzenia pliku UCF
W jednym z okien programu Xilinx PACE – Design Object List – I/O Pins (rys. 8) należy przypisać
poszczególnym nazwom portów I/O numery wyprowadzeń zgodne z wykorzystywaną platformą
uruchomieniową. Na rys. 8 w odpowiednich polach wpisano numery portów zgodne z płytką SK-CRIIL-G (Xilinx CoolRunner-II CPLD Starter Kit). Numery wyprowadzeń dostępne są w dokumentacji do
zestawu uruchomieniowego, umieszczone są także na płytce drukowanej w pobliżu elementów
wykorzystywanych w zadaniu. Jako wejścia x3 i x2 użyte zostały przełączniki (ang. switches) o
wyprowadzeniach odpowiednio 124 i 39, zaś jako wejścia x1 oraz x0 zastosowano przyciski (ang. push
buttons) o wyprowadzeniach 94 oraz 143. Z kolei wyjścia przypisane zostały do diod LED w kolejności
y3, y2, y1, y0 o wyprowadzeniach 64, 66, 68 oraz 69.
Po wprowadzeniu numerów portów należy zamknąć program Xilinx PACE zapisując
jednocześnie plik UCF.
Strona 9 z 14
Technika cyfrowa – Laboratorium nr 8
Rys. 8.
Okno przypisania wyprowadzeń do poszczególnych portów
Po wykonaniu przypisania numerów wyprowadzeń do poszczególnych portów wykonaj
operację implementacji obejmującą proces syntezy, translacji, rozmieszczenia i generowania pliku
wynikowego dla układu transkodera klikając dwukrotnie gałąź Implement Design w oknie Design
(rys. 9). Rezultatem implementacji jest plik wynikowy z rozszerzeniem .JED, który powinien zostać
umieszczony w głównym folderze projektu.
Rys. 9.
Uruchomienie implementacji
Jeśli implementacja zostanie zakończona sukcesem, można przystąpić do zaprogramowania
(konfigurowania) układu CPLD w zestawie uruchomieniowym. W tym celu należy uruchomić program
ExPort (Menu Start | Programy | Digilent | Adept). Ogólny wygląd płytki testowej przedstawiono na
rys. 10.
UWAGA:
W trakcie pracy z zestawem uruchomieniowym należy zachować SZCZEGÓLNĄ OSTROŻNOŚĆ!
Pod żadnym pozorem nie należy dotykać podzespołów zestawu przedmiotami zawierającymi
metalowe elementy!
W razie jakichkolwiek wątpliwości co do obsługi zestawu należy zwrócić się o wskazówki do
prowadzącego zajęcia!
Jeśli zestaw uruchomieniowy jest podłączony do komputera za pomocą przewodu USB należy
wcisnąć przycisk Initialize Chain. Okno programu ExPort powinno zawierać symbol układu CPLD (rys.
11). Następnie za pomocą przycisku Browse należy odszukać w głównym folderze projektu plik
Strona 10 z 14
Technika cyfrowa – Laboratorium nr 8
konfiguracyjny i uruchomić proces konfiguracji przyciskiem Program Chain. Po skonfigurowaniu
układu powinien on być gotowy do działania.
Rys. 10. Płyta uruchomieniowa CoolRunner II Starter Kit [4].
Rys. 11. Okno programu ExPort
Inny sposób realizacji omawianego transkodera może wykorzystywać instrukcje with ...
select. Zastosowanie tej instrukcji pozwala na zaprojektowanie układu bez podawania równań
Strona 11 z 14
Technika cyfrowa – Laboratorium nr 8
boolowskich, w zamian za to konieczne jest wyspecyfikowanie wszystkich możliwych kombinacji
transkodera.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
architecture Behavioral of tc8b is
signal WE,WY : STD_LOGIC_VECTOR(3 downto 0);
begin
WE <= x3 & x2 & x1 & x0;
with WE select
WY <= "0000" when "0000",
"0001" when "0001",
"0011" when "0010",
"0010" when "0011",
"0110" when "0100",
"0111" when "0101",
"0101" when "0110",
"0100" when "0111",
"1100" when "1000",
"1101" when "1001",
"1111" when "1010",
"1110" when "1011",
"1010" when "1100",
"1011" when "1101",
"1001" when "1110",
"1000" when "1111",
"0000" when others;
y3 <= WY(3);
y2 <= WY(2);
y1 <= WY(1);
y0 <= WY(0);
end Behavioral;
Wydruk 4: Opis architektury transkodera za pomocą instrukcji with ... select
Przykładowy kod całej architektury podano na wydruku 4. Pewnego komentarza wymaga
deklaracja struktury signal (linia nr 02). W ramach architektury sygnały pełnią funkcję
wewnętrznych portów. Można do nich przypisywać wartości portów zewnętrznych (wejściowych),
można wykonywać operacje oraz można przypisywać wartości sygnałów do portów wyjściowych.
Ponieważ w projekcie transkodera wykorzystano niezależne zmienne x3, x2, x1 oraz x0, to operowanie
na nich z punktu widzenia instrukcji with ... select nie jest zbyt wygodne. Wprowadzony
został zatem typ tablicowy (STD_LOGIC_VECTOR) o szerokości czterech bitów w celu kompaktowej
reprezentacji wektora wejściowego i wyjściowego. Aby możliwe było operowanie na wektorze WE,
konieczne jest zatem złożenie wektora z pojedynczych zmiennych za pomocą operatora konkatenacji
‘&’ (linia 04), dzięki czemu może on zostać wykorzystany w instrukcji with ... select. Z tego
samego powodu użyty został wektor WY, którego elementy w efekcie muszą zostać przypisane do
konkretnych portów wyjściowych (linie 23 – 26).
3. ZA D A N IA
Zadanie 1
Wykonaj implementację i przetestuj układ wykonany na podstawie kodu z wydruku 2 i 3.
Zadanie 2
Wykonaj implementację i przetestuj układ wykonany na podstawie kodu z wydruku 4
Zadanie 3
Zaprojektuj i zaimplementuj transkoder kodu BCD na kod wyświetlacza siedmiosegmentowego.
Strona 12 z 14
Technika cyfrowa – Laboratorium nr 8
WSKAZÓWKI DO ZADANIA 3
Do wykonania zadania nr 3 niezbędna jest znajomość budowy wyświetlacza
siedmiosegmentowego. Wyświetlacz taki składa się z siedmiu diod typu LED umieszczonych we
wspólnej obudowie w taki sposób, że tworzą one cyfrę „8”. Poszczególne segmenty oznaczane są
literami alfabetu od „a” do „g” (rys. 12). Dodatkowo wyświetlacz może zawierać kropkę dziesiętną
(„dp”, ang. decimal point). Wszystkie diody posiadają wspólne zasilanie, przy czym wyświetlacze
wykonywane są w wersjach ze wspólną anodą lub ze wspólną katodą. Z rodzaju wyświetlacza wynika
sposób polaryzacji poszczególnych wyprowadzeń. W wykorzystywanym zestawie uruchomieniowym
wyświetlacze posiadają wspólną anodę, zatem włączenie wyświetlacza wymaga podania sygnału
niskiego na odpowiednie wyprowadzenie układu CPLD, co w konsekwencji powoduje włączenie
odpowiedniego tranzystora bipolarnego pnp i doprowadzenie napięcia zasilającego na wspólne
wyprowadzenia poszczególnych diod.
Rys. 12. Oznaczenia segmentów wyświetlacza siedmiosegmentowego
Aby na wyświetlaczu możliwe było przedstawienie poszczególnych cyfr, konieczne jest
przyporządkowanie kolejnym kombinacjom binarnym ustawionym za pomocą przełączników i
przycisków odpowiednich kombinacji włączenia/wyłączenia poszczególnych segmentów. Zapalenie
danego segmentu wymaga, zgodnie z rys. 13, ustalenia stanu niskiego na katodach diod
(wyprowadzenia CA ÷ CG oraz DP) i stanu niskiego na wyprowadzeniu AN1 (w zadaniu wykorzystany
zostanie tylko jeden wyświetlacz). Na rys. 13 podano także numery wyprowadzeń odpowiadających
poszczególnym elementom zestawu uruchomieniowego, które należy wykorzystać w projekcie na
etapie przypisywania zmiennych VHDL do fizycznych portów w układzie rzeczywistym.
Rys. 13. Szczegółowy schemat podłączenia urządzeń peryferyjnych do układu CoolRunner II [5]
Strona 13 z 14
Technika cyfrowa – Laboratorium nr 8
Uwzględniając powyższe wskazówki należy wyznaczyć tablicę prawdy dla transkodera kodu
binarnego lub BCD na kod wyświetlacza siedmiosegmentowego zgodnie z szablonem sprawozdania, a
następnie utworzyć nowy projekt w środowisku Xilinx ISE i opisać transkoder w języku VHDL na
podstawie wydruków omówionych w niniejszej instrukcji. Po syntezie oraz implementacji projektu
należy wykonać testowanie układu w zestawie uruchomieniowym.
Należy także zwrócić uwagę, aby w projekcie przewidziany został sygnał, który spowoduje
doprowadzenie napięcia (włączenie) do jednego z czterech wyświetlaczy dostępnych na płytce
uruchomieniowej.
4. PO D SUM O W A N IE
W wyniku przeprowadzonego ćwiczenia, a także ćwiczeń poprzednich student powinien nabyć
bądź utrwalić następujące umiejętności:
• projektowanie dowolnych koderów, dekoderów i transkoderów,
• posługiwanie się zestawami uruchomieniowymi zawierającymi układy rekonfigurowalne CPLD,
• posługiwanie się narzędziem Xilinx ISE w zakresie syntezy sprzętu na platformie
rekonfigurowalnej CPLD.
5. L I TERA TURA
[1] Kalisz J.: Podstawy elektroniki cyfrowej, WNT, Warszawa 1999
[2] Mano M. M., Kime Ch. R.: Podstawy projektowania układów logicznych i komputerów,
WNT, Warszawa, 2007.
[3] Pieńkos J., Turczyński J.: Układy scalone TTL w systemach cyfrowych, WKŁ, Warszawa 1986
[4] Wilkinson B.: Układy Cyfrowe, WKŁ, Warszawa 2000
[5] Xilinx: CoolRunner-II Evaluation Board Reference Manual, 2008, (http://www.xilinx.com/
support/documentation/boards_and_kits/ug501.pdf, dostęp: marzec 2011).
[6] Zwoliński M., Projektowanie układów cyfrowych z wykorzystaniem języka VHDL, WKŁ,
Warszawa 2002
Strona 14 z 14
Download