Instrukcja konfiguracji środowiska, przykładowy projekt

Transkrypt

Instrukcja konfiguracji środowiska, przykładowy projekt
MMfpga01
MMfpga11
Instrukcja konfiguracji środowiska,
przykładowy projekt oraz programowanie
układu
1
Spis treści
1. Instalacja aplikacji QUARTUS II Web Edition................................................................................3
2. Instalacja programu QUARTUS II Web Edition..............................................................................5
3. Instalacja programatora USB-Blaster...............................................................................................7
4. Tworzenie nowego projektu.............................................................................................................8
5. Projekt schematu blokowego..........................................................................................................11
6. Tworzenie modułu w VHDL'u........................................................................................................15
7. Przypisanie pinów..........................................................................................................................17
8. Kompilacja.....................................................................................................................................19
9. Programowanie układu ..................................................................................................................19
Programowanie za pomocą interfejsu JTAG.................................................................................20
Programowanie pamięci konfiguracyjnej – tryb AS Programming...............................................21
10. Pomoc techniczna.........................................................................................................................24
2
1. Instalacja aplikacji QUARTUS II Web Edition
W pierwszej kolejności należy pobrać aplikację ze strony producenta wchodząc pod poniższy adres
https://www.altera.com/download/dnl-index.jsp
Po wybraniu najnowszej wersji klikamy przycisk GO.
•
•
Na stronie mamy do wyboru dwa warianty pobrania aplikacji.
Ściągnięcie całej spakowanej wersji
Instalacja bezpośrednio z serwera
3
Bez względu na wybór wariantu na kolejnej stronie, musimy się zarejestrować lub wybrać opcję
jednorazowego dostępu.
W przypadku opcji z jednorazowym dostępem należy zaznaczyć „radio button” Get One-time
Access, podać swój email, a następnie przycisnąć przycisk „Get One-time Access”.
Jeśli mamy zablokowane automatyczne wyskakiwanie okien należy wejść w link Download your
file now.
4
Producent zaleca instalację/pobieranie Quartus'a za pomocą Altera Download Menager.
Po ściągnięciu należy wypakować program w dowolne miejsce. Po tej czynności instalator
uruchamia się automatycznie. Możliwe jest również, przerwanie instalacji i uruchomienie jej w
późniejszym czasie.
2. Instalacja programu QUARTUS II Web Edition
Instalacja uruchamia się automatycznie po wypakowaniu lub można wywołać ją później
uruchamiając plik setup.exe znajdujący się w miejscu, w którym wypakowaliśmy Quartus'a.
Sam proces instalacji przebiega w bardzo intuicyjny sposób.
W pierwszym oknie instalatora
klikamy NEXT.
5
W polu Destination Directory podajemy ścieżkę, pod którą zostanie zainstalowany Quartus.
Warta zaznaczania jest możliwość nie instalowania komponentów obsługujących inne rodziny
układów programowalnych niż Cyclone co pozwala nam zaoszczędzić niemal 2GB pamięci.
Po zainstalowaniu można usunąć pliki instalacyjne oraz rozpakowany instalator Quartus'a.
6
3. Instalacja programatora USB-Blaster
Podłącz swój programator do wybranego gniazda USB.
Windows automatycznie powinien wykryć nowy sprzęt.
Wybieramy drugi wariant „Zainstaluj z listy lub określonej lokalizacji (zaawansowane)”.
Klikamy przeglądaj i wskazujemy lokalizację sterowników programatora USB-Blaster. Znajdują się
one w folderze gdzie zainstalowaliśmy Quartus'a - \Quartus\drivers\usb-blaster.
Po zainstalowaniu programatora środowisko jest w pełni gotowe do pracy.
7
4. Tworzenie nowego projektu.
Uruchamiamy Quartus'a i wchodzimy w menu File->New Project Wizard...
• W pierwszym polu wskazujemy lokalizację pod którą zostanie zapisany nasz projekt.
• W drugim polu podajemy nazwę projektu.
• W trzecim polu podjemy nazwę głównej jednostki.
Przechodzimy do następnego okna klikając Next.
8
W poniższym oknie możemy dodać pliki projektowe utworzone w innych projektach np. Pliki
VHDL, biblioteki itp. W naszym projekcie pomijamy to i przechodzimy dalej klikając Next.
9
W kolejnym oknie dokonujemy wyboru rodziny układów (Device family) – Cyclone oraz z listy
Available devices wybieramy układy w zależności od posiadanego modułu.
• MMfpga01 EP1C3T100C8
• MMfpga11 EP1C3T144C8
Po wybraniu układu Finish nasz projekt zostaje utworzony.
10
5. Projekt schematu blokowego
W celu stworzenia nowego schematu blokowego wchodzi w menu File->New...
Wybieramy „Block Diagram/Schematic File” i klikamy OK.
11
Pojawia się nam okno z siatką na której możemy tworzyć nasz schemat logiczny/blokowy.
W naszym przykładowym projekcie będziemy wykorzystywać podstawowe narzędzia.
Symbol Tool
Narzędzia, elementy
logiczne, piny itp.
Othogonal Node Tool
Przewód łączący
elementy
Othogonal Bus Tool
Magistrala
Powiększenie
Lewy/Prawy
klawisz myszy
Pełen ekran
Wybieramy Symbol Tool
12
W liście library mamy do wyboru podstawowe elementy z których najważniejsze to:
1. Primitivies
• Pin (input-wejściowe,output-wyjściowe,inout_wejściowo/wyjściowe)
• Logic (podstawowe elementy logiczne – bramki AND, NOR, NOT itp)
• Others (inne, GND wymuszenie stanu niskiego,VCC wymuszenie stanu wysokiego)
• Storage (przerzutniki)
2. Others
• maxplus2 (podstawowe elementy logiczne np. 74245 itp)
3. Megafunctions
• IO
• Gates
• Storage
• Arithmetic
W naszym projekcie wykorzystamy gotowy licznik, którego wyjście Carry – przepełnienia
wykorzystamy do podziału zegara przez 50 000 000 tak, aby na jego wyjściu uzyskać częstotliwość
1Hz. W tym celu w oknie „Symbol” na liście Libraries rozwijamy
Megafunctions->Arithmetic->lpm_counter i klikamy OK.
Powinien pojawić się MegaWizard – kreator umożliwiający konfigurację licznika. Zaznaczamy
VHDL i klikamy Next.
13
W kolejnym oknie dokonujemy konfiguracji licznika, dla podziału przez 50 000 000 konieczne jest
ustawienie 26 bitowego wyjścia licznika. Kierunek zliczania licznika tylko do góry.
Po konfiguracji przechodzimy dalej klikając NEXT.
W kolejnym oknie wybieramy opcję zliczania modulo 50 000 000 oraz zaznaczamy dodatkową
opcję Carry-out informującą o przepełnieniu licznika.
Nasz licznik jest już skonfigurowany, aby wyjść z kreatora i umieścić moduł na schemacie klikamy
Finish.
14
Po tej czynności blok licznika zostanie umieszczony na schemacie.
6. Tworzenie modułu w VHDL'u
Do naszego projektu dodamy licznik „1 z 8”, którego kod zostanie napisany w VHDL'u.
W tym celu wchodzimy File->New... i wybieramy VHDL file.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity Licznik is
port(
Q: out std_logic_vector(7 downto 0);
CLK: in std_logic
);
end entity;
architecture behave of Licznik is
signal licz: std_logic_vector(2 downto 0):=(others=>'0');
begin
process(CLK)
begin
if CLK'event and CLK='1' then
licz<=licz+1;
end if;
end process;
Q <= "10000000" when licz="000" else
"01000000" when licz="001" else
"00100000" when licz="010" else
"00010000" when licz="011" else
"00001000" when licz="100" else
"00000100" when licz="101" else
"00000010" when licz="110" else
"00000001" when licz="111" else unaffected;
end behave;
15
Teraz utworzymy symbol blokowy z kodu napisanego w VHDL'u.
Teraz możemy wstawić nasz Symbol do schematu i połączyć z modułem LPM_COUNTER.
Wybieramy ikonę Symbol Tool
16
Nasz schemat jest już prawie gotowy. Wystarczy dodać parę brakujących elementów jak na rysunku
i przypisać symboliczne nazwy odpowiednim wyprowadzeniom.
Do schematu należy dodać:
• jedno wejście INPUT (znajdujące się w Symbol Tool->Primitivies->Pin) i przypisujemy
nazwę CLOCK_50
• jedno wyjście OUTPUT (znajdujące się w Symbol Tool->Primitivies->Pin) i przypisujemy
nazwę LED[7..0]
• połączyć wyjście count LPM_COUNTER z wejściem Licznika CLK za pomocą
•
diody na płytce EVBfpga zapalają się przy podaniu stanu niskiego dlatego na wyjście
licznika Q[7..0] podłączamy negację i za pomocą magistrali
łączymy z wyjściem
OUTPUT LED[7..0]. Można również połączyć bezpośrednio jak na poniższym schemacie.
7. Przypisanie pinów
W projekcie pozostało jeszcze przypisanie symbolicznych nazw użytych w schemacie do pinów w
rzeczywistym układzie.
Wchodzimy w menu Assignments->Pin Planer
17
W tabeli jako Node Name podajemy symboliczną nazwę użytą w schemacie, a jako Location
wybieramy, które wyprowadzenie układu chcemy jej przypisać.
Symboliczna nazwa Mmfpga01
MMfpga11
LED[7]
PIN_23(J1_21) lub dowolny inny
PIN_98
LED[6]
PIN_26
PIN_104
LED[5]
PIN_25
PIN_103
LED[4]
PIN_24
PIN_100
LED[3]
PIN_22
PIN_99
LED[2]
PIN_21
PIN_122(J1_16) lub dowolny inny
LED[1]
PIN_20
PIN_97
LED[0]
PIN_17
PIN_96
CLOCK_50
PIN_10(CLK0)
PIN_16(CLK0)
Uwaga!!
W układzie MMfpga01 diodę LED[7] nie można połączyć z płytką EVBfpga za pomocą zworki
LED7 - J1_17 na złączu J5. Diodę LED[7] zaleca połączyć przewodem z dowolnym pinem np.
PIN_23 lub dowolnym innym wybranym i nie używanym wyprowadzeniem.
W układzie MMfpga11 diodę LED[2] nie można połączyć z płytką EVBfpga za pomocą zworki
LED2 - J1_23 na złączu J5. Diodę LED[2] zaleca połączyć przewodem z dowolnym pinem np.
PIN_122 lub dowolnym innym wybranym i nie używanym wyprowadzeniem.
Przypisane piny można eksportować do pliku by później wykorzystać je w innym projekcie.
Assignments->Import Assignments - przywrócenie przypisanych pinów
Assignments->Export Assignments – eksport przypisanych pinów do pliku
18
8. Kompilacja
Nasz projekt jest ukończony, teraz możemy przejść do kompilacji wybierając z menu
Processing->Start Compilation.
Jeśli w trakcie tworzenia projektu nie popełniliśmy żadnego błędu powinniśmy uzyskać jednakowe
okno.
Po kompilacji mamy możliwość zobaczenia jaki procent zasobów układu programowalnego został
wykorzystany,
W naszym przypadku nie trzeba przejmować się „Warning'ami”, w bardziej złożonych projektach
nie można jednak ich ignorować!
9. Programowanie układu
Interfejs JTAG nie programuje pamięci konfiguracyjnej, wgrany program „znika” po wyłączeniu
zasilania, ma to jednak zaletę ponieważ nie zużywa to pamięci EPCS4, której żywotność wynosi 10
tysięcy cykli programowania. Ta opcja jest zalecana w trakcie testów.
Active Serial Programming – specjalny tryb do programowania pamięci nieulotnej.
Nasze moduły można programować w sposób:
MMfpga01
•
•
JTAG
AS Programming (EPCS conf)
MMfpga11
•
•
JTAG nie jest wyprowadzony na oddzielnym złączu, aby korzystać z tego interfejsu
koniczne jest podłączenie się programatorem do odpowiednich wyprowadzeń.
Zaleca się wyprowadzenie przewodami interfejsu JTAG'a na złącze uniwersalne J27 i
podłączanie programatora do złącza J28
AS Programming (EPCS conf)
19
Programowanie za pomocą interfejsu JTAG
Uwaga! Po zaprogramowaniu program znika po wyłączeniu zasilania!
Aby przejść do okna programowania należy wejść Tools->Programmer lub kliknąć ikonkę
•
Wykrywamy programator za pomocą przycisku Hardware Setup
•
Ustawiamy tryb JTAG w polu wyboru „Mode”
Używany przez nas programator powinien być widoczny na liście Available hardware items.
W oknie Hardware Setup w polu wyboru „Currently selected hardware” wybieramy USB-Blaster
(lub inny jeśli takiego używamy) i klikamy Close.
Programowanie układu dokonujemy przyciskiem
20
Programowanie pamięci konfiguracyjnej – tryb AS Programming
Pamięć konfiguracyjna według danych producenta można programować około 10 tysięcy razy.
Program jest pamiętany i przywracany do układu programowalnego po przywróceniu zasilania.
Na początku konieczne jest wybranie typu pamięci wbudowanej na moduł EPCS4.
Wchodzimy do menu Assignments->Device
Następnie klikamy przycisk Device and Pin Options
21
Przechodzimy do zakładki Configuration
W polu wyboru Configuration scheme wybieramy „Active Serial (can use Configuration Device)”
Zaznaczamy „Use configuration device” i z pola wyboru wybieramy EPCS4.
Zatwierdzamy ustawienia klikając OK.
22
Przechodzimy do okna programowania i z pola wyboru wybieramy tryb Active Serial Programming
Wykrycie programatora dokonujemy identycznie jak w przypadku JTAG'a.
Powinien pojawić się komunikat, aby zaprogramować pamięć konfiguracyjną konieczne wybranie
jest „Yes”
23
Kolejnym krokiem jest dodanie pliku przeznaczonego do programowania pamięci konfiguracyjnej.
Klikamy Add File i wybieramy plik z folderu z naszego projektu z rozszerzeniem *.pof
Konieczne jest zaznaczenie Program/Configure.
Programowania układu dokonujemy za pomocą przycisku
Uwaga! Po za programowaniu układu konieczne jest odłączanie programatora.
10. Pomoc techniczna
W pytaniu prosimy umieścić szczegółową informację dotyczącą problemu oraz nazwę modułu.
[email protected]
Poradnik opracował Piotr Banach.
[email protected]
24

Podobne dokumenty