Kai pavažiuoja smegenys nuo FPGA programavimo (niekaip nepavyksta dalis 24 bitų konvertavimo į vieno bito PWM), peršokam į MS Visual Basic kurybą. Naudojam senovišką VB6 versija, nes .NET versija kažkaip nesugeba automatiškai konvertuoti senų mano projektų. O kai kuri nauja programulką, labai patogu naudotis senesnių programų gabaliukais- moduliais.
Pasirašiau sau darbinį variantą paveiksliuko konvertoriaus. Programa konvertuoja bet kokį paveiksliuką į RGB matricos dydžio atminties buferį ir taip pat, panaudojus lygio detektorius gamina vieno bito frame buferį.
Čia nuotrauka (netgi ne printscreenas!) su gyva matrica ir kompo ekranu. Matosi, kad matrica rodo tą patį kaip ir programos apatinis langelis. Programa gamina atminties image (vaizdą) Quartus Memory Initialization File (.mif) formatu. Jį buvo labai lengva aprašyti naudojant Basico komandomis.
O čia, šiaip, iliustracija. Dalis “timing” diagramos kurią teoriškai generuoja FPGA kodas:
Kodas iš esmės toks: imam duomenis iš vidinės RGB kadro atminties, iš duomenų atimam kadro numerį (kadro numeris tai paprasčiausias skaitliukas). Taip gaunam primityvią PWM moduliacija kadrui. Teoriškai, šviesiausias taškas šviečia visus 256 karus iš 256. Tuo tarpu 50% ryškumo taškas šviečia tik 128 kadrus iš 256. Praktiškai 256 kadrai nesigavo- naudoju 64 lygius, nes neužtenka greičio (net ir dabar prasideda triukai- iš vidinės atminties skaitom duomenys tuo pat metu kaip ir keičiamas adreso duomenys- ir viskas taktuojama ~200MHz taktiniu dažniu). Taip gaunama 262144 spalvos. Iki 16M kiek trūksta… Šis rezultatas perrašomas į 1 bito kadro buferį. Kita dalis FPGA mikroschemos ima duomenis iš šio buferio iš 30 vietų po 16 bitų ir per 30 serial-shift registrų išpumpuojama į MBI mikroschemas. Atminties pumpavimas, modifikavimas ir pumpavimas atliekamas vienu metu, todėl įtariu gali kilti problemos su judančio vaizdo rodymu. Bet iki šios problemos nepriėjome.
Šiuo metu sunaudojom 2011 loginių elementų( iš 5980 galimu, 34%) ir 73728 bitus atminties (92160 galimu, 80%) ir beveik visus pinus- 79 (iš 98 galimu, 81%). Nors tiesa pinai tai ne mano problema, nes ne aš dariau plokštę…