Šis postas labiau skirtas man pačiam nei plačiajai visuomenei. Paprasčiausiai, popieriukai su užrašais dažnai pasimeta arba sunku juos rasti. O čia, internete, informacija randu greičiau :).
Pagaliau buvo laisvo laiko, ir aš kiek padirbėjau su savo RGB LED matrica. Labai palengvino darbą FPGA mikroschema prilituota prie matricos- be jos, “reverse engineering” užtrūktu labai daug laiko… Laikas pažiūrėti ką sumastė Adaptive Micro Systems LLC iš Milwaukee, Vajomingo… 😉
Matrica sudaryta iš 72×24=1728 RGB šviesos diodų. (Viso 5184 diskretus diodai).
Matrica padalinta į dvi dalis (eiles) kurios įjungiamos signalais (pagal mano klasifikaciją): LE_MBI_UPPER ir LE_MBI_LOWER (69 ir 70 ciklono kojos). Viena eilė sudaro 12 šviesos diodų eilučių. /LE signalo impulsas perveda informaciją iš vidinio registro į išorę. Žiūrėti MBI5026CD datasheetą .
Šias dvyliką eilučių valdo (per mosfetų raktus) paprasčiausia dvejetainė-šešiolika (74HC154, К155ИД3) mikroschema. Šios mikroschemos naudojamos tik 12 jaunesniųjų išėjimų. Pati dešifravimo mikroschema pajungta taip: A0-A3 (HC154A[3..0]) prie ciklono (32, 33, 34, 35), OE2 (HC154OE2) prie ciklono (32). O štai OE1 pajungtas gana įdomiai, čia padaryta apsauga nuo užstrigimo- su diskretinėm detalėm (rezistoriai, kondikai, tranzai, diodai) suorganizuotas šioks toks watchdog’as. Kol šį “šunį” maitinam per (RC_UNKNOWN1, 37), dešifratorius išduodą išėjimą. Užtenka generaciją nutraukti ir dešifratorius išsijungia.
Kiekvienoje eilutėje (išskyrus pirmuosius du kvadratėlius) yra 16 RGB diodų, kurie savo ruožtu maitiniami iš 3 serial-par-LED-draiver mikroschemų (MBI5026CD). Kiekviena mikroschema atitinkamai R, G ir B spalvas.
Dar, visos MBI5026 turi OE išėjimų valdymus, kurie sujungti išilgai, t.y. OE1 (59) atsovauja viršutinės dalies R spalvai, OE2 (60)- G, OE3 (61)- B. Atitinkamai OE4,5,6 (62, 67, 68)- apatinės dalies RGB.
Vaizdelio paišymas organizuojamas taip:
Paimam iš atminties 10×16 spalvotų pikselių. Juos užkraunam į registrus. Su LE pasirenkam viršutinę ar apatinę matricos dalį naudoti, o su dešifratoriaus A0..A3 pasirenkam eilutę. Kam tas LE? Nes kiekvienas “kvadratėlis” turi savo nuosava SDI…
Bet kaip organizuojamas individualaus taško ryškumo reguliavimas? Kažkaip manipuliuojant OE ir H154OE2? Nes teoriškai, čia turėtų buti “analoginė”, “full color” matrica. Kažkaip nesinori tikėti, kad čia tik 8 spalvos… 🙁 Pati MBI5026 turi fiksuotos srovės išėjimus.
Pažiūrėkit ką jie gamina/gamino: http://www.adaptivedisplays.com/
O kokie signalų vaikščiojimo dažniai ?
koks fps?
Nežinau kokie galimi dažniai. Ant plokštės stovi ~18MHz kvarcas, toliau FPGA stovi PLLas ir dažnį galima užkelti. Šiuo metu PLLas išduoda 110.59MHz, serial clokas 1/2 taigi apie 50MHz, 16 bitų- 3MHz – 12 eilučių- 0.2MHz + mano klaidos. Žodžiu švelnus mirgėjimas jaučiasi.
Taigi apie fps negaliu pasakyti. Tačiau turi tikrai imti 70fps.
Čia testavimo schema. Nuo nuotraukoje pavaizduotos skiriasi, kad čia biški mirguliuoja (žiūrėti į OE grandines).
PWM moduliacija per OE (RGB):
Matosi, kad žali šviesos diodai žymiai lengviau užsidega. Beja, melyni diodai prie mažų raiškių kaitalioja spalvas 🙂
Koks panaudojimas nusimato?
wow 🙂
man turbūt su atmega 16×16 matricos užPWMint nepavyks…
o beje, kokiam formate plokštė priima vaizdą? ar savo konfiguraciją į fpga įrašei ?
Matui: jokių panaudojimo planų. Just for fun.
Foxiui: pas mega hardwarinių pwm yra mažai. O softwarinių gali ir pritrūkti. Tam reikalui reikia naudoti kokią specialią PWM mikroschemą. Pas FPGA tai paprasta- bet kuri koja pasidaro PWM :).
Apie formatus plokštėje- originalus FPGA kodas nežinomas. Yra žinoma, kad pas plokstę yra 4 kanalų LVDS jungtis. Eksperimentuodamas paprasčiausiai perrašau FPGA turinį ir bandau savo schemas.
Brangus tavo fun, bet kad fun tai tikrai 🙂
Pakurk koki idomu project, pvz koki nors fading laikrodi 🙂
Labai labai neskubant padariau RGB matricos “firmware” deja ji be ryškumo lygių (tik 8 spalvos). Nelabai yra laiko ir energijos vargti su ta matrica. O kolega užsenietis užsispaudė savo subine ir nenori pasidalinti įdėjomis kaip organizuoti pilną spalvų gamą. Taip pat yra problemos su LED draiveriais- jei dega visi 16 diodų, jie dega silpniau, nei keli diodai. Atrodo, kad neužtektu galios. Matinų viską iš modifikuoto ATX (5V ir 3.3V), rodos galios turėtų užtekti…
(visų spalvų patikrinimas)
(atsitiktinė informacija vidiniame buferyje)
Šiuo metu projektas naudoja 8192 iš 92160 (9%) bitus atminties, 1602 iš 5980 (27%) loginių elementų ir vieną PLLą (50%). FPGA dar kiek liko resursų viską perdaryti geriau. Beja optimizacija dar nepanaudota. Ryšis su išore tik per JTAG. Galima keisti “frame buffer” turinį ir RGB PWM reikšmes (white balance).
Žiūrėti tai pat ir šitą žinutę: http://www.vabolis.lt/2008/09/28/rgb-matrica-rasom-softn/
Hi,
Can you send to me the FPGA code? I also have one of this board and I need the pinout of the FPGA.
Many thanks and congratulation for your work!
Check other posts in LED and FPGA category and you’ll find two versions of FPGA code. All pinout are in FPGA code.
64 bitų ryškumai individualiam taškui:
(skaičiukas tai gama koeficientas)
Daugiau apie tai: http://www.vabolis.lt/2008/10/10/rgb-matrica-gama-korekcija/
dar biški: http://www.vabolis.lt/2008/10/04/rgb-matrica-beveik-24-bitai/
Ir dar keli postai iš http://www.vabolis.lt/category/led/ ir http://www.vabolis.lt/category/fpgacpld/ ketegorijų.