Newsgroup: it.hobby.elettronica.digitale
Titolo: Come disegnare un display controller?

Salve, partendo da una ram statica usata come memoria video bitmap è
difficile fare i circuiti di scansione degli indirizzi per generare un
segnale video composito, o al limite un segnale di sincronismo composito e
dei segnali rgb separati per entrare in un comune televisore?
Non importa la risoluzione e il numero di colori... sarebbe solo un
trastullo per divertirsi.
Magari degli 8bit della ram potrei usare due bit per ciascun canale rgb per
avere 4 livelli di colore per ogni canale, e con gli altri 2 bit che
avanzano regolare in 4 livelli la luminosità totale dei canali rgb.
Ma per il resto?
Mi basterebbe la sezione che fa la scansione della ram e genera i
sincronismi orizzontali e verticali, poi per l'interfacciamento ad un micro
8bit mi arrangerei io.
Grazie per gli aiuti.
Paolo.
--
Prima di rispondermi devi togliere le dita dal naso! ;-)

 televisore?
No, non è per niente difficile!
C'è chi lo ha fatto solamente con un PIC!
http://www.efd.lth.se/~e96rg/mc/mc.html
[Non so se l'indirizzo funzioni ancora...]
La soluzione migliore comunque secondo me è usare una CPLD.
Ti basta essenzialmente implementare alcuni contatori per
gestire i tempi e la generazione degli indirizzi. Puoi
codificare i colori come hai detto, ed usare delle semplici
reti resistive per creare il segnale analogico. Se vuoi
ottenere un segnale composito esistono degli integrati che
lo generano a partire dalle componenti RGB...
Il vantaggio di usare una CPLD è duplice: innanzi tutto hai
più I/O disponibili, ed inoltre è più facile gestire la
scrittura nel buffer video senza bisogno di usare memorie a
doppia porta...
Se cerchi su Internet sicuramente puoi trovare qualcosa
sull'argomento...
Ciao,
A.D.

 8bit mi arrangerei io.
Per l'orizzontale: una linea dura 64us, e un contatore a 8 bit cloccato
a 4MHz ci sta giusto perfetto, senza logiche di reset. Dei 256 pixel
per linea, ne saranno visibili circa 192 (3/4). Il sincronismo lo puoi
ricavare con porte logiche (4us dovrebbero andar bene -> 1/16 di linea,
quindi basta ad esempio un NAND a 4 ingressi collegati al nibble alto)
oppure con un monostabile (ad es un 555) triggerato dal fronte di
discesa del bit più alto. IC contatore: (74HCT/HC)393 (2x4 bit) oppure
ancora meglio il '590: 8 bit con latch (che qui non serve) e uscite
tristate (comodo per evitare il multiplexer, basta che anche le altre
linee da condividere siano di tipo tristate). In alternativa un '4040
(sempre HC o HCT), ma quest'ultimo è un ripple-counter (le varie uscite
non cambiano stato tutte assieme, cioè il conteggio si propaga dal bit
basso a quello alto, quindi per un po' gli indirizzi ram "ballano" e
avresti una transizione video poco pulita tra pixel orizzontali).
Per il verticale vai sul semplice: niente interlacciamenti, 312 linee
per semiquadro. Occorre un contatore a 9 bit (cloccato dal sinc orizz)
e un po' logica che lo resetta a 312 (qui puoi usare un '4040), più
un monostabile o porte logiche per generare il sinc verticale.
Oppure fai a meno del contatore verticale e relativa logica di
reset/sincronismo e usi il micro al suo posto: basta far in modo che
il sinc orizz generi un interrupt, nel quale il micro aggiorna le
linee di indirizzamento verticale della ram e genera il sincronismo
quando opportuno.
Ciao
Adriano

 ha scritto nel messaggio
news:406762DB...@despammed.com...

Grazie, molto chiaro.
Ho ancora dei dubbi però sul modo in cui realizzare gli impulsi di pre
equalizzazione, post equalizzazione e serrati del sincronismo verticale...
sempre che siano indispensabili...
Preferirei evitare il micro e fare tutto con contatori o monostabili.
Ciao!
Paolo.

 sempre che siano indispensabili...
sono indispensabili, ma solo per l'interlacciamento tra semiquadri pari
e dispari (che durano 312,5 linee). Considerato il tuo scopo, io
semplificherei ed eliminerei l'interlacciato e relative complicazioni:
un semplice impulso verticale che dura un certo numero di linee,
combinato con il sinc orizzontale mediante uno XOR... dovrebbe
funzionare.
Mooolto tempo fa, quando incominciai ad appassionarmi all'elettronica
(nel periodo tra Pong e il Vic20), generavo i sincronismi tv in maniera
semplicissima: due 555 usati come oscillatori con duty cycle stretto,
l'orizzontale grossomodo a 15625Hz (allora non avevo strumentazione,
regolavo il trimmer della frequenza a occhio fin quando il tv
agganciava) e il verticale a circa 50Hz. Se non ricordo male, combinavo
i due sincronismi con uno XOR. Se ritrovo i vecchi schemi, verifico e
ti faccio sapere. In ogni caso il circuito era molto semplice e
funzionava senza problemi, tanto che mi divertivo ad aggiungere altri
oscillatori e monostabili di contorno e a realizzare giochini tv sullo
stile di Pong :-)
Ciao
Adriano

 stile di Pong :-)
A proposito di "archeologia" elettronica e primissimi videogiochi tv,
c'è un sito che raccoglie parecchi progetti apparsi sulle riviste di
quell'epoca: 
http://www.pong-story.com/mags.htm
Adriano

 ha scritto nel messaggio
news:406842B4...@despammed.com...

Grazie mille.

Ciao, ascolta io avrei la possibilità di recuperare da una scheda un Altera
Flex EPF6016ATC144-3
Se dovessi abbandonare l'idea di fare tutto a porte logiche discrete, questo
componente potrebbe andare bene?
Sono difficili da programmare?
Ciao.
--
Prima di rispondermi devi togliere le dita dal naso! ;-)
"Antonio Di Stefano" <antoniodistefano @ infinito . it> ha scritto nel
messaggio news:3JC9c.94573$Kc3.3...@twister2.libero.it...


 Prima di rispondermi devi togliere le dita dal naso! ;-)
Ops... me lo sono dimenticato! ;-)