Projektowanie Systemów Cyfrowych

Podobne dokumenty
Projektowanie Systemów Cyfrowych

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

Kierunek Elektronika, III rok Języki Opisu Sprzętu. Platforma sprzętowa. Rajda & Kasperek 2016 Katedra Elektroniki AGH 1

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH

napięcie-częstotliwość

Programowalne Układy Logiczne. Wykład III FPGA dr inż. Paweł Russek

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

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

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

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

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

Technika Mikroprocesorowa

Temat: Pamięci. Programowalne struktury logiczne.

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Budowa pamięci RAM Parametry: tcl, trcd, trp, tras, tcr występują w specyfikacjach poszczególnych pamięci DRAM. Czym mniejsze są wartości tych

Wykład 10. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń. 20 grudzień 2017

Liczniki z zastosowaniem

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

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

Programowany układ czasowy

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

Podstawy elektroniki cz. 2 Wykład 2

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

Architektura komputerów

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

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

(przykład uogólniony)

Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter

RODZAJE PAMIĘCI RAM. Cz. 1

Szkolenia specjalistyczne

Plan wykładu. Architektura systemów komputerowych. Cezary Bolek

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

Ćwiczenie 7 Matryca RGB

mgr inż. Tadeusz Andrzejewski JTAG Joint Test Action Group

Systemy Czasu Rzeczywistego FPGA

Tranzystor JFET i MOSFET zas. działania

ZL10PLD. Moduł dippld z układem XC3S200

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

Układy programowalne. Wykład z ptc część 5

Programowalne układy logiczne

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

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Cyfrowe układy scalone

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Układy logiczne układy cyfrowe

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

Laboratorium Asemblerów, WZEW, AGH WFiIS Tester NMOS ów

Laboratorium przedmiotu Technika Cyfrowa

Szczegółowy opis przedmiotu zamówienia. Część 1 - Laboratoryjny zestaw prototypowy

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

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

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Liczniki z zastosowaniem

Cyfrowe układy sekwencyjne. 5 grudnia 2013 Wojciech Kucewicz 2

Sterowniki Programowalne (SP)

Cyfrowe układy scalone

Układy programowalne. Wykład z ptc część 5

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Architektura komputerów

Cyfrowe układy scalone c.d. funkcje

Opis przedmiotu zamówienia

PAMIĘCI SYNCHRONICZNE

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Programowanie Mikrokontrolerów

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

Cyfrowe układy scalone

43 Pamięci półprzewodnikowe w technice mikroprocesorowej - rodzaje, charakterystyka, zastosowania

Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA

Architektura komputerów

LEKCJA. TEMAT: Funktory logiczne.

Zwory na płycie z łączem szeregowym ustawienie zworek dla programowania.

Pamięć operacyjna komputera

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Opis przedmiotu zamówienia CZĘŚĆ 1

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

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

1. Synteza układów opisanych w języku VHDL Xilinx ISE Design Suite 10.1 VHDL 2. Obsługa przetwornika CA Project Add source...

Podstawy układów mikroelektronicznych

Wstęp Architektura... 13

LABORATORIUM ELEKTRONIKI I TEORII OBWODÓW

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Kurs Zaawansowany S7. Spis treści. Dzień 1

Systemy Czasu Rzeczywistego FPGA

Ćw. 9 Przerzutniki. 1. Cel ćwiczenia. 2. Wymagane informacje. 3. Wprowadzenie teoretyczne PODSTAWY ELEKTRONIKI MSIB

Bramki Instrukcja do laboratorium AGH w Krakowie Katedra Elektroniki Ernest Jamro Aktualizacja:

Różnicowe układy cyfrowe CMOS

SML3 październik

Architektura typu Single-Cycle

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

WPROWADZENIE Mikrosterownik mikrokontrolery

Enkoder magnetyczny AS5040.

2. Architektura mikrokontrolerów PIC16F8x... 13

Transkrypt:

Projektowanie Systemów Cyfrowych Prowadzący: dr inż. Andrzej Skoczeń Układy programowalne generacji Spartan-3AN: Dodatek 3 2017 Grudzień 2017 Klasyfikacja: grupa, rodziny Paramatry układów rodziny Spartan-3AN Elementy architektury Konfiguracja układów Spartan-3x Bloki wejścia/wyjścia IOB; standardy sygnałów i ich konfiguracja UCF Drzewo zegara i blok DCM Biblioteki firmy Xilinx dla Spartana-3x http://www.fis.agh.edu.pl/~skoczen/hdl AGH WFiIS Informatyka Stosowana, I stopień Języki Opisu Sprzętu 1

Spartan-3AN FPGA Family Data Sheet; DS557 June 12, 2014 (123 str.) Spartan-3 Generation FPGA User Guide; (512 str.) Extended Spartan-3A, Spartan-3E, and Spartan-3 FPGA Families; UG331 (v1.8) June 13, 2011 Spartan-3 Generation Configuration User Guide, Extended Spartan-3A; Spartan-3E, and Spartan-3 FPGA Families; UG332 (v1.7) January 27, 2015 (354 str.) Spartan-3AN FPGA In-System Flash User Guide; For Spartan -3AN FPGA applications that read or write data to or from the In-System Flash memory after configuration; (98 str.) UG333 (v2.4) June 11, 2015 AGH, WFiIS, IS, st.i, HDL 2

Extended Spartan-3A Rodzina/Platforma Grupa układów Spartan-3x Spartan-3x jest grupą układów FPGA przeznaczoną do zastosowań w szerokim zakresie elektroniki użytkowej: dostęp szerokopasmowy, sieci domowe, wyświetlacze-projektory, urządzenia telewizji cyfrowej. Obejmuje ona 25 modeli układów w pięciu rodzinach stanowiących linię rozwojową: Opis Liczba modeli w grupie Spartan-3 pierwszy przemysłowy FPGA w technologii 90nm 8 Spartan-3E z dodanymi cechami zwiększającymi wydajność i redukującymi koszt konfiguracji Spartan-3A kolejne polepszenie konfiguracji i redukcja zużycia mocy 5 Spartan-3AN Spartan-3A DSP wyposażony w nie-ulotną pamięć i dużą ilość pamięci typu flash dostępnej dla użytkownika posiada zasoby wymagane dla cyfrowego przetwarzania sygnałów (DSP48A) 5 5 2 Najmniejszy z tych układów zawiera 50 000 bramek systemowych, a największy 5 milionów. AGH, WFiIS, IS, st.i, HDL 3

Architektura układów Spartan-3x Architektura opiera się na pięciu podstawowych programowalnych elementach funkcjonalnych: CLBs IOBs BRAM MBs DCMBs Configurable Logic Blocks Input/Output Blocks Block RAM Multiplier Blocks Digital Clock Manager Blocks Złożony z czterech SLICE, z których każdy zawiera dwie elastyczne pamięci podręczne LUT, które implementują logikę, dwa multipleksery i dwa elementy pamięciowe używane jako przerzutnik lub zatrzask oraz logikę arytmetyczną z przeniesieniem. Sterują przepływem danych między pinami I/O i wewnętrzną logiką układu. Są dwukierunkowe i trójstanowe. Wspierają wiele standardów sygnałów, a wśród nich kilka wysokowydajnych standardów różnicowych. Dostępne są także rejestry typu DDR. Magazyn danych w postaci bloków 18-kbityowych o podwójnych portach. Akceptują 18-bitowe liczby binarne jako dwa argumenty i obliczają ich iloczyn. Układy rodziny Spartan-3A DSP posiadają także specjalne bloki mnożąco-akumulujące DSP. Całkowicie cyfrowy, samokalibrujący się układ dystrybucji, opóźniania, mnożenia, dzielenia i przesuwania fazy sygnałów zegarowych. Objaśnienia: LUT Look-Up Table DDR Double Data-Rate DSP Digital Signal Processing AGH, WFiIS, IS, st.i, HDL 4

Architektura układów Spartan-3x AGH, WFiIS, IS, st.i, HDL 5

W centrum znajduje się regularna tablica CLBs-ów. Dookoła umieszczony jest podwójny pierścień naprzemiennie ułożonych IOBs-ów. Pamięć BRAM zorganizowana jest w dwie kolumny, z których każda składa się z kilku bloków o pojemności 18-kbitów (wyjątek stanowi XC3S50AN, który ma tylko jedna kolumnę). Każdy blok BRAMu związany jest z multiplikatorem. Układy zarządzania zegarem DCM-y umieszczone są w środku, dwa u góry i dwa na dole. (w układzie XC3S50AN tylko u góry, a w XC3S700AN i XC3S1400AN dodano jeszcze po dwa w środku obu kolumn RAM-multiplikatory). Bogata sieć ścieżek łączy pięć podstawowych bloków funkcjonalnych przesyłając między nimi sygnały. Każdy element funkcjonalny związany jest z matrycą przełączników zabezpieczających przed wielokrotnymi połączeniami. AGH, WFiIS, IS, st.i, HDL 6

Architektura CLB układów Spartan-3x SLICEM umożliwiają tworzenie: funkcji logicznych (LUT) rejestrów przesuwnych (SR) pamięci rozporoszonych (DRAM) SLICEL umożliwiają tworzenie: funkcji logicznych (LUT) AGH, WFiIS, IS, st.i, HDL 7

SLICE Składa się z dwóch komórek logicznych LC (logic cell). W szczególności SLICE składa się z: Dwóch przerzutników D (konfigurowalne także jako zatrzaski) kolor niebieski, Dwóch 4-o wejściowych pamięci podręcznych LUT (funkcje F i G) kolor zielony, Logika arytmetyczna i przeniesienia kolor brązowy, Dwa szerokie multipleksery F5MUX i FiMUX (i=6, 7, 8) kolor czerwony. AGH, WFiIS, IS, st.i, HDL 8

Architektura SLICE ów Spartan a-3x Look-Up Table (LUT) jest generatorem funkcji logicznych zbudownym w oparciu o pamięć RAM. Ponieważ ma cztery wejścia to nadaje się do funkcji 4-ech zmiennych. Dalszą rozbudowę umożliwiają multipleksery Fi(5)MUX. W przypadku SLICE ów M, LUT-y można skonfigurować jako 16-bitowe bloki rozproszonej pamięci (Distributed RAM) lub rejestrów przesuwnych (SRL). AGH, WFiIS, IS, st.i, HDL 9

LUT może być połączony do: Multipleksera F5MUX, Logiki arytmetyki i przeniesienia, Bezpośrednio do wyjścia CLB, Do elementu sekwencyjnego FFX(Y). i adres 6 X0Y0, X1Y0 7 X0Y1 8 X1Y1 Każdy SLICE ma 2 multipleksery: F5MUX w dolnej części, FiMUX w górnej części. F5MUX multipleksuje wyjścia dwóch LUT-ów. FiMUX multipleksuje bezpośrednio wejścia CLB. Wejścia te mogą być połączone z wyjściami Fi(5)MUX tego samego lub innego SLICE. AGH, WFiIS, IS, st.i, HDL 10

Sekwencyjny element pamięciowy, programowalny do pracy jako przerzutnik typu D lub wrażliwy na poziom przeźroczysty zatrzask, dostarcza sposobu synchronizacji danych do zegara. Element ten dodatkowo zaopatrzony jest w multiplekser na wejściu D, który umożliwia ominięcie elementu sekwencyjnego i wykorzystanie wyjścia kombinacyjnego. Synchroniczne kasowanie i ustawianie AGH, WFiIS, IS, st.i, HDL 11

Rodzina układów Spartan-3AN System Gates Equivalent Logic Cells CLBs Slices Distributed RAM Bits Block RAM Bits XC3S50AN 50k 1584 176 704 11k 54k XC3S200AN 200k 4032 448 1792 28k 288k XC3S400AN 400k 8064 896 3584 56k 360k XC3S700AN 700k 13248 1472 5888 92k 360k XC3S1400AN 1400k 25344 2816 11264 176k 576k Multiplkatory DCM Maksymalna liczba linii I/O Maksymalna liczba par I/O Rozmiar strumienia bitów In-System Flash Bits XC3S50AN 3 2 108 50 427k 1M XC3S200AN 16 4 195 90 1 168k 4M XC3S400AN 20 4 311 142 1 842k 4M XC3S700AN 20 8 372 165 2 669k 8M XC3S1400AN 32 8 502 227 4 644k 16M DCM Digital Clock Manager układ zarządzania sygnałem zegara AGH, WFiIS, IS, st.i, HDL 12

BRAM Multiplikator BRAM Multiplikator IO Bank 3 IO Bank 1 BRAM Multiplikator BRAM Multiplikator IO Bank 0 DCM DCM DCM DCM Matryca CLB DCM DCM DCM DCM IO Bank 2 Ogólna jednorodna architektura FPGA Architektura Spartan-3AN model XC3S700AN AGH, WFiIS, IS, st.i, HDL 13

Liczba CLB: n CLB = 1 472 szt. Jeden CLB składa się z czterech SLICE-ów: Liczba SLICE: n SLICE = n CLB 4 = 5 888 szt. XC3S700AN Jeden SLICE składa się z dwóch komórek logicznych LC: Liczba LC: n LC = n SLICE 2 = 11 776 szt. Równoważna komórka logiczna ELC jest obliczana ze współczynnikiem 1,125: Liczba ELC: n ELC = 1,125 n LC = 13 248 szt. Liczba bramek systemowych wynika ze skomplikowanych przeliczeń poszczególnych elementów układu na dwuwejściowe bramki NAND i ma charakter raczej marketingowy. Maksymalny rozmiar pamięci rozproszonej DRAM konfigurowalny na LUT-ch SLICE-ów M: s DRAM = 2 2 n CLB 16 bitów = 94 208 bitów = 92 kbity gdyż cztery LUT-y na CLB mają własność konfigurowalności do DRAM. Liczba bloków BRAM: n BRAM = 20 szt. czyli rozmiar pamięci blokowej: s BRAM = n BRAM 18kbitów = 360 kbitów gdyż jeden blok ma rozmiar 18kbitów. AGH, WFiIS, IS, st.i, HDL 14

Blok pamięci rozproszonej DRAM16 Kofiguracja LUT-ów SLICE-M do pracy jako DRAM. słowo adresowane przez data_a data_d A3-A0 DPRA3-DPRA0 AGH, WFiIS, IS, st.i, HDL 15

Blok Rejestru przesuwnego SRL16 Kofiguracja LUT-ów SLICE-M do pracy jako SRL. m = 0, 1, 2, 3 AGH, WFiIS, IS, st.i, HDL 16

Blok pamięci rozproszonej BRAM AGH, WFiIS, IS, st.i, HDL 17

Blok multiplikatora AGH, WFiIS, IS, st.i, HDL 18

Konfiguracja układów Spartan-3AN Programowanie odbywa się przez załadowanie danych konfiguracyjnych do reprogramowalnych zatrzasków CCL (CMOS Configuration Latches), które zbiorowo sterują wszystkimi funkcjami elementów i zasobów je łączących. Komórki CCL są reprogramowalne jak pamięć SRAM ale zaprojektowane są dla zachowania integralności danych a nie wydajności. Dane w CCL-sach są zapisywane tylko w czasie konfiguracji i pozostają niezmienione aż do kolejnej rekonfiguracji. Dane konfiguracyjne przechowywane są w: układzie (on-chip) w pamięci nieulotnej Flash lub zewnętrznie w układzie PROM lub w jakimś innym rodzaju nieulotnego (NVM) nośnika danych (na płycie lub poza nią). W wewnętrznej pamięci Flash możliwe jest przechowywanie wielu plików konfiguracyjnych. Jest to własność MultiBoot. AGH, WFiIS, IS, st.i, HDL 19

Konfiguracja układów Spartan-3AN Po włączeniu zasilania dane konfiguracyjne są przepisywane do CCL-i wewnątrz FPGA używając jednego z siedmiu trybów: z wewnętrznej pamięci SPI Flash (M2M1M0 = 011), łącze szeregowe do Xilinx Platform Flash PROM (M2M1M0 = 000), Serial Peripheral Interface (SPI) z zewnętrznej pamięci SPI Flash (M2M1M0 = 001), Byte Peripheral Interface (BPI) z zewnętrznej pamięci równoległej NOR Flash (M2M1M0 = 010), Slave Serial, ładowane z procesora (M2M1M0 = 111), Slave Parallel, ładowane z procesora (M2M1M0 = 110), Boundary-Scan (JTAG), ładowane z procesora lub testera systemowego (M2M1M0 = 101). 3,3V Wskazują chwilę zakończenia konfiguracji AGH, WFiIS, IS, st.i, HDL 20

Strumień bitowy konfiguracji Plik strumienia bitowego jest binarnym plikiem zawierającym dane konfiguracyjne do przepisania do konfiguracyjnej pamięci SRAM. Konfiguracja może być: Statyczna (static reconfiguration) załadowanie konfiguracji gdy aplikacja nie działa i rebootowanie urządzenia, Dynamiczna (dynamic reconfiguration) konfiguracja jest częścią aplikacji tzn. sprzęt może być adaptowany do potrzeb w czasie wykonania. Chwila przeprowadzenia częściowej rekonfiguracji jest ukryta, gdyż pozostała część układu pracuje. Strumień bitowy może być pełny lub częściowy: Pełny (full) pełna konfiguracja układu w projekcie statycznym lub początkowa konfiguracja w projekcie typu dynamicznego. Częściowy (partial) - konfiguracja części układu lub jedna z rekonfiguracji w podejściu dynamicznym. AGH, WFiIS, IS, st.i, HDL 21

Pamięć konfiguracji jest zorganizowana w ramki (frames), które pokrywają cały układ. Ramki są najmniejszym adresowalnym segmentem przestrzeni pamięci konfiguracji. Wszystkie operacje muszą działać na ramce. Pamięć konfiguracji jest prostokątną tablicą bitów. Ramki grupują bity w pionie i mają szerokość jednego bitu i wysokość całej tabeli. Ramka jest podstawową jednostką budującą konfigurację, najmniejszą częścią, która może być zapisywana lub odczytywana. Ramki nie odpowiadają bezpośrednio żadnemu fragmentowi sprzętu, tzn. nie konfigurują konkretnego CLB lub IOB ale rzeczywiście konfigurują część kilku zasobów logicznych lub połączeniowych (routing). Ramki zgrupowane są w większe jednostki zwane kolumnami. Liczba i rozmiar ramek są inne dla każdego członka rodziny Spartan, np. dla XC3S700AN: Liczba ramek n f 844 słowo = 16 bitów Rozmiar ramki [słowa] s f 202 Rozmiar pamięci konfiguracyjnej [słowa] s cm =n f s f 170 488 Dodatkowe informacje w strumieniu bitowym [słowa] d ad 302 Rozmiar strumienia bitowego [bity] s bs =(s cm +d ad ) 16 2 732 640 AGH, WFiIS, IS, st.i, HDL 22

Pamięć Flash w systemie Każdy Spartan-3AN zawiera pamięć typu Flash (z szeregowym interfejsem SPI), której zastosowanie jest: Przechowywanie konfiguracyjnego strumienia bitowego (mieszczą się dwa różne) lub Jako nieulotna pamięć aplikacji. AGH, WFiIS, IS, st.i, HDL 23

Konfiguracja Spartan a-3an Układ nadzorujący konfigurację składa się z: procesora pakietów, który steruje przepływem danych przez interfejs do odpowiedniego rejestru, zbioru 29 rejestrów, które sterują wszystkimi innymi aspektami konfiguracji, sygnałów globalnych, które są sterowane przez zawartość rejestrów. Nagłówek pakietu typu 1: Typ pakietu Kod operacji Adres rejestru Liczba słów 0 0 1 x x 0 x x x x x x x x x x Kod operacji 0 0 NOP Funkcja Po tym nagłówku następuje określona przez 5 najmniej znaczących bitów liczba słów 16 bitowych. 0 1 Read 1 0 Write 1 1 Reserved AGH, WFiIS, IS, st.i, HDL 24

Konfiguracja Spartan a-3an Nagłówek pakietu typu 2: Typ pakietu Kod operacji Adres rejestru Liczba słów 0 1 0 x x 0 x x x x x R R R R R 0 0 0 0 x x x x x x x x x x x x x x x x x x x x x x x x x x x x Po tym nagłówku następuje określona przez 28 bitów dwóch słów 16-bitowych liczba słów 16 bitowych. AGH, WFiIS, IS, st.i, HDL 25

Konfiguracja Spartan a-3an Opis niektórych rejestrów konfiguracyjnych: CRC Cyclic Redundant Check Sprawdzenie poprawności transmisji. CMD IDCODE FAR FDRI COR Command Register Device ID register Frame Address Register Służy do wygenerowania sygnałów globalnych i wykonania czynności konfiguracji. Komenda z tego rejestru jest wykonywana przy każdej modyfikacji rejestru FAR. Dla Spartana-3AN jest 16 komend. 32-bitowe słowo specyficzne dla każdego układu. Jego porównanie z zapisanym w hardwarze identyfikatorem układu w celu ustalenia czy strumień przygotowano dla właściwego układu. Zawiera adres początkowego bloku i kolumny dla następnej konfiguracyjnej danej. Zwykle strumień bitowy typu pełnego zaczyna sie od adresu 0 i jest inkrementowany az do końcowej wartości. Frame Data Register, Input Rejestr przesuwny do zapisu słów tworzących ramkę. Configuration Option Register AGH, WFiIS, IS, st.i, HDL 26

Sekwencja czasowa: 1 2 3 4 5 6 7 8 Budzenie z resetu Czyszczenie pamięci konfiguracji Setup Próbkowanie pinów sterujących M[2:0] i VS[2:0] Synchronizacja Sprawdzenie ID Ładowanie konfiguracji Ładowanie strumienia bitowego Sprawdzenie CRC Sekwencja startowa AGH, WFiIS, IS, st.i, HDL 27

Strumień bitowy konfiguracji Część kometarzowa głównie ASCII, zawierająca nazwę pliku, datę utworzenia, oznaczenie modelu układu i inne. Słowo ślepe Słowo synchronizacji Seria pakietów składających się z nagłówka i odpowiadjącej mu wartości, które zapisywane są do rejestrów konfiguracyjnych sprzętu konfigurującego układ. Nagłówek określa: Typ operacji do wykonania na rejestrze konfiguracyjnym (zwykle null lub write), Adres rejestru do zapisania (5 bitów), Liczbę następujących po nim słów danych do wpisania do tego rejestru. Początkowe wpisy do rejestrów Pakiety typu 1 są najbardziej powszechne. Pakiety typu 2 są używane tylko gdy pole liczby słów danych w nagłówku typu 1 jest zbyt małe. Nie zawiera on pola adresu, które jest znany z poprzedzającego go nagłówka typu 1, aby powiększyć pole liczby słów danych. Komentarz 0xFFFFFFFF 0xAA995566 Nagłóweg typu 1 Ładunek Nagłóweg typu 1 Ładunek AGH, WFiIS, IS, st.i, HDL 28... Nagłóweg typu 1 Ładunek Nagłóweg typu 1 Ładunek Nagłóweg typu 1 Nagłóweg typu 2 Słowo konfiguracyjne Słowo konfiguracyjne Słowo konfiguracyjne...

Strumień bitowy konfiguracji... Kolejna seria pakietów zapisujących rejestry konfiguracyjne sprzętu konfigurującego układ oraz wysłanie komend startowych. Końcowe wpisy do rejestrów Słowo konfiguracyjne Słowo konfiguracyjne Słowo konfiguracyjne Nagłóweg typu 1 Ładunek Nagłóweg typu 1 Ładunek Nagłóweg typu 1 Ładunek AGH, WFiIS, IS, st.i, HDL 29

Blok wejścia/wyjścia IOB Spartan-3AN model XC3S50AN XC3S200AN XC3S400AN XC3S700AN XC3S1400AN Liczba IOB 108 195 311 372 502 Bloki I/O Spartan-3AN wspierają następujące stanadrdy sygnałowe asymetryczne (single-ended): 3.3V low-voltage TTL (LVTTL), Low-voltage CMOS (LVCMOS) z zasilaniem 3.3V, 2.5V, 1.8V, 1.5V, lub 1.2V, 3.3V PCI (Peripheral Component Interface) o częstotliwości 33 MHz or 66 MHz, HSTL (High-Speed Transceiver Logic) I, II, i III z zasilaniem 1.5V i 1.8V, zwykle używany do współpracy z pamięciami, SSTL (Stub Series Terminated Logic) I i II z zasilaniem 1.8V, 2.5V, i 3.3V, zwykle używany do współpracy z pamięciami. AGH, WFiIS, IS, st.i, HDL 30

Blok wejścia/wyjścia IOB Spartan-3AN Bloki I/O Spartan-3AN wspierają następujące stanadrdy sygnałowe symetryczne (differential): LVDS (Low Voltage Differential Signal), mini-lvds, RSDS (Reduced Swing Differential Signaling), i PPDS (Point-to-Point Differential Signaling) I/O na 2.5V lub 3.3V, BLVDS (Bus Low Voltage Differential Signal) I/O na 2.5V, TMDS (Transition Minimized Differential Signaling) I/O na 3.3V, używany przez DVI i HDMI, Różnicowe odmiany HSTL (High-Speed Transceiver Logic) i SSTL (Stub Series Terminated Logic) I/O, LVPECL (Low Voltage Positive Emitter Coupled Logic) wejścia na 2.5V lub 3.3V. AGH, WFiIS, IS, st.i, HDL 31

Różnicowe (differential) standardy sygnałów wymagają dwóch linii sygnałowych dla przenoszenia jednego bitu. Pozwala to na osiągnięcie wysokiej odporności na zkłócenia w stosunku do sygnałów przesyłanych asymetrycznie. Dla LVPECL amplituda logiczna napięcia (voltage swing) pomiędzy dwiema liniami sygnałowymi wynosi około 850 mv. Wymaga użycia rezystora kończącego linię przesyłową (resistor termination). AGH, WFiIS, IS, st.i, HDL 32

Dla LVDS amplituda logiczna napięcia pomiędzy dwiema liniami sygnałowymi wynosi około 350 mv. LVDS wymaga użycia rezystora kończącego linię przesyłową. BLVDS (Bus LVDS) jest wersją standardu przystosowaną do formowania dwukierunkowych magistral między wieloma urządzeniami. Wymagane są zewnętrzne rezytory kończące. LVDS Extended (Extended Mode LVDS) dostarcza wyższy prąd wyjściowy i amplitudę logiczną (350-750 mv), umożliwiając przesył kablem na większe odległości. AGH, WFiIS, IS, st.i, HDL 33

Konfiguracja standardu sygnałowego Określenie standardu sygnałów wejścia/wyjścia odbywa się poprzez odpowiednie ustawienie wartości atrybutu IOSTANDARD. Może on być określony: na węźle lub sygnale dołączonym do padu. Wtedy IOSTANDARD jest dołączony do komórki pierwotnej IOB. do elementu projektu i wtedy stosuje się do wszystkich elementów w hierarchii, do których może być zastosowany. Metoda 1: W kodzie Verilog-a IOSTANDARD można określić za pomocą atrybutu syntezy: //synthesis attribute iostandard [of] {modname insname} [is] iostandard_name; Metoda 2: Z wykorzystaniem pliku ograniczeń użytkownika User Constraints File (UCF): NET pad_net_name IOSTANDARD=iostandard_name; Lub na konkretyzacji elementu I/O: INST instance_name IOSTANDARD=iostandard_name; AGH, WFiIS, IS, st.i, HDL 34

W standardach LVTTL i LVCMOS dostępne jest niezależne progamowanie nachylenia zbocza sygnału (slew rate) i siły sterowania sygnału (drive strength). Wykonuje się to za pomocą opcji DRIVE i SLEW do atrybutu IOSTANADRD. Przykład: NET pad_net_name IOSTANDARD=LVCMOS15 SLEW=SLOW DRIVE=4 Wartości domyślne: Konfiguracja za pomocą UCF NET pad_net_name IOSTANDARD=LVCMOS25 SLEW=SLOW DRIVE=12 Dostępne wartości: SLEW FAST SLOW QUIETIO DRIVE 2 4 8 12 16 24 Używaj najmniejszego nachylenia zboczy i najmniejszego prądu wyjściowego, które spełniają wymagania projektu. Zwróć uwagę, że dla rodziny Extended Spartan-3A, 16 ma prądu wyjścia daje większą szybkość niż 24 ma z ustawieniem SLOW dla opcji SLEW. AGH, WFiIS, IS, st.i, HDL 35

Architektura IOB Spartan-3AN T T1 D Q TFF1 Blok IOB posiada trzy możliwe drogi sygnału: T2 D Q DDR Wejściowa przenosi dane z padu PAD, poprzez element programowanego opóźnienia DL bezpośrednio do wnętrza układu I lub poprzez parę przerzutników IFF1 i IFF2 na linie IQ1 i IQ2. Wyjściowa - przenosi dane z linii O1 i O2 z wnętrza układu poprzez multiplekser i bufor trój-stanowy bezpośrednio do padu PAD lub poprzez parę przerzutników OFF1 i OFF2. O1 O2 TFF1 D Q OFF1 D Q OFF1 DDR Trójstanowa Wyjściowa IO Pin PAD Trój-stanowa służy do określenia kiedy bufor wyjściowy jest w stanie wysokiej impedancji. Linie T, T1 i T2 niosą dane z wnętrza układu i bezpośrednio lub poprzez multiplekser lub dodatkowo przez parę przerzutników trafiają na wejście sterujące bufora. I IQ1 IQ2 Q D IFF1 Q D IFF1 DL DL Wejściowa LV SE Diff V ref Pin PAD IO Pin Sąsiedniego IOB PAD AGH, WFiIS, IS, st.i, HDL 36

Blok wejścia/wyjścia IOB Spartan-3AN do wnętrza Wejście o podwójnej prędkości danych DDR Transmisja Double-Data-Rate (DDR) to technika synchronizacji sygnałów do obydwu narastającegi i opadajacego zbocza sygnału zegarowego. Każda z trzech dróg sygnałowych w bloku IOB jest zdolna do wykonywania operacji DDR, gdyz każda z nich zawiera dwa przerzutniki. Para przerzutników stanowi wejściowy rejestr. Jeden przerzutnik D1 jest taktowany narastającym zboczem zegara ICLK1 i drugi przerzutnik D2 jest taktowany narastającym zboczem zegara ICLK2. Zegary są względem siebie przesunięte o pół okresu tak, że zbocze narastające ICLK2 przypada na chwilę opadającego zbocza ICLK1. Do wygenerowania odpowiednich zegarów słóży blok DCM. Następnie dane dwiema liniami trafiają do wnętrza układu gdzie w pewnym momencie muszą zostać wprowadzone w jedną domenę zegarową, którą zwykle jest zegar ICLK1. Operacja ta jest trudna przy dużych częstotliwościach ponieważ dostępny czas stanowi tylko połowę okresu zegara (przy wypełnienu 50%). AGH, WFiIS, IS, st.i, HDL 37

Blok wejścia/wyjścia IOB Spartan-3AN Wyjście o podwójnej prędkości danych DDR z wnętrza Para przerzutników stanowi wyjściowy rejestr. Jeden przerzutnik D1 jest taktowany narastającym zboczem zegara ICLK1 i drugi przerzutnik D2 jest taktowany narastającym zboczem zegara ICLK2. Po wyjściu z rejestru te dwa bity danych są multipleksowane przez multiplekser DDR i przekazywane na pad wyjściowy. Wewnątrz układu bity danych wędrujące linią D2 muszą być przesynchronizowane z domeny podstawowej, którą zwykle jest OCKL1 do domeny zegara OCLK2. Robi się to za pomocą przerzutników wewnątrz SLICE. Przy wysokich częstotliwościach położenie SLICE-ów wykonujących ta operację jest krytyczne ponieważ dostępny czas stanowi tylko połowę okresu zegara (przy wypełnienu 50%). AGH, WFiIS, IS, st.i, HDL 38

Obudowa FG484 2,6 mm 30 o 0,5 mm 1,0 mm 0,6 mm 21 mm 23 mm Liczba pinów: 22 kolumny 22 rzędy = 484 pinów AGH, WFiIS, IS, st.i, HDL 39

INPUT VREF Piny ogólnego przeznaczenia IO, które mogą być parowane w różnicowe Piny ogólnego przeznaczenia ale wyłącznie wejściowe INPUT Normalne piny IO lub INPUT, ale mogą dostarczać napięć referncyjnych w niektórych trybach nieróżniciwych (wtedy muszą być zwarte w obrębie jednego banku) Normalne piny IO ale mogą mieć drugą funkcję w czasie konfiguracji Normalne piny IO albo specjalne wejścia zegarowe po 4 na każdy bank z czego 8 taktuje prawą cześć układu, a 8 lewą. Dedykowane piny do konfiguracji układu Nadzór modu oszczędzania energii JTAG (Joint Test Action Group) to nazwa standardu IEEE 1149.1 definiującego protokół używany do testowania połączeń w układach cyfrowych lub ich programowania. Cztery dedykowane piny do obsługi interfejsu JTAG Uziemienia. Wszystkie muszą być połączone. Zasilanie pomocnicze 2,5 lub 3,3 V. Wszystkie muszą być połączone. Zasilanie buforów wyjściowych niezależne dla każdeho banku IO (6 linii). Możliwe wartości: 3.3V, 3.0V, 2.5V, 1.8V, 1.5V, or 1.2V Zasilanie rdzenia układu 1,2 V. Wszystkie muszą być połączone. AGH, WFiIS, IS, st.i, HDL 40

Bank 3 92 IO różnicowych, 2 IO nieróżnicowych (w tym 2 napięć referencyjnych) 6 zasilań IO Bank 1 94 IO różnicowych 6 zasilań IO Bank 0 36 IO różnicowych, 20 IO nieróżnicowych (w tym 6 napięć referencyjnych) 6 zasilań IO Bank Diff 2 Diff SE razem Vcco 0 36 72 20 92 6 1 47 94 0 94 6 2 36 72 2 74 6 3 46 92 20 112 6 razem 165 372 24 Bank 2 36 IO różnicowych, 20 IO nieróżnicowych (w tym 6 napięć referencyjnych) 6 zasilań IO AGH, WFiIS, IS, st.i, HDL 41

Sygnały zegarowe Spartan-3AN Globalne zasoby zegarowe składają się z trzech elementów: Pady wejściowe GCLK Global Clock, Bufor-multiplekser BUFGMUX globalnego zegara, i Prowadzenie (routing) globalnego zegara Ścieżka zegara pierwotnego zaznaczona jest pogrubioną linią od padu GCLK sterującego centralny bufor-multiplekser BUFGMUX, który poprzez sieć połączeń (global routing) dostarcza zegar do wejść przerzutników i innych elementów wymagających zegara. Pady GCLK mogą być użyte jako wejście/wyjście ogólnego przeznaczenia. Blok DCM (Digital Clock Manager) może być wstawiony w ścieżkę pomiędzy pad a bufor w celu obróbki zegara. DCM może także uformować sygnał zegarowy z zasobów ogólnego przeznaczenia. Bufor BUFGMUX możę multipleksować między dwoma źródłami zegara lub może pracować jako zwykły bufor zegara. Tylko ten bufor może sterować zasoby prowadzenia zegara (global routing). Tylko tą drogą wysterowane zostają wejścia zegarowe. Jednak, wejścia zegarowe przerzutników mogą także być sterowane z sieci ogólnego przeznaczenia (general-purpose routing), chociaż takie postępowanie nie jest rekomendowane ze względu na wyższe rozbieżności dostarczania zboczy zegara (skew). AGH, WFiIS, IS, st.i, HDL 42

Układy zarządzania zegarem Układy zarządzania zegarem DCM (Digital Clock Managers) służą do generacji sygnałów zegarowych odpowiednich dla projektowanego urządzenia, szczególnie dla zastosowań wysokoczęstotliwościowych: Eliminuje różnice czasów przybycia zegara (clock ckew) wewnątrz układu i do zewnętrznych elementów w celu poprawy paramatrów całego projektowanego układu i eliminacji opóźnień rozprowadzania zegara, Wytwarza przesunięcia fazowe zegara o stały procent okresu lub o wartość wzrastającą, Mnoży lub dzieli częstotliwość przychodzącego zegara lub syntezuje zupełnie nowy sygnał zegarowy stosując obie te operacje, Kondycjonuje zegar zapewniając czysty zegar z wypełnieniem 50%, Buforuje, przekazuje lub wytawrza odbicie lustrzane, konwertuje standardy sygnałowe zegara, a także likwiduje różnice w czasach przybycia zegara (deskew), Powyższe operacje może wykonywać równocześnie. AGH, WFiIS, IS, st.i, HDL 43

Rozmycie czasów przybycia zegara Clock latency Clock skew Czas martwy zegara Rozmycie czasów przybycia zegara Całkowity czas jaki zabiera przebycie sygnału zegarowego od źródła (definicji) do punktu końcowego (zegarowe wejście przerzutnika). Różnica w czasie przybycia sygnału zegara do punktów końcowych drzewa wynikająca z różnych dróg jakie pokonuje sygnał zegarowy na drodze do różnych przerzutników. Skew pogarsza pracę układu synchronicznego poprzez wzrost czasu przygotowania (setup time) i wydłużenie opóźnienia między zegarem i wyjściem (clock-to-output). Razem wydłuża to potrzebny czas okresu zegara. Podobnie skew może zwiększyć wymagany czas trzymania (hold time) na niektórych przerzutnikach, czyli prowadzić do pogorszenie się niezawodności układu. Urządzenie zewnętrzne na płycie AGH, WFiIS, IS, st.i, HDL 44

Rozmycie czasów przybycia zegara Urządzenie zewnętrzne na płycie Idealne zsynchronizowanie zegara Blok DCM przewiduje przyszłość? Wyprzedzone zegary eliminują rozmycie Okres T Opóźnienie przebiegu o stałej częstotliwości wygląda jakby przwidywanie przyszłośći! AGH, WFiIS, IS, st.i, HDL 45

Układ zarządzania zegarem Składa się z czterech elementów: Delay-Locked Loop (DLL) pętla opóźnieniowa umożliwiająca eliminację skew zegara, Digital Frequency Synthesizer (DFS) generowanie częstotliwości w oparciu o dwa atrybuty, Phase Shift (PS) statyczne i dynamiczne przesunięcie fazowe z precyząa 15-35ps, Status Logic sygnalizuje stan pracy DCM poprzez sygnały LOCKED i STATUS[7:0]. AGH, WFiIS, IS, st.i, HDL 46

Delay-Locked Loop CLKIN Linia opóźniająca o zmiennym opóźnieniu CLKOUT Sieć rozprowadzania zegara Global Routing CLKFB Sterowanie Układ sterowania próbkuje zegar wchodzący CLKIN i zegar sprzężenia zwrotmego CLKFB i w oparciu o ich czasowy odstęp odpowiednio dostraja linię opóźniającą. Linia opóźniająca jest układem cyfrowym złożonym z szeregowo połączonych elementów opóźniających. DLL wstawia opóźnienia między zegar wejściowy i ze sprzężenia zwrotnego, aż ich zbocza narastające zsynchronizują się, faktycznie opóźniając CLKFB o cały okres. Oznacza to wyzerowanie opóźnienia (fazy), czyli stan synchronizacji pętli (lock). AGH, WFiIS, IS, st.i, HDL 47

Delay-Locked Loop AGH, WFiIS, IS, st.i, HDL 48

CLKDV_DIVIDE CLKFX_MULTIPLY CLKFX_DIVIDE Atrybuty DCM Określa częstotliwość na wyjściu CLKDV. Dozwolone wartości dla CLKDV_DIVIDE: 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 9, 10, 11, 12, 13, 14, 15, 16. Wartości nie całkowite wydłużają czas synchronizacji. fclkin fclkdv CLKDV_DIVIDE Określają współczynnik podziału i/lub mnożenia częstotliwości na wyjściach CLKFX i CLKFX180. Dozwolone wartości to liczby całkowite: dla CLKFX_MULTIPLY od 2 do 32 (domyślnie 4), a dla CLKFX_DIVIDE od 1 do 32 (domyślnie 1). f CLKFX f CLKIN CLKFX_MULTIPLY CLKFX_DIVIDE Przykład: aby utworzyć zegar 155 MHz mając na wejściu przebieg o częstotliwości 75 MHz potrzebny jest współczynnik 31/15. Nie oznacza to mnożenia przez 31! AGH, WFiIS, IS, st.i, HDL 49

Atrybuty DCM CLKIN_PERIOD 0.0 Okres zegara na wejściu CLKIN_DIVIDE_BY_2 FALSE CLKOUT_PHASE_SHIFT NONE PHASE_SHIFT 0 CLK_FEEDBACK DESKEW_ADJUST 1X Aktywacja dodatkowego dzielenia przez 2 sygnału zegara na wejściu TRUE / FALSE Określenie trybu przesunięcia fazy. Wartości: NONE / FIXED / VARIABLE. W wersji VARIABLE wartość może być zmieniana przez aplikację przy pomocy wejść sterujących PSEN, PSCLK, PSINCDEC, PSDONE. Wartość stałego przesunięcia (FIXED) fazy wyrażona w 1/256 okresu. Wartości: od -255 do 255 Określa częstotliwość wyjściową względem wejściowej. Wartości: NONE (gdy tylko wyjścia CLKFX są używane), 1X (zegar wykorzystuje wyjście CLK0), 2X (podwojona częstotliwość wejściowa jest dostępna na wyjściach CLK2X. SYSTEM_ Wartości: SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS lub SYNCHRONOUS wartość od 0 do 15 DLL_FREQUENCY_MODE LOW HIGH or LOW frequency mode for DLL DUTY_CYCLE_CORRECTION FALSE Korekcja współczynnika wypełnienia. Wartości: TRUE / FALSE STARTUP_WAIT FALSE Konfiguracja czeka na sygnał LOCKED zanim uaktywni DONE AGH, WFiIS, IS, st.i, HDL 50

Atrybuty DCM DCM_SP #(.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,6.5,7.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 integer from 1 to 32.CLKFX_MULTIPLY(4), // Can be any integer from 2 to 32.CLKIN_DIVIDE_BY_2("FALSE"), // TRUE/FALSE to enable CLKIN divide by two feature.clkin_period(0.0), // Specify period of input clock.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"), // SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or an integer from 0 to 15.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 ) DCM_SP_inst (.CLK0(CLK0), // 0 degree DCM CLK output.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 ); Dostęp do zasobów bibliotek z ISE: Project New Source Wybrać IP Coregen & Architecture Wizard i podać nazwę pliku.xaw Z listy wybrać potrzebny element (w tym wypadku single DCM_SP). Sposób alternatywny: Edit Language Templates Rozwinąć drzewo Verilog i kolejne poziomy aby znaleźć właściwy element (Device Primiyive Instantiation Spartan-3A Clock Component DCM_SP) W sąsiednim oknie dostępny będzie kod instansu wraz z obszernym opisem parametrów i portów Copy and Paste do swojego pliku *.v. AGH, WFiIS, IS, st.i, HDL 51

Biblioteki Xilinx a Xilinx dostarcza następujące biblioteki symulacyjne dla symulacji komórek pierwotnych i rdzeni: UNISIM funkcjonalne symulacje komórek pierwotnych UniMacro funkcjonalne symulacje makr XilinxCoreLib funkcjonalne symulacje rdzeni Xilinx EDK behawioralne symulacje elementów IP Xilinx Embedded Development Kit EDK SIMPRIM czasowe symulacje komórek pierwotnych SmartModel/SecureIP funkcjonalne i czasowe symulacje Xilinx Hard-IP, takich jak PPC, PCIe, GT, and TEMAC IP. Spartan-3A and Spartan-3A DSP Libraries Guide for HDL Designs (UG613 v14.7, 2013) https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/spartan3a_hdl.pdf AGH, WFiIS, IS, st.i, HDL 52

Biblioteki Xilinx a Elementy pierwotne na CLB lub SLICE Slice/CLB Primitives 32 Rejestry i zatrzaski Registers/Latches 11 Rejestry przesuwne w oparciu o LUT Shift Register LUT 8 Funkcje arytmetyczne Arithmetic Functions 4 Elementy zegarowe Clock Components 6 Elementy konfiguracji i testowania Config/BSCAN Components 6 Elementy wejścia-wyjścia I/O Components 15 Pamięci rozproszona o dostępie swobodnym Distributed RAM 10 Pamięci blokowa o dostępie swobodnym Block RAM 29 Pamięci stałe ROM 5 RAZEM 94 AGH, WFiIS, IS, st.i, HDL 53

Biblioteki Xilinx a Elementy pierwotne na CLB lub SLICE BUFCF Fast Connect Buffer LUT1 1-Bit Look-Up Table with General Output LUT1_D 1-Bit Look-Up Table with Dual Output LUT1_L 1-Bit Look-Up Table with Local Output LUT2 2-Bit Look-Up Table with General Output LUT2_D 2-Bit Look-Up Table with Dual Output LUT2_L 2-Bit Look-Up Table with Local Output LUT3 3-Bit Look-Up Table with General Output LUT3_D 3-Bit Look-Up Table with Dual Output LUT3_L 3-Bit Look-Up Table with Local Output LUT4 4-Bit Look-Up-Table with General Output LUT4_D 4-Bit Look-Up Table with Dual Output LUT4_L 4-Bit Look-Up Table with Local Output AGH, WFiIS, IS, st.i, HDL 54

Biblioteki Xilinx a Elementy pierwotne na CLB lub SLICE c. d. MULT_AND MUXCY MUXCY_D MUXCY_L MUXF5 MUXF5_D MUXF5_L MUXF6 MUXF6_D MUXF6_L MUXF7 MUXF7_D MUXF7_L MUXF8 MUXF8_D MUXF8_L XORCY XORCY_D XORCY_L Bramk AND z przeznaczeniem do budowy szybkich multiplikatorów 2-to-1 Multiplexer for Carry Logic with General Output 2-to-1 Multiplexer for Carry Logic with Dual Output 2-to-1 Multiplexer for Carry Logic with Local Output 2-to-1 Look-Up Table Multiplexer with General Output 2-to-1 Look-Up Table Multiplexer with Dual Output 2-to-1 Look-Up Table Multiplexer with Local Output 2-to-1 Look-Up Table Multiplexer with General Output 2-to-1 Look-Up Table Multiplexer with Dual Output 2-to-1 Look-Up Table Multiplexer with Local Output 2-to-1 Look-Up Table Multiplexer with General Output 2-to-1 Look-Up Table Multiplexer with Dual Output 2-to-1 look-up table Multiplexer with Local Output 2-to-1 Look-Up Table Multiplexer with General Output 2-to-1 Look-Up Table Multiplexer with Dual Output 2-to-1 Look-Up Table Multiplexer with Local Output XOR for Carry Logic with General Output XOR for Carry Logic with Dual Output XOR for Carry Logic with Local Output AGH, WFiIS, IS, st.i, HDL 55

Biblioteki Xilinx a Rejestry i zatrzaski (11) FDCE FDCE_1 FDCPE FDCPE_1 FDRSE FDRSE_1 IDDR2 ODDR2 LDCE LDCPE LDPE Przerzutnik D aktywny zboczem narastającym z zezwoleniem zegara i asynchronicznym kasowaniem Przerzutnik D aktywny zboczem opadającym z zezwoleniem zegara i asynchronicznym kasowaniem Przerzutnik D aktywny zboczem narastającym z zezwoleniem zegara i asynchronicznym kasowaniem i ustawianiem Przerzutnik D aktywny zboczem opadającym z zezwoleniem zegara i asynchronicznym kasowaniem i ustawianiem Przerzutnik D aktywny zboczem narastającym z zezwoleniem zegara i synchronicznym kasowaniem i ustawianiem Przerzutnik D aktywny zboczem opadającym z zezwoleniem zegara i synchronicznym kasowaniem i ustawianiem Wejściowy przerzutnik D typu DDR z opcjami: układanie danych, zezwolenie zegara, synch/asynch ustawanie/kasowanie Wyjściowy przerzutnik D typu DDR z opcjami: układanie danych, zezwolenie zegara, synch/asynch ustawanie/kasowanie Zatrzask przeźroczysty z zezwoleniem bramki i asynchronicznym kasowaniem Zatrzask przeźroczysty z zezwoleniem bramki i asynchronicznym kasowaniem i ustawianiem Zatrzask przeźroczysty z zezwoleniem bramki i asynchronicznym ustawianiem DDR Double Data Rate AGH, WFiIS, IS, st.i, HDL 56

Biblioteki Xilinx a Rejestry przesuwne w oparciu o LUT SRL16 16-Bit Shift Register Look-Up Table (LUT) SRL16_1 16-Bit Shift Register Look-Up Table (LUT) with Negative-Edge Clock SRL16E 16-Bit Shift Register Look-Up Table (LUT) with Clock Enable SRL16E_1 16-Bit Shift Register Look-Up Table (LUT) with Negative-Edge Clock and Clock Enable SRLC16 16-Bit Shift Register Look-Up Table (LUT) with Carry SRLC16_1 16-Bit Shift Register Look-Up Table (LUT) with Carry and Negative-Edge Clock SRLC16E 16-Bit Shift Register Look-Up Table (LUT) with Carry and Clock Enable SRLC16E_1 16-Bit Shift Register Look-Up Table (LUT) with Carry, Negative-Edge Clock, Clock Enable AGH, WFiIS, IS, st.i, HDL 57

Biblioteki Xilinx a Funkcje arytmetyczne (4) DSP48A MULT18X18 MULT18X18S MULT18X18SIO Wielofunkcyjny, kaskadowalny, 48-bitowy blok arytmetyczny Multiplikator 18 18 ze znakiem Multiplikator 18 18 ze znakiem - rejestrowany Multiplikator 18 18 ze znakiem, kaskadowalny z opcjonalnymi rejestrami na wejściu i wyjściu, zezwalaniem zegara i synchronicznym kasowaniem AGH, WFiIS, IS, st.i, HDL 58

Biblioteki Xilinx a Elementy zegarowe (6) BUFG Globalny bufor zegara BUFGCE Globalny bufor zegara z zezwalaniem zegara BUFGCE_1 Globalny bufor zegara z zezwalaniem zegara; wyjście w stanie wysokim gdy zezwolenie niskie BUFGMUX Globalny bufor-multiplekser zegara BUFGMUX_1 Globalny bufor-multiplekser zegara; wyjście w stanie wysokim gdy zbocze jest na adresie DCM_SP Cyfrowy blok zarządzania zegarem DCM (Digital Clock Manager) AGH, WFiIS, IS, st.i, HDL 59

Biblioteki Xilinx a Elementy konfiguracji i testowania (BSCAN) (6) BSCAN_SPARTAN3A CAPTURE_SPARTAN3A DNA_PORT ICAP_SPARTAN3A SPI_ACCESS STARTUP_SPARTAN3A Logika dostępowa do rejestrów skanowania JTAG (Joint Test Action Group) Odczyt strumienia bitowego zawierającego stan rejestrów chwytających Port dostępu do identyfikatora DNA układu FPGA Port dostępu do konfiguracji FPGA Port dostępu do wewnętrznej pamięci stałej ISF (In-System Flash) Interfejs do sygnałów GSR (Global Set/Reset), GTS (Global TriState) i modyfikacji zegara startowego DNA to unikalny identyfikator urządzenia FPGA. Jest nieulotny, na stałe zaprogramowany w FPGA i jest niezmienny, dzięki czemu jest odporny na manipulacje Joint Test Action Group (JTAG) jest powszechnie stosowaną nazwą na intefejs początkowo przeznaczony do testowania obwodów drukowanych przy użycia skanowania rejestrów. Interfejs ten określony został normą IEEE 1149.1 Standard Test Access Port and Boundary- Scan Architecture (BSAN). AGH, WFiIS, IS, st.i, HDL 60

Elementy wejścia-wyjścia (15) Biblioteki Xilinx a IBUF IBUF_DLY_ADJ IBUFDS IBUFDS_DLY_ADJ IBUFG IBUFGDS IOBUF IOBUFDS KEEPER OBUF OBUFDS OBUFT OBUFTDS PULLDOWN PULLUP Bufor wejściowy Bufor wejściowy o dynamicznie dostrajanym opóźnieniu wejściowym Różnicowy bufor wejściowy Różnicowy bufor wejściowy o dynamicznie dostrajanym opóźnieniu wejściowym Bufor wejściowy przeznaczony dla sygnału zegarowego Różnicowy bufor wejściowy zegara z opcjonalnym opóźnieniem Bufor dwukierunkowy Trójstanowy, różnicowy bufor dwukierunkowy z wejściem zezwalającym aktywnym stanem niskim Element, który zachowuje wartość połączonej sieci Bufor wyjściowy Różnicowy bufor wyjściowy Trójstanowy bufor wyjściowy z wejściem zezwalającym aktywnym stanem niskim Różnicowy trójstanowy bufor wyjściowy z wejściem zezwalającym aktywnym stanem niskim Rezystor do masy GND dla padów wejściowych, otwartego drenu i trójstanowych wyjść. Rezystor do zasilania VCC dla padów wejściowych, otwartego drenu i trójstanowych wyjść. AGH, WFiIS, IS, st.i, HDL 61

Biblioteki Xilinx a Pamięci rozproszone o dostępie swobodnym RAM (4 z 10) RAM16X1D RAM16X1S RAM32X1S RAM64X1S Synchroniczna pamięć RAM o dwóch portach; 16-słów 1-bitowych Synchroniczna pamięć RAM; 16-słów 1-bitowych Synchroniczna pamięć RAM; 32-słów 1-bitowych Synchroniczna pamięć RAM; 64-słów 1-bitowych AGH, WFiIS, IS, st.i, HDL 62

Biblioteki Xilinx a Pamięci blokowe o dostępie swobodnym RAM (9 z 29) RAMB16BWE RAMB16BWE_S18 RAMB16BWE_S18_S18 RAMB16BWE_S18_S9 RAMB16BWE_S36 RAMB16BWE_S36_S18 RAMB16BWE_S36_S36 RAMB16BWE_S36_S9 RAMB16BWER Synchroniczna pamięć RAM o dwóch portach; 16k-słów 1-bitowych i 2k-bitów parzystości; konfigurowalna dla słów 1-, 2-, 4-, 9-, 18-, 36-bitowych Synchroniczna pamięć RAM; 16k-słów 1-bitowych i 2k-bitów parzystości; port 18-bitowy Synchroniczna pamięć RAM o dwóch portach; 16k-słów 1-bitowych i 2k-bitów parzystości; porty 18-bitowe Synchroniczna pamięć RAM o dwóch portach; 16k-słów 1-bitowych i 2k-bitów parzystości; porty 18-bitowy i 9-bitowy Synchroniczna pamięć RAM; 512-słów 32-bitowych i 4-bity parzystości Synchroniczna pamięć RAM o dwóch portach; 16k-słów 1-bitowych i 2k-bitów parzystości; porty 36-bitowy i 18-bitowy Synchroniczna pamięć RAM o dwóch portach; 16k-słów 1-bitowych i 2k-bitów parzystości; porty 36-bitowe Synchroniczna pamięć RAM o dwóch portach; 16k-słów 1-bitowych i 2k-bitów parzystości; porty 36-bitowy i 9-bitowy Synchroniczna pamięć RAM o dwóch portach; 16k-słów 1-bitowych i 2k-bitów parzystości z opcjonalnym rejestrem wyjściowym AGH, WFiIS, IS, st.i, HDL 63

Biblioteki Xilinx a Pamięci stałe ROM (5) ROM16X1 Pamięć stała ROM 16-słów 1-bitowych ROM32X1 Pamięć stała ROM 16-słów 1-bitowych ROM64X1 Pamięć stała ROM 16-słów 1-bitowych ROM128X1 Pamięć stała ROM 16-słów 1-bitowych ROM256X1 Pamięć stała ROM 16-słów 1-bitowych AGH, WFiIS, IS, st.i, HDL 64

Biblioteki Xilinx a Biblioteka czasowa SIMPRIM Biblioteka funkcjonalna UNISIM `timescale 1 ps / 1 ps module BUF (O, I); output O; input I; buf B1 (O, I); endmodule `timescale 1 ps/1 ps module X_BUF (O, I); parameter LOC = "UNPLACED"; output O; input I; buf (O, I); specify (I => O) = (0:0:0, 0:0:0); specparam PATHPULSE$ = 0; endspecify endmodule AGH, WFiIS, IS, st.i, HDL 65