[XILINX] Zestawy do eksperymentów
: czwartek 07 cze 2018, 12:12
Zestaw badawczo-rozwojowy dla układów
FPGA firmy Xilinx
Kontynuacja sprzętowych rozważań z Programy narzędziowe dla XILINX
...w dzikim tłumie
ominiemy wzrok tych co będą oceniać nas co krok...https://www.youtube.com/watch?v=oHa5aQY7fes
Obok układów logiki programowalnej określanych jako CPLD, czyli układów posiadających pewne ograniczenia, które głównie wynikają z wewnętrznych zasobów, firma Xilinx oferuje układy FPGA. W obecnej chwili warto zwrócić uwagę na układy o nazwie „SPARTAN 3”. Do tej grupy należy kilka modeli o zróżnicowanych zasobach. Poczynając od układów o najmniejszych zasobach (układ: XC3S50) zawierający 50 tysięcy bramek logicznych i kończąc na układach największych (układ: XC3S5000) zawierający 5 milionów bramek. Każdy z układów występuje w kilku odmianach związanych z obudową. Są to obudowy typu QFP (z gęsto rozmieszczonymi wyprowadzeniami z czterech stron układu) lub BGA (z wyprowadzeniami w postaci kulek na dolnej powierzchni układu). W warunkach amatorsko-domowych układy w obudowach typu BGA są zdyskwalifikowane ze względu na problemy technologiczne z wykonaniem płytki PCB oraz z przylutowaniem takiego układu. Perspektywa zastosowania układów w obudowach QFP również nie przedstawia się w różowych kolorach. Posiadając dużą wprawę w lutowaniu możliwe jest jego przylutowanie do płytki PCB (pomijając problem związany w wykonaniem w warunkach domowych płytki PCB z wyprowadzeniami w rastrze mniejszym niż 1 mm). Rozwiązaniem dużych problemów technologicznych jest użycie gotowych modułów opracowanych przez firmę BTC (http://www.btc.pl) dostępnych w sklepie internetowym (http://www.kamami.pl). Użycie modułu rozwiązuje kilka istotnych problemów, do których można zaliczyć:
Istnieje możliwość aplikacji modułu ZL10PLD w odpowiedniej płycie bazowej uzyskując niezależne i kompletne środowisko sprzętowe do tworzenia i testowania rozwiązań dla układów FPGA. Moduł bazowy między innymi zawiera:
Drugim sposobem “wystartowania” układu FPGA jest przepisanie informacji konfiguracyjnych z pamięci FLASH (tu XCF01S), która wcześniej musi być zaprogramowania. Każde dołączenie układu FPGA do napięcia zasilającego lub wymuszenie przyciskiem rekonfiguracji oznacza przepisanie informacji. Moduł zawiera niezbędne połączenia między układami scalonymi, które umożliwiają wykonanie wymienionych czynności.
Użytkownik ma możliwość wybrania jednego z dwóch wariantów umożliwiających zainicjowanie układu SPARTAN 3 do pracy. Do wyboru służy odpowiednia zworka występująca w module.Zworka łącząca piny opisane jako “JTAG” oznacza możliwość zaprogramowania układu SPARTAN 3 poprzez złącze JATG, czyli za pomocą programatora ZL4PRG. Ustawienie zworki w pozycji “Flash”oznacza, że układ FPGA będzie pobierał dane konfiguracyjne z pamięci FLASH, która wcześniej musi zostać zaprogramowana. Do jej programowania można również użyć programatora ZL4PRG (oba układy są połączone w jeden łańcuch JTAG).
Przykładem użycia modułu jest 8-bitowy licznik, którego stan będzie zobrazowany poprzez diody LED. Po uruchomieniu programu WebPack ISE należy jako docelowy wybrać układ z rodziny SPARTAN 3 o symbolu XC3S200 w obudowie VQ100 (bo taki jest zastosowany w module ZL10PLD).Opis układu w języku VHDL nowego projektu jest następujący (BINCNT.VHD):
oraz dodatkowo plik BINCNT.UCF :W projekcie występują sygnały, które są doprowadzone do układu FPGA. Sygnał zegarowy “Clk” jest doprowadzony do pinu numer 36 w układzie SPARTAN. Pozostałe sygnały poprzez złącza GOLDPIN'owe są doprowadzone do płyty bazowej ZL9PLD i dalej do odpowiednich jej elementów (LED, przyciski). Sposób przyłączenia odpowiednich zespołów (jak LED) jest stały. W każdym projekcie, który przykładowo będzie używał diody LED opisanej jako D1, należy przyporządkować sygnał do wyprowadzenia o numerze 59. W oparciu o dokumentacje modułów dostępne na stronie internetowej pod adresem http://www.kamami.pl/dl/zl10pld.pdf oraz http://www.kamami.pl/dl/zl9pld.pdf można określić przyporządkowanie wyprowadzeń układu SPARTAN 3 do poszczególnych zespołów znajdujących sie w zestawie ZL9PLD. Wypisane wyżej (zawartość pliku BINCNT.UCF) zawiera jedynie te, które są użyte w projekcie. Analizując ten plik można zauważyć, że sygnał “Reset” jest przyłączony do przycisku opisanego jako SW1.
W wyniku kompilacji projektu przez pakiet WebPack:powstaje plik, który zawiera informacje, które konfigurują układ FPGA. Za pomocą zworki opisanej w module ZL10PLD jako JP4 należy wybrać sposób konfiguracji układu SPARTAN poprzez złącze JTAG. Uruchamiając proces “Generate PROM, ACE or JTAG File” w okienku “Processes”, zostaje uruchomiony program do zaprogramowania układu FPGA (ten program również jest używany do przetworzenia danych do formaty wymaganego przez pamięci konfiguracyjne FLASH). Program iMPACT sam rozpoznaje łańcuch układów przyłączonych do złącza JTAG. Pokazuje to następujący rysunek:Moduł ZL10PLD zawiera dwa elementy widziane poprzez interfejs JTAG. Pierwszym jest układ FPGA oraz drugim pamięć FLASH. Kolejność ich występowania w łańcuchu jest cechą konstrukcyjną samego modułu.
W układach FPGA, wygenerowane pliki z danymi konfiguracyjnymi mają rozszerzenie .BIT. Ponieważ będzie programowany jedynie układ SPARTAN, można pominąć przyporządkowanie pliku dla pamięci FLASH (w okienku programu iMPACT pod odpowiednim symbolem układu scalonego jest wyświetlona nazwa pliku lub “file ?” jeżeli z układem nie jest skojarzony żaden plik). Po przyporządkowaniu układom występującym w łańcuchu odpowiednich plików można przystąpić do programowania. Zakończenie operacji programowania jest sygnalizowane komunikatem:Po wykonaniu tych czynności całość realizuje założoną funkcjonalność.
FPGA firmy Xilinx
Kontynuacja sprzętowych rozważań z Programy narzędziowe dla XILINX
...w dzikim tłumie
ominiemy wzrok tych co będą oceniać nas co krok...https://www.youtube.com/watch?v=oHa5aQY7fes
Obok układów logiki programowalnej określanych jako CPLD, czyli układów posiadających pewne ograniczenia, które głównie wynikają z wewnętrznych zasobów, firma Xilinx oferuje układy FPGA. W obecnej chwili warto zwrócić uwagę na układy o nazwie „SPARTAN 3”. Do tej grupy należy kilka modeli o zróżnicowanych zasobach. Poczynając od układów o najmniejszych zasobach (układ: XC3S50) zawierający 50 tysięcy bramek logicznych i kończąc na układach największych (układ: XC3S5000) zawierający 5 milionów bramek. Każdy z układów występuje w kilku odmianach związanych z obudową. Są to obudowy typu QFP (z gęsto rozmieszczonymi wyprowadzeniami z czterech stron układu) lub BGA (z wyprowadzeniami w postaci kulek na dolnej powierzchni układu). W warunkach amatorsko-domowych układy w obudowach typu BGA są zdyskwalifikowane ze względu na problemy technologiczne z wykonaniem płytki PCB oraz z przylutowaniem takiego układu. Perspektywa zastosowania układów w obudowach QFP również nie przedstawia się w różowych kolorach. Posiadając dużą wprawę w lutowaniu możliwe jest jego przylutowanie do płytki PCB (pomijając problem związany w wykonaniem w warunkach domowych płytki PCB z wyprowadzeniami w rastrze mniejszym niż 1 mm). Rozwiązaniem dużych problemów technologicznych jest użycie gotowych modułów opracowanych przez firmę BTC (http://www.btc.pl) dostępnych w sklepie internetowym (http://www.kamami.pl). Użycie modułu rozwiązuje kilka istotnych problemów, do których można zaliczyć:
- wykonanie płytki PCB z wyprowadzeniami w gęstym rastrze,
- przylutowanie układu FPGA do płytki PCB,
- moduł zawiera układy, które nie są bardzo popularne i mogą być kłopoty związane z ich zdobyciem,
- gwarancja poprawności aplikacji układu, moduł w rzeczywistości zawiera wiele połączonych ze sobą elementów elektronicznych, których sposób użycia dla początkujących nie musi być oczywisty.
- złącze do programowania poprzez JTAG,
- generator kwarcowy o częstotliwości 3,6864 MHz,
- niezbędne stabilizatory (układ SPARTAN 3 jest zasilany kilkoma napięciami),
- nieuotną pamięć konfiguracyjną.
Istnieje możliwość aplikacji modułu ZL10PLD w odpowiedniej płycie bazowej uzyskując niezależne i kompletne środowisko sprzętowe do tworzenia i testowania rozwiązań dla układów FPGA. Moduł bazowy między innymi zawiera:
- złącze do zainstalowania modułu z układem FPGA,
- rozwiązanie zasilania (zasilić można z dwóch źródeł),
- złącze do kart MMC,
- interfejs szeregowy RS232 wraz ze złączem DB9,
- prosty przetwornik analogowo-cyfrowy ze złączem do monitorów VGA,
- 4-przyciskową klawiaturę,
- 8 LED'ów do sygnalizacji.
- układu SPARTAN 3,
- pamięci konfiguracyjnej FLASH (w module użyta jest pamięć o symbolu XCF01S).
Drugim sposobem “wystartowania” układu FPGA jest przepisanie informacji konfiguracyjnych z pamięci FLASH (tu XCF01S), która wcześniej musi być zaprogramowania. Każde dołączenie układu FPGA do napięcia zasilającego lub wymuszenie przyciskiem rekonfiguracji oznacza przepisanie informacji. Moduł zawiera niezbędne połączenia między układami scalonymi, które umożliwiają wykonanie wymienionych czynności.
Użytkownik ma możliwość wybrania jednego z dwóch wariantów umożliwiających zainicjowanie układu SPARTAN 3 do pracy. Do wyboru służy odpowiednia zworka występująca w module.Zworka łącząca piny opisane jako “JTAG” oznacza możliwość zaprogramowania układu SPARTAN 3 poprzez złącze JATG, czyli za pomocą programatora ZL4PRG. Ustawienie zworki w pozycji “Flash”oznacza, że układ FPGA będzie pobierał dane konfiguracyjne z pamięci FLASH, która wcześniej musi zostać zaprogramowana. Do jej programowania można również użyć programatora ZL4PRG (oba układy są połączone w jeden łańcuch JTAG).
Przykładem użycia modułu jest 8-bitowy licznik, którego stan będzie zobrazowany poprzez diody LED. Po uruchomieniu programu WebPack ISE należy jako docelowy wybrać układ z rodziny SPARTAN 3 o symbolu XC3S200 w obudowie VQ100 (bo taki jest zastosowany w module ZL10PLD).Opis układu w języku VHDL nowego projektu jest następujący (BINCNT.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 Bincnt is port ( Clk : in std_logic ;
Reset : in std_logic ;
D1 : out std_logic ;
D2 : out std_logic ;
D3 : out std_logic ;
D4 : out std_logic ;
D5 : out std_logic ;
D6 : out std_logic ;
D7 : out std_logic ;
D8 : out std_logic ) ;
end Bincnt ;
architecture Behavioral of Bincnt is
signal ClkDivider : std_logic_vector ( 19 downto 0 ) ;
signal F3Hz : std_logic ;
signal Cnt : std_logic_vector ( 7 downto 0 ) ;
begin
F3Hz <= ClkDivider ( 19 ) ;
D1 <= Cnt ( 0 ) ;
D2 <= Cnt ( 1 ) ;
D3 <= Cnt ( 2 ) ;
D4 <= Cnt ( 3 ) ;
D5 <= Cnt ( 4 ) ;
D6 <= Cnt ( 5 ) ;
D7 <= Cnt ( 6 ) ;
D8 <= Cnt ( 7 ) ;
process ( Clk , Reset )
begin
if Reset = '0' then
ClkDivider <= "00000000000000000000" ;
else
if Clk'event and Clk = '1' then
ClkDivider <= ClkDivider + 1 ;
end if ;
end if ;
end process ;
process ( F3Hz , Reset )
begin
if Reset = '0' then
Cnt <= "00000000" ;
else
if F3Hz'event and F3Hz = '1' then
Cnt <= Cnt + 1 ;
end if ;
end if ;
end process ;
end Behavioral ;
oraz dodatkowo plik BINCNT.UCF :
Kod: Zaznacz cały
NET "Clk" LOC = "P36" ;
NET "Reset" LOC = "P1" ;
NET "D1" LOC = "P59" ;
NET "D2" LOC = "P60" ;
NET "D3" LOC = "P61" ;
NET "D4" LOC = "P62" ;
NET "D5" LOC = "P63" ;
NET "D6" LOC = "P64" ;
NET "D7" LOC = "P65" ;
NET "D8" LOC = "P67" ;
W wyniku kompilacji projektu przez pakiet WebPack:powstaje plik, który zawiera informacje, które konfigurują układ FPGA. Za pomocą zworki opisanej w module ZL10PLD jako JP4 należy wybrać sposób konfiguracji układu SPARTAN poprzez złącze JTAG. Uruchamiając proces “Generate PROM, ACE or JTAG File” w okienku “Processes”, zostaje uruchomiony program do zaprogramowania układu FPGA (ten program również jest używany do przetworzenia danych do formaty wymaganego przez pamięci konfiguracyjne FLASH). Program iMPACT sam rozpoznaje łańcuch układów przyłączonych do złącza JTAG. Pokazuje to następujący rysunek:Moduł ZL10PLD zawiera dwa elementy widziane poprzez interfejs JTAG. Pierwszym jest układ FPGA oraz drugim pamięć FLASH. Kolejność ich występowania w łańcuchu jest cechą konstrukcyjną samego modułu.
W układach FPGA, wygenerowane pliki z danymi konfiguracyjnymi mają rozszerzenie .BIT. Ponieważ będzie programowany jedynie układ SPARTAN, można pominąć przyporządkowanie pliku dla pamięci FLASH (w okienku programu iMPACT pod odpowiednim symbolem układu scalonego jest wyświetlona nazwa pliku lub “file ?” jeżeli z układem nie jest skojarzony żaden plik). Po przyporządkowaniu układom występującym w łańcuchu odpowiednich plików można przystąpić do programowania. Zakończenie operacji programowania jest sygnalizowane komunikatem:Po wykonaniu tych czynności całość realizuje założoną funkcjonalność.