Funkcionális nyelven leírt algoritmusok alapján VHDL leírás automatikus generálása

OData támogatás
Konzulens:
Dr. Arató Péter
Irányítástechnika és Informatika Tanszék

Bár egyre nagyobb a hagyományos, processzoros rendszerek működési sebessége, kifejezetten időigényes feladatok, bonyolult biológiai, fizikai számítások

szükségessé teszik, hogy az általános célú processzoroknál hatékonyabb hardverstruktúrákat, esetenként célhardvereket fejlesszünk a probléma

megoldására. Ezeket a hardverstruktúrákat általában hardverleíró nyelveken (HDL) implementálják. A matematikusok, informatikusok előtt ezek a nyelvek általában kevésbé ismertek, ők az algoritmusokat általános programnyelveken fogalmazzák meg. A hardverleíró és általános programnyelvek nagyon eltérő módon használhatóak (a két módszert szinte szakadék választja el egymástól), és közöttük az átjárás lehetősége csekély. Az átjárás megoldására jelenleg is számos kutatás folyik, ezek a módszerek rendkívül lényeges részét képezik az ún. rendszerszintű szintézisnek.

Diplomatervemben olyan módszer kidolgozása és implementálása a célom, amelyek kiindulópontja a funkcionális nyelven leírt kód. A funkcionális nyelvek közül a Haskell nyelvre koncentrálok, ami egy igen lendületesen fejlődő, a kutatómunkát előnyösen támogató nyelv.

A kidolgozott eljárás fő előnye, hogy automatikusan generálja a bizonyos megkötésekkel rendelkező Haskell nyelvű kódból az FPGA-ba szintetizálható VHDL

leírást. Köztes reprezentációként az elemi műveleti gráf (EOG) elnevezésű homogén szinkron adatfolyamgráfot (HSDF) használom. Dolgozatom során külön

kitérek az egysebességű (single-rate) és a többsebességű (multi-rate) algoritmusok fordítási lépéseire.

A munkához felhasználok meglévő nyílt forráskódú szoftvereket, pl. a Glasgow Haskell fordítót (GHC), amelynek frontendje egy leegyszerűsített, az

eredeti programkódnál kényelmesebben feldolgozható struktúrába tudja alakítani a bemeneti forráskódot. Ebből a struktúrából az általam fejlesztett program a VHDL kódot automatikusan generálja. A fordítási folyamatba beilleszthetünk akár egy olyan pipeline optimalizáló fokozatot, mint pl. az Irányítástechnika és Informatika tanszéken fejlesztett PIPE tervező programrendszert.

Ahhoz, hogy a fordítás felhasználóbarát módon mehessen végbe, egy integrált fejlesztői környezetre is szükség van. Ennek megvalósításához Eclipse alapú

keretrendszert fejlesztettem, amely a forráskód szerkesztésétől a köztes gráfok megjelenítésén át a célkódok generálásáig minden egyes részfolyamatot előnyösen támogat.

Az eljárás működését gyakorlati példákon keresztül mutatom be, melyhez egy PID szabályozót és az MP3 dekódoló algoritmus egy részletét használom fel.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.