Beszéltem ma egy ismerősömmel, és volt pár jó ötlete.
Ennek hatására egyenlőre úgy tűnik, hogy ebben az iterációban talán nem kell még visszalépjek
a mikrokontroller + dual port memory működésre. Amíg persze ez meg nem borul valahol ...
A működést a következőképp terveztük.
Az EP -be épített egységnek lesz ugye valahány bitnyi memóriája. Ezt nevezzük mondjuk "frame" -nek.
Egy két drótos, 1 clock + 1 data soros vonalon engedi ezt a frame -et felülírni,
valamint a 12 drótos, 4 cím + 8 data vonalon engedi a frame első 128 bitjét olvasni.
A frame lehet nagyobb is akár, mint 128 bit.
Első körben valószínűleg egyetlen bittel lesz több, az lesz a reset bit.
(Hely szűke esetén az is lehet hogy a 128 bit csak 80 bit lesz, ez majd elválik.)
A lényeg hogy a frame különböző területekből állhat,
amit addicionálisan, bővíteni is lehet a jövőben.
Pld. egy esetleges scenárió:
frame = billentyűzet mátrix elso 80 bitje + 1 reset bit + billentyűzet mátrix maradék 48 bitje + 8 bit mouse X + 8 bit mouse Y + 16 bit mouse X + 16 bit mosue Y
Ez egy olyan fejlődést írna mondjuk le, hogy:
- először csak a billentyű mátrix első 80 bitje fért az FPGA -ba
- később beletettünk egy reset bitet is, és az FPGA azt a reset -re teszi
- még később lett nagyobb FPGA, és beletettük a maradék billentyűzetmatrix biteket, és rámeppeltünk valamilyen dolgokat (amit az EP ugye tud olvasni natívból)
- még később beletettünk 8 bites egér inputot, és azt valahova belepumpáljuk az EP -be ...
- még később beletettünk 16 bites egér inputot, mer a 8 az már sovány volt, és azt megintcsak valahova belepumpáljuk az EP -be ...
Csökkenni nem tud a frame mérete, mindíg csak nő, a 8 bites egér input akkor is bennemarad, ha a 16 bites már feleslegessé teszi.
És természetesen nem nőhet az egekbe, nem pumpálhatunk be vele pld. hang mintát, szerintem úgy kb. soha nem fogja meghaladni a 256 bitet ...
A mindenkori teljes frame -et másodpercenként sokszor (mondjuk úgy 100 - 1000 frame/sec) frissítjük a soros bemeneten keresztül.
Ez ugye mindent maxra téve kb. 256 KHz -es frekvenciát követelne a soros vonalon,
és már egy 16 MHz -es AVR -en is simán toltam 4 MHz -et a GPIO -ra C nyelvből, sima ciklussal,
szóval a mikrokontrollereknek sem lesz az gáz, a többszáz MHz -es RPi pedig valszeg ki se röhögi.
A frame első bitje előtt lesz egy "frame kezdete" jel. Ez a soros vonalunk mindenkori órajelének töbszörös ideéig (mondjuk 10 - 20) lehúzott clock vonal.
Ez után a külső egység belepumpálja az általa ismert frame -et a belső egységbe.
Ha előbb jön az új "frame kezdete" jel, minthogy frissülne a belső egység összes bitje (a külső egység kisebb frame -et ismer még),
akkor a fennmaradó bitek nem frissülnek a belső egységben.
Ha később jön csak a "frame kezdete" jel, mint amit a belső egység ismer (a külső egység nagyobb frame -et ismer már),
akkor a "felesleges" biteket a belső egység elnyeli, és nem tárolja el.
A belső egység a bekapcsolás után a párhuzamos (kimeneti) portján egyből működik,
de a soros (bemeneti)porton jövő adatokkal addig nem csinál semmit, míg nem kap egy "frame kezdete" jelet.
Így ha a külső egységünk nem a belső egységtől kapja a tápot
(belső egységtől pld. egy "lengőre szerelt" billentyűzet konverter kapja),
hanem saját táppal működik
(mint pld. az RPi),
akkor ha az EP -t kikapcsoljuk, és a belső egység lekapcsol ettől,
mikor visszakapcsolják az EP -t, akkor a belső egység újra szinkronba kerül a külső egységgel,
ami a kikapcsolás alatt zavartalanul tovább tolta a biteket, és a szinkronból így kilépett.
Az olyan "komplexebb" dolgokat, mint pld. makrók vagy szekvenciák (pld. hideg reset, ahol 2 reset van egymás után)
azt mindíg a külső egységeknek kell megvalósítaniuk fenti interfészt használva.
Ez rossz azért, mert mindent mindíg meg kell valósítani minden külső egységben újra,
meg azért is mert lesznek limitációk, mint pld. a frame frissítési frekvenciája,
ami egy adott szekvencia (hideg reset) belső egységgel történő implementációjánál nem lenne.
(De a reszetre jó lesz az a frekvencia is ...
)
De ez jó is azért, mert az egyes megvalósítások lehetnek testreszabva a külső egységekre.
(Persze lehet, hogy ez sovány vigasz, de akkor is ez a helyzet ...
)
Hát így állnánk most ...