Przemysław Sołtan Oleg Maslennikow Wydział Elektroniki Politechnika Koszalińska ul. JJ Śniadeckich 2, 75-453 Koszalin e-mail: kerk@ie.tu.koszalin.pl Model reprogramowalnego prądowego układu działającego w logice wielowartościowej Słowa kluczowe: układy reprogramowalne (FPGA), język opisu sprzętu (VHDL), bramki prądowe, cyfrowe układy prądowe, logika wielowartościowa (MVL), modelowanie i weryfikacja logiczna układu, metajęzyk (XML). STRESZCZENIE W pracy zaprezentowano koncepcję modelu układu reprogramowalnego, zbudowanego w oparciu o bramki prądowe. Proponowana koncepcja jest oparta o adaptację znanych narzędzi programowych umożliwiających modelowanie i symulacje układów cyfrowych na poziomie logicznym (np. Active-HDL firmy Aldec), poprzez wprowadzenie niestandardowej tablicy rezolucji sygnałów i biblioteki bramek prądowych. Wynikiem realizacji koncepcji jest możliwość wygenerowania, dla zadanego wielowartościowego układu prądowego, opisu VHDL odpowiedniego układu reprogramowalnego mvlfpga z zaimplementowanym w nim docelowym układem. 1. WPROWADZENIE Zastosowanie technologii bramek prądowych umożliwia realizację większej liczby stanów logicznych, niż ma to miejsce w klasycznych bramkach napięciowych działających w logice binarnej (algebrze Boole a). Z tego powodu prądowe układy cyfrowe, w tym prądowe układy reprogramowalne, mogą działać w logice wielowartościowej MVL (ang. Multiply Valued Logic) z podstawą N 2. Projektowanie reprogramowalnego układu prądowego FPGA dla logiki wielowartościowej wymusza stworzenie szeregu typowych projektów testowych, które mają być realizowane w danej archiekturze. Daje to możliwość wstępnej oceny wymagań, jakie powinna spełniać projektowana architektura FPGA. Typowe projekty testowe - to proste układy realizujące operacje logiczne i arytmetyczne w danej logice. Przykładem takiego projektu może być realizacja sumatora wielowartościowego o podstawie N, którego schemat ogólny przedstawiono na rys. 1a (gdzie N i 2 w bramkach prądowych oznaczają wartości podstaw MVL). Rys. 1b przedstawia przypadek szczegółowy sumatora wielowartościowego - klasyczny jedno-bitowy (N=2) sumator zbudowany z bramek prądowych. Ponieważ w logice prądowej operacja dodawania algebraicznego może być realizowana za pomocą połączenia przewodów, reprezentujących poszczególne jej argumenty, w jednym węźle, w układzie sumatora stosuje się ta właściwość. W przypadku, gdy wartość sumy jest równa lub przekracza N, wówczas uaktywnia się blok korekcji wyniku bazujący na IX Projekty finansowane przez MNiI 585
N -wyjściowej bramce anty-inwertera, zmniejszający wartość sumy S o wartość podstawy N. Rys.1. Schemat sumatora wielowartościowego: (a) ogólny o podstawie N i (b) klasyczny jedno-bitowy N=2. Działanie przedstawionych wyżej układów może zostać zweryfikowane bezpośrednio na podstawie ich opisów na poziomie bramek prądowych [1]. Jednak implementacja układów prądowych w układzie rekonfigurowalnym wymusza przejście na trochę niższy poziom, a mianowicie, na opis układu w oparciu o elementarne bloki K, AI oraz I, będące elementami składowymi bramek prądowych. Jako przykład, rys. 2a przedstawia budowę N-wartościowej bramki prądowej z wyjściami anty-inwertera Y 1 i podwójnego inwertera Y 2. Rys. 2b przedstawia budowę binarnej bramki prądowej (N=2), która została wykorzystana w układzie sumatora. Rys. 2. Budowa bramek prądowych z wyjściami anty-inwertera Y 1 i podwójnego inwertera Y 2 : (a) N-wartościowej oraz (b) binarnej dla N=2. Analiza schematów z rys.2 świadczy o tym, że wyróżniającą cechą opracowanych przez autorów bramek prądowych jest modułowość i regularność ich budowy. Każda bramka prądowa składa się z obwodu wejściowego przedstawiającego sobą (N -1) szeregowo połączonych komparatorów K oraz jednego lub kilku (w zależności od liczby wyjść bramki) obwodów wyjściowych, z których każdy zawiera (N-1) bloków typu inwerter I lub antyinwerter AI. W ten sposób można konstuować bramki prądowe dla logik o różnych podstawach N, a poprzez dodanie matrycy określonych przełączników rekonfigurowalny układ prądowy umożliwiający implementację w nim układów prądowych działających w logice wielowartościowej lub w arytmetyce resztowej. Podstawowym problemem jest zaprojektowanie takiej architektury, która w efektywny sposób (przy minimalnych zasobach sprzętowych) będzie realizować podstawowe operacje logiki N -wartościowej jak np. operację dodawania arytmetycznego. 2. MODELOWANIE WIELOWARTOŚCIOWYCH UKŁADÓW PRĄDOWYCH Modele układów cyfrowych zbudowanych w oparciu o bramki prądowe bazują na języku opisu sprzetu VHDL. Ten poziom opisu układu (poziom RTL lub nawet opis behawioralny) umożliwia szybsze symulowanie projektowanych układów prądowych. W tym celu zaprojektowano bibliotekę nstd_logic_2000, która zawiera zestaw bramek prądowych i ich symboli graficznych. 586
Biblioteka ta bazuje na niestandardowej tablicy rezolucji sygnałów (uwzględniającej fizyczne właściwości techniki prądowej), i jest szczegółowo opisana w publikacji [2]. Pozwala to na opracowanie opisu wielowartościowego układu prądowego w jezyku VHDL oraz na jego wizualizację i weryfikację logiczną w standardowych symulatorach VHDL. Jako przykład, na rys. 3 przedstawiono środowisko projektowe ActiveHDL [3] z zaimplementowaną biblioteką nstd_logic_2000 i projektem jednobitowego sumatora, zbudowanego z bramek prądowych. Rys. 3. Środowisko projektowe Active-HDL 6.2 (Aldec Inc.) Opracowanie modelu VHDL docelowego układu prądowego za pomocą biblioteki bramek prądowych jest jednym ze sposobów modelowania jego działania. Jednak, aby w pełni wykorzystać możliwości przyszłej rekonfigurowalności układów, zastosowano opis za pomocą bloków K, I, AI, które są elementami składowymi każdej bramki prądowej. Ich odpowiednie łączenie umożliwia realizację każdej złożonej bramki prądowej opisanej w bibliotece nstd_logic_2000. Z tego względu można określić trzy poziomy modelowania układów prądowych: projekt opisany bezpośrednio na poziomie bramek prądowych; projekt oparty na elementarnych blokach K, I, AI; projekt opisany jako odpowiednio skonfigurowany układ reprogramowalny mvlfpga. Bazując jedynie na tablicy rezolucji sygnałów [4], czyli typie nstd_logic zaprojektowano nową biblioteką nstd_mvl_2004 za pomocą której można projektować układy z wykorzystaniem bloków K, I oraz AI. Tym samym jest to bazowa biblioteka do realizacji modelu układu reprogramowalnego pracującego w logice wielowartościowej. 3. MODEL REPROGRAMOWALNEGO UKŁADU PRĄDOWEGO Rekonfigurowalność układu wymusza zastosowanie w nim zestawu różnego rodzaju przełączników. Na rys. 4 przedstawiono przykładowy model składający się z bloków IX Projekty finansowane przez MNiI 587
funkcyjnych: IOB, K, I, AI, które zostały wykorzystane do realizacji sumatora o podstawie N=2. Blok -1 został zastąpiony blokiem AI. Rys. 4. Przykładowy model reprogramowalnego układu prądowego MV10S36-v2 W zaproponowanym modelu wykorzystano trzy typy macierzy przełączników programowalnych. Ponieważ konfiguracja połączeń jest dokonywana tylko w trybie konfiguracji całego układu, a ich stan nie jest zmieniany w trybie pracy, to ich realizacja jest podobna do przełączników stosowanych w konwencjonalnych układach PLD/FPGA. Rys.5. Macierze przełączników: rozgałęzień matrixa (a), odcinających matrixb (b), przyłączenia matrixc (c). W projekcie każdy typ macierzy przełączników określony jest przez literkę jej typu (A,B,C) oraz dodatkową liczbę określającą wymiar macierzy np. MatrixA4. Taka notacja nazewnicza ułatwia automatyczną generację modeli macierzy dla innych wymiarów wymaganych dla nowych architektur. W modelu zastosowano opis behawioralny funkcjonowania przełączników. W przypadku rzeczywistej implementacji dochodzą jeszcze dodatkowe elementy, co jest spowodowane wykorzystaniem technologii bramek prądowych. W celu zaprogramowania przykładowego modelu MVL10S36 wymagana jest określona liczba bitów konfiguracyjnych. Ich liczbę można wyznaczyć na podstawie zadanych parametrów zawartych w tabeli 1. 588
Tabela 1 Parametry okreslające modelu architektury MV10S36 układu reprogramowalnego Liczba wierszy macierzy przełączników rows.matrixa = 4 Liczba kolumn macierzy przełączników cols.matrixa = 4 Liczba bloków IOB count.iob = 26 Liczba wyprowadzeń układu count.pad = 26 Liczba bloków K, I oraz AI count.k = 12, count.i = 18, count.ai = 6 Liczba macierzy typy MatrixA count.matrixa = rows.matrixa*cols.matrixa = 28 Liczba macierzy typu MatrixB countmatrixb = rows.matrixa*4+cols.matrix*3 = 37 Liczba maicerzy type MatrixC count.matrixc = count.iob+3*count.k+2*count.i+2.count.ai = 110 Liczba wewnetrznych bloków funkcyjnych (bez bloków IOB) S = count.k + count.i + count.ai = 36 (liczba 36 jest stosowana przy określaniu nazwy generowanej architektury np. MVL10S36) Na podstawie zadanych parametrów można określić liczbą bitów konfiguracyjnych macierzy przełączników (LBKM): LBKM = count.matrixa*(4*6)+count.matrixb*4+count.matrixc4*4 = 175 (1) oraz liczbę bitów konfiguracyjnych bloków funkcyjnych (LBKBF): LBKBF = 2*count.IOB = 52 (2) W rozpatrywanym modelu mogą występować także dodatkowe połączenia pomiędzy blokami K co może powodować wystąpienie dodatkowych bitów konfiguracyjnych. Same bloki K, I oraz AI nie posiadają bitów konfiguracyjnych i do określania LBKBF uwzględniono jedynie bloki IOB (input-output block), które można konfigurować jako input, output oraz inout. Liczba bitów konfiguracyjnych (LBK) dla rozpartywanego modelu jest sumą liczby bitów konfiguracji macierzy przełączników i konfiguracji bloków funkcyjnych: LBK = LBKM + LBKBF = 227 (3) 4. GENEROWANIE, WIZUALIZACJA I TESTOWANIE MODELI REPROGRAMOWALNYCH UKŁADÓW PRĄDOWYCH Celem podprojektu jest umożliwienie łatwej zmiany konfiguracji projektowanych rozwiązań, czyli zmiana założeń budowy modelu bez ponownego opracowywania nowego kodu testowego. Rys. 6. Schemat blokowy środowiska do generowania modeli architektur reprogramowalnych układów prądowych Wynika to z zasadniczego problemu jakim jest zaprojektowanie takiego modelu, który umożliwia realizację typowych konfiguracji przy użyciu jak najmniejszej liczby dodatkowych bloków. Pomóc ma w tym opis projektu zrealizowany z użyciem standardu XML ułatwiającego przetwarzanie danych. W ten sposób po przetworzeniu uzyskuje się zestaw modeli, zgodnych z opisem języka VHDL, opartych o jedno wspólne entity określające wyprowadzenia układu oraz wiele architektur. Na różnice w poszczególnych modelach ma wpływ rodzaj i liczba bloków funkcyjnych oraz sposób ich łączenia przy użyciu różnych wariantów macierzy przełączników. Funkcjonalne działanie wszystkich wygenerowanych w ten sposób IX Projekty finansowane przez MNiI 589
modeli powinno dawać ten sam wynik w postaci jednakowych odpowiedzi na zadane pobudzenie. Aby ten proces zautomatyzować w kod modeli jest wstrzykiwany kod testów jednostkowych autorskiej biblioteki vhdlunit [5]. Wymaga to jednak opracowania testowych pobudzeń danego modelu. Schemat blokowy środowiska generacji i testowania architektur przedstawiono na rys. 6. Dodatkowym elementem projektu jest wizualizacja struktur przy użyciu standardu grafiki wektorowej SVG. Przykładowy widok wygenerowanego modelu został przedstawiony na rys. 4. 5. ROZWÓJ PROJEKTU Rozwój projektu ma na celu powiększenie liczby przykładów testowych obejmujących również zagadnienia arytmetyki resztowej RNS oraz rozszerzenie metod weryfikacji jako ważnego czynnika poprawności projektowanych rozwiązań. W planach rozwojowych jest uwzględnienie współczynnika zajętości powierzchni poszczególnych bloków funkcyjnych oraz macierzy przełączników realizowanych fizycznie w strukturach krzemowych. Uwzględnienie tego czynnika ma istotne znaczenie w określaniu rozmiaru zajętości powierzchni krzemowych w przypadku sprzętowej realizacji poszczególnych modeli. Wpływa na to liczba macierzy przełączników, która ma zasadniczy udział w wielkość układu w porównaniu do niewielkiej liczby i wielkości bloków K, AI i I. 6. WNIOSKI W pracy przedstawiono model reprogramowalnego układu realizowanego w technologii prądowej. Zaprojektowane prądowe bloki K, I, AI umożliwiają realizację projektów wykorzystujących logikę wielowartościową i arytmetykę resztową. Opracowanie zestawu typowych rozwiązań ma pomóc w wyborze optymalnego modelu rzeczywistej implementacji sprzętowej. Jest to związane z doborem liczby jak i wzajemnych proporcji zaprojektownaych bloków, macierzy przełączników oraz połączeń. W tym celu wymagane jest opracowanie wspólnych pobudzeń do testowania i weryfikacji wszystkich wariantów projektowanych modeli. BIBLIOGRAFIA [1] M. Białko, O. Maslennikow, N. Maslennikow, P. Pawłowski Układy cyfrowe zbudowane w oparciu o bramki prądowe: stan obecny, perspektywy rozwoju i zastosowania. Prace III Konferencji Krajowej Elektroniki, KKE 2004, Kołobrzeg, 2004, pp.83-93. [2] O. Maslennikow, P. Pawłowski, P. Sołtan, R. Berezowski, Current-Mode Digital Gates and Circuits:Conception, Design and Verification. Proc. of the IEEE Int.Conf. on Electronic Circuits and Systems, ICECS 2002, Horwacja, 2002. [3] Środowisko projektowe ActiveHdl Aldec Inc. http://www.aldec.com [4] D. Gretkowski, R. Berezowski, N. Maslennikow. Opis i modelowanie cyfrowych układów prądowych z wykorzystaniem języka VHDL. Prace II Konferencji Krajowej Reprogramowalne układy cyfrowe, RUC 1999, Szczecin, 1999, pp.165-172. [5] P. Sołtan, Koncepcja realizacji testów jednostkowych w języku VHDL. Prace VII Konferencji Krajowej Reprogramowalne układy cyfrowe, RUC 2004, Szczecin, 2004, pp. 117-124. Praca wykonana w ramach grantu KBN 3T11B 05926 590