Tudtad hogy akár az önlabodat is csinálhatod a SEM-ben? Vagy hogy akár az újonc projekted is lehet egyben? Itt egy jó példa!
Készítette: Olasz-Szabó Bence
A feladat az alábbi fő részfeladatokra bontható:
- Input beolvasása a billentyűzetről
- Input feldolgozása és a számítás elvégzése
- Eredmény kijelzése
A fenti 3 részfeladat megoldását külön modulok végzik, amik között az összeköttetést a legfelső szintű modul (calc_top) biztosítja.
A feladat egyik nehézsége az, hogy a billentyűzetről érkező adat formátuma és az LCD kijelzőnek küldendő adat formátuma különböznek egymástól és a számításokhoz egyszerűen felhasználható adatformátumtól is. Ezért a megoldás jelentős részében a különböző adatformátumok közötti konverziót kell megoldani.
Az input beolvasását végző modul (ps2_interpreter) a billentyűzetről a PS/2 formátumnak megfelelő adatot alakítja át az aritmetikai modul számára könnyebben értelmezhető formára. Ezen kívül már ez a modul kiszűri a feladat szempontjából lényegtelen input karaktereket. Továbbá ez a modul értesíti az aritmetikai modult, ha a feladat szempontjából értékes bemenet érkezett a billentyűzetről.
Az input feldolgozását és az eredmény számítását végző modul az aritmetikai modul (arithmetic_controller). Ez a modul a beérkező értékes karaktereket egy állapotgép alapján feldolgozza, majd a számítások elvégzéséhez optimális formátumra alakítja és vezérli a számítások elvégzését, majd az eredményt átalakítja a kijelző modul számára megfelelő formátumra, és kezdeményezi a kijelzés frissítését.
A kijelzésért felelős modul (LCD_DigitCoder) átalakítja az aritmetikai modultól kapott karaktereket az LCD kijelző adatformátumára, és frissíti a kijelzőt, amikor erre az aritmetikai modultól utasítást kap.
A megoldás alapelve: a felhasználótól a billentyűzeten keresztül érkező input események hatására történik a számítások elvégzése, tisztán eseményvezérelt módon, adatáramlásos információfeldolgozási modell szerint. A megvalósítás tisztán hardveres, nincs beépített mikrovezérlő, a vezérlési feladatokat hardveresen megvalósított állapotgép látja el.
A fő modulokat és kapcsolataikat az alábbi ábra szemlélteti:
A teljes dokumentáció elérhető itt: aritmetikai_fpga_dok