Monthly Archives: September 2008

RGB matrica: rašom softą

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į.

RGB matrica: softas

Č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:

timing

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ę…

Backscatter mail išpuolis

Pentadienį pastebėja neįprasta veiklą mano pašto dėžutėje ir pašto serveryje. Kaip nepastebėsi, kai pamatai pranešimą, kad gavai kokius 3000 naujų laiškų. Ir laiškų kiekis didėja akyse. 99.5% laiškų- pranešimai, kad mano siustas laiškas nepraėjo. Panagrinėjus giliau, paaiškėjo, kad “mano” laiškas kvietė pažiūrėti tokios pornografijos, kokios dar niekas nematė… 🙂 Ir nuoroda į imageshack serveriuose esanti flash paveiksliuką. Nežinau, kokia ten gera pornografija buvo, bet kad tai virusas tai jau tikrai. Vienintelė bėda, kad virusas siuntinėjo laiškus su mano atgaliniu adresu. Gal naudojo ir kokius nors dar kitokius- nežinau. Bet kad naudojo mano tai tikrai žinau 🙂 Aš net neįsivaizduoju kiek buvo išsiusta laiškų, bet visi laiškai kurie nerado adresato ar buvo užblokuoti kokios nors antispam sistemos parvyko pas mane. Gerai, kad laiškai ėjo tolygiu srautu ir nebuvo labai dideli. Aš teoriškai paskaičiavau, kad gavau apie 600Mb pašto per vieną parą. Kad apsisaugoti nuo įkyriu pašto serveriu teko pakoreguoti spamassassino taisykles, kurios melavo serveriams, kad tokio vartotojo iš viso nėra. (Standartinis assassino bouncer tikrintojas nepadėjo).

Čia jums situacijos iliustracija:

Backscatter schema

Dabar (šeštadienį), atrodo virusas buvo užgniaužtas pačio imageshack sistemos ir kitų tarnybų. Dabar gaunu tik keliasdešimt laiškelių per minutę. Tikiuosi protrukis greit nurims.
Šitas efektas anglų kalboje vadinamas “backscatter” mail.

Pagaučiau aš tą viruso kurėja, tai tokia pornografija jam padaryčiau… geriausiu atveju nuraučiau kiaušius.

Apšvietimas

Ištraukiau darbe iš spintos senovinį liuksometrą. Toks jau kiek papuvęs aparatas, bet šiokį tokį vaizdą galima susidaryti.

lx

Šiandien buvo saulėta rudeniška diena, tai padariau du kontrolinius matavimus kieme, apie 17 valandą. Šiandien buvo maloni rudeniška saulutė- toks beveik bobų-vasariškas oras.

Apratas parodė šiuos skaičius. Tiesioginis pašvietimas į saulės apšviestą plotelį- 500lx, bendras apšvietimas kieme- 370lx.

O dabar keletas matavimu namie (dėmesio, matuoklis gali matuoti ir pieno riebumą, todėl verta atsižvelgti į kontrolinius matavimus):

Vieta Apšviestumas, lx
MATAVIMAI su netiksliu prietaisu
Ant lovos 50
Darbastalis, darbinė zona 150
Darbastalis, max zona 280
Kompo stalas, klavietūra, be stalinės lempos 35
Kompo stalas su spec. staline lempa normaliu galingumu 300
Kompo stalas su spec. staline lempa max galingumu 400
Monitorius (priglaudus prie baltos zonos, du monikai) 70 ir 90
Mano konstrukcijos (matuota tamsoje, išorinis apšvietimas ~0lx)
Kinietiškas prožikas su Liion akumu, 60cm atstumas, (kaitrinė lempa) 300
Kinietiškas prožikas su Liion akumu, min atstumas, max, (kaitrinė lempa) 450
Multi White LED prožikas, 60cm atstumas 250
Multi White LED prožikas, min atstumas, max 450
Mobilaus LED blykstė, 60cm atstumas 20
Mobilaus LED blykstė, min atstumas, max 400
Grynas galingas LED, 60cm atstumas 140
Grynas galingas LED, min atstumas, max >500
(naudojant kažkokį x100 filtrą gaunasi nerealūs 30000 lx)
Grynas galingas LED pritaikius optiką, 60cm atstumas ~500
Kontrolinis matavimas
Malonus rudeninės saulės zuikutis 500
Normaliai apšviesta popietė 370
NORMOS darbui su kompu (HN 32:2004)
Darbastalis min 300
Darbastalis max 500
Vaizduoklio 🙂 (monitoriaus) 100..250
NORMOS darbui su geležėlėm(HN 98 : 2000)
Maksimaliai tikslūs darbai, <0.15mm detalės (blusų kaustymas tikriausiai) 5000…1250 (oj!)
Labai tikslūs darbai, 0.15-0.3mm 5000…1250 (oj!)
Tikslūs darbai 0.3-0.5mm (SMD litavimas tikriausiai) 400
Vidutiniškai tikslūs darbai 0.5-1.0mm (litavimas tikriausiai) 400..200
Nelabai tikslūs darbai 1.0mm 200
Netikslūs darbai >5.0mm 200, skiriasi kad nėra reikalavimo dėl kontrasto.
Bendras, nuolatinis darbo proceso stebėjimas 200
Bendras darbo proceso stebėjimas, ne nuolatinis, ne nuolat būnant patalpoje. 50, skiriasi kad nėra reikalavimo dėl kontrasto.

Trumpai apie kambario apšvietimo konfiguracija. Kambario plotas apie 20 kvadratinių metrų, lubų aukštis apie 3.5 metro. Bendras apšvietimas- “liusta” su 4 “taupiom” lempom po 20..23W. Lempos skirtingo darbo laiko ir gamintojų: Wellmax, GE, OSRAM. Visos lempo tempia į 865 spalvą. Litavimo darbastalis turi dvi jau kiek pasėdusias lempas OSRAM Dulux 11W, 840. “Stalinė” lempa tai medicininė, reguliuojamos galingumo, tikriausiai kokio LOR gydytojo: Verre & Quartz, viso 80W (4×20) halogenai (panašus į H832 modelį, tik su 4 lempom. Beja H832 turi duoti 52 000 lx prie 50cm, maniškė su tuo filtrų duoda apie 25 000 lx prie 50 cm, minimalus taškas.).

Išvados:
Tamsu!!! Reikia pasikeisti darbastalio lemputes į naujas. Pridėti dar lempų. Ant lovos negalima skaityti, galima tik “stebėti nenuolatinį darbo procesą” 🙂 kad ir ką čia šis procesas reikštu.

RGB matrica: 1 bito frame buferis

Po ilgo laiko tarpo, pagaliau prisėdau prie savo RGB LED matricos. Kiek pavargau ir perrašiau visą matricos “taimingo” schemą į vieną Verilog modulį. Testinė schema buvo padaryta iš atskirų loginių elementų. Pakeliui išsisprendė keletas (bent jau teorinių) “gliukų” oscilogramose ir šiaip, schema užima mažiau vietos FGPA viduriuose.

Kol kas organizuotas vieno bito “frame” buferis (kadro atminties buferis). Duomenys iš FPGA vidinės atminties pastoviai pumpuojama į RGB matricą. Pakeliui išprestas rebusas dėl skirtingo RGB LEDų išsidėstymo ir “logiškos” video atminties. LEDai sulituoti kiek kitaip, ir video atmintis gaunasi kiek iškreipta, panašiai kaip ZX Spectrum kompiuteryje. Geriau jau schemoje viską išburti, nei ateityje vargti su paveikslėlio paruošimo softu.

RGB matrica
(Tie snukučiai jau iš pradžių buvo su pasuktom burnom, va paveiksliuko “source”: Paveiksliukas kuris turejo buti pavaizduotas. Dar įtariu nesklandumus Basic’o programoje).

Pakeliui teko pasirašyti softą MS Visual Basic’e, kuris paruošia video buferio atminties “dump’ą” kurį galima užkrauti į FPGA naudojant Quartus programinę įrangą.

Iškilo kelios naujos problemos:

  1. Raudona spalva žymiai prislobsta jei uždegami visi 16 diodų ant tos pačios mikroschemos.
  2. Skirtingų mikroschemų “blokai” turi skirtingus baltos spalvos balansus- matosi “siūlės” kai spalva pereina iš vieno bloko į kitą.
  3. Ir jau minėta bėda su žalia spalva- ji linkusi geltonuoti prie didesnio intensyvumo.
  4. Pastebliu mikro “gliukus” mėlynoje spalvoje- kažkokie, vos įžiūrimi, mėlynos spalvos vaiduokliukai.

Šiaip, aš išradinėju dviratį, bet užsienėtis kuris paliko komentarą mano puslapiuose kad jis irgi turi tokias pat matricas net nesiruošia pasidalinti kodu. Spaudžia. Nu ir eina jis peklon, man savo lameriško kodo negaila. Todėl viska skelbiu kaip “freeware”. 🙂

FPGA source code: RGB matricos 1bito buferis Quartus archyvas ir frame buferio turinys.

Bendras vaizdelis kaip atrodo schema: Matricos sujungimo schema pdf dokumentas.

Sekantis etapas ir planai:

Pilnas RGB, bet jau kelių bitų spalvų lygiai, nes su aštuoniom spalvom 21 amžiuje kiek primityvu… 🙂

Maniakiški instrumentai…

Kartais galima gauti nebenaudojamų chirurginių instrumentų. Va tokių kaip šitie:

Chirurginiai instrumentai

Šių replyčių savybės žymiai geresnės nei daugelių parduotuvėse parduodamų elektronikos instrumentų. Aš pasirinkau įvairius spaustukus ir pincetus. Bet negalėjau praeiti pro šias nuostabias “šakutes” lenktais galiukais…

Chirurginiai instrumentai

Nors visiškai nepanaudojamas elektronikoje, bet kaip “gag” daikčiukas tiesiog nuostabus. Pačias didžiausias šakutes pakabinau virtuvėje, prie visokiausių peilių. Ir tik vienetai supranta ir kiek pakraupsta nuo šio instrumento..

Chirurginiai instrumentai

Gerbiami Blogo skaitytojai, pabandykit atspėti, kam šios šakutės naudojamos 🙂

(Dėkui už komentarūs)

Kodekų debuginimas: GraphEdit

Kaip sužinoti, kokius kodekus ir filtrus naudoja windows kompiuteris kad parodyti vieną ar kitą failą? (video ar garso). Kaip patiuninti tu kodekų ir filtrų parametrus? O gal išviso, kaip pratestuoti, gal tas kodekas blogesnis už kitą. Tam reikalui Microsoftas turi gana įdomų įrankį. Oficialiai, šis utilitas paslėptas Direct X 9.0 (ar kitos versijos) SDK, bet internete yra mažytė, išgryninta versija. Paieškos sistema naudotis tikriausiai mokate- raktinis žodis “GraphEdit”.

Štai keletas iliustracijų, kaip WindowsXP operacinė virškina skirtingus media failus. Tai screen shotai, jie gana dideli, todėl dedu panažintas ir normalias versijas.

Pirmas failas: tiesiai iš skaitmeninės kameros nukrautas failas. Kamera rašo DV formatu.
GraphEdit
(spausti ant paveiksliuko, kad pamatyti didesnį).
Kad groti šį failą naudojamas vienintelis DV video dekoderis. Garsas tame faile nokompresuotas.

Antras failas: filmas koduodas su DivX serijos kodeku. Garsas MP3.
GraphEdit
Kaip matosi, aš naudoju nemokamą ffdshow kodekų “rinkinį” ir kažkodėl “Moonlight Odio” dekoderį.

Trečias failas: muzikėlė kompresuota su windows media (wma išplėtimas).
GraphEdit
Naudoja kažkokį WMAudio decoderį. Beja, visus kodekus ir filtrus galima reguliuoti ir tiuninti- užtenka paklickinti ar jų su pelyte. Taip pat galima pasinaudoti kitu kodekų ar įrenginių. Tik ne visi įrenginiai jungiasi vienas su kitu. Teoriškai, galima kai įėjimo įrenginį paimti TV tiunerį ir žiūrėti programą be jokio TV tiunerio softo.

Ketvirtas failas: standartinis MP3 failiukas. Taip ji grotu Windows sistema, jei aš pats negročiau jų per winampą.
GraphEdit
Čia matosi kad mp3 failas dalinamas į MPEG streamus (čia jų tik vienas), tas streamas sumaitinamas tam pačiam Moonlightui ir toliau grojamas per įrenginį “Direct sound device”. Jei čia pakabinti kietą diską, jame atsirastu nesukompresuotas PCM failas.

Penktas failas: Čia jau kiek egzotiškesnis, DVB-T transportas (įrašytas į diską).
GraphEdit
Paskutiniu metu aš naudoju ffdshow šiems failams, o kartais naudojų komercinį AVC kodeką.

Šeštas failas: Dar didesnė egzotika- matrioška.
GraphEdit
Matrioškoje dažnai būna keli garso takeliai ir titrai. Šiaip matrioška leidžia pridėti daug garso, video ir tekstinių takelių. Šiaip tai gana universalus konteineris. Jis nėra populiarius tarp paprastu divx filmų, tačiau kažkodėl labai populiarus tarp multikų megėjų. Gal todėl, kad daug multikų būna japoniški ir jiems reikia subtiktrų?
Šis failas ardomas į tris srautus, video ir audio dekoduoja ffdshow, tekstinį srautą apdoroja “DirectVobSub” kuris generuoja titrus ir “uždeda” juos ant video vaizdelio.