Wspomaganie modelowania projektów opartych o - kik

Transkrypt

Wspomaganie modelowania projektów opartych o - kik
Przemysław Sołtan, Oleg Maslennikow
Wydział Elektroniki
Politechnika Koszalińska, Koszalin
Wspomaganie modelowania projektów
opartych o reprogramowalne układy FPGA
pracujące w trybie prądowym
STRESZCZENIE
W niniejszej pracy omówiono stan obecny oraz rozwój autorskich projektów wspomagających modelowanie w
oparciu o zastosowanie bramek cyfrowych pracujących w trybie prądowym. Podczas kilkuletnich prac badawczych nad
koncepcją bramek prądowych opracowano zestaw bibliotek opisujących w języku VHDL: logikę wielowartościową
technologii prądowej, bramki prądowe oraz zestaw podstawowych jak i złożonych bloków funkcjonalnych będących
elementami składowymi reprogramowalnych układów FPGA. Coraz większa złożoność projektów wymusiła
stosowanie dodatkowych narzędzi do ich automatyzacji i weryfikacji. W tym celu opracowano autorski program
GEDEON oraz biblioteką testów jednostkowych vhdlUnit.
WSTĘP
Bramki cyfrowe pracujące w trybie prądowym charakteryzują się stałym poziomem
zużywanego prądu w różnych trybach pracy. Ma to wpływ na zmniejszenie zakłóceń, co jest istotne
dla mieszanych układów analogowo-cyfrowych. Tryb prądowy pracy układu cyfrowego oznacza, że
poziom logiczny „0” odpowiada prądowi o wartości zero, a poziom logiczny „1” odpowiada pewnej
ustalonej wartości prądu wpływającego na wejście bramki lub wypływającego z jej wyjścia. W
odróżnieniu od funkcjonowania klasycznych bramek napięciowych, bramki prądowe mogą
posiadać na wyjściu trzeci stan logiczny – „-1” w przypadku którego prąd z wyjścia bramki nie
wypływa, ale do tego wyjścia wpływa. Z tego względu wynika, że fizyczne i logiczne zasady
funkcjonowania bramek są inne od bramek napięciowych. W związku z tym algebra bramek
prądowych nie jest algebrą binarną [1].
Rozwój prac nad koncepcją bramki prądowej wymusił zastosowanie oprogramowania
wspomagającego projektowanie na poziomie logicznym. Coraz bardziej złożone układy cyfrowe
wymagały formalnej metody projektowania jak i efektywnego języka opisu takich układów[2].
Modelowanie na poziomie elektronicznym (SPICE)
Modelowanie na poziomie logicznym (VHDL)
wielowartościowa logika prądowa – tablica rezolucji
biblioteka bramek prądowych (inwerter, anty-inwerter,
podwójny inwerter, anty-podwójny-inwerter)
biblioteka bloków funkcyjnych
(przerzutniki, rejestry, sumatory, multipleksery)
w
biblioteka bloków funkcyjnych układu FPGA
(LUT, IOB, CLB)
ISE (XILINX)
synteza, mapowanie,
rozmieszczenie i
łączenie komórek
FPGA
format XDL
Model reprogramowalnego układu GedeonFPGA
GEDEON
VHDL Å XDL + CFG
biblioteka testów jednostkowych vhdlUnit
Oprogramowanie
wspomagające automatyzację
Rys1. Struktura blokowa projektów wspomagających projektowanie układów prądowych.
Jako bazą do tworzenia wszelkiego rodzaju projektów wybrano język VHDL (ang. Very high
level Hardware Description Language). W oparciu o jego specyfikację zaprojektowano tablicę
rezolucji odpowiadającej logice prądowej, którą przedstawiono poniżej.
U
E
C
B
A
0
1
2
3
4
5
U
U
E
C
B
A
0
1
2
3
4
5
E
E
E
E
E
E
E
E
E
E
E
E
C
C
E
E
E
E
C
B
A
0
1
2
B
B
E
E
E
C
B
A
0
1
2
3
A
A
E
E
C
B
A
0
1
2
3
4
0
0
E
C
B
A
0
1
2
3
4
5
1
1
E
B
A
0
1
2
3
4
5
E
2
2
E
A
0
1
2
3
4
5
E
E
3
3
E
0
1
2
3
4
5
E
E
E
4
4
E
1
2
3
4
5
E
E
E
E
5
5
E
2
3
4
5
E
E
E
E
E
Poszczególne wartości poziomów logicznych
odpowiadają następującym stanom:
5Æ
4Æ
3Æ
2Æ
1Æ
EÆ
UÆ
5
0Æ 0
4
AÆ -1
3
BÆ -2
2
CÆ -3
1
DÆ -4
błąd
stan niezainicjowany
Tab. 1. Tablica rezolucji logiki prądowej
Definiowanie określonego poziomu następuje na wyjściu elementu prądowego wówczas, gdy do
niego dołączone jest następne wyjście innego elementu. Spotkanie się dwóch sygnałów skutkuje
ustaleniem sygnału wyjściowego który można określić poprzez odczytanie wartości z przecięcia
wybranego wiersza i kolumny tablicy rezolucji. Na tej podstawie zaprojektowano nowy typ danych
(nstd_logic) na którym oparto modele czterech typów bramek prądowych (inwerter, anty-inwerter,
podwójny inwerter, anty-podwójny-inwerter). Budowę bramek i zasady algebry prądowej opisano
szczegółowo w publikacji [2].
MODELOWANIE UKŁADÓW PRĄDOWYCH
Wraz z rozwojem biblioteki bramek prądowych opracowano ich graficzną reprezentację
umożliwiającą wizualne budowanie schematów przy pomocy środowiska ActiveHdl firmy Aldec.
Rys. 2. Środowisko projektowe (Active-HDL firmy Aldec – www.aldec.com) z biblioteką
nstd_logic_2000 wspomagającą projektowanie w technologii bramek prądowych.
Zaprojektowana biblioteka (nstd_logic_2000) jest elementem bazowym wszystkich innych
projektów opartych o bramki prądowe. Na jej podstawie opracowano zestaw podstawowych
elementów takich jak: przerzutniki, rejestry, sumatory, multipleksery.
SPARTANII xc2s15 -6 cs144
IOB
CLB
podstawowe bramki
prądowe
Rys. 3. Główne bloki funkcyjne prądowego układu FPGA
Dalszy etap prac doprowadził do zamodelowania bardziej złożonych bloków: generatora
funkcji LUT (ang. Look-up-Table), rekonfigurowalnego programowo bloku logicznego CLB i
bloku wejścia-wyjścia IOB [3]. Wymienione elementy są blokami składowymi reprogramowalnych
układów FPGA opartych o architekturę SPARTAN2 firmy Xilinx [4] przedstawionej na rys. 3.
Coraz większa złożoność projektów wymusiła stosowanie dodatkowych mechanizmów ich
automatyzacji. Przy założeniu, że zaprojektowany model prądowego układów FPGA jest
zewnętrznie logicznie wzorowany na rzeczywistym układzie napięciowym, to do konfiguracji
modelu prądowego można wykorzystać narzędzia syntezy i implementacji dla standardowych
układów FPGA. W tym celu wykorzystano dedykowane oprogramowanie ISE firmy Xilinx.
AUTOMATYZACJA TWORZENIA PROJEKTÓW PRĄDOWYCH UKŁADÓW FPGA
Układy FPGA charakteryzują się matrycową budową składającą się z jednakowych
reprogramowalnych elementów CLB. We wczesnych pracach projektowych dokonywano ręcznej
konfiguracji pojedynczych bloków CLB. Przy większej ich liczbie, co ma miejsce przy dużych
układach FPGA, taki sposób jest nieefektywny. Aby to uprościć wykorzystano własne narzędzie
GEDEON umożliwiające tworzenie danych konfiguracyjnych dla badanego modelu FPGA
zbudowanego z bramek prądowych na podstawie konfiguracji z oprogramowania ISE [5].
ANTLR
XDL
Analiza
leksykalna i
semantyczna
plików XDL
XERCES
XML
Analiza
pliku XML
Analiza
pliku XML
GedeonCfg
(XML)
EMF
(Eclipse Modeling Framework)
GEDEON CORE
VELOCITY
META-MODEL
opisu projektu
implementowanego
w FPGA
V
T
L
VHDL
META-MODEL
konfiguracji
opisującej budowę
układu FPGA
Rys. 4. Struktura blokowa podprojektu GEDEON do translacji konfiguracji układów FPGA.
Realizując projekt napięciowy i dokonując jego standardowej syntezy i implementacji na
architekturę wybranego układu FPGA (narzędziem ISE) można wyeksportować dane
konfiguracyjne tak przygotowanego projektu w postaci tekstowego formatu XDL. Dokonując jego
analizy i przygotowując na jego podstawie model prądowy można sprawdzić jego zgodność
funkcjonalną z zachowaniem początkowego modelu z projektu napięciowego [6].
Projekt GEDEON dokonuje analizy dokumentu XDL i na jego podstawie otrzymuje strukturę
obiektów reprezentujących konfigurację układu FPGA. Analiza pliku XDL wymusiła
zaprojektowanie analizatora leksykalnego i semantycznego. Do tego celu wykorzystano darmowy
projekt ANTLR ( http://antlt.org ) służący do wspomagania budowy: analizatorów, interpreterów,
kompilatorów projektowanych w języku C++ lub JAVA.
W następnym etapie dane poddaje się translacji z uwzględnieniem dodatkowych ustawień
konfiguracyjnych zapisanych w pliku GedeonCfg.xml. Plik zawiera odwzorowanie konfiguracji
standardowego układu FPGA na autorską wersję modelu prądowego i jest wczytywany i
analizowany przy pomocy biblioteki XERCES – darmowego parsera języka XML.
Ostatecznym wynikiem przekształcenia jest wygenerowany dokument VHDL opisu modelu
prądowego układu FPGA korzystającego z modeli komponentów wewnętrznych zaprojektowanych
we wcześniejszym procesie projektowym.
Do generacji dokumentów VHDL z poziomu języka JAVA wykorzystano bibliotekę
VELOCITY dostępną jako darmowy podprojekt udostępniany przez organizację Apache Software
Foundation ( http://jakarta.apache.org ). Velocity jest system szablonów służących do generacji
dokumentów, którego główną ideą jest separacja warstwy kodu danych od ich prezentacji.
Odseparowanie tych dwóch elementów umożliwia VTL (Velocity Template Language). Fragment
przykładowego dokumentu przedstawiono poniżej.
##Fragment skryptu velocity generujący dokument VHDL
…
Fragment drzewa obiektów
entity $fpgaDesign.getName() is
projektu
port (
#set ( $portSize = $fpgaDesign.getPortList().size() )
fpgaDesign
#foreach( $port in $fpgaDesign.getPortList() )
#if( $portSize > $velocityCount )
$port.getName() : $port.getType() nstd_logic;
#else
$port.getName() : $port.getType() nstd_logic
#end
#end
);
end $fpgaDesign.getName();
portList
port
name
device
name
type
architecture $fpgaDesign.getDevice() of $fpgaDesign.getName() is
…
end $fpgaDesign.getDevice();
Na podstawie zaprojektowanego modelu danych możliwe jest wydobywanie zawartości drzewa
obiektów poprzez dostęp do nich za pośrednictwem znaku „$” oraz identyfikatora „.” podobnie jak
to ma miejsce w programowaniu obiektowym. Reszta tekstu zawartego w szablonie staje się częścią
dokumentu wyjściowego, który jest generowany zgodnie z wyrażeniami umieszczonymi w
wierszach zaczynającymi się znakiem „#”.
TESTOWANIE I WERYFIKACJA
Testowanie jest jednym z najważniejszych mechanizmów podnoszących jakości tworzonego
projektu. Ma to szczególne znaczenie dla realizacji sprzętowych w postaci układu scalonego,
któregoh poprawianie jest bardzo kosztowne . W celu jak najlepszego przetestowania schematów
układów prądowych zaprojektowano autorską biblioteką testów jednostkowych vhdlUnit.
Podstawowym celem tworzenia testów jest programowa symulacja i weryfikacja projektu wraz
z raportowaniem wyników na podstawie zaprojektowanych metod asercji – wymuszeń zachowania
określonego warunku pracy symulowanego systemu.
Tworzenie złożonych modeli rekonfigurowalnych układów FPGA wymagało realizacji wielu
samodzielnych testów w różnych trybach pracy. Zastosowanie biblioteki vhdlUnit umożliwiło
kompleksowe sprawdzanie grupy wszystkich testów dzięki zastosowaniu specjalnych procesów
testowych pracujących w wielowartościowej logice prądowej. Projekt vhdlUnit został szczegółowo
opisany w publikacjach [7 i 8] i jest dostępny pod adresem http://kik.ie.tu.koszalin.pl/vhdlunit .
ROZWÓJ PROJEKTÓW
Wcześniejsze prace nad projektem GEDEON realizowane były z wykorzystaniem języka C++.
Po pojawieniu się darmowego projektu ECLIPSE opracowanego w języku JAVA, zdecydowano
się na zmianę środowiska programistycznego [9].
Projekt ECLIIPSE został udostępniany jako Open Source przez firmę IBM. Wtyczkowa budowa
platformy umożliwia tworzenie własnych projektów rozszerzających funkcjonowanie platformy.
Pierwszym krokiem integracji projektowanych rozwiązań było zastosowanie EMF (ang.
Eclipse Modeling Framework). Jest to nowe rozwiązanie programistyczne wspierające tworzenie
metamodeli na podstawie ich opisu w języku XMI (podzbioru języka XML). Standard XMI jest
szeroko akceptowalnym opisem umożliwiającym wymianę danych opisywanego meta-modelu
pomiędzy różnymi narzędziami modelowania UML oraz generatorami kodu: JAVA i C++.
Tego typu opis uniezależnia projekt od konkretnej realizacji programowej zawierając jego
koncepcję w postaci diagramów UML na podstawie której wygenerowano kod klas projektu
GEDEON. Cały proces można powtórzyć po dodaniu nowych elementów modelu, co ułatwia
dalszy rozwój projektu o rozszerzanie o nową funkcjonalność.
ECLIPSE IDE
GEDEON
CORE
PDE
GEDEON
UI
Rys. 5. Integracja platformy Eclipse z projektem Gedeon.
Zastosowanie platformy ECLIPSE umożliwia projektowanie interfejsu użytkownika własnego
projektu integrującego się z platformą. W tym celu zainicjowano projekt Gedeon.UI interfejsu
użytkownika, dzięki któremu podstawowy kod Gedeon.Core zajmujący się przetwarzaniem danych
jest niezależny od części wizualnej.
Projekt GEDEON jest jednym ze składników projektu realizacji modeli układów
reprogramowalnych pracujących w trybie prądowym dla logiki wielowartościowej. Aktualne
badania prowadzone są w kierunku uzyskania modeli układów reprogramowalnych pracujących w
arytmetyce resztowej oraz możliwości programowania rekonfigurowalnych (wielokontekstowych)
układów prądowych. Związane jest to z rozwojem bibliotek oraz opisanego oprogramowania o
nową funkcjonalność.
W pracy pominięto opis narzędzi wspomagających proces realizacji fizycznych struktur
zaprojektowanych układów prądowych zrealizowanych w technologii CMOS, które były
wykonane i testowanie podczas prowadzenia badań. Punktem wyjścia do ich realizacji jest
otrzymanie pliku EDIF zawierających net-listę projektowanego układu prądowego. Proces ten jest
przeprowadzany wprost ze środowiska Active-HDL.
wielowartościowa logika prądowa – tablica rezolucji
biblioteka bramek prądowych (inwerter, anty-inwerter, podwójny inwerter, antypodwójny-inwerter)
biblioteka bloków funkcyjnych (przerzutniki, rejestry, sumatory, multipleksery)
biblioteka układu FPGA (CLB, SLICE, IOB)
program GEDEON (java+Eclipse+EMF+Velocity+Antlr+Xerces),
pakiet ISE (Xilinx, Synopsys)
pakiet Active-HDL (Aldec)
weryfikacja - biblioteka testów jednostkowych vhdlUnit
nstd_logic.vhd
nstd_logic_2000
nstd_core_2003
nstd_gedeon_2003
GedeonFPGA (java,xml, xdl)
synteza,implementacja, (format xdl)
symulacje (vhdl)
vhdlUnit_2004
Tab. 2. Lista podprojektów i narzędzi wspomagających projektowanie w technologii prądowej.
WNIOSKI
W niniejszej pracy zaprezentowano zestaw podprojektów wspomagających procedurę
tworzenia i weryfikacji projektów implementowanych w reprogramowalnym układzie FPGA
pracującym w logice prądowej. Pominięto omówienie koncepcji technologii prądowej, którą
szczegółowo omówiono w publikacji [1], ale skupiono się na komputerowych narzędziach
wspomagających projektowanie i powadzenie badań naukowych.
W pracy umieszczono sporo odwołań do różnych darmowych mechanizmów
programistycznych wykorzystywanych podczas prac projektowych. Jest to celowa operacja, która
ma zachęcić do korzystania w badaniach naukowych z darmowych i wydajnych rozwiązań.
Podstawowym przykładem jest perspektywiczna platforma ECLIPSE, która umożliwia integrację
różnych rozwiązań w jednym wspólnym środowisku.
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] 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.
[3] O. Maslennikow, R. Berezowski, P. Soltan, M. Rajewska. “Designing Prototype of the Spartan
II FPGA Slice with the Current-Mode Gates”. Proc. of the IEEE Int.Conf. on Circuits and
Systems for Communication, ICCSC’2002, ST.-Petersburg.
[4] The Programmable Logic Data Book. Xilinx, Inc., 2000 – http://www.xilinx.com
[5] P. Sołtan, O. Maslennikow, R. Berezowski, M. Rajewska “Automatyzacja procesu
implementacji układów cyfrowych w technologii prądowych układów FPGA”. Prace I
Konferencji Krajowej Elektroniki, KKE’2002, Kołobrzeg, 2002, pp.843-848.
[6] O. Maslennikow, P. Soltan “Automated Implementation of Digital Circuits in Current-Mode
FPGA Chips”. Proc. 7 Int.Conf. Expepience of Designing and Application of CAD Systems in
Microelecronics, CADSM’2003, Lwow, 2003, pp.223-225.
[7] 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.
[8] P. Sołtan “Weryfikacja logiczna projektów VHDL realizowanych w reprogramowalnych
układach FPGA pracujących w trybie prądowym”. Prace III Konferencji Krajowej Elektroniki,
KKE’2004, Kołobrzeg, 2004.
[9] Eclipse Platform - www.eclipse.org
Praca wykonana w ramach grantu KBN 3T11B 05926