Aszinkron hálózatok szintézisének vizsgálata

Kutatási beszámoló

 dr. Gärtner Péter, Elektronikus Eszközök Tanszék 

A 2010.05.01. – 07.31. idöszakban az alábbi kutatási munkát végeztem el.

Megismerkedtem a Mentor Graphics Catapult C áramkör szintézer programjával. Ez a program elsösorban a szabványos C++ nyelven leírt digitális hardver rendszereket tudja feldolgozni és szintetizálni, de képes System C hardver leíró nyelvvel is dolgozni. A program használatát mindkét leíró nyelvvel begyakoroltam. Vizsgáltam a szinkron és aszinkron hálózatok szintetizálási lehetöségeit a programmal.

A szinkron hálózatok tervezése és leírása viszonylag könnyü feladat, minthogy felépítésük és müködésük egyszerü és elméletileg nagyon jól kézbentartható. Az egész rendszer idözítése egyetlen centrális órajel ciklusaihoz igazodik. Más a helyzet az aszinkron hálózatok körében, ahol vagy egyáltalán nincs órajel, vagy több, egymástól független órajel is van, amelyek között nincs semmilyen idöbeli megkötés. Itt megbízható müködés csak az egyes folyamatok precíz összehangolásával érhetö el. Vizsgálataimat az ilyen típusú rendszerekre irányítottam, és ezen belül is elsösorban azokra, ahol több független órajel idözíti az összetett rendszer egyes részegységeit, amelyeknek ilyen feltételek mellett is megbízhatóan és hibamentesen kell egymással kommunikálni. Az ilyen tipusú rendszerek szintézisére az egyszerübb C++ nyelv kevésbé alkalmas, mint a System C.

A C++ nyelven elsösorban digitális jelfeldolgozó rendszereket (DSP) lehet leírni. Idözítés nincs, a kód lényegében csak a matematikai feldolgozást foglalja magában. A Catapult C ezt a leírást tiszta szinkron hálózat formájában szintetizálja, az egyetlen órajelet automatikusan rendeli hozzá. Ha a leírt egység töle független, de ugyancsak szinkron hálózattal dolgozik össze, amelytöl aszinkron módon kapja a feldolgozandó jeleket, akkor alkalmas kommunikációs csatorna definiálásával kell biztosítani a szinkronizmust handshake üzemben.

Más a helyzet a System C nyelvvel. Itt az idözítés nem automatikus, hanem érzékenységi listában lehet deklarálni, hogy egy adott kód-részlet (funkció, szubrutin) müködését mi váltsa ki – lényegében tehát az órajelet. Igy egy nagyobb leírásban kisebb részletek számára több független órajel is létezhet, és az együttmüködést itt is kommunikációs csatornák definiálásával lehet biztosítani.

Tanulmányoztam a System C nyelvben a kommunikációs csatornák tulajdonságait, deklarálásuknak különbözö lehetöségeit. Kidolgoztam néhány mintapéldát, amiket hallgatói gyakorlatokon lehet bemutatni.

Elökészültem rá, hogy a 2011. tavaszi félévben elöadásaimban a hardver leíró nyelvek ismertetését kiegészítsem a C++ valamint a System C nyelvekkel való tervezésröl szóló részletekkel.

 

Budapest, 2010. November.

 

dr. Gärtner Péter