Távközlésben használatos algoritmusok FPGA-ba implementálhatóságának vizsgálata

Távközlésben használatos algoritmusok FPGA-ba implementálhatóságának vizsgálata

Eddigi munkám során elvégeztem NIOS beágyazott processzor magjának, illetve a szükséges FPGA perifériák implementálását. Ezután megfelelő C fordító segítségével, a tetszőleges programot tudtam futtatni a fejlesztőkártyán. Az SRAM alapú FPGA-ra a versenyképes áruk, újraprogramozható tulajdonságuk és a növekvő komplexitásuk miatt esett a választás. SRAM alapú FPGA-k alkalmazására nagy az érdeklődés az olyan területeken is ahol az áramköröknek szélsőséges körülmények között kell dolgozniuk. Ilyen terület például az űripar.

A témában folytatott kutatómunka és eredmények:

A feladat pontos specifikációja:
Az elektronikában használatos központi feldolgozóegységek feladatmegoldó képessége az implementált architektúrától függően eltérő lehet. Bevett gyakorlat, hogy speciális számítási igények lefedéséhez társprocesszorokat használnak, kiegészítve a rendszerben található CPU-t. A legelterjedtebb társprocesszorok a matematikai, lebegőpontos és fizikai társprocesszorok.
Feladatom egy olyan társprocesszor rendszertervének megtervezése, amelyik képes a képfeldolgozásban használatos alapműveletek elvégzésére, különös tekintettel a képek soros vagy párhuzamos interfészen keresztüli beolvasására, tárolására (buffer), majd előre definiált műveletsor elvégzése után az eredmény prezentálására.

A feladat megoldásának vázlatos munkaterve:
Az emberi agy könnyen válogat a hasznos illetve kevésbe hasznos vizuális ingerek között. A számítógép ehhez összetett képfeldolgozási algoritmusokat használ, ám ezek a nagy mennyiségű adat kezelése miatt időigényes feladatok. A műveletvégzés ideje több módszerrel is csökkenthető, ezek közül egy a co-processor alkalmazása.
A feladat megvalósításához először a megfelelő hardver architektúrát kellett kialakítanom. Ehhez a NIOS beágyazott processzor magját, illetve az FPGA perifériáink kezeléséhez tartozó soft core-t kellett betölteni a programozható logikába. Ezután megfelelő C fordító segítségével, a tetszőleges programot tudtam futtatni a fejlesztőkártyán. Célom az volt, hogy az SD kártyán található kép fájlokon lehessen képfeldolgozási műveletek végezni. A programom, a betöltött kép minden egyes képkockájának kiszámolta a fényesség értékeit. Majd a küszöböléssel (thresholding) megvizsgálta, hogy az így kapott fekete-fehér kép mely pontjai világosabbak, illetve sötétebbek egy adott értéknél. Ennek megfelelően a kép egyes pontjait egy-egy bittel lehetett jellemezni. Az egymás melletti azonos biteket egy területté foglalta össze a program. Kiszámolva az egyes területek nagyságát, meghatároztam a súlypontjaikat, x vagy y irányú kiterjedését. A kapott eredményeket a kártya soros portján keresztül értük el. Ez a leírás tükrözi számunkra, hogy az eredeti képen hol voltak világosabb illetve sötétebb területek.
Megismertem a kártyába ágyazott processzor felépítését, működését, elkészítettem a leírt algoritmust, illetve FPGA-ba implementáltam. Későbbiekben továbbfejlesztve a projeket elkészítem a társprocesszort, illetve az algoritmust optimalizálva lecsökkentem a műveletvégzés idejét. Emellett összehasonlítom a szoftveres és a hardveres műveletvégzés sebességét.

Kutatási beszámoló

Készítette: Horváth Gyula egyetemi adjunktus BME Elektronikus Eszközök Tanszéke

2013.01.29.