Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Původní podoba příspěvku

Michal Hučík Zpět na příspěvek

Surová data tak, jak byla v roce 2013 stažena z Pandory (HTML zdroj bez úprav, osobní e-mailové adresy jsou maskované).

<!-------------------------------------------------------------->

<!-------------------------------------------------------------->
<table width="100%"><tr><td align="left" valign="middle"><B>Scandoubler zase trochu jinak:</B></td><td align=right valign="middle"></td></tr></table><BR><pre>Zdravim,

pokusil jsem se schematicky navrhnout scandoubler pro FPGA Spartan3A :)
<img src="BODY_IMAGES_WRAP_GIF"> Kazdopadne pokud by byl ten navrh funkcni, tak by asi nebyl problem realizovat 
<img src="BODY_IMAGES_WRAP_GIF">to i s jakoukoliv normalni logikou. Takze bych vas chtel poprosit, pokud se bude
<img src="BODY_IMAGES_WRAP_GIF">nekomu chtit, zda byste se mohli podivat, jestli jsem neudelal v nejake uvaze
<img src="BODY_IMAGES_WRAP_GIF">chybku, a zda by vubec scandoubler mohl v teto podobe fungovat. Viz. prilozene
<img src="BODY_IMAGES_WRAP_GIF">schema.

Zde je k nemu popis, resp. zbozne prani jak by to melo fungovat.

Vstupy:

- Clock, libovolny hodinovy signal alespon 36MHz a vyssi
- SharpRGBI, 4 bity RGBI ze Sharpa
- SharpVsync, 50Hz snimkova synchronizace ze Sharpa (s kazdou nabeznou hranou
<img src="BODY_IMAGES_WRAP_GIF">zacina novy snimek)
- SharpHsync, 15.6115kHz horizontalni synchronizace ze Sharpa (s kazdou nabeznou
<img src="BODY_IMAGES_WRAP_GIF">hranou zacina novy radek)


Popis soucastek:

- Ram1 a 2, interni pamet 4096x4, pokud je WE a EN na urovni 1, tak s nabeznou
<img src="BODY_IMAGES_WRAP_GIF">hranou CLK zapisujeme do pameti stav ze sbernice D(3:0), pokud je WE ve stavu 0,
<img src="BODY_IMAGES_WRAP_GIF">tak na sestupne hrane CLK cteme na sbernici DO(3:0)

- OUTBUFT4 jsou 3 stavove vystupni buffery, pokud je T ve stavu 0, tak
<img src="BODY_IMAGES_WRAP_GIF">propousteji, pokud je T = 1, tak jsou na vystupu uvedeny do tretiho stavu -
<img src="BODY_IMAGES_WRAP_GIF">vypnuto

- Count1, 2, 4 a 5 jsou 2 bitove citace, Count3 je 16 bitovy

- Muxy 1 a 2 prepinaji vystup tak, ze pokud je na S0 = 0, tak na vystupu je stav
<img src="BODY_IMAGES_WRAP_GIF">z D0, pokud S0 = 1, tak je na vystupu stav z D1

- tajemna soucastka OUTBUFT_16_vs_12 je pouha redukce mezi 16 a 12 bitovou
<img src="BODY_IMAGES_WRAP_GIF">sbernici

Popis funkce:

- Count1 funguje jako delicka hodinoveho signalu, jeji vystup Q0 slouzi jako
<img src="BODY_IMAGES_WRAP_GIF">zdrojovy signal k citaci adres (Count3) a zaroven je timto signalem pri kazdem
<img src="BODY_IMAGES_WRAP_GIF">prvnim taktu nastaveno WE = 1 u pameti Ram1 a 2 (tedy pri kazde prvni nabezne
<img src="BODY_IMAGES_WRAP_GIF">hrane z Clock budeme provadet scan RGBI vstupu)

- Count2 pocita sude a liche radky scanovaneho snimku a podle toho urcuje, do
<img src="BODY_IMAGES_WRAP_GIF">ktere z pameti se bude zapisovat a ze ktere se bude cist, nulty radek se zapise 
<img src="BODY_IMAGES_WRAP_GIF">do Ram1, prvni do Ram2 atd.

- s prvni nabeznou hranou na Clock scanujeme / zapiseme stav RGBI na adresu #000
<img src="BODY_IMAGES_WRAP_GIF">Ram1

- s prvni sestupnou hranou na Clock precteme / odesleme na VGA obsah Ram2 z
<img src="BODY_IMAGES_WRAP_GIF">adresy #000

- s druhou nabeznou se nedeje nic

- s treti sestupnou opetovne precteme  / odesleme na VGA obsah Ram2 z adresy
<img src="BODY_IMAGES_WRAP_GIF">#000 a zvedneme hodnotu citace adres Counter3 na #001

- takto postupne scanujeme cely nulty radek, zapisujeme jeho hodnotu do Ram1 a
<img src="BODY_IMAGES_WRAP_GIF">do VGA odesilame nejake nesmysly z Ram2 dokud vstup SharpHsync nezmeni svou
<img src="BODY_IMAGES_WRAP_GIF">hodnotu na 0 (konec radku), tim se prepne zapis na Ram2, cteni na Ram1, vynuluje
<img src="BODY_IMAGES_WRAP_GIF">se citac adres Count3 a jakmile SharpHsync oznami prechodem do 1 zacatek noveho 
<img src="BODY_IMAGES_WRAP_GIF">radku, tak zacneme na VGA posilat nascanovane data nulteho radku z Ram1, zatimco
<img src="BODY_IMAGES_WRAP_GIF">do Ram2 se bude ukladat dalsi radek

- Hodnota signalu SharpHsync je transparentne predavana do VgaHsync

- Hodnota vstupu SharpVsync je pri prechodu na 0 zaznamenana do Count4 a do
<img src="BODY_IMAGES_WRAP_GIF">vystupu VgaVsync je odeslana se zpozdenim o delku jednoho obrazoveho radku
<img src="BODY_IMAGES_WRAP_GIF">pomoci Count5


Toz takhle nejak bych si to predstavoval :) I kdyz vlastne ani moc neverim, ze
<img src="BODY_IMAGES_WRAP_GIF">to bude fungovat, tak jsem zvedavy na vas nazor.

Michal

</pre>