to get the file

Transkrypt

to get the file
Altera Quartus II
Opis niektórych komponentów
dostarczanych razem ze środowiskiem
Opracował:
mgr inż. Leszek Ciopiński
Spis treści
Opis wybranych zagadnień obsługi środowiska Altera Quartus II:.....................................................1
Magistrale:....................................................................................................................................... 1
Tworzenie symbolu z pliku..............................................................................................................2
Wybór głównego układu projektowanej struktury...........................................................................3
Język VHDL:................................................................................................................................... 3
Uwagi do wykorzystania języka VHDL w programie Altera Quartus............................................4
Wybrane układy z biblioteki standardowej.......................................................................................... 4
Busmux............................................................................................................................................ 4
lpm_add_sub.................................................................................................................................... 4
lpm_mult.......................................................................................................................................... 8
Bramka NAND:............................................................................................................................. 10
Bramka XOR:................................................................................................................................ 10
Przerzutnik typu D:........................................................................................................................ 11
Przydatne funkcje i moduły w języku VHDL................................................................................12
Opis wybranych zagadnień obsługi środowiska Altera Quartus II:
Magistrale:
Program Quartus II umożliwia tworzenie magistral. Magistrale są to grupy przewodów
łączące wejścia i wyjścia różnych układów. Ich stosowanie powoduje większą wygodę
projektowania, gdy potrzebne jest np. przesłanie liczby ośmiobitowej z jednego układu do innego.
W celu utworzenia magistrali należy podając nazwę portu (pinu, wejścia lub wyjścia układu) podać
w nawiasach kwadratowych ilu bitowa jest magistrala, np.: we[3..0]. W podanym przykładzie
utworzona zostanie magistrala czterobitowa. Należy zwrócić uwagę, że słowo we jest nazwą
magistrali. W nawiasach natomiast podawane są numery linii, które mają zostać wykorzystane.
Umożliwia to swobodny dostęp do wybranych linii magistrali, np.: we[2..1] lub we[2]. Poniżej
przedstawiono przykład utworzenia ośmiobitowej szyny i sposób dostępu do pojedynczych
przewodów.
Altera Quartus II
Opis wybranych komponentów
1
Tworzenie symbolu z pliku
Ponieważ projektując bardziej skomplikowane układy wygodniej jest pewne ich fragmenty
zamykać w osobne moduły, możliwość taka występuje również w programie Quartus. W tym celu
należy otworzyć i skompilować plik, z którego chcemy zrobić „symbol”. Następnie należy wybrać
pozycję menu File | Create / Update | Create Symbol Files for Current
File. Wyświetlone zostanie okno dialogowe z pytaniem o nazwę tworzonego symbolu.
Rekomendowana jest pozostawienie domyślnej nazwy pliku. Po zaakceptowaniu nazwy
wyświetlony zostanie komunikat potwierdzający utworzenie symbolu. Możliwe jest teraz jego
dodanie do dowolnego pliku.
Altera Quartus II
Opis wybranych komponentów
2
“Symbole”
utworzone
w ramach
projektu
Wybór głównego układu projektowanej struktury
Jeśli konieczne jest dokonanie zmiany głównego elementu układu, np. gdy projektowany był
podukład, który trzeba umieścić w innym układzie w formie symbolu, należy wykonać następujące
czynności:
1. Utworzyć lub dołączyć plik, który będzie nowym głównym elementem układu.
2. W oknie „Project Navigator” przejść do karty „Files”. (Jeśli okno nie jest widoczne, można
je otworzyć opleceniem View | Utility Windows | Project Navigator)
3. Na liście plików odnaleźć odpowiedni plik.
4. Z menu kontekstowego wybrać polecenie „Set as Top-Level Entity”
Język VHDL:
Dla celów laboratoryjnych wystarczą informacje przekazane na wykładzie. Informacje
o podstawach programowania w języku VHDL można również znaleźć w księgozbiorze Wikibooks
pod adresem: http://pl.wikibooks.org/wiki/VHDL oraz
http://en.wikibooks.org/wiki/Programmable_Logic/VHDL .
Altera Quartus II
Opis wybranych komponentów
3
Uwagi do wykorzystania języka VHDL w programie Altera Quartus
Układ napisany w języku VHDL traktowany jest przez Quartus'a tak samo, jak układy
wykonane w edytorze graficznym. Projekt taki można skompilować i przetestować (używamy
dokładnie tych samych narzędzi, co w przypadku schematu blokowego). Dla każdego układu
opisanego w języku VHDL możliwe jest również wygenerowanie symbolu, który można dołączyć
do innego schematu blokowego.
Aby utworzyć nowy plik VHDL należy wydać polecenie File | New … → Designed
Files | VHDL File. W nowo otworzonym oknie można już dokonać opisu urządzenia. Istotne
jest jednak to, że w danym pliku można umieścić dokładnie jeden opis (deklaracja i implementacja)
jednego układu. Ponadto plik VHDL musi nazywać się tak samo jak opisywany układ.
Niespełnienie tego warunku zakończy się błędami kompilacji.
Wybrane układy z biblioteki standardowej
Busmux
Jest to multiplekser dokonujący wyboru jednej z dwóch magistral, którą wystawia na swoim
wyjściu. Ciekawą cechą układu jest możliwość definiowania szerokości magistrali jako parametr
tego elementu. Na poniższej ilustracji pokazano lokalizację układu w bibliotece i sposób jego
ustawienia dla magistrali 32-bitowej.
lpm_add_sub
Układ ten należy do grupy MegaFunctions (dokładna lokalizacja to:
megafunctions/arithmetic/lpm_add_sub). Oznacza to, że dokładne właściwości układu można
dostosować w zależności od potrzeb projektanta. Po wybraniu tego układu otworzone zostanie okno
MegaWizard, w którym należy dokonać wyboru języka w jakim opisany zostanie układ (proszę
wybierać język VHDL) oraz miejsce i nazwę pod jaką układ ma zostać zapisany. Poniżej
Altera Quartus II
Opis wybranych komponentów
4
przedstawiono opis najważniejszych ustawień:
Altera Quartus II
Opis wybranych komponentów
5
Ilu bitowe
są wejścia
i wyjścia
Jak ma działać
układ?
Tylko sumator
Tylko odejmowanie
Odejmowanie
lub dodawanie
uzależnione
od wejścia
sterującego
Czy któreś
wejście ma stałą
wartość?
Nie, oba wejścia
mają wartości
zmienne
Tak, dane wejście
ma stałą wartość
równą … i wyrażoną
w systemie … .
Operacje na
liczbach ze znakiem
czy bez?
Altera Quartus II
Opis wybranych komponentów
6
Czy tworzyć
dodatkowe
wejście
przeniesienia
/
pożyczki?
Czy tworzyć
dodatkowe
wyjście
przeniesienia
/
pożyczki?
Czy tworzyć
dodatkowe
wyjście
znacznika
przepełnienia?
Czy tworzyć
potokowe
wykonywanie
operacji?
Tak, z wynikiem
po … cyklach
zegara.
Utwórz
asynchroniczne
wejście
zerujące.
Utwórz wejście
aktywujące
zegar.
Altera Quartus II
Opis wybranych komponentów
7
lpm_mult
Podobnie jak powyższy komponent, lpm_mult również jest układem, którego parametry
należy skonfigurować w zależności od potrzeb projektu. Umożliwia to zastosowanie mnożarki
najlepiej dostosowanego do potrzeb układu. Ponadto, jeśli dany układ FPGA zawiera komponenty
wspierające budowę tego układu, zostaną one wykorzystane w zamian za standardowe komórki
LUT, co pozwoli na zoptymalizowanie projektowanego układu. Na poniższych ilustracjach zostały
przedstawione kolejne etapy tworzenia tego komponentu.
Podajemy nazwę
komponentu
łącznie ze ścieżką
dostępu. Można
pozostawić nazwę
domyślną.
Altera Quartus II
Opis wybranych komponentów
8
Metoda wprowadzania
danych:
Czy dane mają być
wprowadzane poprzez
dwie równoległe szyny,
czy poprzez jedno
wejście w sposób
synchroniczny?
Szerokość szyn
wejściowych
Czy szerokość szyny
wejściowej ma być
obliczona
automatycznie (suma
szerokości szyn
wejściowych), czy ma
być zdefiniowana przez
projektanta?
Czy druga z wartości
ma być wielkością
stałą, a jeśli tak, to
jaką?
Czy liczby są zapisane
ze znakiem, czy bez
znaku?
Jaka ma być metoda
implementacji układu?
Altera Quartus II
Opis wybranych komponentów
9
Czy układ ma zawierać
potokowe
przetwarzanie operacji?
Jeśli tak, to w jakim
czasie ma pojawić się
odpowiedź?
Jaką metodę
optymalizacji wybrać?
Domyślną, szybkość
(jak szybko układ ma
działać) czy
przestrzenną (ile
miejsca układ ma
zajmować).
Bramka NAND:
Przykładowe moduły napisane w języku VHDL (źródło: http://pl.wikibooks.org/wiki/VHDL/Przyk
%C5%82ady_kodu):
Zawartość pliku opisującego dwuwejściową bramkę NAND:
library ieee;
use ieee.std_logic_1164.all;
entity nand2 is
port (
a,b : in std_logic;
c : out std_logic
);
end nand2;
architecture logic of nand2 is
begin
c <= not (a and b);
end logic;
Bramka XOR:
Przykładowe moduły napisane w języku VHDL (źródło: http://pl.wikibooks.org/wiki/VHDL/Przyk
%C5%82ady_kodu):
Zawartość pliku opisującego dwu wejściową bramkę XOR:
Altera Quartus II
Opis wybranych komponentów
10
library ieee;
use ieee.std_logic_1164.all;
entity xor2 is
port (
a,b : in std_logic;
c : out std_logic
);
end xor2;
architecture behavioral of nand2 is
begin
c <= not (a and b);
end behavioral;
architecture logic of xor2 is
component nand2
port (
a, b : in std_logic;
c : out std_logic
);
end component nand2;
signal wew1,wew2,wew3 : std_logic;
begin
bramka1
bramka2
bramka3
bramka4
:
:
:
:
nand2
nand2
nand2
nand2
port
port
port
port
map
map
map
map
(a=>a, b=>b, c=>wew1 );
(a=>a, b=>wew1, c=>wew2 );
(a=>wew1, b=>b, c=>wew3 );
(a=>wew2, b=>wew3, c=>c );
end logic;
W powyższym przykładzie należy zauważyć, że do połączenia zewnętrznego komponentu
z wewnętrznymi sygnałami opisywanego modułu niezbędne jest użycie „port map”.
Przerzutnik typu D:
Przykładowe moduły napisane w języku VHDL (źródło: http://pl.wikibooks.org/wiki/VHDL/Przyk
%C5%82ady_kodu):
Zawartość pliku opisującego gotowy do symulacji i syntezy logicznej, przerzutnik typu D z
Resetowaniem synchronicznym.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
-- dołączenie standardowej biblioteki IEEE
-- dołączenie pakietu 'STD_LOGIC_1164' z
biblioteki IEEE
-- definiującego popularne stany logiczne
-- opis interfejsu przerzutnika (połączeń z
otoczeniem)
entity dffr is
port(
CLK
RESET
DIN
DOUT
);
Altera Quartus II
:
:
:
:
in
in
in
out
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC
-----
wejście
wejście
wejście
wyjście
zegarowe
kasowania
danych
danych
Opis wybranych komponentów
11
end dffr;
architecture behavior of dffr is
begin
-- opis wnętrza przerzutnika (w tym przypadku
-- jest to opis behawioralny)
dffar: process (CLK, RESET)
begin
if rising_edge(CLK) then
if RESET='1' then
DOUT <= '0';
else
DOUT <= DIN;
-- proces z listą czułości (sensitivity list)
end if;
end if;
end process;
-- wykrywanie aktywnego zbocza zegara
-- kasowanie stanem wysokim wejścia RESET
-- przypisanie stałej to sygnału wyjściowego
-- przypisanie stanu wejścia do sygnału
wyjściowego
end behavior;
Przydatne funkcje i moduły w języku VHDL
•
•
•
falling_edge() - jest przeciwieństwem rising_edge(), to znaczy, że zwraca
wartość true, jeśli wykryta została zmiana stanu sygnału podanego jako parametr tej
funkcji z wysokiego na niski
Instrukcja “case” służy do wprowadzania rozejścia na różne drogi. Instrukcje tą stosuje się
wyłącznie wewnątrz procesu.
case kod_instrukcji is
when x”00”
=> dodawanie;
when x”01” | x”10”
=> czekanie;
when others
=> nieznany_kod;
end case;
use IEEE.STD_LOGIC_UNSIGNED.all; - biblioteka, której dodanie powoduje, że
wszystkie sygnały w projektowanym module będą traktowane jako wartości
całkowitoliczbowe bez znaku. Umożliwia to używanie tych sygnałów zarówno w sposób
klasyczny (np. odwoływanie się do konkretnych bitów), jak i wykonywanie na nich działań
arytmetycznych (używamy ich wówczas tak samo jak zwykłych zmiennych, np.:
syg1 <= syg2 + syg3)
Altera Quartus II
Opis wybranych komponentów
12