Technika Cyfrowa i Mikroprocesory Programowalne uklady logiczne FPGA Spartan-II dr inz. Krzysztof Kolek Materialy wylacznie dla potrzeb wykladu Uklady cyfrowe oraz mikroprocesory III rok RA wydzial EAIiE AGH. Inne wykorzystanie bez zgody autora zabronione. 1
Plan Uklady PLD Zasada pracy ukladów FPGA Ogólna charakterystyka rodziny Spartan-II Bloki IOB Bloki CLB o Pamiec dwuportowa o Bloki DLL Polaczenia miedzyblokowe JTAG Obudowy Przykladowe rozwiazanie Podsumowanie Literatura 2
Uklady PLD Uklady PLD (Programmable Logic Devices) producent nie okresla cyfrowych funkcji ukladu; jest to zadaniem koncowego uzytkownika (sprzetowy odpowiednik funkcji mikroprocesora) PLD mozna podzielic na: SPLD (Simple Programmable Logic Devices) CPLD (Complex Programmable Logic Devices) FPGA (Field Programmable Gate Array) Dostosowanie ukladu do potrzeb wymaga utworzenia w ukladzie odpowiednich polaczen. Moga to byc sciezki do przepalania (zwarcie usuwane podczas programowania), warstwy izolatorów przebijane podczas programowania lub marryce tranzystorów MOS zapewniajacych odpowiednie polaczenia Programowanie (konfiguracja) moze miec charakter pamieci ulotnej lub nieulotnej SPLD GAL firmy Lattice matryca wejsciowa utworzona z zespolu bramek AND; wejsciowe sygnaly proste i zanegowane sa mnozone na bramkach AND i sumowane na bramkach OR; przerzutniki wyjsciowe realizuja funkcje pamieciowe (sekwencyjne); odpowiednie uklady zwiazane z wyprowadzeniami ukladu GAL zapewniaja doprowadzenie oraz wyprowadzenie sygnalów; czestotliwosci pracy do 250MHz; wyprowadzenia DIL 20/24
Uklady SPLD na przykladzie GAL (Lattice)
Uklady SPLD na przykladzie GAL (Lattice)
Uklady CPLD na przykladzie rodziny 9500 (XILINX) Podobna struktura do SPLD, ale komórki logiczne dodatkowo pogrupowane w makrokomórki z mozliwoscia wzajemnych polaczen miedzy nimi; 800-6400 bramek; czestotliwosc pracy do 125MHz
Zasada pracy FPGA Zasoby logiki kombinacyjnej, sekwencyjnej ( bramki oraz przerzutniki) oraz wejsc/wyjsc z ukladu o niezdefiniowanych polaczeniach wzajemnych; Definicja polaczen okresla funkcje logiczne oraz kierunki wejsc/wyjsc z ukladu; zdecydowana wiekszosc wejsc/wyjsc nie ma a priori okreslonego kierunku oraz funkcji (wyjatkiem np. GND i VCC) Definicja polaczen moze byc wykonywana dowolna ilosc razy (zapisywana w pamieci RAM) ustalanie konfiguracji Konfigurowanie wykonywane za pomoca specjalnych urzadzen lub automatyczne, sterowane przez uklad FPGA, ladowanie konfiguracji z zewnetrznej pamieci ROM po wlaczeniu zasilania Programowanie (ustalanie polaczen) wykonywane programowo; odpowiednikiem lutowanie elementów dyskretnych
SPARTAN-II Rodzina ukladów FPGA firmy XILINX (www.xilinx.com) Alternatywa dla ukladów ASIC (Application Specific Integrated Circuit) podczas produkcji ukladów do liczby tysiecy sztuk Pojemnosc do 200 000 bramek; czestotliwosc do 200MHz Uklady zbudowane z nastepujacych elementów skladowych: bloki wejscia/wyjscia IOB (Input/Output Block) bloki wykorzystywane do tworzenia logiki CLB (Combinationa Logic Block) dedykowane bloki pamieci RAM bloki DLL wspólpracujace z sygnalami zegarowymi wielowarstwowa struktura polaczen laczaca ww. elementy
Parametry rodziny Spartan-II
Oznaczenia
Schemat blokowy ukladów Spartan-II
Bloki IOB 3 rejestry skonfigurowane sa jako wyzwalane zboczem flip-flop y typu D lub latch e aktywne poziomem Dla kazdego rejestru wystepuja sygnaly zerowania i ustawiania, które moga pracowac synchronicznie lub asynchronicznie Opcjonalnie dolaczane sa do wyjscia rezystory typu pull-up lub pull-down Opcjonalny obwód typu week-keeper monitoruje napiecie na wyprowadzeniu i podsterowuje wyprowadzenie do stany L lub H ; w przypadku przypiecia do sygnalu wielozródlowego utrzymuje sygnal w ostatnim aktywnym stanie gdy wszystkie sterowniki wyjsciowe sa odciete; eliminuje w ten sposób cheterrowanie sugnalu Wszystkie koncówki ukladu zabezpieczone sa przeciwprzepieciowo Zasilanie 3.3V, ale wyprowadzenia sa 5V tolerant Opcjonalne opóznienie sygnalu wejsciowego umozliwia uzyskanie zerowych czasów przetrzymania (hold time) Maksymalny wyplyw pracy z kazdego wyjscia wynosi 24mA, maksymalny wplyw wynosi 48mA
Spartan-II IOB
Banki I/O Rózne standardy I/O wymagaja róznych napiec Vcco, a czasami równiez Vref Wyprowadzenia ukladu podzielone na banki; wewnatrz banku standardy napieciowe mozna mieszac jezeli wymagaja tego samego Vcco; mozna mieszac standardy wymagajace i nie wymagajace Vref ale tylko jedno Vref moze byc uzyte dla kazdego banku
Wszechstronne (Versatile) I/O Programowe sterowanie wydajnoscia pradowa, czasem narastania sygnalu oraz opóznieniem sygnalu wejsciowego 16 napieciowych standardów I/O odpowiednie bufory wejsciowe: IBUF, IBUF_LVCMOS2, IBUF_PCI33_3, IBUF_PIC33_5, IBUF_PCI66_3, IBUF_GTL, IBUF_GTLP, IBUF_HSTL_I, IBUF_HSTL_III, IBUF_HSTL_IV, IBUF_SSTL_3_I, IBUF_SSTL_3_II, IBUF_SSTL_2_I, IBUF_SSTL_2_II, IBUF_CTT oraz IBUF_AGP Tolerancja dla napiec 5V w przypadku napiec zasilania wiekszych od 2V Odpowiednie bufory dla sygnalów zegarowych w róznych standardach Odpowiednie bufory wyjsciowe oraz trójstanowe bufory wyjsciowe; dla standardu LVTTL mozliwosc okreslenia czasu narastania sygnalów oraz pradu wyjsciowego (2mA, 4mA, 6mA, 8mA, 16mA lub 24mA)
Standardy napieciowe
Standardy napieciowe
Standardy napieciowe - przyklady
Standardy napieciowe - przyklady
Bloki CLB Komórka logiczna LC (Logic Cell) zawiera 4-wejsciowy generator funkcyjny, logike sterujaca i realizujaca przeniesienia oraz przerzutnik; wyjscie z generatora funkcyjnego steruje wyjscie LC oraz wejscie D przerzutnika; 2 komórki LC tworza jeden blok Slice, 2 bloki Slice tworza jedna komórke CLB Generator funkcyjny to 4-wejsciowa tablica typu LUT (Look-Up Table); mozna go wykorzystac jako pamiec RAM 16x1; w obrebie jednego bloku typu Slice mozna zorganizowac pamiec 31x1, 16x1 lub dwuportowa pamiec 16x1; LUT mozna równiez wykorzystac jako 16-bitowy szybki rejestr przesuwny Przerzutnik moze zostac skonfigurowany jako aktywny zboczem lub poziomem przerzutnik D; sygnaly ustawiania i zerowania przerzutnika moga pracowac synchronicznie lub asynchronicznie; sygnaly sterujace przerzutnikiem mozna zanegowac podczas konfiguracji Dodatkowa logika: multiplekser laczacy 2 bloki LUT w jeden 5-wejsciowy generator funkcji lub generator wybranych funkcji do 9-wejsc; multiplekser laczacy 4 bloki LUT tworzac dowolna funkcje 6 zmiennych lub wybrane funkcje 18 wejsc Kazdy LC posiada jedna sciezke bezposrednio laczaca wejscie i wyjscie (direct feedthrougth path) Bloki generacji przeniesien posiadaja dedykowane dla sumatorów i multiplikatorów bramki XOR oraz AND; sa przystosowane do kaskadowej generacji przeniesien Kazdy blok CLB posiada dwa bufory 3-stanowe
Slice Slice sklada sie z dwóch bloków LC (Logic Cell), a sam stanowi ½ bloku CLB
Pamiec dwuportowa Dedykowane bloki synchroniczne pamieci dwuportowej RAM o pojemnosci 4096x1 kazdy; niezalezne sterowanie dla kazdego portu pamieci; wbudowane mechanizmy konwersji magistrali danych (4096x1 lub 2048x2 lub 1024x4 lub 512x8 lub 256x16) Dedykowane linie polaczeniowe zapewniajace polaczenia z CLB oraz z innymi blokami pamieci Porty pamieci wzajemnie niezalezne bez potrzeby arbitrazu, ale KIEDY JEDEN Z PORTÓW ZAPISUJE DO DANEJ KOMÓRKI PAMIECI WÓWCZAS DRUGI PORT NIE MOZE ADRESOWAC TEJ SAMEJ KOMÓRKI (zarówno od odczytu jak i do zapisu) Z DOKLADNOSCIA DO CZASU USTALANIA SYGNALU ZEGAROWEGO (3-4ns); w przypadku zapisu przez 2 porty wynik jest nieprzewidywalny; w przypadku zapisu i odczytu zapis sie powiedzie a odczyt nie Bloki pamieci dwuportowej RAM mozna inicjalizowac podczas konfiguracji
Pamiec dwuportowa
Pamiec dwuportowa
Pamiec dwuportowa
Delay-Locked Loop (DLL) 4 bloki DLL zwiazane z globalnymi sygnalami zegarowymi Blok DLL monitoruje zewnetrzny sygnal zegarowy i sygnal zegarowy dystrybuowany wewnatrz ukladu; tak dobiera opóznienie aby zbocza zegara osiagnely przerzutniki dokladnie jeden okres zegara po tym jak pojawia sie na wejsciu ukladu DLL moze przemnozyc czestotliwosc sygnalu wejsciowego przez 2 lub podzielic przez 1.5, 2, 2.5, 3, 4, 5, 8 lub 16 Mnozenie czestotliwosci umozliwia wspóldzielenie logiki w dziedzinie czasu wykorzystujace te same bloki dwukrotnie w jednym okresie sygnalu zegarowego Bloki DLL moga opóznic uruchomienie logiki po skonfigurowaniu do czasu chwycenia petli Na wyjsciu dostepny sygnal wyjsciowy oraz sygnaly wyjsciowe przesuniete w fazie o 90, 180 i 270 stopni; opcjonalnie sygnaly wyjsciowe moga miec skorygowane wypelnienie na 50% Wyprowadzajac wyjscie z DLL na zewnatrz ukladu, a nastepnie z powrotem do srodka mozna równomiernie rozprowadzic zegar dla wielu ukladów w obrebie calej plytki
Delay-Locked Loop (DLL)
Linie polaczeniowe Dlugosci i typy linii polaczeniowych znaczaco limituja maksymalna predkosc pracy Liczby i typy linii polaczeniowych okreslaja mozliwosci polaczeniowe miedzy elementami Lokalne linie polaczeniowe: lacza zasoby CLB z macierzami polaczeniowymi GRM (General Routing Matrix); GRM graniczy z kazdym CLB wszystkie bloki LUT wewnatrz tej samej komórki CLB bezposrednie polaczenie miedzy poziomo polozonymi komórkami CLB
Linie polaczeniowe Linie polaczeniowe ogólnego przeznaczenia (pionowe i poziome kanaly polaczeniowe miedzy wierszami i kolumnami CLB): GRM macierz przelaczników laczaca linie poziome i pionowe tworzaca linie polaczeniowe dla CLB 24 linie polaczeniowe pojedynczej dlugosci (jeden wiersz lub kolumna tablicy CLB) laczace sasiednie bloki GRM w kazdym z 4 kierunków 96 linii laczacych bloki GRM odlegle od siebie o 6 wierszy lub kolumn (Hex); biegna w kazdym z 4 kierunków; sterowane wylacznie na koncach ale z mozliwoscia dostepu do sygnalu równiez w srodku linii; 32 z tych linii sa dwukierunkowe, reszta jednokierunkowa 12 linii dlugich (Longlines); poziome i pionowe polaczenia dla szybkich sygnalów biegnace przez caly uklad wzdluz i wszerz Dystrybucja zegara: dedykowane linie i wejscia ukladu (4) do dystrybucji szybkich sygnalów zegarowych zapewniajace minimalna nierównomiernosc czasów pojawienia sie zboczy zegara; dostep do linii zegarowych poprzez globalne bufory z wyprowadzen ukladu lub z linii polaczeniowych ogólnego przeznaczenia
Linie polaczeniowe Polaczenia I/O linie polaczeniowe miedzy macierza CLB a blokami IOB Dodatkowe 2 linie na kazdy CLB do propagacji sygnalów przeniesien 4 poziome polaczenia 3-stanowe; linie moga byc dzielone umozliwiajac uzyskanie krótszych magistral
Lacze krawedziowe - JTAG Spartan-II wspiera wszystkie obligatoryjne komendy standardu IEEE 1149 Boundary Scan Logic umozliwia zeskanowanie wszystkich we/wy ukladu; wszystkie IOB sa traktowane jako 3-stanowe wyprowadzenia i tak sa skanowane kazdy blok to 3 testowane punkty: wejscie, wyjscie oraz sterowanie buforem trójstanowym; równiez wyprowadzenia ukladu niewykorzystywane w logice sa skanowane Testowanie pracy logiki moze odbywac sie poprzez dolaczenie testowanych sygnalów do niewykorzystanych we/wy ukladu Instrukcje opisane w standardzie IEEE 1149 dostepne sa równiez przed konfiguracja ukladu; po konfiguracji dostepna jest reszta instrukcji Instrukcja USERCODE umozliwia projektantowi logiki odczytanie i zwrócenie dowolnych danych; daje to mozliwosc komunikacji z ukladem poprzez JTAG Dodatkowe (nieobecne w tabeli) instrukcje umozliwiaja konfigurowanie ukladu JTAG w ukladach Spartan-II pracuje zawsze w standardzie LVTTL Readback mozliwosc odczytania danych konfiguracyjnych z ukladu wraz ze stanem wszystkich przerzutników, pamieci RAM LUT oraz stanu bloków RAM; wykorzystywane do sledzenia w trakcie pracy ukladu
Lacze krawedziowe - JTAG
Lacze krawedziowe - JTAG
Konfiguracja Konfiguracja polega na zapisie tzw. bitstream do pamieci konfiguracyjnej ukladu FPGA (ok. 1000000 bitów) Tryby konfiguracyjna: slave serial, master serial, slave parallel oraz boundaryscan Odczyt konfiguracji po wlaczeniu zasilania z pamieci PROM lub wykorzystanie dedykowanych urzadzen konfigurujacych (Xchecker, Parallel Cable MultiLinx) lub wykorzystanie protokolu JTAG i dedykowanych instrukcji do programowania pamieci konfiguracyjnej. Podczas konfiguracji mozna opcjonalnie wykonac pull-up wszystkich IOB Szeregowa konfiguracja wymaga tylko 9 dedykowanych wyprowadzen
Obudowy (PQ44-PQ240, HQ44-HQ240)
Obudowy (PQ44-PQ240, HQ44-HQ240)
Obudowy (BG352)
Obudowy (BG352)
!!! E L A S T Y C Z N O S C!!! Magistrala PCI Uklad PCI Chipset Spartan-II Cyfrowe we/wy Przetwornik A/C Przetwornik C/A RT-DAC4/PCI Specjalizowany uklad zapewnia wspólprace z magistrala PCI Uklad FPGA realizuje funkcje karty: we/wy cyfrowe binarne, PWM enkodery kwadraturowe, generatory cyfrowe, mierniki impulsów wejsciowych, wspólpraca z przetwornikami A/C i C/A... ale równiez sterownik silników krokowych, akwizycja danych analogowych, generatory analogowe, sterownik silnika spalinowego, itd. MOZLIWOSC ZMANY FUNKCJI KARTY BEZ ZMIAN POLACZEN
RT-DAC4/PCI
Podsumowanie Pojemnosc umozliwiajaca zaprojektowanie ukladu logicznego z zlozonosci mikroprocesorów Elastycznosc funkcjonalna zmiana funkcji nie wymaga zmian w sprzecie Rózne standardy napieciowe wejsc/wyjsc Oprogramowanie umozliwia ustalanie konfiguracji poprzez rysowanie schematów, pisanie programów w jezykach HDL lub poprzez projektowanie automatów FSM Dostepnosc róznorodnych bloków funkcjonalnych (ang. core) Akceptowalne ceny PROPOZYCJE PROJEKTÓW STUDENCKICH: analizator stanów logicznych, implementacja obliczen zmiennopozycyjnych, bloki regulatorów, realizacja sieci neuronowych itp.
Literatura Spartan-II 2.5V FPGA Family: Introduction and Ordering Information, materialy w formie PDF dostepne na serwerze www.xilinx.com. Spartan-II 2.5V FPGA Family: Functional description, materialy w formie PDF dostepne na serwerze www.xilinx.com. Spartan-II 2.5V FPGA Family: DC and Switching Characteristics, materialy w formie PDF dostepne na serwerze www.xilinx.com. Spartan-II 2.5V FPGA Family: Pinout Table, materialy w formie PDF dostepne na serwerze www.xilinx.com. Libraries Guide, materialy w formie PDF dostepne na serwerze www.xilinx.com. GAL18V10 High Performance E2CMOS PLD Generic Array Logic, materialy w formie PDF dostepne na serwerze www.lattice.com. GAL22LV10 Low Voltage E2CMOS PLD Generic Array Logic, materialy w formie PDF dostepne na serwerze www.lattice.com. Luba T., Jasinski K., Zbierzchowski B.: Specjalizowane uklady cyfrowe w strukturach PLD i FPGA, WKL, Warszawa, 1997. Zbysinski P., Pasierbinski J.: Uklady programowalne pierwsze kroki, Wydawnictwo BTC, Warszawa, 2002. Skahill K: Jezyk VHDL. Projektowanie programowalnych ukladów logicznych, WNT, Warszawa, 2001. Wrona W: VHDL. Jezyk opisu i projektowania ukladów cyfrowych, WPK, Gliwice, 1998.