POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Koło Naukowe Układów Cyfrowych
Układy cyfrowe (dlaczego?) Idea projektowania w FPGA Systemy SoPC
Układy cyfrowe (dlaczego?) Idea projektowania w FPGA Systemy SoPC
Po co się ich uczymy? Wyobrażacie sobie dzisiejszy świat bez układów cyfrowych? Mikrokontrolery, procesory podstawa całej dzisiejszej elektroniki!
Dyskretna reprezentacja sygnałów Sygnały reprezentowane cyfrowo są bardzo odporne na zakłócenia (informacja to wysokie lub niskie poziomy sygnałów) Przechowywanie informacji w cyfrowych systemach jest proste
Łatwiej i wydajniej jest skonstruować urządzenie elektroniczne, które przełącza się na jeden z wielu znanych stanów, niż urządzenie dokładnie odtwarzające ciągłe zakresy wartości Sterowane komputerowo cyfrowe systemy mogą być kontrolowane za pomocą oprogramowania, co pozwala na dodawanie nowych funkcji bez potrzeby ingerencji w hardware (w układach analogowych niemożliwe) PROGRAMOWALNE!
Układy cyfrowe (dlaczego?) Idea projektowania w FPGA Systemy SoPC
Programowalne połączenia Programowalne bloki logiczne Programowalne porty
Projektowanie scalonego układu cyfrowego dawniej: Żmudny i drogi proces projektowania Wymagane zdefiniowanie wszystkich założeń przed rozpoczęciem procesu projektowania Wymagana duża pewność na poziomie projektowania (przeróbki są kosztowne) Małe możliwości przetestowania układu Długi okres po między zleceniem, a uzyskaniem końcowego produktu
Efekt: Powolny rozwój Trzymanie się znanych rozwiązań Mało kogo było stać na projektowanie własnych systemów Rozwiązanie?
Programowalna logika Raz zaprojektowany układ do uniwersalnych zastosowań Układ posiadający konfigurowalną pulę zasobów Konfigurowanie fizycznego układu w zależności od wymagań Umożliwia każdemu zaprojektowanie dowolnego systemu Szybki rozwój technologii programowalnej logiki PLA (Programmable Logic Array) PAL (Programmable Array Logic) GAL (Generic Array Logic) CPLD (Complex Programmable Logic Device) FPGA
Field Programmable Gate Array (bezpośrednio programowalna macierz bramek) Układ scalony Wstępnie nie jest ograniczony do jakiejkolwiek funkcji sprzętu Może zostać FIZYCZNIE zaprogramowany i skonfigurowany przez inżyniera systemów wbudowanych po wyprodukowaniu (WIELOKROTNIE) Programowane i konfigurowane z wykorzystaniem komputerowego języka opisu sprzętu HDL
Projektowanie z wykorzystaniem FPGA: Niska cena procesu projektowania Proces projektowania może się rozpocząć jeszcze przed dokładnym zdefiniowaniem wymagań Możliwe wprowadzenie poprawek i zmian na bieżąco Ogromne możliwości testowania na każdym etapie projektu Czynnik time-to-market Narzędzie projektowe Emulacja układów ASIC (Application Specific Integrated Circuit)
Układy cyfrowe (dlaczego?) Idea projektowania w FPGA Systemy SoPC
Układ scalony zawierający kompletny dedykowany system elektroniczny układy cyfrowe, analogowe, cyfrowoanalogowe Zastosowanie: systemy wbudowane system komputerowy specjalnego przeznaczenia system taki stanowi integralną część obsługiwanego przez niego sprzętu Systemy wbudowane stosuje się wszędzie (= ogromny rynek zbytu) Źródło: System on a chip, WIKIPEDIA
System mikroprocesorowy implementowany w układach logicznych (np. FPGA) Bardziej wydajny sposób projektowania projektowanie przy pomocy języków opisu sprzętu (najważniejsze: VHDL, Verilog) rekonfigurowalność Źródło: Cypress Semiconductor dopasowanie architektury do wymagań (dowolna wewnętrzna architektura, dowolna mnogość modułów) szybkie i tanie wprowadzanie poprawek
MCU cena + łatwość montażu ++ łatwość programowania +++ FPGA MCU FPGA time-to-market +++ skalowalność +++ dowolność architektury +++ cykl eksploatacji +++ wiarygodność +++
Układy FPGA i budowane w nich systemy SoPC używane są: do zastosowań specjalistycznych, gdzie wymagana jest duża wydajność obliczeniowa lub przetwarzanie strumieniowe w projektach o nie do końca zdefiniowanych założeniach jako emulatory systemów SoC Największe rynki: motoryzacja, przetwarzanie danych, przemysł, wojsko, komunikacja, elektronika konsumencka, medycyna, miernictwo
Soft-procesor to zdefiniowany w języku opisu sprzętu model procesora, który można zsyntetyzować w programowalnej logice. Ze względu na specyfikę programowalnej logiki, soft-procesory nie osiągają takiej wydajności jak ich fizyczne pierwowzory jednakże właściwości FPGA pozwalają na użycie metod wielokrotnie zwiększających możliwości i wydajności soft-procesorów.
Komercyjne: Altera Nios II Xilinx MicroBlaze Open-source: OpenRISC 1200 LatticeMico32 LEON3
W języku opisu sprzętu można i są zdefiniowane wszelkiego rodzaju komponenty niezbędne do obsługi wszelkiego rodzaju peryferiów systemu SoPC Interfejsy komunikacyjne Kontrolery: pamięci, przetworników, wideo, silników/siłowników Liczniki itd.
Oprogramowanie: Quartus II Qsys (zastąpił narzędzie SoPC Builder): narzędzie do integracji systemu Nios II Embedded Design Suite: zintegrowane środowisko programistyczne do tworzenia oprogramowania na soft-procesory Nios II (Eclipse IDE) Pełna dokumentacja, szablony, przykłady, forum www.altera.com
Gotowe komponenty 32-bitowy procesor Nios II (w trzech wersjach) Protokoły interfejsu takie jak: Ethernet, RS-232, USB, PCI, SPI, JTAG, Kontrolery pamięci (SDRAM, SRAM, Flash) Pamięć On-chip Liczniki, DMA, PLL, porty I/O, VGA, Komponenty szyny Avalon (do realizacji specjalnych połączeń między komponentami) Własne komponenty Dedykowana logika Akceleratory (koprocesory)
32-bitowa architektura RISC (Reduced Instruction Set Computing) Trzy rdzenie soft-procesora Nios II NIOSII/e: Economical Core NIOSII/s: Standard Core NIOSII/f: Fast Core Możliwość rozbudowy o sprzętowe instrukcje użytkownika
Nios II/e Nios II/s Nios II/f Do 2 GB przestrzeni adresowej zewnętrznej Do 2 GB przestrzeni adresowej zewnętrznej Do 2 GB przestrzeni adresowej zewnętrznej (z MMU do 4GB) Moduł debug JTAG Moduł debug JTAG Moduł debug JTAG Do 256 instrukcji użytkownika Do 256 instrukcji użytkownika Do 256 instrukcji użytkownika Wolny, nie wymagana licencja --- --- Pamięć cache dla instrukcji Pięciopoziomowe potokowanie Statyczne przewidywanie rozgałęzień Sprzętowe mnożniki, dzielniki Oddzielna pamięć cache dla instrukcji i danych (do 64kB) Sześciopoziomowe potokowanie Dynamiczne przewidywanie rozgałęzień Jedno cyklowe sprzętowe mnożniki, operacje przesunięć bitowych Opcjonalnie MMU lub MPU
Dobre narzędzia Gotowe komponenty Programowanie procesora w C/C++ Wystarczy zgrać na układ i SoPC gotowy
Prawdziwy potencjał systemów SoPC kryje się w dedykowanej logice Tworzenie własnych niestandardowych rozwiązań Pełne zrównoleglenie operacji (trzeba wyjść poza sekwencyjny sposób myślenia) Zrównoleglenie operacji pozwala osiągnąć ogromną wydajność na teoretycznie wolniejszych układach Systemy wieloprocesorowe Koprocesory
Instrukcja Instrukcja Procesory wykonują operacje sekwencyjnie (co najwyżej potokowo) Pojedyncze operacje mogą wykonywać się w kilku taktach zegara Instrukcja Ograniczona wydajność Instrukcja
Instrukcja Funkcje sprzętowe (Custom Instructions) to logika wyspecyfikowana do realizowania konkretnego zadania Instrukcja Instrukcja Możliwe wykonywanie operacji w jednym cyklu Ograniczenia ze strony komunikacji (CPU<->CI) Instrukcja
Instrukcja Komponenty użytkownika (Custom Peripherals) to logika wyspecyfikowana do realizowania konkretnego zadania mogąca działać niezależnie od procesora Instrukcja Instrukcja Instrukcja Instrukcja Instrukcja Instrukcja Instrukcja Instrukcja Dowolna architektura Instrukcja Możliwość bezpośredniego komunikowania/zarządzania innymi peryferiami
Dziel i rządź - rozbijanie dużych projektów na mniejsze zadania upraszcza pisanie, debugowanie oraz zarządzanie kodem i całym projektem. Każdy procesor może dysponować własną pulą koprocesorów Problemy z zarządzaniem komponentami
Realizowane w ramach logiki procesora Rozszerzają zbiór funkcji procesora integracja funkcji bezpośrednio z jednostką arytmetycznologiczną (ALU) Komunikacja max 32-bitowa
Wyróżniamy dwa główne typy funkcji definiowanych przez użytkownika: Kombinacyjne Wielocyklowe Rozszerzone Z wewnętrznym plikiem rejestru
Największy wspólny dzielnik (implementacja programowa) Liczy w miarę szybko (oczywiście zależy od podanych liczb) Liczy NWD dwóch 32-bitowych liczb
Piszemy w HDL u funkcję użytkownika do obliczania NWD Możliwość liczenie 64-bitowych liczb Należy trzymać się specyfikacji podczas pisania funkcji użytkownika w tym przypadku rozszerzona funkcja użytkownika dataa[31..0] datab[31..0] result[31..0] n[7..0]
Proste dodawanie funkcji użytkownika do systemu Obsługa funkcji w programie po przez automatycznie generowane makra
Średni transfer Dla różnych par liczb po 1000 iteracji Realizacja Transfer[Mbit/s] NWD software 2,02 NWD funkcja użytkownika 13,03 (~6,5 x szybciej)
Realizacja funkcji skrótu Whirlpool Podane wartości średnie przesyłów
Duże systemy SoPC (np. w uniwersalnych systemach pomiarowych, komunikacyjnych lub multimediach) mogą wymagać oprócz wyspecjalizowanych komponentów sprzętowych, bogatego systemu sterującego systemem. Możliwość wgrania systemu operacyjnego zarządzającego wszystkimi komponentami systemu SoPC
Trendy w elektronice: Coraz większy nacisk na technologie mobilne Wymaga się aby urządzenia były jak najbardziej uniwersalne Wymagana duża wydajność urządzeń (ograniczenia szybkości układów; rozwiązaniem jest wielowątkowość) Platforma projektowa i testowa Time-to-market Technologie logiki programowalnej ciągle się rozwijają i tanieją Największe rynki: motoryzacja, przetwarzanie danych, przemysł, wojsko, komunikacja, elektronika konsumencka, medycyna, miernictwo
Koło Naukowe Układów Cyfrowych dr inż. Paweł Tomaszewicz, pokój 482 dr inż. Mariusz Rawski, pokój 481 http://demain.zpt.tele.pw.edu.pl/ http://nowy.demain.zpt.tele.pw.edu.pl/