Wydział Elektryczny
Katedra Automatyki i Elektroniki
ĆWICZENIE Nr 2 (2h)
Realizacja układów kombinacyjnych w ś rodowisku Quartus II
Instrukcja do zajęć laboratoryjnych z przedmiotu
„Synteza układów cyfrowych”
studia niestacjonarne, II stopnia, semestr 2
EZ2B200013
Opracował:
dr inż. Łukasz Sajewski
Białystok 2012
1
1. Cel ćwiczenia
Celem tego ćwiczenia jest nauka technik łączenia prostych urządzeń wejściowo –
wyjściowych (kombinacyjnych) z układem FPGA. W tym celu użyjemy przełączników oraz
przycisków modułu DE1 jako urządzeń wejściowych układu cyfrowego. Jako urządzenia
wyjściowe zastosujemy diody LED oraz wyświetlacze siedmiosegmentowe.
2. Wprowadzenie
Moduł laboratoryjny DE1 zawiera dwupozycyjne przełączniki SW9 ÷ 0 oraz przyciski klawiszowe KEY3 ÷ 0 których można używać jako źródła sygnałów wejściowych układu cyfrowego. Do wyświetlania informacji wyjściowej można zastosować czerwone diody LED,
oznaczone jako LEDR9 ÷ 0 lub diody zielone oznaczone LEDG7 ÷ 0. Na rysunku pierwszym przedstawiono prostą realizację graficzną programu, wyświetlającą stan przełączników przy pomocy diod LED.
Rys. 1. Graficzna realizacja programu.
W kodzie VHDL programu zarówno przełączniki jak i diody reprezentowane są jako
elementy tablicowe. Alternatywnym rozwiązaniem jest zastosowanie indywidualnych
przypisań dla poszczególnych par w sposób przedstawiony poniżej.
LEDR(9) <= SW(9);
LEDR(8) <= SW(8);
. . .
LEDR(0) <= SW(0);
Rys. 2. Reprezentacja tablicowa.
Moduł DE1 zawiera sprzętowe połączenia FPGA z przełącznikami i wyświetlaczami. W celu
zastosowania przełączników i wyświetlaczy konieczne jest umieszczenie w projekcie
badanego układu przypisań poszczególnym portom pliku top - level odpowiednich numerów
wyprowadzeń (pinów) układu FPGA. Lista przypisań wszystkich pinów układu FPGA
modułu DE1 zawarta jest w pliku DE1_pin_assignments.csv. Np. przełącznik SW0 jest połączony z pinem nr L22 układu FPGA, zaś LEDR0 jest połączony z pinem R20. Dobrą techniką realizacji przypisań jest ich import z pliku DE1_pin_assignments.csv. Procedura importu opisana została w przewodniku Quartus II Introduction using VHDL Design, dostępnym na stronie internetowej firmy Altera. Automatyczna procedura przypisań jest skuteczna pod warunkiem zastosowania tych samych nazw portów reprezentujących
2
przełączniki i wyświetlacze w projekcie oraz na liście zawartej w importowanym pliku. W
pliku DE1_ pin_ assignments.csv przyjęto oznaczenia SW[0]...SW[9] dla przełączników
KEY[0]...KEY[3] dla przycisków oraz LEDR[0]...LEDR[9] i LEDG[0]...LEDG[7] dla diod LED. Należy zauważyć rozbieżność, w systemie Quartus II indeksy tablicowe ujmowane są w
nawiasy kwadratowe [] zaś w języku VHDL w nawiasy zwykłe ().
LIBRARY ieee;
USE ieee.std_logic_1164.all;
- - Prosty moduł łą czą cy przełą czniki SW z diodami LEDR
ENTITY połaczenie IS
PORT ( SW : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
LEDR : OUT STD_LOGIC_VECTOR(9 DOWNTO 0)); - - red LEDs
END połaczenie;
ARCHITECTURE zachowanie OF połaczenie IS
BEGIN
LEDR <= SW;
END zachowanie;
Rys. 3. Program w języku VHDL wykorzystujący przełączniki i diody LED.
Zadanie 1: Zaimplementować w modelu DE1 układ opisany programem z rysunku 1 oraz 3
wykonując następujące kroki:
1. Utworzyć nowy projekt w systemie Quartus II, wybierając jako programowalną
strukturę układ EP2C20F484C7 rodziny Cyclone II.
2. Utworzyć jednostkę projektową programu i umieścić ją w projekcie.
3. Zawrzeć w projekcie wymagane przyporządkowania pinów modułu DE1, w sposób
omówiony wcześniej. Skompilować projekt.
4. Zaprogramować strukturę FPGA. Przeprowadzić test końcowy polegający na zmianie
położenia przełączników i obserwacji LED.
3. Proste układy kombinacyjne
Na rysunku 4a (Circuit) przedstawiono schemat multipleksera o dwóch wejściach
informacyjnych x i y oraz jednym wejściu adresowym s. Jeżeli s = 0 to sygnał wyjściowy multipleksera jest równy sygnałowi wejściowemu x, jeżeli s = 1 to wyjście jest równe y. Na rysunku 4b (Truth table) przedstawiono tablicę prawdy działania multipleksera, zaś na rysunku 4c (Symbol) jego symbol graficzny.
3
Rys. 4. Schemat, tablica prawdy oraz symbol multipleksera o 2 wejściach informacyjnych.
Multiplekser tego typu można opisać następującą instrukcją w VHDL:
m <= (NOT (s) AND x) OR (s AND y);
Zadanie 2: Napisać jednostkę projektową zawierającą pięć instrukcji, podobnych do powyższej, opisujących układ przedstawiony na rysunku 5a. Wspomniany układ posiada dwa
pięciobitowe wejścia X i Y oraz pięciobitowe wyjście M. Jeżeli s = 0 wówczas M = X, w przypadku s = 1 wyjście M = Y. Jest to zatem układ dwuwejściowego multipleksera szynowego, przełączającego magistrale 5 - bitowe. Jego symbol przedstawiono na rysunku 5b, gdzie X, Y oraz M obrazują ośmiobitowe magistrale.
Należy wykonać następujące kroki:
1. Utworzyć nowy projekt w systemie Quartus II.
2. Dołączyć do projektu plik opisujący projektowany multiplekser szynowy. Należy użyć
przycisku KEY0 płyty DE1 jako wejścia s, przełączników SW4-0 jako wejścia X oraz przełączników SW9-5 jako wejścia Y. Przełączniki SW należy połączyć z czerwonymi diodami LEDR, zaś wyjścia M z zielonymi diodami LEDG4-0.
3. Stworzyć nowy symbol zawierający projektowany multiplekser i umieścić go w
projekcie.
4. Następnie należy przypisać portom wejściowym i wyjściowym w układzie
odpowiednie numery pinów układu FPGA płyty DE1.
4
Rys. 5. Dwuwejściowy multiplekser szynowy.
4. Skompilować projekt.
5. Zaprogramować układ FPGA. Sprawdzić działanie układu zmieniając położenia
przełączników SW oraz obserwując świecenie poszczególnych diod LED.
5. Wyświetlacz siedmiosegmentowy
Na rysunku 6 pokazano konwerter kodu binarnego (wejścia c2, c1 oraz c0) na kod wyświetlacza siedmiosegmentowego. Ten konwerter posiada 7 wyjść sterujących
poszczególnymi segmentami wyświetlacza.
Rys. 6. Dekoder 7 - segmentowy.
Tablica 1 zawiera listę znaków, jakie powinny być wyświetlane dla poszczególnych wartości
sygnałów wejściowych c2 c1 c0. W realizowanym przykładzie tylko 4 znaki są zawarte w tablicy (plus „ciemny” znak wygaszonego wyświetlacza, kodowany liczbami od 100 do 111).
Siedem segmentów wyświetlacza oznaczonych jest cyframi od 0 do 6 w sposób
przedstawiony na powyższym rysunku. Każdy z segmentów świeci jeżeli jest sterowany
poziomem logicznym 0.
5
Tabl. 1. Lista znaków konwertera
c2c1c0
Znak
0 0 0
H
0 0 1
E
0 1 0
L
0 1 1
O
1 0 0
1 0 1
1 1 0
1 1 1
Zadanie 3: Napisz jednostkę projektową zawierającą funkcje logiczne reprezentujące układ, niezbędną do aktywacji poszczególnych segmentów. Zastosuj jedynie proste instrukcje
przypisania zawierające wyrażenia boolowskie.
W tym celu wykonaj następujące kroki:
1. Otwórz nowy projekt w systemie Quartus II.
2. Utwórz jednostkę projektową dekodera 7-segmentowego. Połącz wejścia c2c1c0 z przełącznikami SW2-0 oraz wyjścia dekodera z HEX0 na płycie DE1. Odpowiednio do rysunku 6 poszczególne segmenty wyświetlacza posiadają nazwy: HEX00, HEX01,…,
HEX06. Należy zadeklarować 7 - bitowy port
HEX0 : OUT STD_ LOGIC_ VECTOR (0 TO 6);
w którym nazwy portów powinny korespondować z nazwami w pliku przypisań DE1_
pin_ assignments.csv
3. Następnie skompiluj projekt.
4. Dokonaj konfiguracji układu FPGA. Zbadaj funkcjonowanie układu zmieniając
położenie przełączników SW2-0 i obserwując wyświetlacz 7 - segmentowy.
6. Demultipleksacja sygnału na wiele wyświetlaczy
Rozszerz swój projekt z części poprzedniej w taki sposób, żeby wykorzystać wszystkie wyświetlacze 7 - segmentowe płyty DE1. Układ powinien mieć możliwość wyświetlania
różnych liter na jednym z czterech wyświetlaczy.
Wykonaj następujące kroki:
1. Otwórz nowy projekt w systemie Quartus II przypisując chip Cyclone II
EP2C20F484C7.
2. Utwórz jednostkę projektową. Połącz przełączniki SW9-7 z wejściami selekcji wyświetlacza. Połącz przełączniki SW2-0 w celu wytwarzania niezbędnych wzorów znaków przedstawionych w tablicy 1. Połącz wyjścia do wyświetlaczy
siedmiosegmentowych HEX3,... HEX0.
3. Przypisz odpowiednie piny struktury programowalnej do wszystkich przełączników,
diod LED i wyświetlaczy 7 - segmentowych. Skompiluj projekt.
4. Zaprogramuj układ FPGA. Sprawdź funkcjonowanie układu ustawiając właściwe
kody znaków przełącznikami SW2-0 oraz zaobserwuj rotację znaków manipulując przełącznikami SW9-7.
6
Sprawozdanie z zajęć laboratoryjnych powiano zawierać:
1. Opis słowny zadania do realizacji
2. Założenia realizowanego zadania
3. Procedurę projektową
4. Listingi gotowych programów
5. Weryfikację działania układu
6. Uwagi i wnioski
Literatura:
1. Barski M., Jędruch W.: Układy cyfrowe, podstawy projektowania i opisu w ję zyku VHDL, Wydawnictwo Politechniki Gdańskiej, 2007.
2. IEEE-SA Standars Board: IEEE Standard VHDL Language reference manual,
ieeexplore.ieee.org/iel5/7180/19335/00893288.pdf, USA, 2000.
3. Łuba T.: Synteza układów cyfrowych, WKiŁ, Warszawa, 2004.
4. Mano M.M., Kime Ch.R.: Podstawy projektowania układów logicznych i komputerów,
NT, Warszawa 2007.
5. Skahill K.: Język VHDL Projektowanie programowalnych układów logicznych, WNT,
Warszawa, 2001.
6. http://www.altera.com/support/spt-index.html
Zamieszczone w instrukcji zrzuty ekranowe oraz zdjęcia pochodzą z materiałów firmowych dostarczonych przez firmę Altera.
7