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… :)

8 Responses to “RGB matrica: 1 bito frame buferis”

  1. Administrator Says:

    Kaip ir maniau, klaida buvo MSBasic programoje. Va fotkė su pakoreguota programa:

    Ir dar paveiksliuką kiek perpaišiau… :)

  2. FoxIS Says:

    del skirtingu WB(wite balance).
    tiksliai neprisimenu ka raso sioje ploksteje naudojamu led draiveriu pdf'uose(ir tingiu ieskot to pdfo), bet daugumoje current source led driveriuose su pwm valdymo galimybe galima nustatyti tam tikru budu(per vidinius registrus, per isorines grandines) sroves korekcijas.
    bent jau kiek teko dometis tai daugumoje rgb lentynu yra tai padaryta vienaip ar kitaip (na bent jau seno modulio pakeitimo nauju atveju)…

    siulau paziureti idemiau datasheetus , gal ir surasi kur nors buda daryti mikroschemu kalibracija :)

    o del zalios spalvos tai tikriausiai virsyta leistina vidutine srove per dioda arba tiesiog nekokybiskas diodas. kiek zinau zaliems diodams reikia mazesnes sroves kad jie sviestu tokiu pat intensyvumu kaip ir raudoni pvz.

    beje, o kiek bituku vienai spalvai teoriskai galima realizuoti su tuo fpga ?
    ir valdymas logaritminis ar tiesinis ?:)

  3. Administrator Says:

    Mikroschema “programuojasi" su keliais išoriniais rezistoriais (Output current adjusted through an external resistor).

    Mane kiek neramina pimas punktas- kodėl sėda diodai kai uždegi visus 16 diodų…

    O dėl vienai spalvai ir ar logaritminis-tiesinis valdymas? Bus toks koki suprogramuosiu. :) Sita dalis dar nepadaryta.

  4. Administrator Says:

    Baltos spalvos balanso problemos. Labiausiai tai “raudonos spalvos balanso" problemos.

    White balance
    Baltos spalvos pokyčiai kai užsidega visi diodai mikroschemoje.

    White balance
    Raudona spalva labiausiai “sėda"…

  5. Ian Says:

    Enjoy your blog. You should update the english version with your led matrix works. :)

    Some tips (that I got from kevtris)
    1) Don't do brightness control by pwming your output enables. Not fast enough and it makes a mess.
    2) *Do* brightness control just as a part of your PWM stepping for each row.
    3) Make sure to clear each row as the last step, otherwise capacitance on the outputs will cause ghost images to appear on unlit leds in adjacent rows.

    I'm still learning fpgas and am actually writing my controller for this board in verilog.

    FYI, evil mad science has started to sell a different variant. I purchased one that is on the way to me, but there are more in stock.

    http://cgi.ebay.com/24X32-768-RGB-FULL-COLOR-SMD-LED-BILLBOARD-DISPLAY-BRD_W0QQitemZ190253874466QQcmdZViewItem?hash=item190253874466&_trkparms=72%3A1207|39%3A1|66%3A2|65%3A12|240%3A1318&_trksid=p3286.c0.m14

    Did you purchase yours on ebay?

  6. Administrator Says:

    Yes, I bought my boards from evilmadscience. Currently I am out of my “hobby funds"- need to sell some useless stuf in ebay to collect some free money :)

    As this is my second project in FPGA I am making many errors. Also, I think I've made my design to complicated :) My goal is to make the matrix as comple static device- just load RGB data to internal frame buffer and forget it.

  7. Ian Says:

    I have the same goal, but I am doing it in Verilog and trying to learn that really well at the same time. This could be considered my first FPGA project.

    Would you be interested in selling the non-working board you have?

  8. Administrator Says:

    Sorry, I'll not sell you the board as I already fixed it- just resoldered Cyclone and everything is OK.

Leave a Reply

Bot-Check (Jei ne skaičiai spauskit refresh. Tik oranžinius naudoti.)

Unhappy Tikbalang