Programowalne układy przetwarzania sygnałów i informacji technika cyfrowa w multimediach i kryptografii



Podobne dokumenty
ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Systemy na Chipie. Robert Czerwiński

Elementy cyfrowe i układy logiczne

Architektury akceleratorów kryptograficznych opartych o układy programowalne. Marcin Rogawski

METODY ZINTEGROWANEGO PROJEKTOWANIA SPRZĘTU I OPROGRAMOWANIA Z WYKORZYSTANIEM NOWOCZESNYCH UKŁADÓW PROGRAMOWALNYCH

Zagadnienia egzaminacyjne ELEKTRONIKA I TELEKOMUNIKACJA studia rozpoczynające się przed r.

Język opisu sprzętu VHDL

Temat: Pamięci. Programowalne struktury logiczne.

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

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

WPROWADZENIE Mikrosterownik mikrokontrolery

Katedra Mikroelektroniki i Technik Informatycznych

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

Opracował: Jan Front

Bezpieczeństwo kart elektronicznych

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

Elektronika i techniki mikroprocesorowe

Układy logiczne układy cyfrowe

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej. XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej

PRZEWODNIK PO PRZEDMIOCIE

Wykorzystanie układów FPGA w implementacji systemów bezpieczeństwa sieciowego typu Firewall

Wykład Mikroprocesory i kontrolery

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Metody optymalizacji soft-procesorów NIOS

Szerokopasmowy dostęp do Internetu Broadband Internet Access. dr inż. Stanisław Wszelak

2 Kryptografia: algorytmy symetryczne

LEKCJA TEMAT: Zasada działania komputera.

PROGRAMOWALNE STEROWNIKI LOGICZNE

Przykładowe pytania DSP 1

Budowa i zasada działania komputera. dr Artur Bartoszewski

PROGRAMMABLE DEVICES UKŁADY PROGRAMOWALNE

Cyfrowe układy scalone

Cyfrowe układy scalone

Implementacja algorytmu szyfrującego

Badanie właściwości wysokorozdzielczych przetworników analogowo-cyfrowych w systemie programowalnym FPGA. Autor: Daniel Słowik

Układy FPGA. Programowalne Układy Cyfrowe dr inż. Paweł Russek

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Współczesne techniki informacyjne

Szyfry strumieniowe w układach programowalnych FPGA. Marcin Rogawski

1.1. Standard szyfrowania DES

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

PROJEKT I OPTYMALIZACJA STRUKTURY LOGICZNEJ DYDAKTYCZNEGO SYSTEMU MIKROPROCESOROWEGO DLA LABORATORIUM PROJEKTOWANIA ZINTEGROWANEGO

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Bezpieczeństwo informacji oparte o kryptografię kwantową

Systemy wbudowane. Paweł Pełczyński

Algorytmy i Struktury Danych

Elektronika cyfrowa i mikroprocesory. Dr inż. Aleksander Cianciara

Zagadnienia egzaminacyjne TELEKOMUNIKACJA studia rozpoczynające się po r.

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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

Programowalne Układy Logiczne Konfiguracja/Rekonfiguracja

Budowa komputera Komputer computer computare

2. STRUKTURA RADIOFONICZNYCH SYGNAŁÓW CYFROWYCH

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003

Podstawy techniki cyfrowej i mikroprocesorowej - opis przedmiotu

Układy logiczne układy cyfrowe

Bezpieczeństwo informacji w systemach komputerowych

Ochrona własności intelektualnej projektów w układach FPGA poprzez szyfrowanie danych konfiguracyjnych

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Kryptografia na procesorach wielordzeniowych

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

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

Podstawy Informatyki Systemy sterowane przepływem argumentów

JĘZYKI PROGRAMOWANIA STEROWNIKÓW

Szczegółowe efekty kształcenia studiów I stopnia na kierunku Teleinformatyka na Wydziale Elektroniki i Telekomunikacji Politechniki Poznańskiej

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Projektowanie. Projektowanie mikroprocesorów

USŁUGI DODATKOWE W SIECIACH BEZPRZEWODOWYCH VoIP oraz multimedia w sieciach WiFi problemy

Podsumowanie wyników ankiety

Sprawdzian test egzaminacyjny 2 GRUPA I

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Przetworniki cyfrowo analogowe oraz analogowo - cyfrowe

Wstęp do Techniki Cyfrowej... Układy kombinacyjne

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Szybkie prototypowanie w projektowaniu mechatronicznym

Układy kombinacyjne. cz.2

Elektrotechnika II Stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Architektura komputerów

Architektura komputerów

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

Budowa Mikrokomputera

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Szczegółowy opis przedmiotu zamówienia:

SERWERY KOMUNIKACYJNE ALCATEL-LUCENT

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Architektura komputerów

Zadania badawcze prowadzone przez Zakład Technik Programowania:

Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Odniesienie do efektów kształcenia dla obszaru nauk EFEKTY KSZTAŁCENIA Symbol

dokument DOK wersja 1.0

Transkrypt:

Tadeusz ŁUBA*, Krzysztof JASIŃSKI*, Bogdan ZBIERZCHOWSKI* Programowalne układy przetwarzania sygnałów i informacji technika cyfrowa w multimediach i kryptografii W dzisiejszych czasach trudno sobie wyobrazić dziedzinę szeroko rozumianej telekomunikacji, w której cyfrowe przetwarzanie sygnałów DSP (Digital Signal Processing) nie miałoby zasadniczego znaczenia. Odnosi się to do wszystkich warstw systemu telekomunikacyjnego: od urządzeń przetwarzających obrazy, dźwięki, dane alfanumeryczne na sygnały (i odwrotnie), przez sieci telekomunikacyjne przenoszące i komutujące te sygnały, aż po systemy urządzeń, zapewniających dostarczanie różnorakich treści, zwanych powszechnie usługami. Można tu wymienić takie przykłady, jak: modemy telefoniczne, systemy cyfrowego szerokopasmowego dostępu abonenckiego DSL (Digital Subscriber Line), dostępu radiowego, rozpoznawanie mowy i mówców, telewizja cyfrowa wysokiej rozdzielczości, telefonia komórkowa i satelitarna czy związana z większością wymienionych systemów kryptografia. Trzeba podkreślić, że tak szerokie zastosowanie techniki cyfrowej w telekomunikacji znalazło zastosowanie dopiero w momencie opanowania technologii wytwarzania na wielką skalę scalonych układów specjalizowanych ASIC (Application Specific Integrated Circuits). Coraz większą popularnością w tym zakresie cieszą się procesory sygnałowe mikrokomputery skonstruowane specjalnie do cyfrowego przetwarzania sygnałów. Obecnie z procesorami sygnałowymi w wielu zastosowaniach mogą konkurować układy programowalne i reprogramowalne. Dynamiczny rozwój cyfrowych technik telekomunikacyjnych daje się zauważyć zwłaszcza w systemach multimedialnych. Ogólnie można powiedzieć, że telekomunikacyjny system multimedialny to zespół środków technicznych i procesów, umożliwiających przekaz i prezentację wiadomości za pomocą przynajmniej dwóch, wzajemnie zsynchronizowanych, środków przekazu, takich jak: mowa, muzyka, ruchomy obraz, tekst, grafika itp. Powszechnie jest on utożsamiany z takimi usługami, jak: wideotelefonia, wideokonferencja, wideo na żądanie (lub prawie na żądanie), telepraca, teleedukacja, telezakupy itd. W takim systemie wyróżnia się trzy podstawowe elementy funkcjonalne: serwer usług multimedialnych, terminale multimedialne oraz sieć dostępu do usług. Zadaniem sieci jest przeniesienie sygnałów dotyczących usług oferowanych przez serwery do terminali, a także wymiana danych między serwerami. Płaszczyzna transportowa takiej sieci jest na ogół bardzo dobrze rozwinięta i przystosowana do przenoszenia sygnałów cyfrowych z dużą szybkością. Najczęściej są w niej stosowane kable światłowodowe i szybkie techniki transmisyjne: SDH, ATM, Frame-Relay itp. Najbardziej krytycznym elementem tego systemu jest abonencka sieć dostępowa, przenosząca sygnały multimedialne od węzłów sieci transportowej do terminalu i na odwrót. Ze względu na istniejącą infrastrukturę kablową tej sieci (najczęściej symetryczna para przewodów miedzianych, tzw. skrętka), stało się konieczne opracowanie systemów umożliwiających transmisję cyfrową do (i od) abonenta z dużą szybkością. * Instytut Telekomunikacji Politechniki Warszawskiej e-mail: luba@tele.pw.edu.pl, kjasio@tele.pw.edu.pl, bogdan@tele.pw.edu.pl W tej części sieci powszechnie przyjmowana szerokość pasma podstawowego 300 Hz 3400 Hz nie wynika z własności linii transmisyjnej, lecz z przepustowości filtrów stosowanych (dla transmisji telefonicznej) w punktach styku z siecią transportową. Wspomniana skrętka umożliwia (oczywiście po usunięciu filtrów) wykorzystanie pasma do 1 MHz, a jedynym ograniczeniem szybkości transmisji cyfrowej jest długość kabla i jakość jego wykonania. Efektywne zwiększenie wykorzystania pasma do transmisji dwukierunkowej osiąga się przez stosowanie odpowiednich kodów liniowych oraz przez stosowanie cyfrowej kompensacji (kasowania) echa (Echo Canceller) w układach rozgałęźnych po stronie abonenta i po stronie sieci. Na przykład w sieciach ISDN dla dostępu podstawowego (2B + D) do transmisji o szybkości 144 kbit/s (2 kanały po 64 kbit/s + 16 kbit/s dla kanału sygnalizacyjnego) wykorzystuje się kod liniowy 2B1Q (2-Binary 1-Quatenary) oraz technikę kompensacji echa. Sprowadza się ona do wytworzenia w nadajniku przez adaptacyjny filtr cyfrowy sygnału identycznego z przebiegiem echowym i odjęcia go od całkowitego sygnału odbieranego. Podobną zasadę kasowania echa stosuje się w systemach dostępowych DSL. Opracowano (i dalej się rozwija) systemy HDSL (High data rate Digital Subscribe Line), ADSL (Asymmetric Digital Subscribe Line), VDSL (Very high data rate Digital Subscribe Line) o różnych przepływnościach i różnych technikach kodowania. Kodowanie liniowe i cyfrowe kasowanie echa w systemach dostępowych i sieciach ISDN to niewielka część szerokiego zakresu stosowania cyfrowego przetwarzania sygnałów. Ogromne znaczenie mają techniki kodowania sygnałów telefonicznych i wizyjnych, umożliwiające zmniejszenie przepływności kanałów służących do ich przenoszenia, a także wykrywanie i ewentualnie korekcję błędów transmisji. Wystarczy powiedzieć, że w systemach radiokomunikacji ruchomej szybkość strumienia sygnału mowy zmniejsza się z 64 kbit/s (w systemach PCM) do szybkości poniżej 10 kbit/s. W społeczeństwie informacyjnym wiele dziedzin życia gospodarczego i kulturalnego korzysta z elektronicznego przekazywania danych. Ogromnego znaczenia nabiera zatem poufność, a nawet tajność przekazywanych informacji. Z coraz większym przekonaniem przyjmowany jest pogląd, że ochrona danych będzie odgrywała podstawową rolę w funkcjonowaniu przyszłych systemów informacyjnych. Dotyczy ona głównie aplikacji telekomunikacyjnych, takich jak telefonia bezprzewodowa i komórkowa, faksy, pagery, płatna telewizja, komercyjne produkty audio/wideo itp. Jednak najważniejszym obszarem, w którym decydujące znaczenie mają mechanizmy ochrony informacji, jest komunikacja cyfrowa, a w szczególności sieć internetowa. Mechanizmy ochrony komunikacji cyfrowej są realizowane za pomocą specjalnych protokołów bezpieczeństwa i w formie algorytmów kryptograficznych stały się częścią wielu standardowych rozwiązań, jak IPSec (protokół internetowy), SSL (Secure Socket Layer), szyfrowane komórki sieci ATM oraz różnych standardów ANSI dla bankowości. Eksplozja wzrostu usług internetowych w zakresie handlu i biznesu, w tym operacji finansowych i obrotu kapitałowego, spowodowała, że realizacja mechanizmów zabezpieczenia przed nieuprawnionym dostępem do informacji stała się ogromnym wyzwaniem. PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003 409

Jak widać, zakres zastosowań układów cyfrowych w telekomunikacji będzie coraz większy i niedobrze byłoby, gdyby w rozwoju tej techniki i jej ogromnych rynkowych możliwości nie uczestniczyły firmy polskie. Zrozumienie tych szans jest szczególnie istotne w dobie rewolucyjnego rozwoju technologii układów programowalnych [26]. Dotychczasowe sukcesy polskich firm w komercyjnych aplikacjach techniki cyfrowej w telekomunikacji potwierdzają tę tezę. Doskonałym przykładem może tu być firma ADB Polska, założona przed pięciu laty przez pracowników naukowych Politechniki Zielonogórskiej. Z dużym powodzeniem opracowuje ona i sprzedaje w milionach sztuk również na rynki zagraniczne urządzenia telewizji cyfrowej. W artykule opisano podstawowe właściwości układów programowalnych oraz możliwości ich zastosowania w przetwarzaniu sygnałów i informacji. Omówiono przykłady eksperymentalnych i przemysłowych aplikacji multimedialnych oraz realizacje algorytmów kryptograficznych. Przedstawiono nową ofertę na rynku cyfrowych układów telekomunikacyjnych produkty wirtualne. Wskazano także na ogromne znaczenie syntezy logicznej w tych zastosowaniach. ROLA UKŁADÓW PROGRAMOWALNYCH W ROZWOJU TECHNIKI CYFROWEJ DLA POTRZEB PRZETWARZANIA SYGNAŁÓW I INFORMACJI W technice cyfrowej w ostatnich latach obserwuje się ogromne zmiany w metodach projektowania układów i systemów cyfrowych oraz w technologiach wykonywania urządzeń cyfrowych. Z punktu widzenia technologii jest to postęp od układów katalogowych i płytki drukowanej do specjalizowanych układów ASIC i specjalizowanych procesorów ASIP (Application Specific Instruction Set Processors) o złożoności sięgającej milionów bramek. W szczególności udoskonalenia procesu technologicznego, polegające na redukowaniu wymiarów elementów półprzewodnikowych i zwiększaniu liczby warstw metalizowanych połączeń, a także nowe techniki programowania umożliwiły opracowanie generacji struktur FPLD (Field Programmable Logic Devices) z możliwością reprogramowania i rekonfiguracji [21], [30]. Te cechy układów FPLD umożliwiają implementacje algorytmów DSP, niekiedy znacznie lepsze w porównaniu z implementacjami na procesorach sygnałowych. Obecnie produkowane układy FPLD, w zależności od struktury, klasyfikuje się na układy matrycowe CPLD (Complex PLD) oraz układy komórkowe FPGA. Elementem charakterystycznym dla architektury CPLD jest wykorzystanie w układach wielu struktur typu PAL (Programmable Array Logic) zgrupowanych w bloki SPLD (Simple PLD). Bloki te są ze sobą połączone szybką, programowaną matrycą połączeniową, jak to pokazano na rys. 1. Jej zadaniem jest przesyłanie sygnałów między wejściami zewnętrznymi a wewnętrznymi blokami logicznymi oraz między tymi blokami. Niezależnie od wykonania, ważnymi parametrami matrycy połączeniowej, będącej krytycznym fragmentem układów CPLD, są: zdolność łączeniowa i czas propagacji sygnału. Pod pojęciem zdolności łączeniowej rozumie się możliwość łączenia dowolnych elementów struktury programowalnej. Producenci układów rozwiązują związane z tym problemy w różny sposób, czego efektem są różnorodne architektury matryc połączeniowych, w dużych układach CPLD także wielopoziomowe. Architektura matrycy połączeniowej i technologia zastosowana do jej realizacji mają duży wpływ na czas propagacji sygnału. We współczesnych układach CPLD czas propagacji sygnału przez matrycę połączeniową nie przekracza zazwyczaj 0,8... 3 ns (m. in. matryce GRP firmy Lattice, PIA Altera, PIM Cypress, ZIA Xilinx). Dostępne są także układy, w których czas propagacji skrócono do ok. 100... 200 ps (ZIA, AIM Xilinx). Grupą układów programowalnych o architekturze i budowie elementarnych komórek logicznych, znacznie odmiennej od architektury i budowy komórek układów SPLD i CPLD, są struktury FPGA (Field Progammable Gate Array). Na rys. 2 pokazano ułożenie komórek logicznych oraz traktów połączeniowych, charakterystyczne dla większości układów FPGA. O Rys. 2. Struktura FPGA. Oznaczenia: PIP (Programmable Interconnect Point) programowalne punkty połączeniowe, RC (Routing Channels) trakty połączeniowe, I/O bloki wejściowo-wyjściowe, LB (Logic Blocks) bloki logiczne O Rys. 1. Struktura CPLD. Oznaczenia: PIA (Programmable Interconnect Array) matryca połączeniowa, SPLD prosta struktura PLD typu PAL Praktycznie wszystkie obecnie produkowane układy programowalne są wyposażone w reprogramowalne matryce pamięciowe. Najczęściej są stosowane dwa rodzaje matryc: z komórkami pamięci SRAM (Static RAM) i trwałej EEPROM, a coraz rzadziej PROM lub EPROM. Układy reprogramowalne CPLD i FPGA oferuje na świecie kilku producentów. Są to zarówno układy z matrycami SRAM, jak i EEPROM. Nieulotne matryce EEPROM charakteryzują się ograniczoną liczbą dopuszczalnych cykli reprogramowania, zazwyczaj od 100 do 1000, gwarantują natomiast długi czas przechowywania zapisanych w nich konfiguracji (do 100 lat) bez zasilania. W aplikacjach wymagających dużej pojemności logicznej są stosowane przede wszystkim struktury FPGA, w których rolę elementu pamięciowego spełnia komórka pamięci nietrwałej SRAM. Po każdorazowym włączeniu zasilania niezbędne jest wprowadzenie danych o konfiguracji, czyli tzw. inicjalizacja konfiguracji matrycy. Proces rekonfiguracji we wszystkich układach FPGA przebiega podobnie, przy czym w zależności od typu układu czas inicjalizacji struktury waha się od 1ms (układy serii AT6000) aż do 320 ms (układy FLEX10K). Dzięki wykorzystaniu standardowych interfejsów szeregowych SDI (Serial Data Interface) w układach FPGA oraz JTAG- ISP w układach CPLD, dane konfiguracyjne można załadować do 410 PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003

O Rys. 3. Jednowymiarowa systoliczna matryca sumatora; D przerzutnik struktury programowalnej za pomocą lokalnego sterownika lub specjalnego interfejsu programującego. Strumień danych konfiguracyjnych jest zwykle przechowywany w standardowej pamięci stałej o dowolnej organizacji lub w specjalnej pamięci szeregowej. Ze względu na właściwości matryc pamięciowych, do stosowania w aplikacjach rekonfigurowalnych są predestynowane układy FPGA. Głównym celem rekonfiguracji systemu jest dostosowanie struktury funkcjonalnej, dostępnej w ramach jego architektury podstawowej, do wymagań realizowanych algorytmów. W przypadku realizacji algorytmów, które nie mieszczą się w całości w strukturze systemu, istnieje konieczność ich rozłożenia na sekwencje podzadań realizowanych kolejno w odpowiednich konfiguracjach. Warunkiem niezbędnym do realizacji całego algorytmu jest zdolność systemu rekonfigurowalnego do wymiany danych konfiguracyjnych wraz z przekazaniem wyników uzyskanych w bieżącej konfiguracji do kontynuowania obliczeń w następnej konfiguracji. Taki sposób rekonfiguracji systemu podczas jego działania jest wyróżniany terminem run-time. Obecnie stosuje się kilka metod rekonfiguracji układów FPGA [40]. Najprostszym implementacyjnie, ale niezbyt efektywnym sposobem rekonfiguracji, jest zmiana konfiguracji (tzw. kontekstu) całej struktury programowalnej. Polega ona na szeregowym wprowadzeniu strumienia nowych danych konfiguracyjnych. Wadą tej metody jest konieczność przerwania pracy całego układu, co w konsekwencji może obniżyć wydajność całego systemu. Układy wyposażone w taki mechanizm rekonfiguracji są nazywane jednokontekstowymi. Większość obecnie produkowanych układów FPGA można uważać za układy jednokontekstowe o różnych czasach rekonfiguracji. Bardziej efektywnym sposobem rekonfiguracji jest rekonfiguracja częściowa. Jest ona możliwa pod warunkiem przerwania pracy układu, podobnie jak w przypadku układów jednokontekstowych, chociaż dzięki możliwości wymiany tylko niezbędnej części danych konfiguracyjnych średni czas rekonfiguracji może być zależnie od przyjętego sposobu przydziału zadań znacznie krótszy. Do najbardziej znanych układów rekonfigurowalnych należą struktury AT40K/KA/KAL, AT6000 oraz FPSLIC AT94 (wszystkie wymienione rodziny są to układy FPGA, produkowane przez firmę Atmel [13]) oraz Virtex/Virtex II i Virtex E (produkowane przez firmę Xilinx). Ogromną zaletą układów AT40K/KA/KAL oraz AT6000 jest możliwość ich częściowej rekonfiguracji bez konieczności wyłączania pozostałej, nie poddawanej rekonfiguracji, części układu. Uzyskanie tak dobrego efektu użytkowego jest możliwe dzięki zaawansowanemu mechanizmowi wymiany danych konfiguracyjnych CacheLogic, w który wyposażono wszystkie układy obydwu rodzin. Zupełnie inną architekturę i nieco inne walory użytkowe mają układy AT94, nazywane w nomenklaturze producenta także FPSLIC (Field Programmable System Level Integrated Circuit). Integrują one bowiem w jednej strukturze rekonfigurowalną matrycę FPGA oraz 8- bitowy mikrokontroler RISC. Budowa, właściwości (w tym możliwość częściowej rekonfiguracji) i podstawowe parametry matryc rekonfigurowalnych są identyczne jak dla matryc stosowanych w układach AT40K. Możliwości użytkowe układów AT94K znacznie zwiększa fakt zintegrowania w ich strukturze szybkiego mikrokontrolera o architekturze RISC, którego wydajność dochodzi do 40 MIPS. Szczegółowy opis architektury układów FPSLIC można znaleźć m. in. w artykule [40]. Do stosowania w aplikacjach nie wymagających częściowej rekonfiguracji struktury układu doskonale nadają się układy z rodzin Virtex oraz APEX, które należą obecnie do grupy najwyżej zaawansowanych technologicznie układów FPGA. O ich dużych zaletach decydują m. in. mechanizmy sprzętowej implementacji pamięci różnego typu (w tym FIFO oraz DualPort FIFO), możliwość łączenia bloków logicznych w bloki funkcjonalne bez wykorzystywania lokalnych zasobów połączeniowych, a także krótki czas rekonfiguracji. Jednak nie tylko z tych powodów układy FPGA mają przeważające zalety w implementacjach algorytmów DSP. Decydującym czynnikiem w coraz powszechniejszym zastosowaniu układów FPGA do syntezy układów DSP jest ich specyficzna, ziarnista i potokowa struktura wewnętrzna. Zalety tej struktury objawiają się już na poziomie najprostszych ale wyjątkowo typowych w DSP układów mnożenia skalarnego z akumulacją. Na rys. 3 pokazano uproszczoną strukturę mnożenia szeregowego, realizowanego w jednowymiarowej matrycy systolicznej. Każde ogniwo tego układu można bezpośrednio zrealizować w pojedynczych komórkach struktur FPGA, a niezależność tej struktury od liczby bitów przetwarzanych słów jest dodatkową zaletą decydującą o wydajności i skalowalności realizowanych algorytmów. Układy szeregowego mnożenia bitowego znajdują zastosowanie w realizacjach filtrów typu FIR [26], [36]. Komórkowa budowa struktur FPGA, a w szczególności możliwość grupowania często wykorzystywanych bloków tablic odwzorowań (tablic prawdy) LUT (Look Up Table) w wielowyjściowe pamięci, znakomicie ułatwia realizację układów arytmetyki rozproszonej DA (Distributed Arithmetic) [26]. Strukturę układu DA pokazano na rys. 4. Zaletą architektury DA jest wygodna i efektywna implementacja w strukturach FPGA. Przeprowadzone eksperymenty [36] wskazują, że równoległe i rozproszone układy mnożące implementowane w strukturach FPGA są 6 razy szybsze przy zaledwie 2,5-krotnym zwiększeniu zasobów sprzętowych. Rekonfigurowalne układy FPGA, które zapoczątkowały nową erę w dziedzinie projektowania układów DSP, stanowią również doskonałe medium implementacyjne do realizacji algorytmów szyfrujących w różnych zastosowaniach, takich jak protokoły bezpieczeństwa komunikacji w sieciach, ochrona i potwierdzanie autentyczności informacji i dokumentów oraz do realizacji maszyn wyszukujących klucze w kryptoanalizie. Głównym atutem układów rekonfigurowalnych jako medium konstrukcyjnego jest ich zdolność adaptacyjna, polegająca na możliwości dostosowania architektury logicznej do typu, kształtu i właściwości realizowanych funkcji. Do efektywnego wykorzystania możliwości tych układów, zarówno pod względem optymalizacji logicznej, jak też parametrów fizycznych (szybkość, moc, powierzchnia) jest potrzebna gruntowna znajomość funkcji i własności implementowanych algorytmów. Środkiem do osiągnięcia tak określonego celu jest wiedza o sposobach odwzorowywania podstawowych operacji i funkcji algorytmu w strukturę podstawową matrycy rekonfigurowalnej oraz wybór logicznej reprezentacji danych, odpowiedniej do specyfikacji algorytmu architektury. Większość algorytmów szyfrowania można przedstawić za pomocą grafu przepływu danych, który jest zbudowany zaledwie z kilku różnych komponentów, realizujących mniej lub bardziej złożone operacje arytmetyczne i funkcje logiczne. Poniżej przedstawiono listę najczęściej stosowanych operacji i funkcji. M Proste operacje arytmetyczne, takie jak dodawanie i odejmowanie. M Operacje na krótkich słowach binarnych o nietypowych długościach. O Rys. 4. Architektura DA. Oznaczenia: RP rejestry przesuwające, POT rejestr potokowy, R rejestr wyjściowy PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003 411

M Operacje mnożenia mnożenie ogólne (dowolne wartości operandów), mnożenie modularne, mnożenie z obcięciem wyniku, mnożenie przez stałą, mnożenie z użyciem kodowania nadmiarowego operandów etc. M Równoległe operacje logiczne. M Sekwencje operacji logicznych. M Tablice odwzorowań LUT, np. nieliniowe typu S-box. M Operacje rotacji i przesunięcia. Dla każdej z wymienionych operacji można wyznaczyć efektywne odwzorowanie w strukturze matrycy rekonfigurowalnej. Zastosowanie takich wzorów realizacyjnych do projektowania algorytmów kryptograficznych pozwala lepiej wykorzystać walory systemów rekonfigurowalnych. EKSPERYMENTALNE I PRZEMYSŁOWE APLIKACJE MULTIMEDIALNE Wraz z wprowadzeniem rekonfigurowalnych struktur logicznych pojawiły się nowe możliwości ich zastosowań w dziedzinie przetwarzania obrazów i dźwięku. Pierwszą architekturą komputera konfigurowanego ze strukturami FPGA była wirtualna maszyna, pomyślana jako programowalna pamięć aktywna PAM (Programmable Active Memory); miała ona formę rekonfigurowalnego koprocesora sterowanego standardowym procesorem. Rola procesora sprowadzała się do zarządzania konfiguracją macierzy układów FPGA, które pełniły funkcje koprocesora, i współpracy z tym koprocesorem, analogicznie jak w konwencjonalnych komputerach. Przykładami zastosowania platformy PAM do realizacji specjalizowanych maszyn liczących są między innymi: system DECPeRLe zaprojektowany przez Digital Equipment Corporation s Paris Research Laboratory [38] i system SPLASH, opracowany w Supercomputer Research Center [3]. Systemy PeRLe-0 i PeRLe-1 cechuje wielka efektywność rozwiązywania zadziwiająco szerokiej klasy problemów obliczeniowych. Są one zbudowane z macierzy dwuwymiarowej układów FPGA komunikującej się z otoczeniem zewnętrznym za pomocą szyny o dużej przepływności. Oprócz 16 układów macierzy 4x4 FPGA system zawiera 1 MB pamięci statycznej RAM na każdej z krawędzi macierzy FPGA. Układ został zaprojektowany do przyspieszenia realizacji zadań wymagających dużych mocy obliczeniowych przy założeniu, że części realizowanego algorytmu, które stanowią jego wąskie gardło, będą przekazywane do wykonania układowi. Do specyfikacji zadań zostało zaprojektowane specjalne środowisko programowe [4], które łączy w sobie cechy kompilatorów złożonych języków programowania oraz systemów do projektowania sprzętu. Lista problemów, które efektywnie rozwiązywano za pomocą DEC PeRLe, zawiera wiele istotnych zadań z dziedziny przetwarzania obrazu i dźwięku, jak na przykład: mnożenie dużych liczb całkowitych, kompresja danych, rozwiązywanie równań Laplace a, synteza dźwięku, rozpoznawanie wzorca, splot w dziedzinie dwuwymiarowej, kompresja obrazu. Innym przykładem wysoko wyspecjalizowanej maszyny liczącej jest system SPLASH zaprojektowany w Supercomputer Research Center [3], [8] oraz jego następca SPLASH-2. Podobnie jak system DEC PeRLe, współpracuje on ze stacją roboczą, przyspieszając jej działanie w tych sytuacjach, gdy nie może ona uporać się z zadaniem wymagającym dużych mocy obliczeniowych. Architektura SPLASH-2 została zaprojektowana jako macierz systoliczna na pojedynczej płytce o 16 elementach obliczeniowych, z których każdy zawiera układ FPGA oraz lokalną pamięć. Analogicznie jak w przypadku PeRLe, stworzono środowisko programistyczne, dające możliwość tworzenia aplikacji. Miało ono wbudowany symulator języka VHDL [1], [2], język opisu logiki LDG [9] oraz model programowy SIMD [10]. Za pomocą systemu SPLASH uruchomiono i przetestowano wiele aplikacji. Otrzymane wyniki świadczą o jego dużej efektywności. Lista przykładowych problemów rozwiązanych za pomocą systemu SPLASH-2 zawierała m. in. następujące zadania: wyszukiwanie tekstu, przetwarzanie obrazów, ustalanie zmiennego przecinka oraz splot w dziedzinie dwuwymiarowej. Eksperymenty przeprowadzone z architekturami PeRLe i SPLASH pokazały, że pojedyncza platforma obliczeniowa zbudowana z układów FPGA może zapewnić imponującą efektywność dla bardzo szerokiej rodziny zastosowań. Tak wysoki poziom efektywności był możliwy do osiągnięcia dzięki zaprojektowaniu dla każdego z wymienionych problemów specjalizowanej architektury. Mechanizmy rekonfiguracji gwarantują, że z wykorzystaniem tego samego sprzętu można realizować niezliczoną liczbę różnych architektur logicznych. Osiągnięcie wysokiej efektywności systemów PeRLe i SPLASH było możliwe dzięki: M wyspecjalizowaniu bloków funkcjonalnych; M wykorzystaniu współbieżności; M optymalizacji procesów i interfejsów komunikacyjnych; M wyspecjalizowaniu układów wejściowo-wyjściowych. Niewątpliwie eksperymenty te stały się bezpośrednią przyczyną zastosowania układów programowalnych w komercyjnych (przemysłowych) aplikacjach telekomunikacyjnych. Typowym przykładem mogą być satelitarne systemy telemetryczne firmy TSI TelSys [16], w których rekonfigurowalna matryca składająca się z 12 układów APEX20K100 spełnia rolę rekonfigurowalnego systemu DSP, automatycznie dostosowującego się do protokołu transmisyjnego śledzonej misji satelitarniej (EOS, SBIRS-High, DRTS, Heliosat). Możliwość rekonfiguracji układów CPLD wykorzystała firma LG Information & Telecommunications. W jej ofercie znajdują się urządzenia stosowane w systemach komórkowych CDMA (Code Division Multiple Access), W-CDMA (Wideband CDMA) oraz WLL (Wireless Local Loop). We współpracy z firmą Hanaro Telecom [12] firma LGIE wdrożyła do produkcji modemy W-CDMA, w których zastosowano po cztery układy EPF10K100. Zastosowanie układów rekonfigurowalnych wiąże się z możliwością szybkiego i w miarę bezproblemowego dostosowania toru obróbki sygnału do modyfikacji wprowadzanych w zaleceniach ITU, które mają na celu m. in. zwiększenie przepływności kanałów transmisyjnych, przy jednoczesnym zawężeniu zajmowanego pasma. Układy rekonfigurowalne znalazły zastosowanie także we współczesnych telewizyjnych systemach retransmisyjnych, czego przykładem może być rodzina procesorów wizyjnych D1 firmy Snell & Wilcox [12]. Według danych producenta, zastosowanie układów rekonfigurowalnych spowodowało obniżenie kosztu wykonania takiego procesora o ok. 30% w stosunku do klasycznych rozwiązań opartych na procesorach sygnałowych. Amerykańska firma Metalithic Systems jest producentem profesjonalnego, studyjnego sprzętu audio, w tym wielu cyfrowych konsol mikserskich. W 1999 roku inżynierowie tej firmy opracowali O Rys. 5. Schemat blokowy systemu ze zdalnie rekonfigurowanym blokiem sprzętowym; 1, 2, 3, 4 etapy rekonfiguracji 412 PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003

128-kanałową konsolę, wykonaną na układach Spartan firmy Xilinx, w której możliwość rekonfiguracji układów wykorzystano do budowy różnego rodzaju efektów audio, w tym cyfrowego pogłosu i kompresji szumów [15]. Szczególnym przykładem w grupie opracowań komercyjnych jest propagowana od 1998 roku przez firmę Xilinx idea budowania sprzętu rekonfigurowanego przez Internet IRL (Internet Reconfigurable Logic), co schematycznie pokazano na rys. 5 [17]. Pierwsze komercyjne aplikacje IRL opracowały i wdrożyły w 1999 roku firmy Bosch i Siemens, które testują możliwości stosowania układów zdalnie rekonfigurowalnych w aplikacjach samochodowych [17]. Na początku 2001 roku, w wyniku prac prowadzonych wspólnie z LG Electronics oraz konsorcjum: Xilinx, Celoxica oraz WindRiver, powstały wykorzystujące układy Virtex E zdalnie rekonfigurowalne: odtwarzacz MP3 oraz internetowy telefon VoIP [14]. Urządzenia te mają zostać wdrożone do masowej produkcji przed końcem 2003 roku. UKŁADY PROGRAMOWALNE W KRYPTOGRAFII Wśród pierwszych implementacji szyfrów blokowych w układach programowalnych szczególnie interesujące były dwa opracowania. Pierwsze powstało w Szwajcarskim Federalnym Instytucie Technicznym w Lozannie pod akronimem CryptoBooster [25]. CryptoBooster spełnia funkcje rekonfigurowalnego, modułowego koprocesora kryptograficznego, który współpracuje z głównym komputerem jako akcelerator operacji kryptograficznych. Próbnym modułem wykonanym w tej architekturze była realizacja symetrycznego szyfru blokowego IDEA. Przeprowadzone testy wykazały, że pod względem szybkości i przepustowości koprocesor nadaje się do zastosowań w szybkich sieciach, jak ATM, SONET i GigaEthernet. Drugi przykład to projekt wykorzystujący rekonfigurowalny procesor PipeRench opracowany w Carnegie Mellon University [37]. Oryginalna warstwowa architektura procesora PipeRench, zaprojektowana w CMU, została zoptymalizowana pod względem implementacji kryptograficznych. Jej głównymi cechami są: wirtualizacja, potokowa organizacja ścieżki danych i zerowy pozorny czas rekonfiguracji. Wirtualizacja umożliwia implementację algorytmów nie mieszczących się w całości w fizycznej strukturze systemu. W architekturze PipeRench zrealizowano szereg algorytmów, jak CRYPTON, IDEA, RC6 i Twofish. Na podstawie analizy wielu zastosowań sprzętowych [5] realizacji algorytmów kryptograficznych można określić funkcje i wymagania, jakie powinien spełniać elastyczny system kryptograficzny. Są to: M możliwość zmiany algorytmu w trakcie pracy, M możliwość wprowadzania nowych algorytmów, M duża szybkość przetwarzania danych, M łatwa obsługa interfejsu użytkownika, M modyfikowalność oprogramowania sterującego (upgradable firmware), M modyfikowalność sprzętu. Traktując powyższe warunki jako założenia do konstrukcji systemu kryptograficznego, współpracującego z głównym komputerem PC na zasadzie koprocesora, można zaproponować konstrukcję, której uproszczona architektura jest przedstawiona na rys. 6. Zasadniczymi blokami takiego systemu są: M koprocesor kryptograficzny z pamięcią buforową, M układ sterujący, M biblioteka algorytmów. Koprocesor kryptograficzny wykonuje wszelkie operacje związane z szyfrowaniem i deszyfrowaniem danych. Po włączeniu zasilania koprocesor rezydujący w strukturach FPGA nie jest jeszcze zaprogramowany. Na sygnał wyboru algorytmu, wydany przez użytkownika za pośrednictwem interfejsu, układ sterujący przepisuje do koprocesora z biblioteki algorytmów odpowiedni zbiór konfiguracyjny. Po skonfigurowaniu koprocesor jest gotowy do pracy. Transmisja danych szyfrowanych i deszyfrowanych pomiędzy systemem a komputerem odbywa się za pośrednictwem magistrali ISA. Tą samą drogą, z komputera do systemu, są przekazywane nowe zbiory modyfikujące lub rozszerzające bibliotekę algorytmów. O Rys. 6. Architektura elastycznego systemu kryptograficznego Naszkicowana wyżej koncepcja elastycznego systemu kryptograficznego została wykorzystana przez autorów przy opracowaniu prototypu wieloalgorytmowego koprocesora kryptograficznego, który zrealizowano w ramach prac badawczych w Instytucie Telekomunikacji PW. Prototyp koprocesora został wykonany w formie karty do komputerów klasy PC. Schemat blokowy karty koprocesora, uwzględniający szczegółowo sygnały magistrali ISA, jest przedstawiony na rys. 7. Karta wymaga wstępnej inicjalizacji kilku wewnętrznych rejestrów, których zawartość ustawia się przez interfejs programowy w komputerze. Ich wartości definiują szczegółowo następujące funkcje i parametry karty: M wybór algorytmu kryptograficznego DES, X_DES_X, DES3_EEE, DES3_EDE; M tryb pracy algorytmu ECB, CBC, OFB_64, CFB_01, CFB_08, CFB_16, CFB_64; M tryb współpracy z magistralą ISA normal lub pipeline; M funkcje karty szyfrowanie/deszyfrowanie, wpisywanie kluczy i wektora stanu początkowego. Przed rozpoczęciem cyklu szyfrowania/deszyfrowania są testowane wybrane komórki rejestru stanów w celu ustalenia prawidłowości przeprowadzonej inicjalizacji. Aby zapobiec lub przynajmniej utrudnić ataki hackerów, wprowadzono dodatkowe mechanizmy ochronne zapewniające bezpieczeństwo kluczy i bloków danych zarówno jawnych, jak i zaszyfrowanych. Zastosowane mechanizmy wykrywają pewne odstępstwa od oczekiwanych prawidłowych sekwencji instrukcji inicjujących proces szyfrowania/deszyfrowania i blokują reakcje koprocesora na sygnał startu GO lub niszczą zawartość rejestrów kluczy i rejestru stanu początkowego. Algorytm DES został zaprojektowany według amerykańskiej normy FIPS 46, zaś tryby pracy opracowano na podstawie normy FIPS 81. Algorytmy DES-EDE i DES-EEE, mimo iż nie są aktualnie ujęte w normach, należą obecnie do najczęściej używanych szyfrów O Rys. 7. Schemat blokowy wieloalgorytmowego koprocesora kryptograficznego PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003 413

w protokołach bezpieczeństwa stosowanych w sektorze bankowym na całym świecie. Tryby pracy, pozwalające dopasować właściwości szyfru do wymagań otoczenia, są zgodne z międzynarodowymi normami ISO/IEC 8372 i ISO/IEC 10116. Główna część projektu została wyspecyfikowana w języku AHDL dla środowiska MAX+PLUS II firmy ALTERA, z przeznaczeniem dla rodziny układów rekonfigurowalnych FLEX 10K. W prototypie wykorzystano układ FLEX 10K30. Eksperymenty symulacyjne przeprowadzone z algorytmem DES, uwzględniające zastosowanie w koprocesorze układu FLEX 10K50, wykazały, że maksymalna częstotliwość zegara systemowego może wynosić około 70 MHz. Odpowiada to maksymalnej szybkości przetwarzania rzędu 190 Mbit/s. Dla algorytmu potrójny DES osiągalna szybkość wynosi około 66 Mbit/s. NOWY STANDARD SZYFROWANIA: ALGORYTMY ANALIZA I WYBÓR OPTYMALNYCH IMPLEMENTACJI Przedstawione powyżej przykłady implementacji algorytmów kryptograficznych były jedną z wielu prób poszukiwania optymalnych realizacji nowych algorytmów szyfrujących, które w XXI wieku mogłyby zastąpić dotychczasowy światowy standard DES. Wydarzeniem o przełomowym znaczeniu kamieniem milowym w dziedzinie ochrony systemów informacyjnych i bezpieczeństwa w sieciach teleinformatycznych stał się konkurs zorganizowany przez amerykański NIST (National Institute of Standards and Technology). Wyłoniona w ostatniej rundzie konkursu grupa najlepszych algorytmów kryptograficznych została poddana niezwykle gruntownym badaniom teoretycznym i szczegółowej analizie ich walorów praktycznych, zwłaszcza implementacji sprzętowych wybranej grupy szyfrów pod względem oceny ich wydajności i przydatności w przyszłych systemach kryptograficznych. Analizowane implementacje szyfrów zostały zrealizowane w kilku ośrodkach akademickich na podstawie tych samych założeń funkcjonalnych, wspólnej metodologii i wspólnych narzędzi projektowania, tej samej technologii i tych samych architektur układów rekonfigurowalnych. Za podstawę oceny implementacji zgłoszonych na forum III Konferencji Kandydatów AES (Advanced Encryption Standard) posłużyły przyjęte i uzgodnione wcześniej miary parametrów związanych z szybkością przetwarzania i złożonością realizacji. Głównymi kryteriami przyjętymi przez NIST do oceny i kwalifikacji szyfrów w konkursie na nowy standard były: bezpieczeństwo, efektywność w realizacjach sprzętowych i programowych oraz elastyczność. Spośród tych czterech parametrów efektywność realizacji sprzętowej okazała się szczególnie ważnym czynnikiem, umożliwiającym zróżnicowanie konkurujących algorytmów, przy założeniu, że: M porównanie było oparte na zbiorze obiektywnych i zgodnie akceptowanych miar, M istniały dostrzegalne różnice pomiędzy kandydatami, M ustalono wyraźną zgodność pomiędzy wynikami uzyskanymi przez niezależne grupy. W celu osiągnięcia większej jednolitości i czytelności porównań wyników otrzymanych przez różne grupy, zaproponowano zgodną terminologię, która może być użyta do opisu różnych architektur i parametrów wydajności szyfrów blokowych. się zestawieniem parametrów użytkowych, własności funkcjonalnych i charakterystyki procesu projektowania. Do grupy parametrów użytkowych, które mają istotny wpływ na efektywność przetwarzania danych, należą: możliwość przetwarzania równoległego i potokowego, zmienna długość słowa i szybkość działania. Do najważniejszych właściwości funkcjonalnych, decydujących o elastyczności i bezpieczeństwie implementacji kryptograficznej, zalicza się: możliwość wymiany algorytmu w trakcie pracy (algorithm agility), zabezpieczenie przed penetracją (tamper resistance) i kontrolę dostępu do kluczy. Charakterystykę procesu projektowania określają między innymi: języki specyfikacji, długość cyklu projektowania, koszty narzędzi do projektowania, koszty testowania, utrzymania i modyfikacji. Z porównania parametrów użytkowych wynika, że układy ASIC i FPGA mają wyraźną przewagę nad implementacją programową pod względem efektywności przetwarzania. Istotna różnica pomiędzy technologią ASIC i FPGA dotyczy szybkości działania układów FPGA, które są wolniejsze, co wynika z opóźnień wprowadzanych przez elementy programowalnych połączeń i proces rekonfiguracji. Pod względem funkcjonalnym następuje większe zróżnicowanie: największe bezpieczeństwo zapewnia ASIC, natomiast wadą jest całkowity brak możliwości modyfikacji. W przypadku układów ASIC i FPGA proces projektowania jest podobny w sposobie specyfikacji (język opisu sprzętu), weryfikacji (symulator) i testowania (płyta prototypowa). Zasadnicza różnica pomiędzy nimi polega na tym, że układy FPGA nie wymagają projektu warstwy fizycznej (layout), wytwarzania i testowania defektów fizycznych. Konsekwencją tego są: znacznie krótszy cykl projektowania i dużo tańsze narzędzia do projektowania i testowania. Z porównań wynika, że implementacje oparte na FPGA mają przewagę nad technologią ASIC pod względem kosztów i długości cyklu opracowania prototypu, możliwości wielokrotnego i szybkiego rekonfigurowania i możliwości eksperymentalnego testowania dużej liczby różnych architektur. Ponadto implementacje na układach FPGA zapewniają znacznie wyższy stopień zgodności i wiarygodności porównań. Są bowiem weryfikowane na podstawie dokładnych symulacji funkcjonalno-czasowych gotowych struktur i eksperymentalnego testowania prototypu. Założenia, porównywane parametry i zasady projektowania Ogólny model sprzętowej implementacji symetrycznych szyfrów blokowych jest pokazany w formie schematu blokowego na rys. 8. Według tego schematu zostały zrealizowane wszystkie szyfry z ostatniej rundy konkursu AES. Schemat ten składa się z następujących części: M modułu szyfrowania/deszyfrowania, w którym są kodowane i dekodowane bloki danych wejściowych, M bloku generacji kluczy pochodnych, w którym wyznacza się zbiór kluczy wewnętrznych na podstawie jednego klucza zewnętrznego, M pamięci kluczy wewnętrznych, w której są przechowywane klucze utworzone w bloku generacji kluczy lub dostarczone przez interfejs wejściowy z zewnątrz, Wybór technologii Algorytmy kryptograficzne mogą być realizowane zarówno w formie programu, jak i sprzętu. Implementacje programowe są projektowane i kodowane przy użyciu języków programowania, takich jak C, C ++, Java czy asembler, a następnie wykonywane w uniwersalnych mikroprocesorach, procesorach sygnałowych lub kartach inteligentnych. Implementacje sprzętowe są projektowane i specyfikowane za pomocą języków opisu sprzętu, takich jak VHDL i Verilog HDL i realizowane z wykorzystaniem jednej z dwóch technologii: specjalizowanych układów scalonych typu ASIC lub rekonfigurowalnych matryc logicznych FPGA. Do porównania i oceny wymienionych technologii pod względem ich przydatności do zastosowań kryptograficznych można posłużyć O Rys. 8. Schemat blokowy realizacji sprzętowej szyfrów blokowych 414 PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003

M interfejsu wejściowego, służącego do wprowadzania danych wejściowych i kluczy oraz do buforowania danych wejściowych oczekujących na kodowanie/dekodowanie, M interfejsu wyjściowego, używanego do buforowania danych przetworzonych i przesyłania ich do zewnętrznej pamięci, M jednostki sterującej, w której są wytwarzane sygnały sterujące pracą pozostałych bloków. W celu ujednolicenia procedury projektowania implementacji szyfrów, przyjęto wstępnie następujące założenia: M długość klucza 128 bitów, co upraszcza porównywanie i analizę M generowanie kluczy pochodnych na zewnątrz, M długość bloku danych 128 bitów, M dzielenie zasobów funkcjonalnych pomiędzy część szyfrującą i deszyfrującą. Poniżej przedstawiono definicje parametrów używanych do porównywania szyfrów z punktu widzenia efektywności ich implementacji sprzętowych. Szybkość szyfrowania (deszyfrowania) jest określana jako liczba bitów zaszyfrowanych (zdeszyfrowanych) w jednostce czasu. Jednostką szybkości jest Mbit/s. Czas opóźnienia szyfrowania (deszyfrowania) (latency) jest zdefiniowany jako czas niezbędny do zaszyfrowania (zdeszyfrowania) jednego bloku danych jawnych lub zaszyfrowanych. Jeżeli w aplikacji podczas jednej sesji są szyfrowane/deszyfrowane duże porcje danych, to szybkość wyznacza całkowity czas wykonywania tych operacji i jest najlepszą miarą szybkości szyfru. Drugi ważny parametr to powierzchnia zajmowana przez układ, gdyż jest głównym czynnikiem określającym jego koszt. Przyjmuje się, że z grubsza koszt układu scalonego jest wprost proporcjonalny do jego powierzchni. Dla ścisłości należy jednak uwzględnić koszt obudowy, na który ma wpływ liczba wyprowadzeń. W pewnych aplikacjach mogą wystąpić ograniczenia maksymalnej dostępnej powierzchni do realizacji modułu kryptograficznego, wynikające z kosztów dostępnej technologii wytwarzania, zużywanej mocy lub kombinacji tych czynników, np. w inteligentnych kartach z mikrokontrolerem. W układach ASIC powierzchnia wymagana do implementacji jest zwykle wyrażana w µm 2, choć są też używane dwie miary względne: liczba tranzystorów i liczba bramek logicznych. Wartości tych trzech miar są ze sobą ściśle skorelowane, ale relacje te trudno określić. W implementacjach FPGA jedyną uznaną miarą wielkości układu jest liczba komórek logicznych. Struktura tworzenia projektu w środowisku CAD do implementacji algorytmów w układach FPGA jest pokazana na rys. 9. Wszystkie szyfry AES zostały w pierwszym kroku opisane w języku VHDL, a na- Tryby pracy Symetryczne szyfry blokowe są używane w kilku trybach operacyjnych, które z punktu widzenia implementacji sprzętowej można podzielić na dwie kategorie: M tryby bez sprzężenia zwrotnego, takie jak tryb elektronicznej książki kodowej (ECB) i tryb licznikowy, M tryby ze sprzężeniem zwrotnym, jak tryb wiązania bloków zaszyfrowanych (CBC), tryb sprzężenia zwrotnego szyfrogramu (CFB) i tryb sprzężenia zwrotnego wyjściowego (OFB). W trybach bez sprzężenia zwrotnego szyfrowanie każdego kolejnego bloku danych może być wykonane niezależnie od przetwarzania innych bloków. W trybach ze sprzężeniem zwrotnym nie jest możliwe rozpoczęcie szyfrowania następnego bloku danych przed zakończeniem kodowania bloku bieżącego i wszystkie bloki muszą być szyfrowane sekwencyjnie. To ograniczenie nie dotyczy operacji deszyfrowania, która może być wykonywana równolegle na kilku blokach szyfrogramu we wszystkich trybach. Zgodnie z obecnymi standardami bezpieczeństwa, szyfrowanie jest wykonywane przede wszystkim z użyciem trybów sprzężenia zwrotnego, jak CBC i CFB, zaś tryby bez sprzężenia zwrotnego są głównie stosowane do szyfrowania kluczy podczas ich dystrybucji. Te wymagania bezpieczeństwa uniemożliwiają wykorzystanie w pełni efektywności implementacji sprzętowych opartych na równoległym przetwarzaniu wielu bloków danych. Podstawowe architektury Wybierając architekturę dla implementacji szyfrów w strukturach FPGA, wystarczy ograniczyć się do dwóch typów: bazowej architektury iteracyjnej i architektury z rozwiniętą (częściowo lub w pełni) pętlą. Podstawową architekturę sprzętową stosowaną do implementacji jednostki szyfrującej/deszyfrującej typowego szyfru blokowego z tajnym kluczem pokazano na rys. 10a. Jedną rundę szyfru zrealizowano jako układ kombinacyjny, uzupełniony rejestrem i multiplekserem. W pierwszym cyklu zegara wejściowy blok danych jest podawany przez multiplekser i zapisywany w rejestrze. W każdym kolejnym cyklu zegara jest realizowana operacja jednej rundy szyfrowania, a jej rezultat podawany zwrotnie do układu przez multiplekser i zapisywany następnie w rejestrze. Architektura bazowa ma dwie cechy charakterystyczne: M w tym samym czasie jest kodowany tylko jeden blok danych, M liczba cykli zegara, koniecznych do zaszyfrowania jednego bloku danych, jest równa liczbie rund szyfru. Architektura z częściowo rozwiniętą pętlą jest przedstawiona na rys. 10b. Jedyna różnica w porównaniu z bazową architekturą iteracyjną polega na tym, że część kombinacyjna układu realizuje K rund szyfrowania zamiast jednej. Liczba K musi być podzielnikiem całkowitej liczby rund. Liczba cykli zegara koniecznych do zaszyfrowania jednego bloku danych jest K-krotnie mniejsza od liczby rund. Minimalny okres zegara wzrasta ze współczynnikiem nieco mniejszym niż K. O Rys. 9. Środowisko projektowe CAD stępnie zweryfikowane przy użyciu symulatora Active-HDL z firmy ALDEC. Do korekcji błędów i weryfikacji kodów źródłowych wykorzystano wektory testowe i pośrednie wyniki przetwarzania z opublikowanych wcześniej implementacji programowych. Przedstawione raporty zawierają powierzchnię, szybkość i inne dane o implementacji oraz zbiory danych do symulacji czasowej i do skonfigurowania układu. O Rys. 10. Podstawowe architektury szyfrów w trybach ze sprzężeniem zwrotnym: a) bazowa architektura iteracyjna, b) z częściowo rozwiniętą pętlą, c) z pętlą w pełni rozwiniętą PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003 415

Architektura z rozwiniętą w pełni pętlą jest pokazana na rys. 10c. Schemat ten nie zawiera wejściowego multipleksera ani linii sprzężenia zwrotnego. Dzięki temu jest możliwy niewielki wzrost szybkości i zmniejszenie powierzchni układu w porównaniu z architekturą o częściowo rozwiniętej pętli zawierającej taką samą liczbę rund. Z przeglądu architektur wynika, że do implementacji szyfrów AES w układach FPGA optymalny wybór stanowi bazowa architektura iteracyjna. Zapewnia ona maksymalny współczynnik szybkość/powierzchnia dla trybów operacyjnych ze sprzężeniem zwrotnym (CBC, CFB), używanych powszechnie do szyfrowania masowych danych i gwarantuje szybkości i powierzchnie bliskie optymalnym. Wydaje się bardzo prawdopodobne, że architektura ta będzie powszechnie stosowana w większości aplikacji. Jest także względnie łatwa do implementacji w podobny sposób dla wszystkich szyfrów AES, dzięki czemu umożliwi bardziej miarodajne porównanie. PRODUKTY WIRTUALNE NOWA OFERTA NA RYNKU TELEKOMUNIKACJI Wraz z wprowadzeniem struktur reprogramowalnych pojawiły się jeszcze inne możliwości aplikacyjne. Wynikają one nie tylko z poprawy parametrów funkcjonalnych i czasowych oraz zmian w architekturze logicznej, ale również z samej istoty reprogramowalności. Jeden z kierunków takich aplikacji określa koncepcja produktu wirtualnego systemu, funkcji lub układu scalonego, które nie istnieją w rzeczywistości materialnej, ale potencjalnie mogą być w każdej chwili zrealizowane. Takie układy wirtualne to zarówno gotowe produkty o zmiennych funkcjach i właściwościach, jak również elastyczne klocki, z których można konstruować większe systemy. Powstał ogromny rynek wirtualnych produktów specjalizowanych, tzw. rynek własności intelektualnej IP (Intellectual Property Business) zawartej w układach zaprojektowanych w postaci kodów źródłowych języków HDL. Działalnością taką zajmują się m.in. firmy: ALTERA, XILINX INC., TILAB, CAST INC., insilicon CORPORA- TION, DIGITAL COMMUNICATION TECHNOLOGIES, IP SEMICON- DUCTORS, a w Polsce DIGITAL CORE DESIGN. Typową ofertą tych firm są właśnie układy DSP, a w szczególności: kodery FFT i DCT, układy kryptograficzne, komutatory i rutery ATM, dekodery Viterbiego dla sieci LAN, skramblery i deskramblery itp. Rynek produktów wirtualnych to jednocześnie ogromne wyzwanie dla zaawansowanych metod optymalizacji logicznej. Wynika to z faktu, że konkurencję na tym rynku będą wygrywać tylko najlepsze produkty. Do ich realizacji zostaną wykorzystane zaawansowane metody syntezy, niejednokrotnie występujące wyłącznie w specjalistycznym oprogramowaniu uniwersyteckim. Duża złożoność struktur FPGA, a także ich nietypowe konstrukcje (komórki), spowodowały wzrost roli i znaczenia zaawansowanych procedur syntezy logicznej. Wpływ zaawansowanych procedur syntezy logicznej na jakość implementacji sprzętowych układów przetwarzania informacji i sygnałów jest szczególnie znaczący w algorytmach wykorzystujących struktury tablicowe typu LUT. Struktury takie są powszechnie stosowane w filtrach cyfrowych, układach transformacji falkowej [31], w szczególności do realizacji wykorzystujących arytmetykę rozproszoną [26], a także w algorytmach kryptograficznych, korzystających z tzw. bloków permutacyjno-podstawieniowych. W Zakładzie Podstaw Telekomunikacji IT-PW opracowano specjalistyczne oprogramowanie do optymalizacji implementacji sprzętowych struktur typu LUT. Oprogramowanie to nazwane DEMAIN [21], [22], [27] jest dostępne nieodpłatnie na stronie internetowej Zakładu Podstaw Telekomunikacji IT-PW: http://www.zpt.tele.pw.edu.pl. W systemie DEMAIN, jako główną procedurę syntezy logicznej zorientowanej na struktury FPGA, wykorzystuje się tzw. algorytm dekompozycji zrównoważonej. Skuteczność tego oprogramowania można ocenić na podstawie eksperymentów przeprowadzonych z realizacjami układów cyfrowych wyposażonych w struktury specyfikowane tablicami LUT. Eksperymenty te polegały na implementacji typowych układów cyfrowych głównie z dziedziny teleinformatyki za pomocą różnych systemów projektowania, a następnie na porównaniu ich realizacji pod względem liczby użytych komórek odpowiedniej struktury FPGA. Wymowa przeprowadzonych eksperymentów jest znacząca, bowiem do projektowania użyto systemów renomowanych firm światowych, takich jak Altera, Synopsys, Exemplar i Xilinx. W szczególności zrealizowano i porównano następujące układy: M bin2bcd1 konwerter kodu binarnego na BCD dla liczb z zakresu od 0 do 99, M bin2bcd2 konwerter kodu binarnego na BCD dla liczb z zakresu od 0 do 355, M DESboxes zespół skrzynek podstawieniowych szyfru DES, M rd88 sbox z algorytmu kryptograficznego Rijndael, M DESaut kombinacyjną część układu sekwencyjnego z implementacji algorytmu kryptograficznego DES, M 5B6B kombinacyjną część układu kodera 5B-6B. W tabeli 1 przedstawiono wyniki porównania metody wykorzystującej dekompozycję zrównoważoną, zaimplementowaną w systemie DEMAIN, z metodami zaimplementowanymi w systemach: SIS, FPGA Express, Leonardo Spectrum i MAX+PlusII. Przykładowe układy zostały zaimplementowane w strukturach FPGA z rodziny O Tabela 1. Wyniki implementacji rzeczywistych układów przy użyciu różnych narzędzi syntezy logicznej Przykład DEMAIN MAX +Plus II Architektura FPGA EPF10K10LC84-3 FPGA Express Leonardo Spectrum SIS liczba komórek logicznych bin2bcd1 13 131 30 30 bin2bcd2 39 505 225 120 136 DESboxes 184 585 486 192 rd88 167 332 341 245 248 DESaut 28 46 25 30 32 5B6B 41 92 100 49 51 FLEX. W tabeli podano liczbę komórek logicznych wymaganych do implementacji poszczególnych układów. Z podanych rezultatów wynika, że realizacja za pomocą metody wykorzystującej dekompozycję zrównoważoną jest najoszczędniejsza pod względem liczby zajętych komórek i wygrywa nawet z realizacją osiągniętą za pomocą uniwersyteckiego systemu SIS [35], opracowanego na Uniwersytecie Kalifornijskim w Berkeley. W szczególności warto zwrócić uwagę na implementację konwertera kodu binarnego na kod BCD (wersja 1) oraz na implementacje skrzynek podstawieniowych (s-box) szyfrów DES i Rijndael. Jak widać, wspomaganie procesu projektowania zaawansowanymi procedurami syntezy logicznej prowadzi do rezultatów niemożliwych do uzyskania nawet za pomocą najlepszych systemów komercyjnych. Trzeba również podkreślić, że na jakość powyższych implementacji w systemach komercyjnych nie mają wpływu nawet najlepsze kompilatory języków HDL. Konwerter BIN2BCD1 jest typowym przykładem takiej sytuacji. Otóż konwerter ten można zaprojektować bądź to w strukturze zbudowanej z bloków funkcjonalnych według tzw. algorytmu +3 1), bądź też jako układ kombinacyjny realizujący bezpośrednio tablicę LUT konwertera. W obu przypadkach strukturę konwertera można zapisać w językach opisu sprzętu, np. AHDL lub VHDL. Opisując realizację według algorytmu +3 w języku VHDL i dokonując odpowiedniej kompilacji w systemie MAX+PLUS II amerykańskiej firmy Altera, uzyskuje się realizację układu BIN2BCD1 na 62 komórkach struktury FLEX 10K [23]. Ten sam układ opisany tablicą prawdy (w specyfikacji VHDL instrukcjami CASE) i skompilowany w tym samym systemie Altery zajmuje 131 komórek FLEX. Ale wprowadzając tablicę prawdy układu BIN2BCD1 do systemu DEMAIN i dokonując odpowiedniej dekompozycji, uzyskuje się realizację tego samego konwertera na zaledwie 13 komórkach struktury FLEX czyli 10 razy lepiej. Nie mniej intrygujące są wyniki implementacji skrzynek S-box algorytmów kryptograficznych DES i Rijndael. Istotne jest, że wykorzystanie tak zrealizowanych bloków permutacyjnych do budowy modułu rundy DES, a następnie modułu ścież- - 1) Dokładny opis takiej realizacji można znaleźć w książce [21] 416 PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003

ki przepływu danych nie wymaga żadnych dalszych zmian w innych plikach składowych projektu. Implementacje ścieżki przepływu danych w strukturze rodziny FLEX10K program DEMAIN redukuje do 296 komórek logicznych. W porównaniu do 709 komórek niezbędnych do realizacji tego bloku bez zastosowania programu DEMAIN stanowi to ponad dwukrotną redukcję wymaganych zasobów. Optymalizacja z użyciem systemu DEMAIN poprawia także maksymalna częstotliwość taktowania modułu DES. Wzrosła ona o ponad 51,5 MHz. Ponieważ do zaszyfrowania jednego bloku danych tekstu jawnego potrzeba 16 cykli, szacunkowa szybkość szyfrowania P tego modułu wynosi: P = 51,5 MHz/16 64 bity = 206 Mbit/s. Oznacza to prawie dwukrotny wzrost szybkości szyfrowania bloku ścieżki przepływu danych. Podobnie jak w przypadku bloku rundy zrealizowanego bez wykorzystania dekompozycji, rzeczywista szybkość układu realizującego cały algorytm DES będzie zależała od sposobu realizacji pozostałych modułów tego algorytmu, a więc modułu sterowania i modułu generacji podkluczy. Tak zoptymalizowany blok rundy umożliwia realizację całej ścieżki rozpływu danych w sposób potokowy. Specyfikację takiej realizacji w języku AHDL podano w tabeli 2. Wykorzystano tu zmodyfikowany blok rundy (desroundp). Modyfikacja polega na dodaniu na wyjściu modułu odpowiedniego rejestru. Umieszczenie 16 bloków tak zmodyfikowanych bloków rundy w łańcuchu zapewnia znacznie efektywniejszą pracę układu, gdyż dane mogą być szyfrowane potokowo. Układ wymaga 4346 komórek logicznych i może pracować z szybkością P = 86,9 MHz 64 bity 5 Gbit/s. O dużej skuteczności systemu DEMAIN świadczy również realizacja szyfru HIEROCRYPT, wykonana w ramach pracy magisterskiej na Wydziale Cybernetyki WAT [34]. Efektem jego zastosowania była redukcja zasobów sprzętowych z ok. 22 tys. komórek logicznych do 10 tys., a także 5-krotne przyśpieszenie działania układu. Praca ta zdobyła I nagrodę w konkursie na najlepszą pracę magisterską, zorganizowanym w ramach konferencji ENIGMA. Przeprowadzone eksperymenty w pełni potwierdzają tezę, że komercyjne systemy projektowania układów cyfrowych niejednokrotnie realizują projekty dalekie od rozwiązań optymalnych pod względem zajętości zasobów sprzętowych. Sytuacja ta jest szczególnie niepokojąca dla najnowszych układów reprogramowalnych typu O Tabela 2. Specyfikacja rozpływu danych w języku AHDL OPTIONS BIT0 = MSB; INCLUDE "iniperm"; INCLUDE "desroundp"; INCLUDE "invperm"; SUBDESIGN datapathp( clk : INPUT; plaintext[1..64] : INPUT; subkey[1..16][1..48] : INPUT; encrypteddata[1..64] : OUTPUT; ) VARIABLE ip : iniperm; round[1..16] : desroundp; invp : invperm; BEGIN round[].clk = clk; ip.in[] = plaintext[]; round[1].r[] = ip.out[33..64]; round[1].l[] = ip.out[1..32]; round[1].k[] = subkey[1][]; FOR i IN 1 TO 15 GENERATE round[i+1].r[] = round[i].nextr[]; round[i+1].l[] = round[i].nextl[]; round[i+1].k[] = subkey[i+1][]; END GENERATE; invp.in[] = (round[16].nextr[],round[16].nextl[]); encrypteddata[] = invp.out[]; END; FPGA i FLEX. Przyczyna tego zjawiska tkwi w niedostosowaniu procedur syntezy logicznej, które w systemach komercyjnych są z reguły realizowane według klasycznych metod minimalizacji funkcji boolowskich i nie uwzględniają metod dekompozycji funkcjonalnej [22]. Zatem stosowanie zaawansowanych systemów uniwersyteckich niejednokrotnie może się przyczynić do sukcesu rynkowego, w szczególności specyficznej techniki układów FPLD. Omówione w artykule zastosowania układów reprogramowalnych w cyfrowym przetwarzaniu sygnałów i kryptografii, dzięki możliwości zmiany konfiguracji w trakcie pracy i elastycznemu wykorzystywaniu zasobów sprzętowych, zapewniają ich wykorzystanie do realizacji złożonych algorytmów obliczeniowych. W połączeniu z możliwościami wspierania procesów optymalizacji komercyjnych systemów zaawansowanymi systemami syntezy i optymalizacji logicznej stwarza to szansę dla rozwoju rodzimych opracowań urządzeń telekomunikacyjnych. Jest ona szczególnie widoczna w systemach multimedialnych i kryptograficznych, dla których istotniejsze są parametry techniczne, wynikające z istoty reprogramowania, niż jednostkowy koszt produkcji. LITERATURA [1] Arnold J. M.: The Splash 2 software environment. In D. A. Buell and K. L. Pocek, editors, Proceedings of IEEE Workshop on FPGAs for Custom Computing Machines, Napa, CA, April, 1993 [2] Arnold M., Buell D. A. and Davis E. G.: VHDL programming on Splash 2. In More FPGAs: Proceedings of the 1993 International Workshop on Field-Programmable Logic and Applications, Oxford, England, September 1993 [3] Arnold, D. A. Buell, and E. G: Davis. Splash 2. In Proceedings of the 4th Annual ACM Symposium on Parallel Algorithms and Architectures, June 1992 [4] Bertin P. and Touati H.: PAM programming environments: Practice and experience. In D. A. Buell and K. L. Pocek, editors, Proceedings of IEEE Workshop on FPGAs for Custom Computing Machines, Napa, CA, April 1994 [5] Connor T., Deng S., Marchant S.: Cryptographic Coprocesor with Algorithm Agility, Worcester Polytechnic Institute, Worcester, March 1999 [6] Elbirt A. J., Yip W., Chetwynd B., Paar C.: An FPGA implementation and performance evaluation of the AES block cipher candidate algorithm finalists, Proc. 3 rd Advanced Encryption Standard (AES) Candidate Conference, New York, April 13-14, 2000 [7] Gaj K., Chodowiec P.: Comparison of the hardware performance of the AES candidates using reconfigurable hardware, Proc. 3 rd Advanced Encryption Standard (AES) Candidate Conference, New York, April 13-14, 2000 [8] Gokhale M., Holmes W., Kopser A., Lucas S., Minnich R., Swelly D., and Lopresti D.: Building and using a highly parallel programmable logic array. IEEE Computer, 24 (1), January 1991 [9] Gokhale M., Kopser A., Lucas S. and Minnich R.: The logic description generator. Technical Report SRC-TR-90-011, Suprtcomputer Research Center (SRC), 1990 [10] Gokhale M. and Schott B.: Data Parallel C on a reconfigurable logic array. Journal of Supercomputing, 9 (3), 1994 [11] Guccione S. A., Delon L., Downs D.: A reconfigurable content addressable memory, Parallel and Distributed Processing. Springer- Verlag, Berlin, May 2000 [12] http://www.altera.com [13] http://www.atmel.com [14] http://www.windriver.com [15] http://pw1.netcom.com [16] http://www.tsi-telsys.com [17] http://www.xilinx.com [18] IEEE Computer Society, Proceedings of IEEE Workshop on FPGAs for Custom Computing Machines, 1993-1996 [19] Jachna Z.: Analiza metod specyfikacji układów cyfrowych z punktu widzenia optymalizacji logicznej i odwzorowania technologicznego. Rozprawa doktorska, WAT, Warszawa 2002 [20] Jasiński K., Zbysiński P.: Rekonfigurowalny koprocesor systemowy: uniwersalna platforma obliczeniowa, Przegląd Telekomunikacyjny i Wiadomości Telekomunikacyjne, nr 10, 2000 [21] Łuba T., Zbierzchowski B.: Komputerowe projektowanie układów cyfrowych. Wydawnictwa Komunikacji i Łączności, Warszawa 2000 [22] Łuba T.: Synteza układów logicznych, Wyższa Szkoła Informatyki Stosowanej i Zarządzania, wyd. 2, poprawione i rozszerzone, Warszawa 2001 PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003 417

[23] Łuba T., Zbierzchowski B., Zbysiński P.: Układy reprogramowalne dla potrzeb telekomunikacji cyfrowej. Przegląd Telekomunikacyjny i Wiadomości Telekomunikacyjne, nr 5, 2002 [24] Łuba T. (red.), Rawski M., Tomaszewicz P., Zbierzchowski B.: Synteza układów cyfrowych. WKŁ Warszawa (przewidywany termin wydania listopad 2003) [25] Mosanya E. et al.: CryptoBooster: A Reconfigurable and Modular Cryptographic Coprocesor, Proceedings of the Workshop on Cryptographic Hardware and Embedded Systems, Worcester August 1999 [26] Meyer-Baese U.: Digital Signal Processing with Field Programmable Gate Arrays, Springer Verlag, Berlin 2001 [27] National Security Agency, Initial plans for estimating the hardware performance of AES submissions http://csrc.nist.gov/encryption/ aes/round2/round2.htm [28] Nowicka M., Rawski M., Łuba T.: DEMAIN an Interactive Tool for FPGA-Based Logic Decomposition, Proceedings of the 6 th International Conference Mixed Design of Integrated Circuits and Systems, Kraków 1999 [29] IFAC Workshop on Programmable Devices and Systems (E. Hrynkiewicz chairman), PDS2001, materiały konferencyjne, Gliwice 2001 [30] Pasierbiński J., Zbysiński P.: Układy programowalne w praktyce, WKŁ, Warszawa 2001 [31] Rakowski W.: O implementacjach sprzętowych transformacji falkowej. Przegląd Telekomunikacyjny i Wiadomości Telekomunikacyjne, nr 2 3, 2003 [32] Rawski M., Jóźwiak L., Łuba T.: Functional decomposition with an efficient input support selection for sub-functions based on information relationship measures. Journal of Systems Architecture, 47, Elsevier Science B. V., 2001 [33] Reprogramowalne układy cyfrowe (J. Sołdek przewodniczący Komitetu Programowego), materiały IV Konferencji Naukowej, Szczecin 2001 [34] Rogowski M.: Implementacja algorytmu HIEROCRYPT w strukturach programowalnych. Praca magisterska, WAT, 2003 [35] Sentovich E., et al.: SIS: A system for Sequential Circuits Synthesis. Electronics Research Laboratory Memorandum, No. VCB/ERLM92/41, University of California, Berkeley, 1992 [36] Tessier R., Burlesson W.: Reconfigurable Computing for Digital Signal Processing: A Survej. Journal of VLSI Signal Processing, 28, 2001 [37] Taylor R., Goldstein S.: A High-Perfomance Flexible Architecture for Cryptography, Proceedings of the Workshop on Cryptographic Hardware and Embedded Systems, Worcester August 1999 [38] Vuillemin Bertin P., Roncin D., Shand M., Touati H., and Boucard P.: Programmable active memories: Reconfigurable systems come of age. IEEE Transactions on VLSI Systems, 4 (1), 1996 [39] Wiatr K.: Sprzętowe implementacje algorytmów przetwarzania obrazów w systemach wizyjnych czasu rzeczywistego. AGH, Kraków 2002 [40] Zbysiński P.: Rekonfigurowalne układy FPSLIC firmy Atmel, Elektronizacja nr 7 8 2000 418 PRZEGLĄD TELEKOMUNIKACYJNY ROCZNIK LXXVI nr 8 9/2003