Układy FPGA w przykładach, część 1



Podobne dokumenty
ZL10PLD. Moduł dippld z układem XC3S200

ZL6PLD zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x

ZL8AVR. Płyta bazowa dla modułów dipavr

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL11PRG v.2. Uniwersalny programator ISP. Odpowiednik: Byte Blaster II DLC5 Programmer AT89ISP STK-200 Lattice ISP ARM Wiggler

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM.

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

ZL11ARM. Uniwersalna płytka bazowa dla modułów diparm

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

ISP ADAPTER. Instrukcja obsługi rev.1.1. Copyright 2009 SIBIT

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

ZL11AVR. Zestaw uruchomieniowy z mikrokontrolerem ATtiny2313

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

ZL1MSP430 Zestaw startowy dla mikrokontrolerów MSP430F11xx/11xxA ZL1MSP430

ZL19PRG. Programator USB dla układów PLD firmy Altera

EVBfpga System ewaluacyjno-uruchomieniowy dla układów FPGA.

FREEboard. Zestaw startowy z mikrokontrolerem z rodziny Freescale KINETIS L (Cortex-M0+) i sensorami MEMS 7 DoF

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

SML3 październik

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

ARMputer, część 1 AVT 922

ADuCino 360. Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361

Uniwersalny zestaw uruchomieniowy ZL4PIC

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x. Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC213x

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

ZL5PIC. Zestaw uruchomieniowy dla mikrokontrolerów PIC16F887

Zestaw Startowy EvB. Więcej informacji na stronie:

Programowalne Układy Cyfrowe Laboratorium

Programator ZL2PRG jest uniwersalnym programatorem ISP dla mikrokontrolerów, o budowie zbliżonej do STK200/300 (produkowany przez firmę Kanda).

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

Minimoduł z układem programowalnym FPGA. fpga02. MMfpga0. Instrukcja Użytkownika REV 1. Many ideas one solution

MAXimator. Zestaw startowy z układem FPGA z rodziny MAX10 (Altera) Partnerzy technologiczni projektu:

Opis przedmiotu zamówienia CZĘŚĆ 1

dokument DOK wersja 1.0

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

2. Architektura mikrokontrolerów PIC16F8x... 13

WYKŁAD 5. Zestaw DSP60EX. Zestaw DSP60EX

Technika Mikroprocesorowa

Moduł uruchomieniowy AVR ATMEGA-16 wersja 2

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

Płytka uruchomieniowa XM64

Płytka uruchomieniowa XM32

Instrukcja użytkownika

Wstęp Architektura... 13

Rys. 1. Schemat ideowy karty przekaźników. AVT 5250 Karta przekaźników z interfejsem Ethernet

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Politechnika Wrocławska

PSM niebanalne Flashe

U W A G I D O M O N T A ś U Z E S T A W U L A B O R A T O R Y J N E G O A B C 0 1 U S B 3, A B C 0 2

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09

Opis przedmiotu zamówienia

Politechnika Białostocka

Jednym z najlepszych sposobów poznawania nowego typu mikrokontrolera

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

Altera MAX10: nowa generacja FPGA i jej nowe możliwości

KAmduino UNO. Rev Źródło:

Mikrokontrolery AVR techniczne aspekty programowania

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

ZL3ST7. Zestaw uruchomieniowy dla mikrokontrolerów

E-TRONIX Sterownik Uniwersalny SU 1.2

KA-NUCLEO-UniExp. Wielofunkcyjny ekspander dla NUCLEO i Arduino z Bluetooth, MEMS 3DoF, LED-RGB i czujnikiem temperatury

5 / 6 TX (A) RX (A) RX (B) TX (B) COM DTM CKM DT1 CK1 DT2 CK2 COM H L H L R B M S

Terminali GPRS S6 Strona 1 z 11. Terminal GPRS. Albatross S6. Instrukcja montażu wersja 4.2

ZL2ST7. Zestaw uruchomieniowy dla mikrokontrolerów ST7LITE

ZL5ARM. Zestaw uruchomieniowy dla mikrokontrolerów LPC2119/2129 (rdzeń ARM7TMDI-S) Kompatybilność z zestawem MCB2100 firmy Keil

SML3 październik

Moduł CON014. Wersja na szynę 35mm. Przeznaczenie. Użyteczne właściwości modułu

202_NAND Moduł bramek NAND

NXP ma nowe ARM-y. BlueStreak: co i jak

Systemy uruchomieniowe

Interfejs RS485-TTL KOD: INTR. v.1.0. Zastępuje wydanie: 2 z dnia

ARS3 RZC. z torem radiowym z układem CC1101, zegarem RTC, kartą Micro SD dostosowany do mikro kodu ARS3 Rxx. dokument DOK wersja 1.

5 / 6 TX (A) RX (A) RX (B) TX (B) COM DTM CKM DT1 CK1 DT2 CK2 COM H L H L R B M S

Zgrana para - NerO i CleO

EPPL 1-1. KOMUNIKACJA - Interfejs komunikacyjny RS Sieciowa Karta Zarządzająca SNMP/HTTP

Wyniki (prawie)końcowe - Elektroniczne warcaby

Moduł CON012. Wersja biurkowa. Przeznaczenie. Użyteczne właściwości modułu

Zestaw edukacyjny dla mikrokontrolerów ST62

STHR-6610 Naścienny przetwornik temperatury i wilgotności

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Płyta uruchomieniowa EBX51

Układy FPGA w przykładach, część 1

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

Transkrypt:

Układy FPGA w przykładach, część 1 K U R S Duże układy PLD tanieją w tempie zbliżonym do popularnych mikrokontrolerów, co spowodowało, że układy FPGA o dużych zasobach logicznych nie tylko są już tańsze od stosunkowo prostych układów CPLD, ale stały się dostępne dla szerokich rzesz użytkowników. Wiedza na temat ich możliwości i sposobów przygotowywania projektów nie jest jednak powszechna, czego dowiodła sierpniowa ankieta publikowana na naszej stronie internetowe: ponad 95% spośród 4779 głosujących poparło pomysł rozpoczęcia kursu projektowania na układach FPGA na łamach EP. Oto i on Wielokrotnie już na łamach EP podejmowaliśmy próby przybliżenia Czytelnikom układów PLD. Początkowo (był to rok 1993), przede wszystkim ze względu na łatwą dostępność, skupialiśmy się na układach niskiej skali integracji (PAL i GAL), następnie przeszliśmy przez układy CPLD, teraz sytuacja (przede wszystkim rynkowa) mocno już dojrzała do zajęcia się na poważnie układami FPGA. Jak najtaniej: Spartan 3 + WebPack ISE Projekty przedstawione w kolejnych odcinkach kursu będą przygotowywane w taki sposób, aby można je był (w większości przypadków) zaimplementować na dowolną platformę sprzętową. Niektóre projekty będą wykorzystywały specyficzne cechy docelowych układów, co pozwoli zilustrować ich możliwości. Ponieważ obecnie, w sprzedaży detalicznej w naszym kraju są dostępne wyłącznie układy firmy Xilinx, jako platformę sprzętową wybrano układ XC3S200 z rodziny Spartan 3. Co, czym i jak Przygotowany przez nas kurs jest maksymalnie zorientowany na praktykę, co oznacza, że skupimy się przede wszystkim na przykładowych projektach. Nie obędzie się jednak bez niezbędnego krótkiego wstępu, w którym przedstawimy architekturę układów Spartan 3 (które zostały wybrane jako kursowa platforma sprzętowa), możliwości oferowane przez zasoby sprzętowe tych układów, poznamy wybrane sposoby konfiguracji i sposoby programowania tych układów, aż w końcu dojdziemy do serii przykładowych projektów. Wszystkie projekty będą przystosowane do łatwej implementacji w dalej opisanym zestawie PLD. Planowane przez autorów etapy kursu (zapraszamy Czytelników do przekazywania sugestii!) przedstawiono na str. 90. Biblioteki dla Protela 99SE/DXP Producent modułów ZL10PLD udostępnił na swojej stronie internetowej biblioteki do edytorów PCB i SCH (w formacie Protel/Altium), dzięki którym moduł ten można wygodnie wprojektowywać we własne aplikacje. Kursowa platforma sprzętowa Ze względu na to, że zarówno wybrane przez nas układy FPGA jak i ich konfiguratory są dostarczane w obudowach niezbyt sympatycznych podczas samodzielnego montażu (jakkolwiek jest on możliwy nawet w warunkach amatorskich), zrezygnowaliśmy z przygotowywania specjalnego zestawu uruchomieniowego. Zamiast tego w ofercie handlowej AVT znajdzie się uniwersalny zestaw składający się z płyty bazowej ZL9PLD o sporych możliwościach oraz montowanego w jej gnieździe modułu dippld (ZL10PLD) z zamontowanym układem XC3S200, konfiguratorem XCF01S (1 Mb Flash), zestawem stabilizatorów LDO, generatorem taktującym, złączem JTAG oraz przyciskiem umożliwiającym ręczne wymuszenie rekonfiguracji układu FPGA. Na fot. 1 pokazano wygląd płyty bazowej ZL9PLD przygotowanej do zainstalowania modułu dippld z układem XC3S200 oraz wyświetlacza LCD o organizacji 2x16 znaków. Na fot. 2 pokazano moduł ZL10PLD (dippld) z układem XC2S200 i pozostałymi peryferiami. Schemat elektryczny płyty bazowej pokazano na rys. 3. Standardowym wyposażeniem płyty bazowej jest: gniazdo VGA (sposób sterowania monitora umożliwia wyświetlenie maksymalnie 8 kolorów), 4 przyciski do wykorzystania w aplikacji użytkownika, złącze kart MMC, 8 diod LED, konwerter napięciowy interfejsu RS232 z gniazdem DB9F, złącze konwertera USB< >RS232 (np. ZL1USB, także dostępny Fot. 1. Widok zestawu ZL9PLD Okazja dla Czytelników EP zainteresowanych układami FPGA Zestaw sprzętowy wykorzystywany w kursie jest do dostępny do 31.12.2006 na zasadach promocyjnych. Zakup zestawu składającego się z modułów ZL9PLD (uniwersalna płytka bazowa) oraz ZL10PLD (modułu DIP z układem XC3S200 z rodziny Spartan 3 firmy Xilinx) jest premiowany programatorem ZL4PRG (odpowiednik DLC III), za pomocą którego można programować i konfigurować w systemie układy CPLD i FPGA firmy Xilinx. www.sklep.avt.pl www.sklep.avt.pl www.sklep.avt.pl www.sklep.avt.pl www.sklep.avt.pl 89

Fot. 2. Wygląd modułu dip PLD z układem XC3S200 w ofercie handlowej AVT), głośnik piezoelektryczny, gniazdo USB, które służy do zasilania (alternatywnie do zewnętrznego zasilacza sieciowego), zasilacz stabilizowany zapewniający napięcia 5 V i 3,3 V, niewielkie pole uniwersalne (9x7 punktów), wyprowadzenia napięć zasilających 5 V i 3,3 V, dzięki którym można zasilić zewnętrzne układy logiczne, złącza szpilkowe gold pin, na które wyprowadzono linie I/O układu FPGA zamontowanego na module Plan kursu 1. Wprowadzenie Budowa zestawu uruchomieniowego Programowanie i konfiguracja układu XC3S200 Tryby konfiguracji układu XC3S200 Zasilanie układu XC3S200 Linie I/O w układzie XC3S200 JTAG jako uniwersalny interfejs do programowania i konfigurowania 2. Budowa, cechy funkcjonalne i parametry układów FPGA z rodziny Spartan 3 3. Projekty przykładowe dippld. Na rys. 4 znajduje się schemat elektryczny modułu dippld o oznaczeniu ZL10PLD. Zastosowano w nim układ XC3S200, którego zasoby logiczne odpowiadają ok. 200000 bramek logicznych, zwanych często przeliczeniowymi. Jak wykażą przykłady, są to zasoby trudne do nadwyrężenia w średniozaawansowanych projektach. Poważniejszym ograniczeniem praktycznym jest stosunkowo niewielka liczba wyprowadzeń dostępnych w obudowie (jest ich 100), ale da się ono odczuć dopiero przy zaawansowanych projektach. Żeby uzmysłowić sobie możliwości dostępne współczesnym elektronikom warto wiedzieć, że XC3S200 jest jednym z najmniejszych układów w rodzinie Spartan 3, a największy układ spośród obecnie dostępnych jest odpowiednikiem 5 mln bramek przeliczeniowych! Standardowym wyposażeniem modułu ZL10PLD, poza układem XC3S200, jest: konfigurator Flash o pojemności 1 Mb (wyspecjalizowana pamięć firmy Xilinx o oznaczeniu XCF01S), zapewniający automatyczną konfigurację FPGA po włączeniu zasilania lub ręcznym wymuszeniu rekonfiguracji, stabilizatory zapewniające prawidłowe napięcia zasilające o wartościach: 1,2, 2,5 (FPGA) i 3,3 V (FPGA i konfigurator), Rys. 3. Schemat elektryczny płyty bazowej (ZL9PLD) 90

FPGA co trzeba o nich wiedzieć tip #1 Pamięć konfiguracji W większości przypadków układy FPGA są wyposażone w pamięć konfiguracji typu SRAM, z założenia ulotną (jej zawartość zanika po odłączeniu zasilania). W związku z czym, każdorazowo po włączeniu zasilania konieczne jest skonfigurowanie układu FPGA, co pozwoli układowi normalnie funkcjonować. Z tego powodu elementem standardowego systemu z FPGA jest wyspecjalizowana pamięć Flash, w której jest przechowywana startowa konfiguracja układu. Odtworzenie konfiguracji układu po włączeniu zasilania może przebiegać automatycznie i trwa od kilkunastu do kilkuset milisekund. Programowanie i konfigurowanie FPGA Część z informacji prezentowanych w tej części artykułu publikowaliśmy już w EP. Powtarzamy je, żeby zapewnić komplet informacji Czytelnikom zaczynającym z nami kurs. Programowanie i konfiguracja FPGA jest tematem z kategorii podstawowych dla użytkowników FPGA, bowiem bez jego zrozumienia i opanowania nie jest możliwe sprawdzenie działania w krzemie nawet najlepiej przygotowanego projektu. Zaczniemy od rozróżnienia programowania i konfigurowania, bowiem wbrew popularnemu poglądowi nie FPGA co trzeba o nich wiedzieć tip #2 Napięcia na liniach I/O Układy Spartan 3 (podobnie do większości rozwiązań konkurencyjnych) nie są przystosowane do współpracy z układami cyfrowymi zasilanymi napięciem wyższym niż 3,3 V (niektóre nawet 2,5 V). Ograniczenie to dotyczy obydwu konfiguracji linii I/O: jako wejściowej i wyjściowej. Użytkownicy zamierzający łączyć ze sobą układy Spartan 3 z układami zasilanymi napięciem 5 V powinni stosować konwertery poziomów (choćby układy TTL z rodziny LVC/LCX) lub (nie zawsze jest to wskazane) rezystory włączone w szereg z linią I/O ograniczające natężenie prądu wpływającego/ wypływającego do/z linii I/O. Rys. 4. Schemat elektryczny modułu ZL10PLD podstawkę pod generator kwarcowy (standardowo 3,6864 MHz), diodę LED sygnalizującą poprawne skonfigurowanie układu FPGA, przycisk umożliwiający wymuszenie rekonfiguracji FPGA w dowolnie wybranym przez użytkownika momencie, dwa złącza szpilkowe (po 32 styki gold pin każdy) umożliwiające wygodne zainstalowanie modułu w podstawce, zespół 5 inwerterów o charakterystyce przejściowej Schmitta (z histerezą) z serii 74LVC lub 74LCX, które spełniają rolę układów dopasowujących napięcia pomiędzy FPGA i zewnętrznymi układami cyfrowymi zasilanymi napięciami o wartości większej niż 3,6 V. oznaczają tego samego. Konfigurować można wyłącznie układ FPGA poprzez wprowadzenie do jego pamięci konfiguracji (SRAM) odpowiednich danych, które uzyskuje się w końcowych etapach kompilacji projektu. Wprowadzenie tych danych można (w przypadku modułu ZL10PLD) uzyskać na jeden z dwóch sposobów: za pośrednictwem interfejsu JTAG, za pośrednictwem wybranego interfejsu konfiguracyjnego FPGA, z zewnętrznej pamięci nieulotnej. Zazwyczaj, ze względu na niewielką liczbę linii I/O zaangażowanych do konfiguracji, wykorzystywane są wyspecjalizowane konfiguratory, jak to pokazano na rys. 5. Z kolei programować można pa- 91

Rys. 5. Konfiguracja łańcucha JTAG w ZL10PLD mięć Flash, zintegrowaną w konfiguratorze. W przypadku układu XCF01S jest ona dostępna (co oznacza, że można ją programować, odczytywać i kasować) za pomocą interfejsu JTAG. Ponieważ zarówno konfigurator jak i FPGA zastosowane w module ZL10PLD są wyposażone w interfejs JTAG, układy te połączono w łańcuch JTAG, którego budowę pokazano na rys. 5. Jako pierwszy w łańcuchu (czyli najbliżej sygnału TDI programatora) ulokowano układ XC3S200, drugim (i ostatnim w łańcuchu) układem jest XCF01S. Takie rozwiązanie, przy jednoczesnym podłączeniu konfiguratora do interfejsu konfiguracyjnego FPGA powoduje, że użytkownik może: modyfikować (w tym programować) i odczytywać zawartość pamięci Flash konfiguratora (via JTAG), konfigurować FPGA (via JTAG), wymusić automatyczną konfigurację FPGA po włączeniu zasilania (via interfejs konfiguracyjny FPGA). Początek konfiguracji jest wyznaczany przez układ monitorujący napięcie zasilania, dzięki czemu ryzyko rozpoczęcia konfiguracji przed ustabilizowaniem się napięcia zasilającego jest zminimalizowane. Na schemacie z rys. 5 pogrubioną linią zaznaczono ścieżkę przesyłania danych w łańcuchu JTAG. Należy pamiętać, że wszystkie układy wchodzące w skład łańcucha mają równolegle połączone (sterowane z programatora) linie: TCK i TMS, które służą odpowiednio do: taktowania i ustalania trybu pracy interfejsu JTAG. Przycisk służy do ręcznego wymuszania rekonfiguracji układu FPGA jego naciśnięcie wymusza skopiowanie zawartości pamięci Flash do pamięci konfigurującej SRAM wbudowanej w FPGA. Sporo kłopotów może sprawić początkującym użytkownikom konieczność stosowania dziwnych rozwiązań w ścieżkach sygnałowych interfejsu JTAG. Wynika to z faktu, że napięcie o wartości 2,5 V jest traktowane jako maksymalne dopuszczalne (zgodnie z wymogami standardu napięciowego LVC- MOS25) dla wszystkich wyspecjalizowanych linii I/O wykorzystywanych podczas konfiguracji układu ( s ą t o : P R O G _ B, T D I, T M S, T C K, TDO, CCLK, DONE, M0, M1, M2 oraz H S W A P _ E N tab. 1). Uwaga ta dotyczy także linii I/ O stosowanych podczas konfiguracji za pomocą pamięci równoległych. Ponieważ większość dostępnych na rynku programatorów ISP jest przystosowana do pracy z napięciami z zakresu 3,3.5 V, konieczne jest zastosowanie rezystorów ograniczających prądy wejściowe w liniach I/O zasilanych napięciem o wartości wyższej od 2,5 V (R5, R6, R7, R8 na rys. 4). Rezygnacja z tych rezystorów może spowodować (przez przepływ prądu o zbyt dużym natężeniu, zazwyczaj powyżej 10 ma) uszkodzenie diod znajdujących się w strukturze układu pomiędzy linią I/O i linią zasilania (rys. 6), może także spowodować uszkodzenie lub niepoprawną pracę stabilizatora napięcia zasilającego, który z natury rzeczy nie jest przystosowany do przyjmowania prądu wpływającego od strony wejścia. Z tego powodu, oprócz rezystorów ograniczających prąd wejściowy, konieczne jest zastosowanie rezystora odbierającego prąd zwrotny (I REV na rys. 6) z linii zasilającej V CCAUX. Poważną (w stosunku do niektórych rozwiązań oferowanych przez firmy konkurencyjne) zaletą układów Spartan 3 jest możliwość dołączania napięć zasilających w dowolnej kolejności. Można więc stosować standardowe stabilizatory pozbawione sekwencerów zasilania ma to poważny wpływ na ograniczenie kosztu (i tak niełatwych do zdobycia) podzespołów zastosowanych w obwodach zasilania. Rys. 6. Konfiguracja zabezpieczeń na liniach I/O FPGA może wymusić konieczność stosowania dodatkowych rezystorów 92

FPGA co trzeba o nich wiedzieć tip #3 Współcześnie produkowane, duże pod względem zasobów, układy FPGA są zasilane w kłopotliwy sposób, wymagają bowiem zazwyczaj dwóch lub trzech (m.in. układy z rodziny Spartan 3) napięć zasilających o różnych wartościach. Jedną z najpoważniejszych przyczyn takich rozwiązań są nowoczesne technologie produkcji struktur krzemowych, wykorzystywane do produkcji układów FPGA. Z jednej strony zapewniają one duża gęstość upakowania struktur i w związku z tym ich relatywnie niską cenę, z drugiej występuje konieczność zasilania rdzenia układu napięciem o niewielkiej wartości, a linii I/O współpracujących z otoczeniem, napięciem o wartości co najmniej 3,3 V. Tego, że zasilanie i sposoby dołączania elementów peryferyjnych do układów z rodziny Spartan 3 wywołują wiele problemów, dowodzi specjalna nota aplikacyjna przygotowana w lutym 2006 firmę Xilinx (jej oznaczenie: XAPP453). Polecamy jej przestudiowanie wszystkim Czytelnikom zainteresowanym tymi układami. Tab. 1. Maksymalne napięcia wejściowe wybranych linii specjalnych oraz wielofunkcyjnych Nazwa linii Maksymalne napięcie wejściowe [V] Odnośny biegun zasilania I/O PROG_B 2,5 HSWAP_EN 2,5 TDI 2,5 TMS 2,5 TCK 2,5 TDO 2,5 CCLK 2,5 DONE 2,5 M0 2 2,5 INIT_B = VCCO_4 VCCO_4 DOUT = VCCO_4 VCCO_4 BUSY = VCCO_4 VCCO_4 DIN = VCCO_4 VCCO_4 D0 3 = VCCO_4 VCCO_4 D4 7 = VCCO_4 VCCO_5 RDWR_B = VCCO_4 VCCO_5 CS_B = VCCO_4 VCCO_5 Możliwe sposoby konfiguracji układów FPGA z rodziny Spartan 3 Układy z rodziny Spartan 3 są przystosowane do obsługi 5 sposobów konfigurowania, z których w praktyce najczęściej korzystam z dwóch: JTAG oraz Master Serial (z wykorzystaniem konfiguratora). Dość popularnym trybem konfiguracji jest także Slave Serial, w którym konfigurowany układ FPGA jest źródłem sygnału zegarowego synchronizującego transmisję danych z zewnętrznej pamięci nielotnej. Obydwa tryby Serial umożliwiają łączenie konfigurowanych układów w kaskady, dzięki czemu w niektórych przypadkach można wykorzystać jeden konfigurator (o odpowiednio dużej pojemności) do współpracy z kilkoma układami FPGA. Wybór trybu konfiguracji odbywa się za pomocą trzech dedykowanych wejść oznaczonych M0 2, zgodnie z opisem z tab. 2. Zmiana trybu konfigurowania jest możliwa poprzez zmianę stanów logicznych na wejściach M0 2 i wymuszenie rekonfiguracji układu (np. poprzez wyłączenie i włączenie zasilania lub zainicjowanie interfejsu JTAG). Na rys. 4 pokazano przykładowy schemat elektryczny połączeń (taki jak zastosowano w module ZL10PLD) pomiędzy konfiguratorem XCF01S oraz układem z rodziny Spartan 3. Takie połączenie układów umożliwia automatyczne konfigurowanie FPGA po włączeniu zasilania oraz (alternatywnie) konfigurowanie FPGA za pomocą pro- Tab. 2. Możliwe tryby konfiguracji układów Spartan 3 Nazwa trybu konfiguracji M0 M1 M2 FPGA co trzeba o nich wiedzieć tip #4 Wejścia M0 2 są przystosowane do sterowania poziomami logicznymi zgodnymi ze standardem LVCMOS25 co oznacza, że maksymalna, bezpieczna wartość napięcia na tym wejściu nie może być większa niż 2,5 V. gramatora dołączonego do interfejsu JTAG. Wybór aktywnego kanału komunikacyjnego jest możliwy za pomocą zworki JP2 układ FPGA jest konfigurowany w jednym z dwóch trybów zaznaczonych w tab. 2 za pomocą szarego tła: Master Serial lub JTAG. Linie I/O układu FPGA podczas konfiguracji Kolejnym zagadnieniem, wartym do wzięcia pod uwagę w związku z konfigurowaniem FPGA, jest zachowanie się linii I/O podczas włączania zasilania i konfigurowania FPGA. Wbudowany w układy Spartan 3 układ POR (Power On Reset) powoduje, że linie I/O są utrzymywane w stanie wysokiej impedancji do chwili osiągnięcia prawidłowych wartości przez napięcia V CCINT, V CCO_4, V CCAUX i następnie skonfigurowania układu. Po ustaleniu się napięć zasilających, stany linii I/O zależą od konfiguracji układu jeśli FPGA nie został skonfigurowany, na liniach I/O jest utrzymywany stan wysokiej impedancji. Nie ma więc ryzyka, że konfiguracja lub rekonfiguracja układu FPGA w systemie cyfrowym, którego praca jest inicjowana (np. poprzez zerowanie) może zostać zaburzona przez przypadkowe sygnały występujące na jego liniach I/O. W przypadku takiej konieczności jest możliwe dołączenie do linii I/O rezystorów podciągających, które są aktywowane podczas konfiguracji układu. Wymaga to zwarcia wyprowadzenia HSWAP_EN do masy zasilania (domyślnie jest ono podciągnięte do plusa). Jacek Majewski jacek.majewski@pwr.wroc.pl Piotr Zbysiński, EP piotr.zbysinski@ep.com.pl Sygnał synchronizujący Szerokość magistrali danych Master Serial 0 0 0 CCLK (wy) 1 Slave Serial 1 1 1 CCLK (we) 1 Master Parallel 1 1 0 CCLK (wy) 8 Slave Parallel 0 1 1 CCLK (we) 8 JTAG 1 0 1 TCK (we) 1 93