środowisko projektowe dla układów
PLD firmy ALTERA
...zamykam drzwi, spalę wszystkie mosty...https://www.youtube.com/watch?v=kaaKo99j3QM
Oprogramowanie do realizacji projektów w strukturach programowalnych oferowanych przez firmę Altera można pobrać ze strony internetowej (http://www.altera.com). Aktualnie dostępne oprogramowanie Quartus, wersja 9.0, nie wymaga licencji. Starsze wersje, które można znaleźć na płytach CD i DVD dołączanych przykładowo do czasopisma „Elektronika Praktyczna” wymagają właściwej licencji. Z tego powodu pokazany jest sposób uzyskania licencji.Po wejściu na stronę internetową należy najechać myszką na „Downloads & Licensing”. Spowoduje to pojawienie się nowego menu, z którego należy wybrać opcję: „Quartus II Web Edition (Free)”. Pobranie wersji instalacyjnej oprogramowania wymaga zalogowania się (z ewentualną rejestracją, jeżeli realizowane jest to po raz pierwszy). Sugeruje to informacja na stronie:Klikając na odpowiedni przycisk „Download” przechodzimy do autoryzacji.Mając utworzone w serwisie Altery konto, należy wpisać w „User Name” oraz „Password” odpowiednie dane i nacisnąć przycisk „Sign-In”. W przeciwnym wypadku należy utworzyć konto klikając na „Create Account”.
Po zalogowaniu się w serwisie uzyskana jest możliwość pobrania wersji instalacyjnej oprogramowania.W tym celu, na dole strony, należy kliknąć na „Click to Download Your File Now” oraz następnie na „Zapisz”.Po ściągnięciu pliku należy uzyskać licencję na używanie oprogramowanie. Plik licencji zostanie przysłany do nas ze strony Altery drogą e-mail (jako załącznik). Czasami może to trochę potrwać.
Licencja pozwalająca używać oprogramowanie Quartus jest udzielana na 6 miesięcy i jest „przywiązana” do komputera. Do uzyskania licencji należy kliknąć na „License your software”.Otwiera to kolejną stronę.gdzie należy wybrać „Quartus – II Web Edition”.
Na następnej stronie należy kliknąć na „Quartus II Web Edition software and the ModelSim-Altera Web Edition software”.Otwiera to kolejną stronę.Do uzyskania licencji należy podać numer karty sieciowej komputera, w którym będzie uruchamiane oprogramowanie (w rzeczywistości przywiązanie licencji do komputera jest przywiązaniem do numeru karty sieciowej). Numer ten uzyskuje się w następujący sposób.
W oknie programu cmd.exe należy użyć polecenie: ipconfig -all.Poszukiwany numer to „Adres fizyczny”. Jest to sześciobajtowa liczba w zapisie szesnastkowym. W tym przypadku to 00-0D-61-0D-DC-BA. Należy wpisać ją w odpowiednim okienku (już bez kresek) oraz zaznaczyć odpowiednie opcje.Po kliknięciu na „Continue” pozostało cierpliwie trochę poczekać, procedura uzyskania licencji chwilowo jest zakończona.Samo zainstalowanie oprogramowania nie sprawia problemów (poza tym, że to trochę trwa).
Otrzymany drogą e-mail plik licencji należy umieścić w kartotece quartus, która znajduje się w strukturze kartotek c:\altera. Przy pierwszym uruchomieniu programu QUARTUS, należy wskazać plik licencji.W tym celu należy wybrać opcję „Tools” i następnie „License Setup”.Otwiera to kolejne okno, w którym w polu „License file:” należy podać nazwę pliku licencji lub korzystając z przycisku „...” wskazać właściwy plik. Operację licencjonowania należy zakończyć przyciskiem „OK”.
Po zakończeniu procesu licencjonowania, program Quartus jest gotowy do pracy. Można teraz przystąpić do opracowania przykładowego projektu, który zostanie uruchomiony w zestawie DE2. Będzie to licznik binarny wyświetlający wynik w postaci czterech liczb w zapisie szesnastkowym.Tworząc pierwszy projekt należy z menu „File” wybrać opcję „New Project Wizard”.i w okienku dialogowym określić niezbędne szczegóły:W polu „What is the working ….” należy podać nazwę kartoteki przeznaczonealtera jako wynik instalacji oprogramowania,j na projekt. Z powodu, że używana jest wersja oprogramowania o symbolu v7.2, na dysku znajduje się następująca struktura kartotek:
- c:\altera jako wynik instalacji oprogramowania,
- w niej lokalnie kartoteka 72sp1 jako wynik instalacji oprogramowania,
- w niej lokalnie kartoteka quartus jako wynik instalacji oprogramowania,
- w niej lokalnie kartoteka project utworzona ręcznie na przechowywanie projektów.
W identyczny sposób należy utworzyć kolejny plik zawierający opis komponentu (projekt składa się z dwóch komponentów: głównego oraz transkodera liczb 4-bitowych na postać wymaganą przez wyświetlacze 7-segmentowe.
Mając gotowe wszystkie pliki wchodzące w skład projektu nożna dokonać jego syntezy. W tym celu należy wybrać opcję „Processing” i następnie „Start Compilation”. Poprawna synteza zakończona jest następującym komunikatem.Uzyskane w wyniku przetwarzania dane jeszcze nie nadają się do zaprogramowania układu PLD, gdyż nie jest jeszcze szczegółowo określone przyporządkowanie sygnałów sprzęgających komponent główny do fizycznych wyprowadzeń układu. Należy utworzyć odpowiedni plik określający przyporządkowania. Można to cierpliwie wyklikać (posługując się dokumentacją zestawu startowego DE2) lub „pójść na skróty”. Należy pobrać z internetu plik opisujący wszystkie możliwe dla zestawu uruchomieniowego wyprowadzenia. Posługując się google nie jest to zbyt skomplikowane, plik nazywa się „DE2_pin_assignments.csv”. Za pomocą dowolnego edytora, z pliku należy usunąć niepotrzebne zapisy (istniejące opisy wyprowadzeń są wystarczająco czytelne by pozostawić tylko niezbędne: sygnał zegarowy, sygnał resetu oraz przyłączenie wyświetlacza 7-segmentowego) jednocześnie zmieniając jego nazwę na właściwą dla projektu cnt.csv. W dalszej kolejności należy „poinformować oprogramowanie” o przyporządkowaniu poszczególnym sygnałom komponentu głównego właściwych wyprowadzeń. Należy wybrać opcję „Assignments” oraz „Import Assigments”.To otworzy okienko dialogowe pozwalające na wskazanie właściwego pliku. Klikając na przycisk „...” obok pola „File name” oprogramowanie umożliwi wskazanie właściwego pliku.Po tej operacji należy przeprowadzić syntezę układu (już zawierającą właściwe przyporządkowanie wyprowadzeń). Jej wynikiem jest utworzenie pliku zawierającego dane do skonfigurowania układu PLD. Operację programowania, jako czynność umieszczenia odpowiednich danych wewnątrz układu, również realizuje oprogramowanie QUARTUS. W tym celu należy wybrać opcję „Tools” i następnie „Programmer”.Wbudowany w oprogramowanie QUARTUS programator może posiłkować się róznymi rozwiązaniami technicznymi. Zestaw uruchomieniowy DE2 ma wbudowany standardowy (JTAG) interfejs programujący, który jest przyłączony do komputera poprzez złącze USB. Przy pierwszym uruchomieniu programu obsługującego interfejs JTAG należy go odpowiednio skonfigurować. W tym celu należy kliknąć na przycisk „Hardware Setup”.W kolejnym okienku w polu „Currenty selected hardware” wybrać „USB-Blaster” (taki interfejs znajduje się w zestawie DE2). Po określeniu niezbędnych parametrów można przystąpić do operacji programowania.By uruchomić proces programowania należy kliknąć na przycisk „Start”. W polu „Progress” będzie pokazywany stan zaawansowania operacji. Po jej zakończeniu można podziwiać działanie.Plik modułu głównego [Cnt.vhd]:
Kod: Zaznacz cały
(…)
library IEEE ;
use IEEE.STD_LOGIC_1164.ALL ;
use IEEE.STD_LOGIC_ARITH.ALL ;
use IEEE.STD_LOGIC_UNSIGNED.ALL ;
entity Cnt is port ( Clk : in std_logic ;
Reset : in std_logic ;
Disp1 : out std_logic_vector ( 6 downto 0 ) ;
Disp2 : out std_logic_vector ( 6 downto 0 ) ;
Disp3 : out std_logic_vector ( 6 downto 0 ) ;
Disp4 : out std_logic_vector ( 6 downto 0 ) ;
Disp5 : out std_logic_vector ( 6 downto 0 ) ;
Disp6 : out std_logic_vector ( 6 downto 0 ) ;
Disp7 : out std_logic_vector ( 6 downto 0 ) ;
Disp8 : out std_logic_vector ( 6 downto 0 ) ) ;
end Cnt ;
architecture Behavioral of Cnt is
component HexConv port ( Tetr : in std_logic_vector ( 3 downto 0 ) ;
Segm : out std_logic_vector ( 6 downto 0 ) ) ;
end component ;
signal FClk : std_logic ;
signal FDivCnt : std_logic_vector ( 15 downto 0 ) ;
signal PClk : std_logic ;
signal PDivCnt : std_logic_vector ( 7 downto 0 ) ;
signal BinCnt : std_logic_vector ( 15 downto 0 ) ;
begin
PClk <= PDivCnt ( 7 ) ;
FClk <= FDivCnt ( 15 ) ;
PDivInstance : process ( Reset , Clk )
begin
if Reset = '0' then
PDivCnt <= ( others => '0' ) ;
else
if Clk'event and Clk = '0' then
PDivCnt <= PDivCnt + 1 ;
end if ;
end if ;
end process ;
FDivInstance : process ( Reset , PClk )
begin
if Reset = '0' then
FDivCnt <= ( others => '0' ) ;
else
if PClk'event and PClk = '0' then
FDivCnt <= FDivCnt + 1 ;
end if ;
end if ;
end process ;
CntInstance : process ( Reset , FClk )
begin
if Reset = '0' then
BinCnt <= ( others => '0' ) ;
else
if FClk'event and FClk = '0' then
BinCnt <= BinCnt + 1 ;
end if ;
end if ;
end process ;
Disp1Instance : HexConv port map ( Tetr => BinCnt ( 3 downto 0 ) ,
Segm => Disp1 ) ;
Disp2Instance : HexConv port map ( Tetr => BinCnt ( 7 downto 4 ) ,
Segm => Disp2 ) ;
Disp3Instance : HexConv port map ( Tetr => BinCnt ( 11 downto 8 ) ,
Segm => Disp3 ) ;
Disp4Instance : HexConv port map ( Tetr => BinCnt ( 15 downto 12 ) ,
Segm => Disp4 ) ;
Disp5 <= ( others => '1' ) ;
Disp6 <= ( others => '1' ) ;
Disp7 <= ( others => '1' ) ;
Disp8 <= ( others => '1' ) ;
end Behavioral ;
Kod: Zaznacz cały
(…)
library IEEE ;
use IEEE.STD_LOGIC_1164.ALL ;
use IEEE.STD_LOGIC_ARITH.ALL ;
use IEEE.STD_LOGIC_UNSIGNED.ALL ;
entity HexConv is port ( Tetr : in std_logic_vector ( 3 downto 0 ) ;
Segm : out std_logic_vector ( 6 downto 0 ) ) ;
end HexConv ;
architecture Behavioral of HexConv is
begin
-- przyporządkowanie segmentów w Segments
-- 0
-- ---
-- 5 | | 1
-- --- <- 6
-- 4 | | 2
-- ---
-- 3
with Tetr select
Segm <= "1111001" when "0001" , --1
"0100100" when "0010" , --2
"0110000" when "0011" , --3
"0011001" when "0100" , --4
"0010010" when "0101" , --5
"0000010" when "0110" , --6
"1111000" when "0111" , --7
"0000000" when "1000" , --8
"0010000" when "1001" , --9
"0001000" when "1010" , --A
"0000011" when "1011" , --b
"1000110" when "1100" , --C
"0100001" when "1101" , --d
"0000110" when "1110" , --E
"0001110" when "1111" , --F
"1000000" when others ; --0
end Behavioral ;
Kod: Zaznacz cały
# Quartus II Version 5.1 Internal Build 160 09/19/2005 TO Full Version,
# File: D:\de2_pins\de2_pins.csv,
# Generated on: Wed Sep 28 09:40:34 2005,
# Note: The column header names should not be changed if you wish to import this .csv file into the Quartus II software.,
To,Location
Disp1[0],PIN_AF10
Disp1[1],PIN_AB12
Disp1[2],PIN_AC12
Disp1[3],PIN_AD11
Disp1[4],PIN_AE11
Disp1[5],PIN_V14
Disp1[6],PIN_V13
Disp2[0],PIN_V20
Disp2[1],PIN_V21
Disp2[2],PIN_W21
Disp2[3],PIN_Y22
Disp2[4],PIN_AA24
Disp2[5],PIN_AA23
Disp2[6],PIN_AB24
Disp3[0],PIN_AB23
Disp3[1],PIN_V22
Disp3[2],PIN_AC25
Disp3[3],PIN_AC26
Disp3[4],PIN_AB26
Disp3[5],PIN_AB25
Disp3[6],PIN_Y24
Disp4[0],PIN_Y23
Disp4[1],PIN_AA25
Disp4[2],PIN_AA26
Disp4[3],PIN_Y26
Disp4[4],PIN_Y25
Disp4[5],PIN_U22
Disp4[6],PIN_W24
Disp5[0],PIN_U9
Disp5[1],PIN_U1
Disp5[2],PIN_U2
Disp5[3],PIN_T4
Disp5[4],PIN_R7
Disp5[5],PIN_R6
Disp5[6],PIN_T3
Disp6[0],PIN_T2
Disp6[1],PIN_P6
Disp6[2],PIN_P7
Disp6[3],PIN_T9
Disp6[4],PIN_R5
Disp6[5],PIN_R4
Disp6[6],PIN_R3
Disp7[0],PIN_R2
Disp7[1],PIN_P4
Disp7[2],PIN_P3
Disp7[3],PIN_M2
Disp7[4],PIN_M3
Disp7[5],PIN_M5
Disp7[6],PIN_M4
Disp8[0],PIN_L3
Disp8[1],PIN_L2
Disp8[2],PIN_L9
Disp8[3],PIN_L6
Disp8[4],PIN_L7
Disp8[5],PIN_P9
Disp8[6],PIN_N9
Reset,PIN_G26
Clk,PIN_N2
- SW – przełączniki,
- DRAM_xxx – pamięć dynamiczna SDRAM,
- FL_xxx – pamięć FLASH,
- HEX0 .. HEX7 – poszczególne cyfry wyświetlacza 7-segmentowego,
- KEY – przyciski klawiatury,
- LEDR – diody LED czerwone,
- LEDG – diody LED zielone,
- CLOCK_27 – sygnał zegarowy 27MHz,
- CLOCK_50 – sygnał zegarowy 50MHz,
- EXT_CLOCK – zewnętrzny sygnał zegarowy,
- PS_xxx – złącze PS,
- UART_xxx – interfejs szeregowy RS232,
- LCD_xxx – moduł wyświetlacza LCD,
- SRAM_xxx – pamięć statyczna RAM,
- OTG_xxx – interfejs USB,
- VGA_xxx – generator sygnału dla monitorów VGA
- TD_xxx – dekoder TV,
- AUD_xxx – kodek AUDIO,
- ENET_xxx – interfejs ethernet,
- IRDA_xxx – interfejs IRDA,
- SD_xxx – karta pamięci SD,
- GPIO_xxx – złącze rozszerzeń.