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

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

1 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 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 Elektronika Praktyczna 10/

2 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 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 Elektronika Praktyczna 10/2006

3 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- Elektronika Praktyczna 10/

4 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 Elektronika Praktyczna 10/2006

5 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 CCLK (wy) 1 Slave Serial CCLK (we) 1 Master Parallel CCLK (wy) 8 Slave Parallel CCLK (we) 8 JTAG TCK (we) 1 Elektronika Praktyczna 10/

6 Układy FPGA w przykładach, część 2 W drugiej części artykułu zajmiemy się omówieniem wyposażenia (po mikrokontrolerowemu : peryferiów) układów FPGA z rodziny Spartan 3, co ułatwi ich wykorzystywanie w praktyce. To właśnie wewnętrzne zespoły konfigurowalnych pamięci, uniwersalne porty I/O, wbudowane syntezery sygnałów zegarowych, sprzętowe zespoły mnożące i pozostałe mniej spektakularne elementy tworzą potęgę możliwości współczesnych FPGA. Już najprostsze układy FPGA z rodziny Spartan 3 oferują użytkownikom duże zasoby logiczne i bardzo bogate wyposażenie dodatkowe, charakteryzujące się dużą elastycznością i uniwersalnością. Podstawowe informacje na temat zasobów dostępnych w tych układach zebrano w tab. 3. To właśnie dzięki bogatemu wyposażeniu wewnętrznemu układy FPGA są coraz częściej stosowane jako platformy System on a Chip, w których są implementowane kompletne systemy cyfrowe łącznie z miękkimi rdzeniami mikroprocesorowymi. A to właśnie układy typu SoC są przyszłością elektroniki. Budowa układów Spartan 3 U k ł a d y F P G A (Field Programmable Gate Array) to jeden z dwóch (drugi to układy mniejszej skali integracji CPLD, czyli Complex Prog r a m m a b l e L o g i c Devices), produkowanych obecnie, rodzajów układów PLD (Programmable Logic Devices). Układy te charakteryzują się regularną budową, opartą (w przypadku Rys. 8. Budowa komórki logicznej CLB w układach Spartan 3 firmy Xilinx) na zespołach wielu identycznych lub bardzo do siebie podobnych bloków CLB (Configurable Logic Block). Schemat blo- Rys. 7. Schemat blokowy ilustrujący budowę układów Spartan 3 FPGA co trzeba o nich wiedzieć tip 5 Bezpieczeństwo projektów w FPGA Układy Spartan 3 nie są wyposażone w zaawansowane mechanizmy ochrony konfiguracji, co powoduje, że projekty zagrożone przez piratów powinny być implementowane na bardziej zaawansowanych pod tym względem układach FPGA. Pamięć konfigurująca Flash XCF01S (i inne z serii xxs) jest zabezpieczona przed nieuprawnionym odczytem przez JTAG, ale w żaden sposób nie są chronione dane przesyłane interfejsem szeregowym wykorzystywanym do konfigurowania FPGA. 92 Elektronika Praktyczna 11/2006

7 List. 1. Opis VHDL dwuportowej pamięci 16 x N (na bazie XAPP464) Module: XC3S_RAM16XN_D Description: Distributed SelectRAM example Dual Port 16 x N bit Use template RAM_16D.vhd and registered outputs (optional) Device: Spartan 3 Family library IEEE; use IEEE.std_logic_1164.all; pragma translate_off library UNISIM; use UNISIM.VCOMPONENTS.ALL; pragma translate_on entity XC3S_RAM16XN_D is generic ( data_width : integer := 8 Replace by the data width port ( DATA_IN : in std_logic_vector(data_width 1 downto 0 ADDRESS : in std_logic_vector(3 downto 0 ADDRESS_DP : in std_logic_vector(3 downto 0 WRITE_EN : in std_logic; CLK : in std_logic; O_DATA_OUT : out std_logic_vector(data_width 1 downto 0 O_DATA_OUT_DP : out std_logic_vector(data_width 1 downto 0) end XC3S_RAM16XN_D; architecture XC3S_RAM16XN_D_arch of XC3S_RAM16XN_D is Components Declarations: component RAM16X1D See initialization example in the reference templates port ( D : in std_logic; WE : in std_logic; WCLK : in std_logic; A0 : in std_logic; A1 : in std_logic; A2 : in std_logic; A3 : in std_logic; DPRA0 : in std_logic; DPRA1 : in std_logic; DPRA2 : in std_logic; DPRA3 : in std_logic; SPO : out std_logic; DPO : out std_logic end component; Signal Declarations: signal DATA_OUT : std_logic_vector(data_width 1 downto 0 signal DATA_OUT_DP : std_logic_vector(data_width 1 downto 0 begin Registered outputs / Synchronous read REGISTERED_OUT: process (CLK) begin if (CLK event and CLK = 1 ) then O_DATA_OUT <= DATA_OUT; O_DATA_OUT_DP <= DATA_OUT_DP; end if; end process REGISTERED_OUT; Distributed SelectRAM Instantiation RAM16X1D_X: for i in 0 to data_width 1 generate U_RAM16X1D: RAM16X1D port map ( D => DATA_IN(i), insert input signal WE => WRITE_EN, insert Write Enable signal WCLK => CLK, insert Write Clock signal A0 => ADDRESS(0), insert Address 0 signal port SPO A1 => ADDRESS(1), insert Address 1 signal port SPO A2 => ADDRESS(2), insert Address 2 signal port SPO A3 => ADDRESS(3), insert Address 3 signal port SPO DPRA0 => ADDRESS_DP(0), insert Address 0 signal port DPO DPRA1 => ADDRESS_DP(1), insert Address 1 signal port DPO DPRA2 => ADDRESS_DP(2), insert Address 2 signal port DPO DPRA3 => ADDRESS_DP(3), insert Address 3 signal port DPO SPO => DATA_OUT(i), insert output signal SPO DPO => DATA_OUT_DP(i) insert output signal DPO end generate; end XC3S_RAM16XN_D_arch; 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 CLB IOB Globalne sygnały zegarowe DCM Sprzętowe multiplikatory Pamięć BlockRAM 3. Projekty przykładowe kowy układu z rodziny Spartan 3 pokazano na rys. 7. Na schemacie poza CLB widać także pamięci BlockRAM, sprzętowe multiplikatory, syntezery przebiegów zegarowych DCM (Digital Clock Manager) oraz komórki I/O o nazwie IOB (Input Output Block). Kolejno je omówimy. CLB Bloki CLB (w układach Spartan 3 jest ich od 1728 do sztuk) są zbudowane z 4 bloków logicznych nazwanych przez firmę Xilinx mianem slice. Schemat ilustrujący rozmieszczenie slice ów w CLB pokazano na rys. 8. Jak widać, od jednej strony slice y są Rys. 9. Każde ulokowane wewnątrz matrycy CLB może bezpośrednio komunikować się z 8 sąsiadującymi CLB Elektronika Praktyczna 11/

8 Jak działa FPGA? Klasycznym elementem architektury układów FPGA są tablice LUT, często zwane generatorami funkcji logicznych. Realizują one ustaloną przez użytkownika funkcję logiczną kilku (zazwyczaj 3...5) zmiennych. Za konfigurację czyli sposób działania LUT odpowiada pamięć konfiguracji SRAM, której zawartość trzeba odtwarzać po włączeniu zasilania układu. Do tego celu niezbędna jest zewnętrzna pamięć nielotna, często nazywana konfiguratorem. Rys. 10. Wymianę sygnałów w układach Spartan 3 zapewniają rozbudowane zasoby połączeniowe o różnych cechach dołączone do magistral zapewniających komunikację w obrębie całego układu FPGA (tzw. połączenia globalne o różnym zasięgu), od drugiej strony do magistral zapewniających komunikację lokalną z sąsiednimi CLB. Każdy slice ma własny adres w obrębie CLB (np. X1Y0), który projektant może wykorzystać wraz z numerem CLB FPGA co trzeba o nich wiedzieć tip 6 Alternatywne możliwości CLB Bloki CLB, będące podstawowym konfigurowalnym elementem logicznym w układach Spartan 3, mogą spełniać także dodatkowe funkcje: rejestrów przesuwnych o regulowanej długości oraz pamięci ROM, SRAM i DualPort SRAM. Pojemności tej pamięci w układach Spartan 3 mieszczą się w przedziale kb. w przypadku konieczności ręcznego (rzadko się to obecnie zdarza) rozmieszczania bloków funkcjonalnych w obrębie FPGA. Slice pogrupowano je po dwa (w kolumny) z wydzielonymi szybkimi łańcuchami propagacji sygnału CARRY, dzięki czemu możliwe są implementacje szybko działających bloków logicznych wykorzystujących kaskadowe przeniesienia (liczniki, arytmometry itp.). Jak wspomniano, każdy CLB ulokowany wewnątrz grupy ma możliwość bezpośredniej komunikacji z sąsiadującymi CLB, jest ich zazwyczaj 8 (rys. 9). Wymiana danych z dalej położonymi CLB odbywa się za pomocą dodatkowych zasobów połączeniowych (rys. 10): linii długich (Long Lines, dołączonych do kolejno co szóstego CLB), które są najszybszym traktem komunikacyjnym wewnątrz FPGA, często wykorzystywanym zamiennie z globalnymi liniami zegarowymi, linii 8 krotnych (Hex Lines), które rozprowadzają sygnały na mniejsze odległości, oferując większe (niż Long Lines) moż- Tab. 3. Zestawienie najważniejszych parametrów układów z rodziny Spartan 3 Parametr Typ układu XC3S50 XC3S200 XC3S400 XC3S1000 XC3S1500 XC3S2000 XC3S4000 XC3S5000 Liczba bramek przeliczeniowych Liczba komórek logicznych Sprzętowe multiplikatory Pojemność pamięci Block 72 kb 216 kb 288 kb 432 kb 576 kb 720 kb 1728 kb 1872 kb RAM Pojemność pamięci rozproszonej 12 kb 30 kb 56 kb 120 kb 208 kb 320 kb 432 kb 520 kb Distributed RAM Liczba DCM Maksymalna liczba różnicowych linii I/O Maksymalna liczba asymetrycznych linii I/O Elektronika Praktyczna 11/2006

9 Rys. 11. Budowa slice a Okazja dla Czytelników EP zainteresowanych układami FPGA Zestaw sprzętowy wykorzystywany w kursie jest do dostępny do 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 Elektronika Praktyczna 11/

10 List. 2. Opis VHDL dwuportowej pamięci 16 x N (na bazie XAPP464) Module: XC3S_RAM16XN_S Description: Distributed SelectRAM example Single Port 16 x N bit Use template RAM_16S.vhd and registered outputs (optional) Device: Spartan 3 Family library IEEE; use IEEE.std_logic_1164.all; pragma translate_off library UNISIM; use UNISIM.VCOMPONENTS.ALL; pragma translate_on entity XC3S_RAM16XN_S is generic ( data_width : integer := 8 Replace by the data width port ( DATA_IN : in std_logic_vector(data_width 1 downto 0 ADDRESS : in std_logic_vector(3 downto 0 WRITE_EN : in std_logic; CLK : in std_logic; O_DATA_OUT : out std_logic_vector(data_width 1 downto 0) end XC3S_RAM16XN_S; architecture XC3S_RAM16XN_S_arch of XC3S_RAM16XN_S is Components Declarations: component RAM16X1S See initialization example in the reference templates port ( D : in std_logic; WE : in std_logic; WCLK : in std_logic; A0 : in std_logic; A1 : in std_logic; A2 : in std_logic; A3 : in std_logic; O : out std_logic end component; Signal Declarations: signal DATA_OUT : std_logic_vector(data_width 1 downto 0 begin Registered outputs / Synchronous read REGISTERED_OUT: process (CLK) begin if (CLK event and CLK = 1 ) then O_DATA_OUT <= DATA_OUT; end if; end process REGISTERED_OUT; Distributed SelectRAM Instantiation RAM16X1S_X: for i in 0 to data_width 1 generate U_RAM16X1S: RAM16X1S port map ( D => DATA_IN(i), insert input signal WE => WRITE_EN, insert Write Enable signal WCLK => CLK, insert Write Clock signal A0 => ADDRESS(0), insert Address 0 signal A1 => ADDRESS(1), insert Address 1 signal A2 => ADDRESS(2), insert Address 2 signal A3 => ADDRESS(3), insert Address 3 signal O => DATA_OUT(i) insert output signal end generate; end XC3S_RAM16XN_S_arch; liwości połączeniowe i są dołączone do co trzeciego CLB, linii podwójnych (Double Lines), które zapewniają bezpośrednią komunikację pomiędzy pozostałymi CLB. W slice ach tworzących CLB ulokowano zasoby logiczne, których nawet pobieżna analiza (choćby na schemacie pokazanym na rys. 11) pokazuje ogrom możliwości i elastyczność tych komórek, których ogólnie rzecz ujmując budowa jest taka sama jak w pierwszych układach FPGA. Każdy slice wyposażono w dwie konfigurowalne tablice LUT (F LUT i G LUT), na wejścia których są podawane 4 sygnały (zmienne). Tablice te spełniają rolę konfigurowalnych, kombinacyjnych funktorów logicznych (często są nazywane generatorami funkcji), które umożliwiają wykonanie dowolnej funkcji logicznej do 4 zmiennych wejściowych. Na wyjściu LUT ulokowano przerzutnik, którego sposób działania (czyli jego typ) można także skonfigurować. Na schemacie pokazanym na rys. 11 zilustrowano budowę slice y X0Y1 i X0Y0 (rys. 8), które wyposażono w sprzętowe rozszerzenia (zaznaczone na rys. 11 linią przerywaną) pozwalające skonfigurować je jako rejestry przesuwne lub zespoły rozproszonej pamięci (tzw. Distributed RAM). Slice y X1Y0 i X1Y1 mają nieco prostszą budowę (bez fragmentów oznaczonych liniami przerywanymi na rys. 11), co ogranicza ich funkcjonalność do znanej z klasycznych wersji FPGA. O ile w większości przypadków możliwość wygodnej implementacji rejestrów przesuwających nie budzi specjalnych emocji, to możliwość uzyskania dodatkowych zasobów pamięciowych w LUT bywa atutem nie do pogardzenia. W każdym CLB można zaimplementować pamięć ROM o pojemności do 128x1 bitów, pamięć SRAM o pojemności do 64x1 bitów (co oznacza, że możliwe są także warianty 2x32x1 lub 4x16x1) lub pamięć DualPortRAM o pojemności 2x16x1 bit. Pamięci te dzięki rejestrom na wyjściach CLB można wyposażyć w mechanizmy synchronizacji odczytu danych. Na list. 1 przedstawiono opis w języku VHDL dwuportowej pamięci SRAM implementowanej w zasobach Distributed RAM, a na list. 2 opis pamięci jednoportowej (obydwie o organizacji 16xN, w obydwu zastosowano synchroniczny odczyt danych). Prezentowane przykłady pochodzą z przykładów przygotowanych przez inżynierów firmy Xilinx do noty aplikacyjnej XAPP464 (publikujemy na CD EP11/2006B). Jacek Majewski jacek.majewski@pwr.wroc.pl Piotr Zbysiński, EP piotr.zbysinski@ep.com.pl 96 Elektronika Praktyczna 11/2006

11 Układy FPGA w przykładach, część 3 Kontynuujemy prezentację zasobów dostępnych w układach FPGA z rodziny Spartan 3. W tej przedostatniej teoretycznej części kursu omawiamy budowę komórek I/O oraz zasady dystrybucji sygnałów zegarowych w układach FPGA. Rys. 12. Budowa komórki IOB Komórki wejścia wyjścia IOB Budowa komórek I/O w układach Spartan 3 jest dość skomplikowana (rys. 12), ale możliwości oferowane przez nie przewyższają (pod względem elastyczności i funkcjonalności) rozwiązania spotykane w mikrokontrolerach i innych układach cyfrowych. Zadaniem komórek IOB (Input Output Block) jest zapewnienie dwukierunkowej wymiany danych pomiędzy komórkami CLB tworzącymi strukturę logiczną zaprojektowaną przez użytkownika (patrz EP11/2006) z otoczeniem. Jak widać na rys. 12, komórka IOB składa się z trzech ścieżek przepływu danych: ścieżki sterowania bufora HiZ (trójstanowego), ścieżki wyjściowej i ścieżki wejściowej. Podstawowym zadaniem ścieżki sterowania bufora HiZ jest wytwarzanie sygnałów sterujących pracą wyjściowego bufora trójstanowego, który znajduje się w ścieżce wyjściowej. Jej zadaniem jest z kolei formowanie sygnałów wyjściowych, podawanych na fizyczne wyprowadzenie układu. Elementy zintegrowane w ścieżce wejściowej odpowiadają między innymi za uformowanie sygnałów podawanych z zewnątrz do układu FPGA. Ponieważ linie I/O w układach z rodziny Spartan 3 są przystosowane do współpracy z różnymi standardami napięciowymi, mogą one pracować także jako wejścia różnicowe (symetryczne), to w torach wejściowych zastosowano analogowe komparatory napięcia. Jeden z nich porównuje napięcie na linii I/O z napięciem na linii VREF (linia wspólna dla grup I/O), drugi jest wykorzystany do konwersji sygnału różnicowego (symetrycznego) na asymetryczny, przy czym trzeba pamiętać, że w takim trybie pracy wykorzystywane są dwie linie I/O sąsiadujących ze sobą komórek IOB. Wszystkie ścieżki komórki IOB mają wbudowane po dwa konfigurowalne przerzutniki, które można wykorzystać m.in. podczas transmisji danych w trybie DDR (Double Data Rate), czyli z taktowaniem obydwoma zboczami sygnału zegarowego. K a ż d y b l o k I O B w y p o s a ż o n o w r e z y- story podciągające pull up i pull down, które użytkownik może indywidualnie uaktywniać i odłą- 100 Elektronika Praktyczna 12/2006

12 Rys. 13. Konfigurację linii I/O umożliwia m.in. edytor wymuszeń XilinxPACE czać. Ponadto, każda linia I/O jest wyposażona w tzw. pin keeper, czyli przerzutnik utrzymujący na linii ostatni wymuszony z zewnątrz stan logiczny, dzięki któremu nie ma konieczności dołączania do zewnętrznego potencjału niewykorzystanych linii I/O. Można go stosować wymiennie z rezystorami pull up i pull down. Sterowanie dołączaniem rezystorów jest możliwe zarówno z poziomu opisu HDL jak i (co jest zdecydowanie łatwiejsze do opanowania i wygodniejsze w stosowaniu) z poziomu pliku wymuszeń UCF (User Constraints File), w którym znajdują się także przypisania sygnałów do konkretnych 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 CLB IOB Globalne sygnały zegarowe DCM Sprzętowe multiplikatory Pamięć BlockRAM 3. Projekty przykładowe wyprowadzeń układu. Poniżej pokazano jedną linię z pliku *.ucf, która opisuje parametry linii I/O wyprowadzającej sygnał o nazwie na_probe. Sygnał ten jest dołączony do wyprowadzenia numer 87, jest zgodny ze standardem napięciowym LVCMOS 3,3 V, wydajność prądowa linii I/O wynosi 16 ma, dołączony jest do niej pin keeper. Dodatkowo ustalono, że prędkość zmian sygnału na wyjściu będzie miała maksymalną dopuszczalną wartość (dyrektywa SLE- W=FAST): NET na_probe LOC = P87 IOSTANDARD = LVCMOS33 DRIVE = 16 KEEPER SLEW = FAST; E d y c j ę p l i ku *. u c f można wykonać za pomocą edytora tekstowego lub w wielu przypadkach jest to wygodniejsze za pomocą edytora wymuszeń XilinxPACE, zintegrowanego w pakiecie WebPack ISE (rys. 13). Jak widać na rys. 12, każda linia I/O została zabezpieczona przed uszkodzeniem ESD za pomocą diod włączonych szeregowo zaporowo. Powoduje to ograniczenie maksymalnego napięcia na wejściu do wartości z przedziału ok. VCCO 0,5 V VCCO + 0,5 V, nie ma więc możliwości bezpośredniej współpracy ze standardowymi układami TTL lub CMOS zasilanymi napięciem 5 V. Użytkownicy zamierzający łączyć ze sobą układy Spartan 3 z układami Rys. 14. Możliwe konfiguracje I/O z aktywnym modułem DCI zasilanymi napięciem wyższym niż 3,3 V powinni zastosować konwertery poziomów (w konwerterach jednokierunkowych układy TTL z rodziny LVC/LCX) lub (zdecydowanie gorsze rozwiązanie) 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. FPGA co trzeba o nich wiedzieć tip #7 Sygnały globalne Do dystrybucji sygnałów taktujących w układach FPGA jest zalecane wykorzystywanie globalnych linii zegarowych. Należy do nich dołączać możliwie duże grupy elementów taktowanych tym samym sygnałem zegarowym. Elektronika Praktyczna 12/

13 Rys. 15. Dystrybucja sygnałów zegarowych połączeniami segmentowanymi powoduje m.in. zmniejszenie maksymalnej częstotliwości taktowania projektu Interesującym wyposażeniem komórek IOB jest także blok DCI (Dynamically Controlled Impedance), którego zadaniem jest dopasowanie falowe (ma więc znaczenie dla sygnałów o dużej częstotliwości) linii I/O do obciążenia. Impedancję wyjściową (szeregową i równoległą) linii I/O dobiera się za pomocą zewnętrznych rezystorów (po dwa na każdy zespół DCI), dołączonych do linii VRN i VRP (funkcje alternatywne wybranych linii I/O). Możliwe konfiguracje bufora wyjściowego z aktywnym DCI pokazano na rys. 14. Odpowiednia konfiguracja DCI jest uaktywniana automatycznie po wybraniu trybu pracy I/O, co także pokazano na rys. 14. Globalne linie zegarowe Sporo problemów sprawia początkującym użytkownikom układów PLD zrozumienie koncepcji sygnałów globalnych, dlatego postaramy się ją tu nieco rozjaśnić. W typowych projektach występują trzy rodzaje sygnałów potrzebnych jednocześnie w wielu miejscach układu FPGA (takie sygnały są nazywane globalnymi), są to sygnały: zegarowe, zerujący/ustawiający i sygnał zezwalający na pracę buforów trójstanowych (szczególnie istotny w systemach opierających się na komunikacji magistralowej). Ponieważ standardowe zasoby połączeniowe (pomiędzy CLB) w układach Spartan 3 jak na układy FPGA przystało są podzielone na krótkie segmenty, to dystrybucja nimi sygnałów potrzebnych w wielu miejscach jednocześnie powoduje zajęcie znacznej ich części przez niewielką liczbę sygnałów (rys. 15). Dodatkową, negatywną konsekwencją segmentowych tras przesyłania sygnałów jest znaczne ich rozmycie w funkcji czasu: czasy przebiegu silnie zależą od trasy, a te zależą zarówno od sposobu opisu HDL jak i algorytmów optymalizacyjnych syntezera logicznego. Jakkolwiek dystrybucja sygnałów globalnych za pomocą połączeń lokalnych jest możliwa, to nie jest w praktyce możliwe uzyskanie stabilnej pracy tak zaprojektowanego układu z częstotliwościami taktowania bliskimi częstotliwości maksymalnej, wynikającej z parametrów czasowych układu FPGA. List. 3. Sposób wykorzystania w projekcie globalnego bufora sygnału zegarowego BUFG (predefiniowany przez producenta) BUFG_inst : BUFG port map ( O => moje_wyjscie, I => moje_wejscie Generalna zasada Układy Spartan 3 wyposażono w 8 globalnych linii służących do dystrybucji niezależnych sygnałów zegarowych (rys. 16), które są dołączane do linii przesyłowych za pomocą multiplekserów 2/1 spełniających jednocześnie rolę buforów separujących źródło sygnału zegarowego od taktowanej logiki. Inne wymienione sygnały często traktowane w PLD jako globalne (tzn. zerujący/ustawiający i zezwalający dla buforów trójstanowych) w układach Spartan 3 nie zostały wyprowadzone na zewnątrz układów. Wykorzystanie w projekcie globalnych linii zegarowych jest możliwe na kilka sposobów, z których dwa są najbardziej popularne: przypisanie linii rozprowadzającej sygnały taktujące wewnątrz FPGA do wyprowadzenia GCLKx jest informacją dla syntezera, że użytkownik chce wykorzystać globalną linię zegarową, w opisie projektu (zarówno pisanego w HDL list. 3, jak i w postaci schematu rys. 17) można zastosować predefiniowany bufor BUFG. Skuteczność obydwu przedstawionych sposobów jest taka sama. Jacek Majewski jacek.majewski@pwr.wroc.pl Piotr Zbysiński, EP piotr.zbysinski@ep.com.pl Rys. 16. Budowa systemu dystrybucji sygnałów zegarowych w układach Spartan 3 Rys. 17. Atrybut globalności można nadać wybranej linii sygnałowej także w edytorze schematów 102 Elektronika Praktyczna 12/2006

14 Układy FPGA w przykładach, część 4 Jest to ostatnia teoretyczna część kursu. Za miesiąc zaczynamy prezentację przykładów aplikacji na FPGA. W tym odcinku cyklu skupiamy się na trzech istotnych zasobach układów Spartan 3: syntezerach DCM, sprzętowych multiplikatorach i wbudowanej w struktury układów, konfigurowalnej pamięci SRAM. Rys. 18. Zbocza sygnałów zegarowych występują w różnych miejscach FPGA w różnym czasie, co może spowodować nieprawidłowe działanie układu Generatory wewnętrznych sygnałów zegarowych DCM Najpoważniejszym kłopotem dla konstruktorów stosujących w swoich projektach układy FPGA jest odpowiednie taktowanie wprojektowanych w nie obwodów. Budowa FPGA powoduje, że elementy logiczne rozmieszczone na powierzchni struktury półprzewodnikowej, pomimo taktowania sygnałem zegarowym pochodzącym z jednego źródła, nie są taktowane jednocześnie (rys. 18), bowiem różny jest czas dystrybucji sygnału w zależności od trasy jaką pokonuje (czyli jakiego rodzaju zasoby połączeniowe wykorzystano do jego transportu), odległości pomiędzy źródłem i celem, a także liczby wejść taktowanych jednocześnie w danym segmencie ścieżki połączeniowej. Aby zminimalizować wpływ niedoskonałości architektury FPGA na jakość projektów, firma Xilinx wyposażyła układy Spartan 3 w bloki DCM (ich liczba zależy zasobów logicznych FPGA, jak to przedstawiono w tab. 3 na str. 94 w EP11/2006). Pozwalają one nie tylko skompensować różnice faz (wynikające z opóźnień propagacji) sygnałów zegarowych w (fizycznie) różnych m i e j s c a c h u k ł a d u, można je także wykorzystać do syntezowania (w tym podziału częstotliwości sygnału zewnętrznego) wewnętrznych sygnałów zegarowych. Na rys. 19 pokazano schemat blokowy DCM (Digital Clock Manager). Składa się on z 4 bloków: syntezera częstotliwości DFS, pętli DLL, programowanego przesuwnika fazy (Phase Shifter) oraz zespołu logiki Status Logic. W aplikacjach prostszych oraz w przypadku, gdy nie jest konieczne żyłowanie parametrów układów FPGA, korzystanie z D C M n i e j e s t ko n i e c z n e i m o - ż e s i ę w p r o w a - dzić do wykorzystania tego bloku jako syntezera lub programowalnego dzielnika częstotliwości. Na rys. 20 pokazano przykładowe konfiguracje DCM, w których wykorzystano referencyjny sygnał zegarowy podawany z zewnątrz na wyprowadzenie FPGA. Zastosowanie w projektach bloków DCM jest możliwe na dwa sposoby: za pomocą dołączenia DCM z wykorzystaniem opisu HDL (przykład opisu w języku VHDL pokazano na list. 4), lub w przypadku korzystania z opisu za pomocą schematu dzięki wykorzystaniu elementu bibliotecznego o nazwie DCM, który znajduje się w kategorii General (rys. 21). W przypadku opisu pokazanego na list. 4 parametryzacja (konfiguracja) DCM odbywa się za pomocą wpisania odpowiednich wartościach, których możliwe warianty zaznaczono pogrubioną czcionką w komentarzach. Nieco wygodniej przebiega konfiguracja DCM w edytorze schematów: dwukrotne kliknięcie w symbol graficzny DCM otwiera okno edycyjne, które pokazano na rys. 22. Za jego pomocą można wygodnie, w windowsowym stylu sparametryzować i skonfigurować DCM, bez konieczności modyfikowania opisu HDL. FPGA co trzeba o nich wiedzieć tip #8 Możliwości konfiguracji DCM są bardzo duże i ich dokładne opisanie wychodzi poza ramy kursu. Czytelników zainteresowanych poznaniem szczegółów zachęcamy do zapoznania się z notą katalogową XAPP462 firmy Xilinx, w której DCM opisano bardzo szczegółowo. Rys. 19. Schemat blokowy DCM stosowanych w układach Spartan 3 Elektronika Praktyczna 1/

15 Rys. 20. Przykładowe konfiguracje DCM z wykorzystaniem zewnętrznego sygnału Rys. 21. Jednym ze sposobów skorzystania z możliwości DCM jest zastosowanie elementu bibliotecznego DCM znajdującego się w kategorii General Możliwości bloków DCM są duże, co wiąże się z dużą liczbą dostępnych do konfigurowania opcji. Nieco więcej miejsca poświęcimy im w części kursu z przykładami. Sprzętowe multiplikatory Standardowym elementem architektury układów Spartan 3 są sprzętowe multiplikatory, pozwalające mnożyć 2 liczby 18 bitowe. Mogą one pracować w trybie asynchronicznym (kombinacyjnym) lub synchronicznym, w którym wykonywanie obliczeń jest synchronizowane sygnałem zegarowym, a wynik odbierany z wyjść 36 bitowego rejestru (rys. 23). Korzystanie z możliwości multiplikatorów wygląda podobnie jak w przypadku DCM, to znaczy, że użytkownik ma do dyspozycji ręcznie modyfikowalny opis HDL (wykorzystujący konfigurowalny prymityw MULT18X18SIO) lub może jego opis wygenerować za pomocą przyjaznego w obsłudze programu Xlinx CORE Generator (rys. 24), który wchodzi w skład bezpłatnego WebPacka ISE. Pamięć BlockRAM Wszystkie układy z rodziny Spartan 3 wyposażono w wewnętrzną, konfigurowalną pamięć SRAM. Liczba niezależnych bloków BlockRAM wiążąca się z nią łączna pojemność pamięci jest zależna od typu układu (patrz tab. 3, str. 94 w EP11/2006). Ponieważ wszystkie przykłady będą FPGA co trzeba o nich wiedzieć tip #9 Możliwości multiplikatorów wbudowanych w układy Spartan 3 są duże. Czytelników zainteresowanych poznaniem szczegółów zachęcamy do zapoznania się z notą katalogową XAPP467 firmy Xilinx, w której opisano je bardzo szczegółowo. 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 CLB IOB Globalne sygnały zegarowe DCM Sprzętowe multiplikatory Pamięć BlockRAM 3. Projekty przykładowe prezentowane na zestawie ZL9PLD (płytka bazowa) + ZL10PLD (dip- PLD z układem SX3S200), do naszej dyspozycji będzie 12 bloków konfigurowalnej pamięci o łącznej pojemności 216 kb. Wbudowana w układy Spartan 3 pamięć SRAM jest dwuportowa, dzięki czemu użytkownik może wykonywać niezależnie operacje zapisu i od- FPGA co trzeba o nich wiedzieć tip #10 Maksymalna częstotliwość taktowania pamięci BlockRAM może dochodzić w układach Spartan 3 do 200 MHz. czytu spod/do różnych adresów, może także transferować dane za pomocą rejestrów składających się na komórki pamięci (rys. 25). Pojemność pojedynczego zespołu BlockRAM wynosi b (w przypadku wykorzystywania bitów parzystości b), przy czym użytkownik może dobierać szerokość i głębokość pamięci do potrzeb projektu. Możliwe jest także łączenie kilku bloków BlockRAM w zespoły pamięci o większej pojemności. Możliwe są więc następujące Rys. 22. Konfiguracja DCM w edytorze schematów jest łatwa dzięki specjalnemu oknu edycyjnemu Rys. 23. Możliwe konfiguracje pracy multiplikatorów 98 Elektronika Praktyczna 1/2007

16 List. 4. DCM_inst : DCM generic map ( Czesc opisu sluzaca do skonfigurowania DCM CLKDV_DIVIDE => 2.0, Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0, ,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0 CLKFX_DIVIDE => 1, Can be any interger from 1 to 32 CLKFX_MULTIPLY => 4, Can be any integer from 1 to 32 CLKIN_DIVIDE_BY_2 => FALSE, TRUE/FALSE to enable CLKIN divide by two feature CLKOUT_PHASE_SHIFT => "NONE", Specify phase shift of NONE, FIXED or VARIABLE CLK_FEEDBACK => "1X", Specify clock feedback of NONE, 1X or 2X DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", _SYNCHRONOUS, SYSTEM_SYNCHRONOUS or an integer from 0 to 15 DFS_FREQUENCY_MODE => "LOW", HIGH or LOW frequency mode for frequency synthesis DLL_FREQUENCY_MODE => "LOW", HIGH or LOW frequency mode for DLL DUTY_CYCLE_CORRECTION => TRUE, Duty cycle correction, TRUE or FALSE PHASE_SHIFT => 0, Amount of fixed phase shift from 255 to 255 STARTUP_WAIT => FALSE) Delay configuration DONE until DCM LOCK, TRUE/FALSE Czesc opisu umozliwiajaca podlaczenie DCM do reszty projektu port map ( CLK0 => CLK0, 0 degree DCM CLK ouptput CLK180 => CLK180, 180 degree DCM CLK output CLK270 => CLK270, 270 degree DCM CLK output CLK2X => CLK2X, 2X DCM CLK output CLK2X180 => CLK2X180, 2X, 180 degree DCM CLK out CLK90 => CLK90, 90 degree DCM CLK output CLKDV => CLKDV, Divided DCM CLK out (CLKDV_DIVIDE) CLKFX => CLKFX, DCM CLK synthesis out (M/D) CLKFX180 => CLKFX180, 180 degree CLK synthesis out LOCKED => LOCKED, DCM LOCK status output PSDONE => PSDONE, Dynamic phase adjust done output STATUS => STATUS, 8 bit DCM status bits output CLKFB => CLKFB, DCM clock feedback CLKIN => CLKIN, Clock input (from IBUFG, BUFG or DCM) PSCLK => PSCLK, Dynamic phase adjust clock input PSEN => PSEN, Dynamic phase adjust enable input PSINCDEC => PSINCDEC, Dynamic phase adjust increment/decrement RST => RST DCM asynchronous reset input Rys. 24. Wygodnym narzędziem, umożliwiającym wygenerowanie opisu HDL multiplikatora odpowiadającego wymaganiom projektu, jest Xlinx CORE Generator FPGA co trzeba o nich wiedzieć tip #11 Możliwości konfiguracji pamięci BlockRAM wbudowanych w układy Spartan 3 są bardzo duże. Czytelników zainteresowanych poznaniem szczegółów zachęcamy do zapoznania się z notą katalogową XAPP463 firmy Xilinx, w której opisano je wszystkie bardzo szczegółowo. konfiguracje pojedynczego bloku BlockRAM: 16 k x 1, 8 k x 2, 4 k x 4, 2 k x 8, 2 k x 9, 1 k x 16, 1 k x 18, 512 x 32, 512 x 36, 256 x 72 (tylko w trybie single port). Jak można zauważyć, oprócz typowych, dwójkowych szerokości słowa danych, pamięci oferują także możliwość przechowywania bitów parzystości (po jednym na przechowywany bajt), przy czym jego generację i weryfikację musi zapewnić użytkownik. Bloki pamięci można skonfigurować jako jedno i dwuportowe, jako FIFO, pamięci CAM (Content Addressable Memory) oraz pamięci ROM. W każdym przypadku użytkownik może zdefiniować zawartość pamięci po włączeniu zasilania, co umożliwia następujący zapis w języku VHDL (dla kolejnych 16 komórek): INIT_00 => X" " Pamięć, której zawartość nie jest inicjowana przez użytkownika, po włączeniu zasilania zawiera same 0. Warto pamiętać, że w układach Spartan 3 użytkownicy mają do dyspozycji poza zespołami BlockRAM także małe zespoły pamięci rozproszone w blokach CLB (alternatywna funkcja LUT, tzw. DistributedRAM, nieco więcej na ten temat pisaliśmy w EP11/2006), każdy o pojemności 16x1 b. Można je lokalnie łączyć w bloki do 64 bitów, a takie zespoły można wykorzystywać do budowy większych zespołów pamięci RAM/FIFO/DualPortRAM. Korzystanie ze wszystkich rodzajów pamięci dostępnych w układach Spartan 3 jest równie wygodne jak miało to miejsce w przypadku DCM lub sprzętowych multiplikatorów. Podsumowanie Na tym kończymy z konieczności skrótowy wstęp do tajemniczego świata nowoczesnych układów FPGA. Za miesiąc pokażemy pierwszy przykład, który mamy nadzieję zachęci wszystkich onieśmielonych Czytelników do podjęcia samodzielnych prób. Jacek Majewski jacek.majewski@pwr.wroc.pl Piotr Zbysiński, EP piotr.zbysinski@ep.com.pl FPGA co trzeba o nich wiedzieć tip #12 Większe zespoły pamięci utworzonych na bazie rozproszonych LUT (w CLB) mają gorsze parametry czasowe niż pamięci BlockRAM. Należy pamiętać o tym w przypadku, gdy projekt zaimplementowany w FPGA jest taktowany sygnałem zegarowym o częstotliwości bliskiej maksymalnej, dopuszczalnej dla danego układu. Rys. 25. Możliwe tryby pracy pamięci implementowanych w BlockRAM Elektronika Praktyczna 1/

17 Układy FPGA w przykładach, część 5 Projekty przykładowe Pierwsze cztery części kursu dały nam elementarne wiadomości o architekturze układów FPGA z rodziny Spartan 3, a teraz przechodzimy do przykładowych projektów przygotowanych w języku VHDL. Pierwszy przykład wydaje się być banalny, ale bez niego trudno nam będzie zagłębić się w projekty bardziej efektowne. K U R S Zaczynamy od projektu z gatunku podstawowych w większości typowych projektów cyfrowych m przedstawimy sposób wykonania debouncera, czyli układu likwidującego drgania styków mikroprzełączników dołączonych do wejść układu FPGA. Problem likwidacji drań styków doskonale znają konstruktorzy, którzy budowali jakiekolwiek układy reagujące na liczbę naciśnięć przycisków dołączonych do wejść mikrokontrolerów lub dowolnych innych układów cyfrowych. Dobrym testem, dogłębnie pokazującym problem jaki +V CLK Diody LED Licznik kontrolny Rys. 1. Schemat blokowy układu umożliwiającego wykrycie drgań styków przełączników Rys. 2. Skutki drgań styków przełącznika (jeden z przykładowych wyników rejestracji) Rys. 3. Skutki drgań styków przełącznika (inny przykładowy wynik rejestracji napięcia na stykach przełącznika) mamy do rozwiązania, jest dołączenie do wejścia zegarowego kilkubitowego licznika styków np. typowego mikroprzełącznika (rys. 1). Łatwo się można wtedy przekonać, że jedno naciśnięcie przycisku powoduje zmianę stanu licznika o kilka a w skrajnych przypadkach kilkanaście stanów. Na rys. 2 i rys. 3 pokazano dwa przykładowe przebiegi napięcia na stykach mikroprzełącznika włączonego jak pokazano na rys. 1, zdjęte za pomocą oscyloskopu cyfrowego. Liczba przeskoczonych przez licznik stanów podczas zdejmowania przedstawionych przebiegów była w obydwu przypadkach większa niż wynika to z oscylogramów. Jest to wynik zbyt małej rozdzielczości poziomej oscyloskopu zastosowanego do pomiarów m znaczna część śmieci wynikających z drgań styków oscyloskop po prostu zgubił. Nie zmienia to faktu, że przełączniki, także Okazja dla Czytelników EP zainteresowanych układami FPGA Zestaw sprzętowy wykorzystywany w kursie jest do dostępny do 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 Elektronika Praktyczna 2/

18 Rys. 4. Symbol graficzny debouncera pochodzące od renomowanych producentów, całkiem nieźle spełniają rolę generatorów impulsów quasimlosowych. Bez dodatkowych zabiegów nie da się z nich korzystać do realizacji zadań, na wynik których chcielibyśmy mieć wpływ. List. 1. Opis działania debouncera w języku VHDL process begin wait until (clock_100hz event) and (clock_100hz = 1 shift_pb(2 downto 0) <= shift_pb(3 downto 1 shift_pb(3) <= pb; case shift_pb is when 0000 => state <= 0 ; when 1111 => state <= 1 ; when others => state <= state; end case; pb_debounced <= state; end process; end; Realizacja Możliwych sposobów sprzętowej likwidacji drgań styków jest bardzo wiele, podobnie jak ma to miejsce w rozwiązaniach programowych. Rys. 5. Przykładowa reakcja wyjścia debouncera (przebieg dolny) na wciśnięcie przycisku (przebieg górny) Kompletny projekt dla WebPacka 8.2i wraz z plikami źródłowymi opublikujemy na CDmEP3/2007B. Wy b r a n y p r z e z nas nie jest z całą pewnością najbardziej oszczędny (jeśli chodzi o zajęte zasoby sprzętowe FPGA), ale ma wiele praktycznych z a l e t m j e d n ą z nich jest zachowanie czasu trwania zwarcia styków przycisku, co nie jest możliwe w wielu prostszych rozwiązaniach. Przedstawione rozwiązanie jest VHDLmową adaptacją propozycji przedstawionej w pierwszym wydaniu książki Fundamentals of Digital Logic autorstwa Stephena Browna i Zvonko Vranesica (Kluwer 1995). Na rys. 4 pokazano symbol graficzny debouncera, którego sposób działania opisano w języku VHDL (list. 1). Wejście clock_100hz służy do podawania sygnału taktującego o częstotliwości ok. 100 Hz. Można ją oczywiście zmienić, dostosowując czułość debouncera do jakości współpracujących przełączników. Przeprowadzone próby wykazały, że Rys. 6. Nawet kilka krótkich impulsów na wejściu debouncera (przebieg górny) nie wywołuje zmiany stanu na jego wyjściu (przebieg dolny) 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 CLB IOB Globalne sygnały zegarowe DCM Sprzętowe multiplikatory Pamięć BlockRAM 3. Projekty przykładowe Debouncer Klawiatura matrycowa Obsługa wyświetlacza multipleksowego LED Obsługa wyświetlacza LCD Sterownik LCD 2x16 (prosty) Sterownik LCD 2x16 (zaawansowany) Komunikacja via RS232 i USB Sterownik VGA Implementacja mikrokontrolera PicoBlaze zakres Hz zapewnia poprawną obsługę także bardzo tanich (czyli niskiej jakości) mikroprzełączników. Odkłócanie styków przełącznika odbywa się w 4mbitowym rejestrze przesuwającym, który co każdy takt zegara clock_100hz wsuwa na bit MSB stan wejścia monitorującego przełącznik (pb). Zmiana stanu na wyjściu pb_debounced, która oznacza wciśnięcie przycisku (niezależnie od tego, czy stanem po wciśnięciu jest logiczne 0 czy też 1), wymaga przesunięcia stanu odpowiadającego wciśnięciu przez cały rejestr (4 takty sygnału zegarowego), tak samo jak dzieje się po puszczeniu przycisku. Sposób działania układu powoduje, że odkłócony sygnał wyjściowy jest opóźniony względem wejściowego o czas odpowiadający 4 taktom sygnału clock_ 100hz m rys. 5. W przypadku, gdy czas impulsu wejściowego (ważne: nieważna jest jego polaryzacja!) jest 104 Elektronika Praktyczna 2/2007

19 List. 2. Opis VHDL łączący w całość debouncer, 8mbitowy licznik kontrolny oraz preskaler zapewniający sygnał taktujący dla debouncera library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity debouncer_top is port ( clk : in std_logic; pbi : in std_logic; pbo, clk100hz_o : out std_logic; ledy : inout std_logic_vector(7 downto 0) end debouncer_top; architecture behavioral of debouncer_top is component licznik port ( clk: in std_logic; q: inout std_logic_vector(7 downto 0) end component licznik; component debouncer port ( clock_100hz, pb: in std_logic; pb_debounced: inout std_logic end component debouncer; component preskaler port ( clk : in std_logic; q : inout std_logic_vector (20 downto 0) end component preskaler; signal clk_int : std_logic; signal q_presc_int : std_logic_vector(20 downto 0 begin cnt: licznik port map ( clk => clk_int, q => ledy kb_d: debouncer port map ( pb => pbi, clock_100hz => q_presc_int(15), mm ok. 120 hz pb_debounced => clk_int presc: preskaler port map ( clk => clk, q => q_presc_int pbo <= clk_int; clk100hz_o <= clk_int; end behavioral; Rys. 7. Debouncer nie reaguje na naciśnięcia przycisku krótsze niż 4 takty sygnału zegarowego zestawie składającym się z płytki bazowej ZL9PLD oraz modułu dip- PLD ZL10PLD z układem XC3S200 z rodziny Spartan 3. Jego zasoby są tak duże, że pewna rozrzutność projektu (uzasadniona walorami praktycznymi!) jest praktycznie bez znaczenia. Żeby zweryfikować faktyczne możliwości prezentowanego rozwiązania, przygotowano opis zestawu testowego, który składa się z (rys. 8): Opisy innych rozwiązań debouncerów w układach PLD można znaleźć między innymi: discussion/inputmswitch/inputmswitchmvhdl.html labs/pushbuttoncounter.pdf archive378m2005m3m html debouncera, preskalera, który zapewnia właściwą częstotliwość taktowania debouncera, która jest uzyskiwana z generatora kwarcowego 3,6864 MHz ulokowanego na płytce ZL10PLD, licznika pracującego w trybie NKB, który jest taktowany z wyjścia debouncera. Wszystkie wymienione elementy opisano w języku VHDL i połączono w całość w sposób pokazany na list. 2. Podsumowanie Przedstawiony projekt, jakkolwiek niezbyt skomplikowany i z pewnością mało efektowny, zapewnia nam komfortową obsługę klawiatury (w ZL9PLD wykonanej na mikroprzełącznikach). Dobra jakość i stabilna praca tej części interfejsu użytkownika pozwoli nam w niedługim czasie zilustrować obsługę jego drugiej części: różnego rodzaju wyświetlaczy. Jacek Majewski jacek.majewski@pwr.wroc.pl Piotr Zbysiński, EP piotr.zbysinski@ep.com.pl krótszy niż 4 takty sygnału wejściowego, stan wyjścia pb_debounced nie zmienia się, jak to pokazano na rys. 6 i rys. 7. Implementacja Zgodnie z zapowiedziami z poprzednich części cyklu, rozwiązanie prezentowane w artykule zostało zaimplementowane i przetestowane na 3,6864 MHz +V CLK Preskaler ok. 100 Hz PB_DEBOUNCED CLK Debouncer PB CLK Diody LED Licznik kontrolny Rys. 8. Schemat blokowy testera wersyfikującego poprawność działania debouncera Elektronika Praktyczna 2/

20 KURS Układy FPGA w przykładach, część 6 Projekty przykładowe Przedstawiamy kolejny projekt w języku opisu sprzętu VHDL, tym razem jest to moduł obsługujący 16 stykową klawiaturę matrycową o organizacji 4 wiersze x 4 kolumny. Klawiatury tego typu są chętnie stosowane w systemach cyfrowych, ze względu na możliwość odczytania stanu 16 przycisków za pomocą 8 linii FPGA: czterech wejściowych i czterech wyjściowych. Realizacja plementacjom programowym w mikrokontrolerach. Układ działa następująco: 4 bitowy licznik CNT zlicza impulsy zesposób obsługi pojedynczych garowe podawane na wejście CLK, przycisków w układach FPGA pokazaa jego wyjścia adresują: wyjścia 2 biliśmy miesiąc temu. W przypadku kotowego (4 wyjściowego) dekodera (na nieczności zastosowania w prorys. 2 DEKODER, linie kb_cnt3 jektowanym systemie większej i kb_cnt2) i 4 wejściowego mulliczby przycisków zazwyczaj tipleksera (linie kb_cnt1 i kb_ stosuje się matrycowe łączenie cnt0). Na wyjściach dekodera ich styków. Dzięki temu liczba stanem aktywnym jest 0, linii I/O konieczna do odczytaa wejścia multipleksera są podnia ich stanów jest mniejsza ciągnięte do plusa zasilania za niż niezbędna w przypadku pomocą zewnętrznych rezydołączania pojedynczych przystorów (wewnętrzne rezystory cisków bezpośrednio do linii pull up w układzie FPGA mają I/O. W prezentowanym produżą rezystancję co powoduje, jekcie zastosowano 16 przyciże bez zastosowania rezystoskową klawiaturę telefoniczną, rów zewnętrznych układ jest której schemat połączeń poka- Rys. 1. Schemat elektryczny połączeń klawiatury podatny na zakłócenia. Logiczzano na rys. 1. Jak widać, do STD HT44 (z oferty ne 0 pojawia się kolejno na wykorzystanej jej obsługi wystarczy 8 linii. kolumnach col0 col3. W przyw projekcie prezentowanym w artykule 104 Schemat blokowy proponowanego rozwiązania przedstawiono na rys. 2. Jest to rozwiązanie wręcz podręcznikowe, odpowiadające zarówno klasycznym (dyskretnym) rozwiązaniom sprzętowym jak i im- Elektronika Praktyczna 3/2007

21 Rys. 2. Schemat blokowy interfejsu klawiatur matrycowej, który zaimplementowano w układzie FPGA (elementy znajdujące się w FPGA znajdują się w szarym obrysie) Rys. 3. Ilustracja działania dekodera klawiatury matrycowej przy założeniu, że wciśnięty jest przycisk o fizycznym adresie 1111 (dwójkowo) padku zwarcia styków któregoś przycisku na linii odpowiadającego mu wiersza pojawia się 0 rys. 3. Podczas analizowania pracy układu trzeba pamiętać, że po wybraniu kolumny skanowane są wszystkie wiersze (do ich adresowania wykorzystano dwa młodsze bity licznika CNT). Wykrycie wciśnięcia któregoś z klawiszy powoduje zatrzymanie licznika CNT w stanie, w którym wykryro wciśnięcie czyli na jego wyjściach znajduje się adres wciśniętego przycisku. Sygnał zatrzymujący licznik (INT) można wykorzystać do zgłoszenia przerwania informującego o konieczności obłużenia klawiatury przez współpracujący np. mikrokontroler, można go także wykorzystać jak w prezentowanym przykładzie do wpisania numeru wciśniętego klawisza do rejestru latch, na wyjściach którego jest on utrzymywany do kolejnego wciśnięcia. Jedynym nie zawsze potrzebnym fragmentem projektu jest pamięć ROM (jej opis w VHDL pokazano na list. 1), która spełnia rolę transkodera. Można ją wykorzystać do przypisania dowolnych (niekoniecznie 4 bitowych!) kodów poszczególnym przyciskom klawiatury. Ponieważ w przykładowym projekcie numerom klawiszy przypisano kody odpowiadające ich adresom, obecność tej pamięci nie jest odczuwalna. Jej opisać można zmodyfikować na pzykład w sposób pokazany na list. 2 co spowoduje, że wciśnięcie przycisku o fizycznym 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 CLB IOB Globalne sygnały zegarowe DCM Sprzętowe multiplikatory Pamięć BlockRAM 3. Projekty przykładowe Debouncer Klawiatura matrycowa Obsługa wyświetlacza multipleksowego LED Obsługa wyświetlacza LCD Sterownik LCD 2x16 (prosty) Sterownik LCD 2x16 (zaawansowany) Komunikacja via RS232 i USB Sterownik VGA Implementacja mikrokontrolera PicoBlaze adresie 0 (mapę adresów pokazano na rys. 1) będzie powodowało wygenerowanie kodu 1111b itd. Na list. 1 i list. 2 pogrubioną czcionką zaznaczono miejsca, w których są określane kody przypisywane poszczególnym przyciskom. Implementacja Prezentowany projekt, podobnie do wszystkich pozostałych z naszego List. 1. Zastosowany w projekcie przykładowym opis VHDL pamięci ROM case kb_cnt is when 0000 => code_kb_int <= 0000 ; when 0001 => code_kb_int <= 0001 ; when 0010 => code_kb_int <= 0010 ; when 0011 => code_kb_int <= 0011 ; when 0100 => code_kb_int <= 0100 ; when 0101 => code_kb_int <= 0101 ; when 0110 => code_kb_int <= 0110 ; when 0111 => code_kb_int <= 0111 ; when 1000 => code_kb_int <= 1000 ; when 1001 => code_kb_int <= 1001 ; when 1010 => code_kb_int <= 1010 ; when 1011 => code_kb_int <= 1011 ; when 1100 => code_kb_int <= 1100 ; when 1101 => code_kb_int <= 1101 ; when 1110 => code_kb_int <= 1110 ; when 1111 => code_kb_int <= 1111 ; when others => code_kb_int <= ; List. 2. Zmodyfikowany opis VHDL pamięci ROM, który można zaimplementować w projekcie case kb_cnt is when 0000 => code_kb_int <= 1111 ; when 0001 => code_kb_int <= 1110 ; when 0010 => code_kb_int <= 1101 ; when 0011 => code_kb_int <= 1100 ; when 0100 => code_kb_int <= 1011 ; when 0101 => code_kb_int <= 1010 ; when 0110 => code_kb_int <= 1001 ; when 0111 => code_kb_int <= 1000 ; when 1000 => code_kb_int <= 0111 ; when 1001 => code_kb_int <= 0110 ; when 1010 => code_kb_int <= 0101 ; when 1011 => code_kb_int <= 0100 ; when 1100 => code_kb_int <= 0011 ; when 1101 => code_kb_int <= 0010 ; when 1110 => code_kb_int <= 0001 ; when 1111 => code_kb_int <= 0000 ; when others => code_kb_int <= ; Elektronika Praktyczna 3/

22 List. 3. Opis dekodera klawiatury matrycowej z pamięcią ROM pełniącą rolę transkodera library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity kb_mtx is port ( clk : in std_logic; res : in std_logic; int : inout std_logic; row : in std_logic_vector (3 downto 0 col : out std_logic_vector (3 downto 0 code_kb_ext : out std_logic_vector (3 downto 0) end kb_mtx; architecture keys of kb_mtx is signal kb_cnt : std_logic_vector (3 downto 0 signal code_kb_int : std_logic_vector (3 downto 0 begin process (clk, int, res) begin if (res = 0 ) then kb_cnt <= «0000»; elsif (clk event and clk = 1 ) then if (int = 1 ) then kb_cnt <= kb_cnt + 1; end if; end if; end process; col(0) <= 0 when kb_cnt(3 downto 2) = «00» else 1 ; col(1) <= 0 when kb_cnt(3 downto 2) = «01» else 1 ; col(2) <= 0 when kb_cnt(3 downto 2) = «10» else 1 ; col(3) <= 0 when kb_cnt(3 downto 2) = «11» else 1 ; with kb_cnt(1 downto 0) select int <= row(3) when «11», row(2) when «10», row(1) when «01», row(0) when others; process (kb_cnt) begin case kb_cnt is when «0000» => code_kb_int <= «0000»; when «0001» => code_kb_int <= «0001»; when «0010» => code_kb_int <= «0010»; when «0011» => code_kb_int <= «0011»; when «0100» => code_kb_int <= «0100»; when «0101» => code_kb_int <= «0101»; when «0110» => code_kb_int <= «0110»; when «0111» => code_kb_int <= «0111»; when «1000» => code_kb_int <= «1000»; when «1001» => code_kb_int <= «1001»; when «1010» => code_kb_int <= «1010»; when «1011» => code_kb_int <= «1011»; when «1100» => code_kb_int <= «1100»; when «1101» => code_kb_int <= «1101»; when «1110» => code_kb_int <= «1110»; when «1111» => code_kb_int <= «1111»; when others => code_kb_int <= ; end case; end process; process (clk, int, code_kb_int, res) begin if (res = 0 ) then code_kb_ext <= «0000»; elsif (clk event and clk = 1 and int = 0 ) then code_kb_ext <= code_kb_int; end if; end process; end; cyklu, uruchomiono i przetestowano na zestawie ZL9PLD i ZL10PLD. Płytka ZL9PLD to uniwersalna baza, natomiast ZL10PLD to moduł DIP z układem XC3S200 z rodziny Spartan 3 firmy Xilinx (nieco więcej pisaliśmy o tych płytkach w pierwszej części cyklu, w EP10/2006). Sposób podłączenia klawiatury STD HT44 do płytki bazowej ZL9PLD pokazano na rys. 4. Sygnały col(3:0) i row(3:0) można oczywiście dołączyć do dowolnych innych, dostępnych wyprowadzeń List. 4. Opis w języku VHDL zawierający opis połączeń pomiędzy preskalerem i modułem obsługi klawiatury matrycowej library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity kb_top is port ( clk : in std_logic; res : in std_logic; int : inout std_logic; q_p : out std_logic; row : in std_logic_vector (3 downto 0 col : out std_logic_vector (3 downto 0 code_kb_ext : out std_logic_vector (3 downto 0) end kb_top; architecture behavioral of kb_top is signal q_presc : std_logic_vector (15 downto 0 component kb_mtx port ( clk : in std_logic; res : in std_logic; int : out std_logic; row : in std_logic_vector (3 downto 0 col : out std_logic_vector (3 downto 0 code_kb_ext : out std_logic_vector (3 downto 0) end component kb_mtx; component preskaler port ( clk : in std_logic; q : inout std_logic_vector (15 downto 0) end component preskaler; begin presc: preskaler port map ( clk => clk, q => q_presc kb_d: kb_mtx port map ( clk => q_presc(14), res => res, int => int, row => row, col => col, code_kb_ext => code_kb_ext q_p <= q_presc(14 end behavioral; układu FPGA, ale w projekcie (będzie dostępny na CD EP4/2007B) zastosowano takie właśnie przypisania sygnałów. Implementacja p r e z e n t o w a n e - go projektu nie nadwyrężyła zasobów logicznych układu XC3S200, bowiem wraz z 15 bitowym preskalerem projekt zajął poniżej 1% dostępnych w nim zasobów. Opis w języku VHDL modułu obsługującego klawiaturę w konfiguracji pokazanej na rys. 2 znajduje się na list. 3. Kompletny projekt, wykorzystany do praktycznego testowania jest nieco bardziej skomplikowany, bowiem zawiera preskaler, który dzieli częstotliwość generatora kwarcowego 3,6864 MHz (taki jest standardowo instalowany na module Rys. 4. Sposób dołączenia klawiatury do płytki bazowej ZL9PLD 106 Elektronika Praktyczna 3/2007

23 ZL10PLD) do wartości ok. 112 Hz ( : 2 15 ). Preskaler także opisano w VHDL, a obydwa moduły połączono w całość za pomocą opisu pokazanego na list. 4. W celach diagnostycznych, poza niezbędnymi sygnałami wynikającymi ze schematu pokazanego na rys. 1, w projekcie dodano wejście asynchronicznego zerowania res oraz wyjście sygnału zegarowego (wyjście preskalera), oznaczone jako q_p. Wyjścia rejestru latch, w którym jest zatrzaskiwany numer (z wyjścia pamięci ROM) wciśniętego klawisza, dołączono do diod LED (rys. 5). Diody LED monitorują także sygnał taktujący moduł obsługi klawiatury oraz sygnał zgłoszenia przerwania INT. Uważni Czytelnicy, zwrócą zapewne uwagę na niezbyt czytelny na pierwszy rzut oka spoóśb taktowania rejestru wyjściowego latch. Ponieważ rejestr jest co jest najbardziej logiczne taktowany sygnałem INT, najprostszym sposobem opisania źródła sygnału taktującego byłoby:.elsif (int event and int = 0 ) then. natomiast na list. 3 widać: Rys. 5. Funkcje LED na płytce ZL9PLD po zaimplementowaniu projektu opisanego w artykule Zastosowano bowiem synchroni- zację sygnałem zegarowym clk, który zapobiega asynchronizacji sygnału INT, wytwarzanego w układzie kombinacyjnym, co wynika z opisu: with kb_cnt(1 downto 0) select int <= row(3) when 11, row(2) when 10, row(1) when 01, row(0) when others; elsif (clk event and clk = 1 and int = 0 ) then Taki sposób synchronizacji ma szczególny sens w przypadkach, kiedy układ FPGA pracuje na skraju swoich możliwości czasowych (czyli z całą pewnością nie w tym projekcie). Ta drobna komplikacja ma na celu pokazanie Czytelnikom poprawnego stylu opisu, przy czym obydwie przedstawione wersje będą działały, przy tak niskiej częstotliwości taktowania, prawidłowo. Na rys. 6 i rys. 7 pokazano przykładowe przebiegi na wyjściach układu FPGA po zaimplementowaniu w nim projektu. Rys. 6. Sygnał INT (na dole) pojawia się z opóźnieniem, zależnym od chwili naciśnięcia przycisku (na górze linia col3) Rys. 7. Przykładowe zależności czasowe pomiędzy sygnałem INT (na górze) i odpowiedzią na wyjściu rejestru latch Podsumowanie Przedstawiony w artykule projekt jak większość przygotowanych w językach HDL jest podatny na różne modyfikacje. Jak wspomniano wcześniej, m o ż n a z m o d y fi - kować zawartość transkodującej pamięci ROM, sposób adresowania styków klawiatury czy przypisanie sygnałów do wyprowadzeń układu FPGA, można także dodać sygnalizację akustyczną wciśnięcia przycisku (brzęczyk piezoelektryczny znajduje się na płytce ZL9PLD). Wszystkich Czytelników, którzy podejmą samodzielne próby modyfikacji udostępnionego projektu lub przygotują własne zapraszamy do podzielenia się z nami swoimi opracowaniami. Jacek Majewski jacek.majewski@pwr.wroc.pl Piotr Zbysiński, EP piotr.zbysinski@ep.com.pl Kompletny projekt dla WebPacka 8.2i wraz z plikami źródłowymi opublikujemy na CD EP4/2007B. Serdecznie zapraszamy naszych Czytelników do odwiedzenia naszego stoiska E6 na targach Automaticon 2007 w warszawskim Centrum EXPO XXI znajdującym się przy ul. Prądzyńskiego 12/ 14 (Wola, wjazd ul. Bema od ul. Kasprzaka) w dniach marca w godz , piatek Wstęp wolny Elektronika Praktyczna 3/

24 Układy FPGA w przykładach, część 7 Projekty przykładowe W tym odcinku kursu pokażemy przykładowy projekt sterownika 4 cyfrowego, 7 segmentowego wyświetlacza LED. Jest to kolejny typowy element systemu cyfrowego, często wykorzystywany w praktycznych aplikacjach, w których często stanowi istotny element interfejsu użytkownika. K U R S Rys. 1. Schemat ilustrujący zasadę działania sterownika multipleksowego Idea multipleksowego sterowania wyświetlaczy jest stosunkowo stara, bowiem tego typu sposoby sterowania stosowano już w latach 60 ubiegłego wieku w systemach z wyświetlaczami Nixie. Podstawową zaletą takiego systemu sterowania wyświetlaczy jest minimalizacja liczby wyprowadzeń układu sterującego. Przykładowo, w przypadku pola 4 cyfrowego sterowanego w sposób standardowy, konieczne jest co najmniej 28 linii sterujących (4 cyfry x 7 segmentów). W prezentowanym przykładzie sterownika multipleksowego wystarczy 11 linii sterujących (7 do sterowania segmentami + 4 do sterowania elektrodami wspólnymi), a jeszcze lepsze są osiągane przy zespołach wyświetlaczy o większej liczbie cyfr. Ideę wyświetlania multipleksowego zilustrowano na rys. 1 (pokazany sposób sterowania jest charakterystyczny dla wyświetlaczy ze wspólną anodą). Jak widać, konieczne jest zsynchronizowanie włączania anod z podaniem odpowiedniej dla wyświetlanego znaku kombinacji stanów na katody diod podświetlających segmenty. Sekwencyjne zapalanie każdej cyfry z odpowiednio dużą częstotliwością (w przykładzie ok. 100 Hz) wywołuje wrażenie ciągłego świecenia wszystkich znaków. Rys. 2. Schemat blokowy projektu zaimplementowanego w FPGA Zapraszamy do współpracy! Wszystkich Czytelników interesujących się układami FPGA zachęcamy do prezentacji na łamach EP własnych rozwiązań. Odpowiemy także na wszelkie pytania związane z kursem, językiem VHDL i układami FPGA. Elektronika Praktyczna 4/

25 Konfigurowanie FPGA i programowanie konfiguratora Flash Przygotowywanie plików do konfiguracji układu FPGA i programowania konfiguratora Flash Z listów otrzymanych od Czytelników wynika, że wielu z nich ma spore problemy z prawidłowym skonfigurowaniem układu FPGA i zaprogramowaniem pamięci Flash spełniającej w zestawie ZL10PLD rolę konfiguratora. Pokażemy zatem krok po kroku jak sobie poradzić z podstawowymi problemami występującymi na tym etapie implementacji projektów, które w większości przypadków wynikają ze stosunkowo mało zrozumiałego (przynajmniej na początku pracy z FPGA) rozdzielenia programowania (konfiguratora Flash) od konfigurowania (układu FPGA). Krótko od podstaw Jak wspomnieliśmy w pierwszym odcinku kursu (EP10/2006), układy FPGA z rodziny Spartan 3 mają wewnętrzną pamięć konfiguracji typu SRAM, co wymaga każdorazowo po włączeniu zasilania układu odtworzenia jej zawartości z zewnętrznej pamięci nieulotnej (zazwyczaj, także w przypadku kursowego zestawu ZL10PLD jest to pamięć Flash). Konieczne jest więc zapewnienie możliwości: bezpośredniego modyfikowania zawartości pamięci konfiguracji FPGA (SRAM), programowania pamięci Flash po zainstalowaniu jej w systemie, skopiowania zawar tości pamięci Flash do SRAM (pamięci konfiguracji FPGA). Firma Xilinx w układach Spartan 3 problem rozwiązała w sposób pokazany poniższym rysunku pokazano sposób połączenia układu XC3S200 z pamięcią XCF01S, który automatycznie ustalił program impact obsługujący Sposób połączenia układu FPGA i konfiguratora Flash w zestawie ZL10PLD programator. Pozostaje do omówienia ostatni problem: skąd FPGA ma wiedzieć, z jakiego źródła zostaną przesłane dane konfiguracyjne? Otóż do tego celu służą w układzie FPGA specjalne wejścia M2 M0, które na płytce ZL10PLD połączono w taki sposób, że za pomocą jednego jumpera JP4 (rysunek poniżej) można wybrać jeden z dwóch trybów pracy: automatycznego (po włączeniu zasilania) kopiowania zawartości Flash do FPGA, oczekiwania na dane konfigurujące z JTAG a. Konfigurowanie układu FPGA Konfigurowanie układu FPGA za pomocą interfejsu JTAG jest zalecane przede wszystkim podczas prac projektowych, bowiem liczba konfiguracji (czyli wpisów do pamięci konfiguracji typu SRAM) nie jest niczym ograniczona (w przeciwieństwie do pamięci Flash, którą można kasować i programować skończoną, choć niemałą, liczbę razy). Do skonfigurowania układu FPGA jest konieczny plik o rozszerzeniu *.isc, który jest generowany przez proces Generate Programming File pakietu WebPack ISE. Ponieważ ustawienia domyślne nie powodują utworzenia takiego pliku, trzeba we właściwościach (Process Properties>General Options) procesu Generate Programming File uaktywnić opcję Create IEEE1532 Configuration File (jak na rysunku poniżej). W zakładce General Options okna Process Properties (dla procesu Generate Programming File) trzeba uaktywnić generację pliku *.isc, który posłuży nam do konfigurowania FPGA Automatycznie wykryta przez program impact konfiguracja łańcucha JTAG w zestawie ZL10PLD na poniższym rysunku: Konfigurator XCF01S jest wyposażony w dwa interfejsy umożliwiające wymianę danych z otoczeniem: 5 liniowy, służący do przesyłania przechowywanych do FPGA po włączeniu zasilania, JTAG, który służy do programowania pamięci Flash za pomocą zewnętrznego programatora. Także w układzie XC3S200 (FPGA z rodziny Spartan 3, zastosowany w module ZL10PLD) występuje interfejs umożliwiający współpracę z konfiguratorem oraz interfejs JTAG, za pomocą którego jest konfigurowana pamięć SRAM w FPGA. Interfejsy JTAG obydwu układów są połączone w szereg, tworząc tzw. łańcuch JTAG. Dzięki temu dostęp do tych układów jest możliwy za pomocą jednego programatora, dołączonego do pojedynczego złącza JTAG. Na Na fragmencie schematu płytki ZL10PLD zaznaczono na szaro dołączenie zworki JP4, która umożliwia wybranie sposobu konfiguracji FPGA. Pokazano także sposób dołączenia konfiguratora U2 do układu FPGA, przycisku S1 służącego do ręcznego wymuszania rekonfiguracji oraz diody świecącej D1, która służy do sygnalizacji poprawnego zakończenia konfiguracji FPGA Na zdjęciu poniżej pokazano lokalizację jumpera JP4 na płytce zestawu ZL10PLD wraz z opisami pozycji, w których konfiguracja FPGA odbywa się poprzez interfejs JTAG (JTAG) i automatycznie po włączeniu zasilania z konfiguratora (Flash). Zworka JP4 umożliwia wybór trybu konfiguracji FPGA (poprzez JTAG lub automatyczne odtworzenie konfiguracji z pamięci Flash) Żeby konfigurowany za pomocą interfejsu JTAG układ FPGA poprawnie rozpoczął swoją pracę (po zakończeniu konfigurowania), trzeba zmienić domyślne ustawienie w oknie Process Properties>Startup Options w polu FPGA Start up Clock (jak na rysunku poniżej) z CCLK na JTAG Clock. Zaniechanie tej czynności przed skompilowaniem projektu spowoduje występujące losowo zawieszanie się FPGA. >> W przypadku konfigurowania FPGA za pomocą interfejsu JTAG trzeba zmienić ustawienie FPGA Start up Lock na JTAG Clock, w przeciwnym przypadku układ może nie rozpocząć pracy po zakończeniu konfiguracji 98 Elektronika Praktyczna 4/2007

26 Programowanie konfiguratora (Flash) Jak już wielokrotnie wspominaliśmy, konfigurator (czyli pamięć Flash z interfejsem szeregowym i w przypadku układu XCF01S także JTAG) służy do przechowywania danych opisujących konfigurację FPGA. Do jego zaprogramowania niezbędny jest plik *.mcs, który trzeba ręcznie utworzyć za pomocą programu impact, wchodzącego w skład standardowej instalacji pakietu WebPack ISE. im- PACT musi być uruchomiony w trybie Prepare a PROM File (rysunek poniżej), kolejne kroki narzuca użytkownikowi kreator. Utworzenie pliku *.mcs umożliwia program impact, który należy uruchomić w trybie Prepare a PROM File Żeby zapewnić poprawny restart układu FPGA po jego skonfigurowaniu z pamięci Flash, ustawienie FPGA Start up Lock musi być CCLK. Jeżeli ostatnia kompilacja została przeprowadzona z innym ustawieniem, program im- PACT zauważy błąd użytkownika, ostrzeże go (rysunek poniżej) i samoczynnie zmieni fragment pliku *.mcs w taki sposób, żeby układ FPGA po skonfigurowaniu działał poprawnie. Realizacja Schemat blokowy proponowanego rozwiązania pokazano na rys. 2. Jest to typowe rozwiązanie sterownika multipleksowego, w którym rozdzielono (opisano w osobnych plikach *.vhd) dekodery wyjściowe (cyfr i segmentów) od sterownika, w którym zintegrowano (rys. 3): 16 bitowy rejestr latch, który służy do przechowywania kodów 4 liczb BCD wyświetlanych na wyświetlaczu, 2 bitowy licznik numeru wyświetlanej cyfry, multiplekser 16 >4, który podaje na zewnętrzny dekoder (sterujący segmentami wyświetlaczy) 4 bitowe słowo odpowiadające wyświetlanej pozycji. Tak więc, budowa prezentowanego sterownika jest bardzo podobna do klasycznych realizacji, wykonywanych na układach TTL/ CMOS. Wykorzystanie opisu HDL zwiększa elastyczność projektu, bowiem jakiekolwiek jego modyfikacje (zmiana polaryzacji wyświetlaczy z WA na WK, zmiana liczby obsługiwanych wyświetlaczy, zmiana kształtów wyświetlanych znaków 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 CLB IOB Globalne sygnały zegarowe DCM Sprzętowe multiplikatory Pamięć BlockRAM 3. Projekty przykładowe Debouncer Klawiatura matrycowa Obsługa wyświetlacza multipleksowego LED Obsługa wyświetlacza LCD Sterownik LCD 2x16 (prosty) Sterownik LCD 2x16 (zaawansowany) Komunikacja via RS232 i USB Sterownik VGA Implementacja mikrokontrolera PicoBlaze Ostrzeżenie o nieprawidłowo wybranym źródle sygnału zegarowego inicjującego start FPGA po konfiguracji Okno programu impact po wygenerowaniu pliku *.mcs służącego do programowania pamięci Flash konfiguratora Rys. 3. Funkcje spełniane przez fragmenty opisu w pliku sterownik.vhd Elektronika Praktyczna 4/

27 Rys. 4. Sposób dołączenia wyświetlacza do układu FPGA Zastosowany w projekcie wyświetlacz LED (TOF 5462DB B) jest przystosowany do pracy w systemach ze sterowaniem multipleksowym, niezbędne połączenia segmentów są wykonane w jego wnętrzu. Na rysunku poniżej pokazano schemat połączeń wewnętrznych. Dodatkowe informacje: com.pl/o_produkcie.php?id=656?, dystrybutor oferuje wersje świecące na różne kolory. itp.) wiąże się z wprowadzeniem niewielkich modyfikacji w opisie (przykład pokażemy w dalszej części artykułu). Możliwe jest także przygotowanie uniwersalnego opisu z parametryzacją, co jeśli Czytelnicy wykażą zainteresowanie tematem pokażemy w jednym z kolejnych odcinków kursu. W przykładowym projekcie wykorzystano bardzo wygodny w praktyce wyświetlacz TOF 5462DB B, który jest przystosowany do sterowania multipleksowego, bowiem segmenty poszczególnych znaków są ze sobą wewnętrznie połączone. Zastosowano wyświetlacz świecący na kolor niebieski, bowiem pozwoliło to uniknąć konieczności stosowania rezystorów ograniczających prąd segmentów. Wynika to z faktu, że napięcie progowe struktur świecących na niebiesko wynosi ok. 3 3,2 V, co przy zasilaniu segmentów napięciem ok. 3,3 V zapewnia przepływ prądu o natężeniu nie przekraczającym (w egzemplarzu modelowym) 3,5 ma. Elektrody wyświetlaczy (anody i katody) są sterowane bezpośrednio z wyjść FPGA (bez jakichko l w i e k b u f o r ó w, rys. 4), co upraszcza budowę urządzenia i minimalizuje liczbę niezbędnych elementów. Implementacja Projekt zaimplementowany w testowym zestawie, poza sterownikiem wyświetlaczy, zawiera także 4 dekadowy licznik BCD (zliczający impulsy z wyjścia preskalera, jego stany wyjściowe podglądamy na wyświetlaczach) oraz 20 bitowy preskaler (w projekcie wykorzystano 18 bitów), który służy do wytworzenia sygnałów zegarowych dla zespołu liczników i sterownika wyświetlacza. Strukturę projektu (w plikach) pokazano na rys. 5. Widoczny na tym rysunku plik projekt7.ucf zawiera przypisania sygnałów do fizycznych wyprowadzeń układu FPGA. Podsumowanie Wielokrotnie podkreślana duża elastyczność opisów HDL dotyczy także tego projektu. Na list. 1 pokazano modyfikację dekodera 7 segmentowego, który w wersji pokazanej po lewej stronie wyświetla znaki wyłącznie z zakresu 0 9 (dla wartości wyświetlacz jest wygaszony), po prawej stronie pokazano zmodyfikowana wersję wyświetlającą także znaki A...F (w formie możliwej na wyświetlaczu 7 segmentowym). Inną możliwą modyfikacją jest dostosowanie sterownika do współpracy z wyświetlaczami ze wspólną katodą, co wymaga zanegowania wyjść dekodera znaków i segmentów, np. (odnosi się do pliku dek_znaku. vhd) opis: List. 1. Modyfikacja dekodera sterującego wyświetlacz LED (ze wspólną anodą): po lewej stronie pokazano opis dekodera znaków 0 9, po prawej 0 F LEWA STRONA with bcd select g f e d c b a segm <= when 0000, when 0001, when 0010, when 0011, when 0100, when 0101, when 0110, when 0111, when 1000, when 1001, when others; wygaszenie PRAWA STRONA with bcd select g f e d c b a segm <= when 0000, when 0001, when 0010, when 0011, when 0100, when 0101, when 0110, when 0111, when 1000, when 1001, when 1001, 10 A when 1001, 11 B when 1001, 12 C when 1001, 13 D when 1001, 14 E when 1001, 15 F when others; wygaszenie with nr_znaku select dig <= 0001 when 00, cyfra 0 (jedn.) można zastąpić opisem: with nr_znaku select dig <= 1110 when 00, cyfra 0 (jedn.) można także zanegować stany wyjściowe za pomocą operacji not. Podobnych modyfikacji można wykonać wiele: jeżeli któryś z Czytelników chciałby pochwalić się własnymi rozwiązaniami zapraszamy! Jacek Majewski jacek.majewski@pwr.wroc.pl Piotr Zbysiński, EP piotr.zbysinski@ep.com.pl Rys. 5. Budowa prezentowanego projektu z podziałem na pliki z opisami VHDL 100 Elektronika Praktyczna 4/2007

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

Układy FPGA w przykładach, część 2 Układy FPGA w przykładach, część 2 W drugiej części artykułu zajmiemy się omówieniem wyposażenia (po mikrokontrolerowemu : peryferiów) układów FPGA z rodziny Spartan 3, co ułatwi ich wykorzystywanie w

Bardziej szczegółowo

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

Układy FPGA w przykładach, część 1 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

Bardziej szczegółowo

ZL10PLD. Moduł dippld z układem XC3S200

ZL10PLD. Moduł dippld z układem XC3S200 ZL10PLD Moduł dippld z układem XC3S200 Moduły dippld opracowano z myślą o ułatwieniu powszechnego stosowania układów FPGA z rodziny Spartan 3 przez konstruktorów, którzy nie mogą lub nie chcą inwestować

Bardziej szczegółowo

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

ZL6PLD zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx ZL6PLD Zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx 1 ZL6PLD jest zestawem uruchomieniowym dla układów FPGA z rodziny Spartan 3 firmy Xilinx. Oprócz układu PLD o dużych zasobach

Bardziej szczegółowo

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35 LABORATORIUM TECHNIKA CYFROWA Pamięci Rev.1.35 1. Cel ćwiczenia Praktyczna weryfikacja wiedzy teoretycznej z projektowania modułów sterowania oraz kontroli pamięci 2. Kolokwium Kolokwium wstępne sprawdzające

Bardziej szczegółowo

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych Programowanie Układów Logicznych kod kursu: ETD623 Pamięć w układach programowalnych W6 6.4.26 dr inż. Daniel Kopiec Plan wykładu Pamięć w układach programowalnych Zasada działania, podział pamięci Miara

Bardziej szczegółowo

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydział Elektroniki Mikrosystemów i Fotoniki Politechnika Wrocławska Prowadzący: dr inż. Daniel Kopiec email: daniel.kopiec@pwr.edu.pl Konfiguracja układu DCM Digital

Bardziej szczegółowo

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19 LITEcomp Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19 Moduł LITEcomp to miniaturowy komputer wykonany na bazie mikrokontrolera z rodziny ST7FLITE1x. Wyposażono go w podstawowe peryferia, dzięki

Bardziej szczegółowo

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

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S] ZL25ARM Płyta bazowa dla modułów diparm z mikrokontrolerami STR912 [rdzeń ARM966E-S] ZL25ARM to płyta bazowa umożliwiająca wykonywanie różnorodnych eksperymentów z mikrokontrolerami STR912 (ARM966E-S).

Bardziej szczegółowo

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

ZL8AVR. Płyta bazowa dla modułów dipavr ZL8AVR Płyta bazowa dla modułów dipavr Zestaw ZL8AVR to płyta bazowa dla modułów dipavr (np. ZL7AVR z mikrokontrolerem ATmega128 lub ZL12AVR z mikrokontrolerem ATmega16. Wyposażono ją w wiele klasycznych

Bardziej szczegółowo

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 STM32Butterfly2 Zestaw STM32Butterfly2 jest platformą sprzętową pozwalającą poznać i przetestować możliwości mikrokontrolerów z rodziny STM32 Connectivity

Bardziej szczegółowo

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

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x ZL9ARM Płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x 1 ZL9ARM to uniwersalna płyta bazowa dla modułów diparm

Bardziej szczegółowo

Układy reprogramowalne i SoC Implementacja w układach FPGA

Układy reprogramowalne i SoC Implementacja w układach FPGA Układy reprogramowalne i SoC Implementacja w układach FPGA Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez

Bardziej szczegółowo

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

Układy reprogramowalne i SoC Specjalizowane moduły FPGA Specjalizowane moduły FPGA Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój

Bardziej szczegółowo

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

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019) ZL9AVR Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019) ZL9AVR to płyta bazowa umożliwiająca wykonywanie różnorodnych eksperymentów związanych z zastosowaniem mikrokontrolerów AVR w aplikacjach

Bardziej szczegółowo

Technika Mikroprocesorowa

Technika Mikroprocesorowa Technika Mikroprocesorowa Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel. 631 2648 dmakow@dmcs.pl http://neo.dmcs.p.lodz.pl/tm 1 System mikroprocesorowy? (1) Magistrala adresowa

Bardziej szczegółowo

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) ZL4PIC Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC 1 Zestaw jest przeznaczony dla elektroników zajmujących się aplikacjami

Bardziej szczegółowo

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec Programowanie Układów Logicznych kod kursu: ETD6203 Analiza układów sekwencyjnych W3 7.03.2018 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec Zmiany w terminach Plan wykładu 1 2 3 4 5 6 Ciekawostki

Bardziej szczegółowo

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 STM32 Butterfly Zestaw STM32 Butterfly jest platformą sprzętową pozwalającą poznać i przetestować możliwości mikrokontrolerów z rodziny STM32 Connectivity

Bardziej szczegółowo

Programowalne Układy Cyfrowe Laboratorium

Programowalne Układy Cyfrowe Laboratorium Zdjęcie opracowanej na potrzeby prowadzenia laboratorium płytki przedstawiono na Rys.1. i oznaczono na nim najważniejsze elementy: 1) Zasilacz i programator. 2) Układ logiki programowalnej firmy XILINX

Bardziej szczegółowo

Opis przedmiotu zamówienia CZĘŚĆ 1

Opis przedmiotu zamówienia CZĘŚĆ 1 Opis przedmiotu zamówienia CZĘŚĆ 1 Stanowiska do badań algorytmów sterowania interfejsów energoelektronicznych zasobników energii bazujących na układach programowalnych FPGA. Stanowiska laboratoryjne mają

Bardziej szczegółowo

Kierunek Inżynieria Akustyczna, V rok Programowalne Układy Cyfrowe. Platforma sprzętowa. Rajda & Kasperek 2014 Katedra Elektroniki AGH 1

Kierunek Inżynieria Akustyczna, V rok Programowalne Układy Cyfrowe. Platforma sprzętowa. Rajda & Kasperek 2014 Katedra Elektroniki AGH 1 Kierunek Inżynieria Akustyczna, V rok Programowalne Układy Cyfrowe Platforma sprzętowa Rajda & Kasperek 2014 Katedra Elektroniki AGH 1 Program wykładu Architektura układów FPGA Rodzina Xilinx Spartan-6

Bardziej szczegółowo

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

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy: LITEcompLPC1114 Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Bezpłatny zestaw dla Czytelników książki Mikrokontrolery LPC1100. Pierwsze kroki LITEcompLPC1114 jest doskonałą platformą mikrokontrolerową

Bardziej szczegółowo

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) ZL4PIC Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC 1 Zestaw jest przeznaczony dla elektroników zajmujących się aplikacjami

Bardziej szczegółowo

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA 01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 05 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2

Bardziej szczegółowo

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

ZL11ARM. Uniwersalna płytka bazowa dla modułów diparm ZL11ARM Uniwersalna płytka bazowa dla modułów diparm ZL11ARM to uniwersalna płyta bazowa dla modułów diparm (np. ZL12ARM i ZL19ARM) z mikrokontrolerami wyposażonymi w rdzenie ARM produkowanymi przez różnych

Bardziej szczegółowo

Temat: Pamięci. Programowalne struktury logiczne.

Temat: Pamięci. Programowalne struktury logiczne. Temat: Pamięci. Programowalne struktury logiczne. 1. Pamięci są układami służącymi do przechowywania informacji w postaci ciągu słów bitowych. Wykonuje się jako układy o bardzo dużym stopniu scalenia w

Bardziej szczegółowo

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

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych Politechnika Śląska w Gliwicach Wydział Automatyki Elektroniki i Informatyki Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych Promotor dr inż. Jacek Loska Wojciech Klimeczko

Bardziej szczegółowo

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) 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 1 ZL4PIC Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC Zestaw jest przeznaczony dla elektroników zajmujących się aplikacjami mikrokontrolerów PIC. Jest on przystosowany do współpracy z mikrokontrolerami

Bardziej szczegółowo

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA 01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 03 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2

Bardziej szczegółowo

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

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM. ZL3ARM płytka bazowa dla modułu diparm_2106 (ZL4ARM) ZL3ARM Płytka bazowa dla modułu diparm_2106 Płytkę bazową ZL3ARM opracowano z myślą o elektronikach chcących szybko poznać mozliwości mikrokontrolerów

Bardziej szczegółowo

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

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S) ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S) ZL2ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S) 1 Zestaw ZL2ARM opracowano z myślą

Bardziej szczegółowo

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 ZL29ARM Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 Zestaw ZL29ARM jest platformą sprzętową pozwalającą poznać i przetestować możliwości mikrokontrolerów z rodziny STM32 Connectivity Line (STM32F107).

Bardziej szczegółowo

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie: Zaliczenie Termin zaliczenia: 14.06.2007 Sala IE 415 Termin poprawkowy: >18.06.2007 (informacja na stronie: http://neo.dmcs.p.lodz.pl/tm/index.html) 1 Współpraca procesora z urządzeniami peryferyjnymi

Bardziej szczegółowo

Opis przedmiotu zamówienia

Opis przedmiotu zamówienia Opis przedmiotu zamówienia Stanowiska do badań algorytmów sterowania interfejsów energoelektronicznych zasobników energii bazujących na układach programowalnych FPGA. Stanowiska laboratoryjne mają służyć

Bardziej szczegółowo

2. Architektura mikrokontrolerów PIC16F8x... 13

2. Architektura mikrokontrolerów PIC16F8x... 13 Spis treści 3 Spis treœci 1. Informacje wstępne... 9 2. Architektura mikrokontrolerów PIC16F8x... 13 2.1. Budowa wewnętrzna mikrokontrolerów PIC16F8x... 14 2.2. Napięcie zasilania... 17 2.3. Generator

Bardziej szczegółowo

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

ZL11PRG v.2. Uniwersalny programator ISP. Odpowiednik: Byte Blaster II DLC5 Programmer AT89ISP STK-200 Lattice ISP ARM Wiggler ZL11PRG v.2 Uniwersalny programator ISP Odpowiednik: Byte Blaster II DLC5 Programmer AT89ISP STK-200 Lattice ISP ARM Wiggler Nowoczesna konstrukcja czyni z programatora ZL11PRG v.2 urządzenie niezwykle

Bardziej szczegółowo

XC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type

XC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type Układy Cyfrowe i Systemy Wbudowane 2 XC4000: LUT jako ROM Układy FPGA cz. 2 dr inż. Jarosław Sugier Jaroslaw.Sugier@pwr.edu.pl W-4/K-9, pok. 227 C-3 FPGA(2) - 1 FPGA(2) - 2 ROM32X1 VHDL inference example

Bardziej szczegółowo

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

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S) ZL2ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S) 1 Zestaw ZL2ARM opracowano z myślą o elektronikach chcących szybko zaznajomić się z mikrokontrolerami z rdzeniem ARM7TDMI-S.

Bardziej szczegółowo

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

MAXimator. Zestaw startowy z układem FPGA z rodziny MAX10 (Altera) Partnerzy technologiczni projektu: Zestaw startowy z układem FPGA z rodziny MAX10 (Altera) MAXimator Zestaw startowy z nowoczesnym układem FPGA z rodziny Altera MAX10, wyposażony w złącze zgodne z Arduino Uno Rev 3, interfejsy wideo HDMI+CEC+DCC

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA Instrukcja pomocnicza do laboratorium z przedmiotu Programowalne Struktury

Bardziej szczegółowo

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR ZL10AVR Zestaw ZL10AVR umożliwia wszechstronne przetestowanie aplikacji wykonanych z wykorzystaniem mikrokontrolerów z rodziny AVR (ATtiny, ATmega,

Bardziej szczegółowo

Wstęp...9. 1. Architektura... 13

Wstęp...9. 1. Architektura... 13 Spis treści 3 Wstęp...9 1. Architektura... 13 1.1. Schemat blokowy...14 1.2. Pamięć programu...15 1.3. Cykl maszynowy...16 1.4. Licznik rozkazów...17 1.5. Stos...18 1.6. Modyfikowanie i odtwarzanie zawartości

Bardziej szczegółowo

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

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy. SigmaDSP jest niedrogim zestawem uruchomieniowym dla procesora DSP ADAU1701 z rodziny SigmaDSP firmy Analog Devices, który wraz z programatorem USBi i darmowym środowiskiem

Bardziej szczegółowo

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA 01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 04 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2

Bardziej szczegółowo

Siła (w) pamięci on-chip Implementacje pamięci w układach Cyclone IV firmy Altera

Siła (w) pamięci on-chip Implementacje pamięci w układach Cyclone IV firmy Altera PODZESPOŁY Siła (w) pamięci on-chip Implementacje pamięci w układach Cyclone IV firmy Altera Dodatkowe materiały na CD i FTP Jedną ze sztandarowych cech współczesnych układów FPGA jest możliwość implementacji

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 7 (2h) Obsługa urządzenia peryferyjnego z użyciem pamięci w VHDL. Instrukcja do zajęć laboratoryjnych z przedmiotu

Bardziej szczegółowo

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP ZL32ARM ZL32ARM z mikrokontrolerem LPC1114 (rdzeń Cotrex-M0) dzięki wbudowanemu programatorowi jest kompletnym zestawem uruchomieniowym.

Bardziej szczegółowo

SML3 październik

SML3 październik SML3 październik 2005 16 06x_EIA232_4 Opis ogólny Moduł zawiera transceiver EIA232 typu MAX242, MAX232 lub podobny, umożliwiający użycie linii RxD, TxD, RTS i CTS interfejsu EIA232 poprzez złącze typu

Bardziej szczegółowo

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC ZL28ARM Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC Zestaw ZL28ARM jest uniwersalnym zestawem uruchomieniowym dla mikrokontrolerów AT91SAM7XC. Dzięki wyposażeniu w szeroką gamę układów peryferyjnych

Bardziej szczegółowo

Projektowanie z użyciem bloków funkcjonalnych w układach programowalnych firmy Xilinx

Projektowanie z użyciem bloków funkcjonalnych w układach programowalnych firmy Xilinx Projektowanie z użyciem bloków funkcjonalnych w układach programowalnych firmy Xilinx CEL ĆWICZENIA Celem ćwiczenia jest utrwalenie wiedzy dotyczącej budowy, działania i własności programowalnych układów

Bardziej szczegółowo

Projektowanie układów FPGA. Żródło*6+.

Projektowanie układów FPGA. Żródło*6+. Projektowanie układów FPGA Żródło*6+. Programowalne układy logiczne W elektronice cyfrowej funkcjonują dwa trendy rozwoju: Specjalizowane układy scalone ASIC (ang. Application Specific Integrated Circuits)

Bardziej szczegółowo

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

ZL1MSP430 Zestaw startowy dla mikrokontrolerów MSP430F11xx/11xxA ZL1MSP430 ZL1MSP430 Zestaw startowy dla mikrokontrolerów MSP430F11xx/11xxA ZL1MSP430 Zestaw startowy dla mikrokontrolerów MSP430F11xx/11xxA Mikrokontrolery z rodziny MSP430 słyną z niewielkiego poboru mocy i możliwości

Bardziej szczegółowo

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

NXP ma nowe ARM-y. BlueStreak: co i jak NXP ma nowe ARM-y No właśnie: bo trudno powiedzieć, wprowadza na rynek. Firma NXP odkupiła bowiem obydwie linie mikrokontrolerów (ARM7 i ARM9) od firmy Sharp Electronics, tak więc popularne w niektórych

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL Instrukcja pomocnicza do laboratorium z przedmiotu Synteza układów

Bardziej szczegółowo

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103 ZL27ARM Zestaw uruchomieniowy dla mikrokontrolerów STM32F103 Zestaw ZL27ARM jest uniwersalnym zestawem uruchomieniowym dla mikrokontrolerów STM32F103. Dzięki wyposażeniu w szeroką gamę zaawansowanych układów

Bardziej szczegółowo

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec Programowanie Układów Logicznych kod kursu: ETD623 Pamięć w układach programowalnych W6 4.4.28 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec Plan wykładu Powtórka wiadomości Pamięć w układach

Bardziej szczegółowo

Programowanie Mikrokontrolerów

Programowanie Mikrokontrolerów Programowanie Mikrokontrolerów Wyświetlacz alfanumeryczny oparty na sterowniku Hitachi HD44780. mgr inż. Paweł Poryzała Zakład Elektroniki Medycznej Alfanumeryczny wyświetlacz LCD Wyświetlacz LCD zagadnienia:

Bardziej szczegółowo

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

ISP ADAPTER. Instrukcja obsługi rev.1.1. Copyright 2009 SIBIT Instrukcja obsługi rev.1.1 Spis treści 1.Wprowadzenie... 3 2. Rozmieszczenie elementów...4 3. Opis wyprowadzeń złącza ISP...6 4. Zasilanie adaptera...7 5. Wybór źródła taktowania...8 6. Wybór programowanego

Bardziej szczegółowo

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8 ZL2AVR Zestaw uruchomieniowy z mikrokontrolerem ATmega8 ZL2AVR jest uniwersalnym zestawem uruchomieniowym dla mikrokontrolerów ATmega8 (oraz innych w obudowie 28-wyprowadzeniowej). Dzięki wyposażeniu w

Bardziej szczegółowo

Programowalne układy logiczne

Programowalne układy logiczne Programowalne układy logiczne Worek różności jak dobrać się do gotowców w Spartanach? Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 12 kwietnia 2011 Spis treści Wbudowane

Bardziej szczegółowo

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe www.evboards.eu

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe www.evboards.eu AVREVB1 Zestaw uruchomieniowy dla mikrokontrolerów AVR. 1 Zestaw AVREVB1 umożliwia szybkie zapoznanie się z bardzo popularną rodziną mikrokontrolerów AVR w obudowach 40-to wyprowadzeniowych DIP (układy

Bardziej szczegółowo

dokument DOK 02-05-12 wersja 1.0 www.arskam.com

dokument DOK 02-05-12 wersja 1.0 www.arskam.com ARS3-RA v.1.0 mikro kod sterownika 8 Linii I/O ze zdalną transmisją kanałem radiowym lub poprzez port UART. Kod przeznaczony dla sprzętu opartego o projekt referencyjny DOK 01-05-12. Opis programowania

Bardziej szczegółowo

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

ADuCino 360. Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361 Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361 ADuCino 360 Zestaw ADuCino jest tanim zestawem uruchomieniowym dla mikrokontrolerów ADuCM360 i ADuCM361 firmy Analog Devices mechanicznie kompatybilnym

Bardziej szczegółowo

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1. Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1 PAMIĘCI SZEREGOWE EEPROM Ćwiczenie 3 Opracował: dr inŝ.

Bardziej szczegółowo

ZL11AVR. Zestaw uruchomieniowy z mikrokontrolerem ATtiny2313

ZL11AVR. Zestaw uruchomieniowy z mikrokontrolerem ATtiny2313 ZL11AVR Zestaw uruchomieniowy z mikrokontrolerem ATtiny2313 Zestaw przeznaczony do budowania prostych aplikacji z mikrokontrolerem ATtiny2313 (w podstawkę można również zamontować AT90S1200 lub AT90S2313).

Bardziej szczegółowo

To nie huragan, to Cyclone II!

To nie huragan, to Cyclone II! To nie huragan, to Cyclone II! Współczesne układy FPGA oferują konstruktorom zasoby z jakich korzystać jeszcze kilka lat temu mogli tylko nieliczni. Sytuację współczesnych konstruktorów dodatkowo upraszczają

Bardziej szczegółowo

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński 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:...

Bardziej szczegółowo

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

ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x. Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC213x ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x (rdzeń ARM7TMDI-S) Kompatybilny z zestawem MCB2130 firmy Keil! Zestaw ZL6ARM opracowano z myślą o elektronikach chcących szybko zaznajomić się

Bardziej szczegółowo

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

Altera MAX10: nowa generacja FPGA i jej nowe możliwości Altera MAX10: nowa generacja FPGA i jej nowe możliwości Altera od początku swojego istnienia jest liderem na rynku układów programowalnych. W ostatnich latach oferta firmy ewoluowała w stronę zaawansowanych

Bardziej szczegółowo

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

ZL19PRG. Programator USB dla układów PLD firmy Altera ZL19PRG Programator USB dla układów PLD firmy Altera Nowoczesny programator i konfigurator układów PLD produkowanych przez firmę Altera, w pełni zgodny ze standardem USB Blaster, dzięki czemu współpracuje

Bardziej szczegółowo

System on Chip na miarę S P R Z Ę T

System on Chip na miarę S P R Z Ę T µpsd3400 8052 na miarę System on Chip Mikrokontrolery z rodziny µpsd3000, produkowane przez STMicroelectronics, otwierają przed konstruktorami szansę spotkania się oko w oko z nowoczesną techniką projektowania,

Bardziej szczegółowo

Projekt prostego procesora

Projekt prostego procesora Projekt prostego procesora Opracowany przez Rafała Walkowiaka dla zajęć z PTC 2012/2013 w oparciu o Laboratory Exercise 9 Altera Corporation Rysunek 1 przedstawia schemat układu cyfrowego stanowiącego

Bardziej szczegółowo

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0) AVR DRAGON INSTRUKCJA OBSŁUGI (wersja 1.0) ROZDZIAŁ 1. WSTĘP... 3 ROZDZIAŁ 2. ROZPOCZĘCIE PRACY Z AVR DRAGON... 5 ROZDZIAŁ 3. PROGRAMOWANIE... 8 ROZDZIAŁ 4. DEBUGOWANIE... 10 ROZDZIAŁ 5. SCHEMATY PODŁĄCZEŃ

Bardziej szczegółowo

Podział układów cyfrowych. rkijanka

Podział układów cyfrowych. rkijanka Podział układów cyfrowych rkijanka W zależności od przyjętego kryterium możemy wyróżnić kilka sposobów podziału układów cyfrowych. Poniżej podam dwa z nich związane ze sposobem funkcjonowania układów cyfrowych

Bardziej szczegółowo

Mikrokontrolery AVR techniczne aspekty programowania

Mikrokontrolery AVR techniczne aspekty programowania Andrzej Pawluczuk Mikrokontrolery AVR techniczne aspekty programowania Białystok, 2004 Mikrokontrolery rodziny AVR integrują w swojej strukturze między innymi nieulotną pamięć przeznaczoną na program (pamięć

Bardziej szczegółowo

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File 1. ISE WebPack i VHDL Celem ćwiczenia jest szybkie zaznajomienie się ze środowiskiem projektowym Xilinx ISE Design Suite 10.1 oraz językiem opisu sprzętu VHDL. Tworzenie projektu Uruchom program Project

Bardziej szczegółowo

PROGRAMOWALNE STEROWNIKI LOGICZNE

PROGRAMOWALNE STEROWNIKI LOGICZNE PROGRAMOWALNE STEROWNIKI LOGICZNE I. Wprowadzenie Klasyczna synteza kombinacyjnych i sekwencyjnych układów sterowania stosowana do automatyzacji dyskretnych procesów produkcyjnych polega na zaprojektowaniu

Bardziej szczegółowo

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

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1 Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32 Instrukcja Obsługi SKN Chip Kacper Cyrocki Page 1 Spis treści Wstęp... 3 Wyposażenie płytki... 4 Zasilanie... 5 Programator... 6 Diody LED...

Bardziej szczegółowo

Systemy uruchomieniowe

Systemy uruchomieniowe Systemy uruchomieniowe Przemysław ZAKRZEWSKI Systemy uruchomieniowe (1) 1 Środki wspomagające uruchamianie systemów mikroprocesorowych Symulator mikroprocesora Analizator stanów logicznych Systemy uruchomieniowe:

Bardziej szczegółowo

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami Warsztaty Koła Naukowego SMART dr inż. Grzegorz Bazydło G.Bazydlo@iee.uz.zgora.pl, staff.uz.zgora.pl/gbazydlo Lista zadań nr 1 Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania

Bardziej szczegółowo

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD Wymagania: V, GND Zasilanie LED podswietlenia (opcjonalne) Regulacja kontrastu (potencjometr) Enable Register Select R/W (LOW) bity szyny danych Systemy Wbudowane Arduino - rozszerzanie mgr inż. Marek

Bardziej szczegółowo

Elementy cyfrowe i układy logiczne

Elementy cyfrowe i układy logiczne Elementy cyfrowe i układy logiczne Wykład 5 Legenda Procedura projektowania Podział układów VLSI 2 1 Procedura projektowania Specyfikacja Napisz, jeśli jeszcze nie istnieje, specyfikację układu. Opracowanie

Bardziej szczegółowo

Programowalne układy logiczne Wydziałowy Zakład Nanometrologii SEMESTR LETNI

Programowalne układy logiczne Wydziałowy Zakład Nanometrologii SEMESTR LETNI Programowalne układy logiczne Wydziałowy Zakład Nanometrologii SEMESTR LETNI Pierwszy projekt w środowisku ISE Design Suite Xilinx 1. Zapoznanie ze środowiskiem Xilinx ISE Design oraz językiem opisu sprzętu

Bardziej szczegółowo

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32 ZL15AVR Zestaw uruchomieniowy dla mikrokontrolerów ATmega32 ZL15AVR jest uniwersalnym zestawem uruchomieniowym dla mikrokontrolerów ATmega32 (oraz innych w obudowie 40-wyprowadzeniowej). Dzięki wyposażeniu

Bardziej szczegółowo

Układy reprogramowalne i SoC Język VHDL (część 4)

Układy reprogramowalne i SoC Język VHDL (część 4) Język VHDL (część 4) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki

Bardziej szczegółowo

E-TRONIX Sterownik Uniwersalny SU 1.2

E-TRONIX Sterownik Uniwersalny SU 1.2 Obudowa. Obudowa umożliwia montaż sterownika na szynie DIN. Na panelu sterownika znajduje się wyświetlacz LCD 16x2, sygnalizacja LED stanu wejść cyfrowych (LED IN) i wyjść logicznych (LED OUT) oraz klawiatura

Bardziej szczegółowo

Cyfrowe układy scalone

Cyfrowe układy scalone Cyfrowe układy scalone Ryszard J. Barczyński, 2012 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Publikacja współfinansowana ze środków

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 10 (3h) Implementacja interfejsu SPI w strukturze programowalnej Instrukcja pomocnicza do laboratorium z przedmiotu

Bardziej szczegółowo

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Ćwiczenie 1 VHDL - Licznik 4-bitowy. Ćwiczenie 1 VHDL - Licznik 4-bitowy. Zadaniem studenta jest zaprojektowanie w układzie CoolRunner2 układu, który dzieli częstotliwość zegara wejściowego generując sygnał taktowania licznika 4-bitowego,

Bardziej szczegółowo

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH SPRAWOZDANIE Temat: Projekt notesu elektronicznego w języku VHDL przy użyciu układów firmy

Bardziej szczegółowo

Cyfrowe układy scalone

Cyfrowe układy scalone Cyfrowe układy scalone Ryszard J. Barczyński, 2010 2015 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Cyfrowe układy scalone Układy cyfrowe

Bardziej szczegółowo

Uniwersalny zestaw uruchomieniowy ZL4PIC

Uniwersalny zestaw uruchomieniowy ZL4PIC Uniwersalny zestaw uruchomieniowy ZL4PIC Uniwersalny zestaw uruchomieniowy ZL4PIC przeznaczony jest testowania aplikacji realizowanych na bazie mikrokontrolerów PIC. Jest on przystosowany do współpracy

Bardziej szczegółowo

Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach.

Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach. Terminal TR01 Terminal jest m, umożliwiającym odczyt i zmianę nastaw parametrów, stanów wejść i wyjść współpracujących z nim urządzeń automatycznej regulacji wyposażonych w port komunikacyjny lub i obsługujących

Bardziej szczegółowo

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016 LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016 Prowadzący: dr inż. Daniel Kopiec email: daniel.kopiec@pwr.edu.pl Pierwszy projekt w środowisku

Bardziej szczegółowo

PSM niebanalne Flashe

PSM niebanalne Flashe PSM niebanalne Flashe Pamięci Flash bardzo spowszedniały, a ich niskie ceny i korzystne cechy funkcjonalne umożliwiły faktyczne zdominowanie rynku pamięci nieulotnych. Poważnym brakiem Flashy jest brak

Bardziej szczegółowo

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

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09 Full Lite MFPST7 Programator ICP mikrokontrolerów rodziny ST7 Instrukcja użytkownika 03/09 Spis treści WSTĘP 3 CZYM JEST ICP? 3 PODŁĄCZENIE PROGRAMATORA DO APLIKACJI 4 OBSŁUGA APLIKACJI ST7 VISUAL PROGRAMMER

Bardziej szczegółowo

ARMputer, część 1 AVT 922

ARMputer, część 1 AVT 922 P R O J E K T Y ARMputer, część 1 AVT 922 Mikrokontrolery z rdzeniem ARM7TDMI szybko wspinają się na szczyty popularności, czego jedną z najważniejszych przyczyn są ekspresowo malejące ceny tych układów.

Bardziej szczegółowo

KAmduino UNO. Rev Źródło:

KAmduino UNO. Rev Źródło: KAmduino UNO Rev. 20170811113756 Źródło: http://wiki.kamami.pl/index.php?title=kamduino_uno Spis treści Podstawowe cechy i parametry... 2 Wyposażenie standardowe... 3 Schemat elektryczny... 4 Mikrokontroler

Bardziej szczegółowo