Iš eilės einantys skaičiai nelabai įdomūs. Todėl prie mūsų “video kontrolerio” reikia pritaikyti atmintį. Kad į tą atmintį rašyti informaciją, o displėjus rodytu kas ir kaip čia gaunasi.
Maždaug taip:
Čia dar galima pastebėti, kad aš padidinau šrifta du kartus tiek į plotį, tiek į aukštį. Paprasčiausiai labai jau mažos raidelės buvo ant ekrano, o ir video atmintis labai didelė gautusi. Continue reading →
FPGA:0006 – VGA Taimingo tiuninimas
Rašiau, kad eksperimentiniame SVGA displėjuje raidelės nesutampa su fonų ir minėjau, kad bandysim tai remontuoti.
Pirmiausia, reikia visus signalus- ir teksto ir fono, ir gal kokių nors spraitų spalvinę informaciją sinchronizuoti su pixel clocku. Tam tikslui esame “blankerio” modulį perdarom iš paprastos logikos į sinchroninį, naudojantį registrus. Naujas source kodas jau atrodo taip:
module blanker(clk,r,g,b,blank,qr,qg,qb); input clk; input [3:0] r; input [3:0] g; input [3:0] b; input blank; output reg [3:0]qr; output reg [3:0]qg; output reg [3:0]qb; always @(posedge clk) begin qr <= (blank) ? 8'b00000000 : r ; qg <= (blank) ? 8'b00000000 : g ; qb <= (blank) ? 8'b00000000 : b ; end endmodule
Kad priešas nepasinaudotu…
Tikriausiai visi matė tokią atgyveną kaip mikroschemą su DIP/DIL korpusu:
Per vidurį stovi Rusiška, tiksliau dar tarybinė mikroschema К155ИД1. Nekalbam apie mikroschemų “turinį”, šnekam apie korpusą, tiksliau apie išmatavimus. Tarybinės ir vakarietiškos kaip ir vienodo tipo mikroschemos, tačiau yra viena subtilybė kuria susiduriau tik prieš kelis metus. Pasirodo, nuo pat dizaino nukopijavimo laikų, šios mikroschemos biški skiriasi. Vakarietiškos mikroschemos naudoja imperinį (colinį) skaičiavimą ir atstumas tarp kojyčių yra tiksliai 0.1″ (viena dešimtoji colio), tuo tarpu tarybinės mikroschemos yra metrinės ir atstumas tarp kojų yra 2.5mm.
Continue reading →
Vasario 58 diena
Sveikinu su vasario 58 diena…
Biški čia gamta juokauja. Globalinis atšilimas.
FPGA:0005 – Tekstinis displėjus
Papaišėm spalvotus fonus. Bet jei norime parodyti kokį nors tekstą, panašiai kaip senoviniam tekstiniam displėjuje? Aišku galima! Viena iš pirmųjų minčių- prikabinti didelį video RAMą kaip šiuolaikinėse video plokštėse ir nuo RAM turinio keisti vaizdą. Aišku taip galima, bet mes neturim tiek atminties. Netgi naudojant po 4 bitus vienai spalvai, gaunasi: 1024x768x3x4/8=1179648 baitai (1.125 megabaito). Tačiau mums užtenka tekstinio displėjaus. Jį sudaro tekstinė atmintis, šrifto atmintis ir spalvų atmintis (kartais paletizuota). Kadangi tingiu paišyti ir ieškoti internete, panaudosiu 8 bitų ATARI kompiuterio šriftą, kurį savo laiku ištraukiau iš to kompo ROMo. Šis šriftas skirtas TV ekranui, todėl jis toks pastorintas. Šriftas užima 8×8 matricą, tačiau iš šonų visada yra tušti pixeliai raidžių atskirimui. Senoviški ekranai naudodavo mažesnes matricas, o tarpelius tarp raidžių darydavo hardwariškai. Gal apseisim be šito.
Continue reading →
Kin-dza-dza!
Кин-дза-дза! style.
Dabar visi darot kuu.
Penktadienis gi!
Fotocheminė mįslė
Čia jums, kad nenuobodžiauti eilinė foto mįslė. Šį karta tokia cheminė. Pabandykit atspėti kas čia dabar yr.
Tik prašymas, tie kurie tikrai tikrai žino ir jūsų postai automatiškai pasitvirtina- neišduokit iškarto.
Toks iš pradžių.
Continue reading →
Įrankis
Tikriausiai daugelis pirko kiniškus šešiakampius raktelius kurie susisuka kaip vaškiniai?
Kam juos galima panaudoti? Prireikė vienam projekte apdoroti plokštumą, o nėra frezavimo staklių. Bandymai su šlifavimo staklėmis baigėsi gėdingu fiasko. Besiblaškant po youtube, buvo pastebėtas toks specifinis įrankis kurio mintis labai paprasta- vieno peilio drožtuvas. Todėl kiniškas kiek didesnis šešiakampis buvo modifikuotas:
Continue reading →
FPGA:0004 – SVGA
Pažaidus su LEDais, pabandykime prijungti kokį nors VGA monitorių. Kadangi mano eksperimentinis monitorius yra LCD su 1024×768 raiška, tai man reikia susigeneruoti tokią “video plokštę” kuri palaikytu tokią rezoliuciją. kodėl tiksliai pataikyti į “native resolution”? Ogi kad pažaisti su smulkiais objektais ir taimingais.
Iš senesnio mano puslapio galima sužinoti standartizuotus VESA taimingus ir video generavimo koncepcija. Internete pilna visokių video generavimo schemų ir variantų, tačiau aš naudosiu savo. Bent jau aiškinimuose kaip veikia. Pirmiausia reikia susikonstruoti VGA kištuko “šieldą” arba “add-oną”. Kadangi ateityje norėsiu pabandyti daugiau spalvų, tai nutariaus sulituoti 4 bitų DACą kiekvienai spalvai. Tai duos iš viso 4096 spalvas. Tiek pat, kiek sugebėjo rodyti pirmieji Amiga kompiuterio modeliai.
Kiekvienas save gerbiantis VGA monitorius turi 75 omų apkrova savo viduje, o maksimalaus raiškio įtampa kažkur apie 0.7V (700mV). Mūsų “video plokštė” turi tik 3.3V LVTTL išėjimus, ir rodos max 20mA per koją (su apribojimu visam blokui ir čipui). Todėl reikia pasidaryti patį primytyviausią DACą (digital analog converter). Tam reikes apie 0.5k, 1k, 2k ir 4k rezistorių. Kadangi tokie tiksliai rezistoriai neegzistuoja (ypač mano stalčiuje), tai pasirinkau: 512R, 1K, 2K, 3.4K. Kiek paskaičiavus ir gaunasi, kad įtampa spalvos laide svyruos nuo 0 iki maždaug 700mV. O kaitaliojant bitus įtampa keisis maždaug tiesiškai. Beja tą ir parodė vėliau osciloskopas.
Continue reading →
FPGA:0003 – LEDai
Garsą jau turim, dabar biški vaizdo. Yra 3 LED ant tos plokštės sujungti per rezistorių prie Vcc. Pas mano plokštę jie pažymėti kaip D2, D4 ir D5. Aš čia prilitavau skirtingų spalvų LEDus: raudoną, žalią ir mėlyną. O kad dar krūčiau būtų, maitinimo pajungimo indikacijos LEDą D3 padariau baltos spalvos. 🙂
Su FPGA uždegti LEDą galima taip pat, kaip ir mikrokontroleryje- užtenka atitinkamą koją perjunti į žemę (nes LEDas į Vcc) ir LEDai dega. Tiesa jie dega ir dabar, nes nenaudojamos kojos užsiprogramuoja į žemę.
Jei norime, kad LEDas mirksėtu užtenka pagrindinį 50MHz clocką pasidalinti iki kelių hercų ir paduoti į LEDą. Ir jis mirksės.
Continue reading →