Sono sempre alla ricerca di un’aggiunta di qualità al mio laboratorio che rispetterebbe il mio budget rigoroso. Recentemente, mi sono ritrovato a spingere la barriera dell’Hertz con ogni altro progetto che faccio e quindi desiderava disperatamente una portata ad alta larghezza di banda. Sfortunatamente, recentemente recentemente ha recentemente 70 MHz a 100 MHz diventa davvero conveniente, mentre un nuovo oscilloscopio quadrupano quadrum nella gamma da 500 MHz a 1 GHz costa ancora una fortuna da acquisire. La mia unica opzione era trovare un miracolo assoluto sotto forma di una vecchia portata ad alto larghezza di banda.

Sembrava che gli dei di mano meschino l’elettronica stavano sorridendo su di me quando ho trovato questo cassonetto destinato a HP 54542C. Sembrava essere in buona forma e c’era il top canino al suo giorno. Ma qualcosa doveva essere rotto giusto? Abbastanza sicuro, lo schermo era chiaramente difettoso e illeggibile. Vuoi sapere come l’ho risolto? Quattro lettere: FPGA.

Il problema
Alcune ricerche poco profonde su questo scopo hanno rivelato una storia interessante. Questo è stato presumibilmente il primo ambito di fascia alta da HP con un display LCD ed è stato anche il precursore della serie di scopi di infiniium che avrebbe dovuto andare alla linea guida del mercato. Anche il LCD ha sentito un ripensamento. Lo scopo aveva una variante altrimenti simile con un display CRT, e la versione che ho acquisito ha semplicemente avuto i tratti digestivi CRT eliminati e un LCD a colori installato da HP. Speravo che il LCD fosse colpa e non l’Asic lo sta guidando, questo sembrava una buona scommessa come un rubinetto gentile sarebbe in alcuni casi portare lo schermo alla vita!

Ho iniziato a studiare la causa principale e ho iniziato prendendo parte il display LCD. Ho trovato che il liquido era stato versato dappertutto; Niente era corroso, ma la pulizia e la reinstallazione non ha fatto alcuna differenza. Riunire la portata con il cassonetto non era un’opzione, perché a parte il display LCD, lo scope si sentiva come un tesoro assoluto. Anche se il Bordo dell autista del LCD è stato completamente inutile ora, è venuto da un momento in cui l’industria non si era ancora spostato su un pitch di perno subatomico sui connettori a bordo a bordo. Ciò implicito di saldare comodamente su una televisione via cavo a nastro a 26 pin convenzionale per toccare tutti i segnali richiesti e iniziare il processo di inversione di ingegneria del protocollo in uso.

Reverse Engineering I protocolli LCD

Televisione del cavo del nastro saldato sulla parte superiore del connettore esistente
Il primo passo del processo era identificare i segnali sul connettore. Ero alla ricerca del set più generico dei segnali richiesto per guidare qualsiasi LCD. Ciò dovrebbe includere alcuni segnali severamente periodici, una coppia un po ‘casuali segnali e notogourse il potere tipico e il terreno. I segnali periodici potrebbero molti probabilmente l’orologio pixel e i segnali di sincronizzazione che segnano l’inizio di una nuova linea e telaio; D’altra parte i segnali ricercatori casuali sarebbero i dati dei pixel effettivi da visualizzare. A giudicare dalla sua età, è stato previsto un protocollo abbastanza facile. Guidato da questa intuizione ho iniziato a sondare il connettore e abbastanza presto ho avuto tutti i 25 segnali capiti.

Ho trovato solo due segnali perfettamente periodici: uno, un segnale relativamente basso di 31,25 kHz gated a 60 Hz sospetti e l’altra un’onda quadrata da 25 MHz. Il primo doveva essere un segnale di sincronizzazione integrato. La 60 Hz era un giveaway morto come corrispondeva alla frequenza fotogrammi nominale. Il segnale di sottostanti 31,25 kHz dovrebbe quindi corrispondere al tasso di linea orizzontale all’interno di un fotogramma. Infine, il segnale da 25 MHz doveva essere l’orologio per l’intero sistema, infatti era l’orologio dei pixel.

Successivamente, ho dovuto dare un senso ai segnali dall’aspetto casuale che erano evidentemente i dati dei pixel. Innanzitutto, la necessità di un connettore a 25 pin era chiaramente alludendo a una sorta di configurazione RGB parallela. In totale ho trovato nove segnali tali che si divide perfettamente da tre e avvolti che il display LCD stava usando nove bit per pixel e tre bit per canale colore R, G e B rispettivamente.

Esempio: schema del patio VGA
Funzionando lo schema e il pin-out è stato parte della sfida. Forse molto più essenziale stava immaginando i tempi dei segnali in uso. Quasi sempre, i segnali di visualizzazione grezzi hanno ciò che sono chiamati “portici”. Questi possono essere pensati come regioni all’interno di ciascuna fotogramma in cui i dati non possono essere scritti. Questi hanno avuto origine nei giorni di CRT dove il raggio fisico degli elettroni ha richiesto del tempo per spazzare dalla fine di una linea all’inizio dell’altro, o anche dal fondo dello schermo verso l’alto. Sebbene meno pronunciato nelle moderne schermate elettroniche, queste regioni esistono ancora perché il controller LCD richiede l’elaborazione del tempo e mescolare i dati in entrata.

Determinare i tempi

Per estrarre i tempi ho provato a correlare i dati dei pixel con i segnali di sincronizzazione. Stavo cercando alcuna regioni in cui i pixel sono stati costantemente garantiti.

Tempi orizzontali
Dopo aver fissato i dati per un po ‘, è stato chiaro che il display LCD stava utilizzando un semplice, unico schema patio su entrambe le porzioni orizzontali e verticale del segnale di sincronizzazione integrata. Questo è stato facile da identificare perché i pixel sono stati impostatiO tutto alto o tutto basso durante questo periodo. Una volta che avevo individuato queste regioni, ho usato i cursori per misurare la loro durata e tradotto quella volta a un numero equivalente di pixel.

Si trattava di un pezzo di informazione vitale che garantirebbe una riproduzione stabile e appropriata sul monitor VGA. Il piano doveva nutrire questi valori come costanti in Verilog e utilizzare i contatori per “tritare” la logica corrispondente per ottenere le forme d’onda richieste.

TIMINI VERTICI
Infine, la risoluzione del LCDS doveva essere identificata come dovrei eseguire il monitor sostitutivo alle stesse impostazioni. Questo è stato fatto semplicemente misurando i vari periodi attivi e confrontandoli con altri segnali come l’orologio pixel che ha avuto un periodo 40 NS. Il tempo attivo orizzontale è stato determinato a essere circa 25,7 USA, costituendo quindi un totale di 642,5 pixel e allo stesso modo il periodo attivo verticale era di 15.42 ms e con un periodo orizzontale di 30 Stati Uniti, che corrisponde a 481 linee. Chiaramente questo è stato un display convenzionale da 640 x 480 con un tasso rivitalizzato di 60 Hz.

Trovare un sostituto in grado

Il salvatore da 8 pollici
Quindi il display esistente [si è rivelato essere] piuttosto comune alla fine, e una sostituzione sembrava interamente plausibile. Sfortunatamente, la dimensione era un po ‘strana; È facile trovare schermi da sette pollici ma otto? Anche se non riuscivo a trovare alcuna caduta piuttosto costosa in sostituzione del web, la dimensione è appena stata la stessa di quella utilizzata da numerose installazioni LCD moderne dopo il mercato su auto. Questi sono buoni schermi di alta qualità “Eyoyo” a basso costo (£ 50) e accettano letteralmente tutti sviluppati di input video da tutti gli analogici a VGA e persino HDMI. Sostengono inoltre una risoluzione molto più elevata di 1024 * 768. Sono stupito di questa schermata non è molto popolare nella comunità Raspberry PI.

Infine, tutto sembrava cliccare insieme. Non solo potrei sostituire il display LCD con questo monitor VGA, si adatterebbe perfettamente in quanto la portata aveva persino avuto abbastanza spazio per un crt!

Così esattamente, come si esegue la conversione del display LCD a VGA? Con un FPGA ovviamente!

Conversione del segnale

A questo punto l’unica cosa in piedi tra me e un campo da 500 MHz funzionante è stato convertire con successo i segnali LCD precedentemente citati in VGA. Era chiaro che l’elaborazione relativamente veloce potrebbe essere eseguita solo su un FPGA, ma quale? Il mio obiettivo era, ad un certo punto, lasciare il FPGA all’interno dello scope con lo schermo, quindi avevo bisogno di qualcosa di piccolo ed economico. Fortunatamente, eBay sembra avere un sacco di queste vecchie schede di sviluppo basate su Motera Cyclone II per una mentalità di bogging £ 10! Queste sono il FPGA piuttosto capace, con gli elementi logici 4K e ottimale per un progetto di piccola scala come questo.

Un modo comune Queste conversioni di visualizzazione vengono eseguite utilizzando i buffer del fotogramma. L’idea è di tamponare un’intera cornice, eseguire la conversione e sputarlo all’altra estremità. Purtroppo questo richiede una RAM esterna di dimensioni rispettabili sul FPGA. Queste schede FPGA sono famose per non avere alcuna RAM esterna, quindi questo schema era fuori questione. Dopo un po ‘di pensiero, mi riguardo alla realizzazione che i segnali LCD e VGA non erano così dissimili. Cosa succede se potessi convertire da uno all’altro su base line-by-line e aggira la necessità di un buffer del fotogramma?

Comparazione: VGA vs LCD. Questo diagramma si applica sia ai segmenti orizzontali che verticali
In sintesi:

LCD ha:

Un orologio pixel.

Segnali di sincronizzazione combinati.

Solo patio anteriore

considerando che VGA ha:

Nessun orologio pixel

Segnali di sincronizzazione separati

Patio anteriore e posteriore con un periodo di sincronizzazione

Il segnale di sincronizzazione integrato
Entrando in dettaglio di come funziona VGA oltre la portata di questo articolo, ma lo aggiusterò in seguito. Per ora, se esaminiamo semplicemente lo schizzo di tempistica, vediamo che l’unica differenza tra i due segnali è il numero di occorrenze e posizioni dei portici e il posizionamento dei dati validi.

Lo schizzo rende la conversione semplice ma è valida solo se i due fotogrammi sono in sincronizzazione completa. Per dire al FPGA di iniziare a produrre un cornice LCD corrispondente su VGA, dovremmo prima identificare l’avvio di un nuovo fotogramma proveniente dal connettore LCD in modo da poterlo sincronizzare. Questa è probabilmente la parte più difficile del processo, perché semplicemente esaminare i bordi del segnale di sincronizzazione integrato dal display LCD non è sufficiente.

Dovremmo invece misurare il tempo tra due bordi e bandiera il verificarsi di un nuovo telaio. Il resto è un insieme relativamente semplice di cancelli logici che produce lo schema di temporizzazione di cui sopra. Infine, poiché il display LCD non ha un patio posteriore o un impulso di sincronizzazione, i dati RGB in entrata dovrebbero essere saldosi in tempo in tempo utilizzando un minuscolo FIFO in modo che si allinea perfettamente in cui il monitor VGA si aspetta. Una volta che equivalevano a Verilog è stato completato, ho proceduto a gestire l’hardware.

Setup hardware.

La configurazione dell’hardware.
La configurazione hardware è stata fortunatamente molto minimalista. HP non stava utilizzando il proprio LCD al suo massimo potenziale. Ispezionare i singoli bit di eAch Channel ha rivelato molta ridondanza: i vari bit erano praticamente sempre identici, indicando un utilizzo molto superficiale della tavolozza dei colori di nove bit. Questo non è stato scioccante poiché HP stava per lo più riutilizzando il firmware dalla versione CRT della portata. Tutto ciò implicavo che mi sono allontanato con basta agganciare il MSB di ogni canale di colore con praticamente nessuna perdita nell’immagine finale. Questo mi ha salvato anche memoria molto più preziosa sul FPGA.

Il problema più significativo era che il display LCD stava usando segnali da 5 V TTL. Il FPGA può accettare al massimo dei segnali da 3,3 V, quindi la conversione del livello doveva essere eseguita. Ho scelto di sfruttare i diodi di bloccaggio di ingresso in alcuni dei buffer logici della serie 74HC per svolgere questa conversione. Questo tende a distruggere i tempi di aumento / caduta considerevolmente però. Ad esempio, il 74HC4050 ha anche resistori Polisilicon in serie con il diodo nello stampo, spostando la necessità di un resistore di serie esterno. Ho giocato al sicuro e ho aggiunto resistori serie 1 kΩ all’ingresso di questi tampone e l’output di è stato alimentato nel FPGA. L’uscita delle uscite HSYNC e VSYNC di FPGA sono state collegate direttamente al monitor mentre le linee RGB sono state collegate tramite resistori da 330 Ω.

Successo

Successo!
Dopo aver dominato l’orologio da 25 MHz pixel per comportarsi su una tavola di breadboard e collegare il FPGA al nuovo esterno

Il porto VGA del monitor, lo scopo è stato riportato alla sua gloria formale! Sebbene tutto funzioni perfettamente, questa configurazione era piuttosto incline a rumore. Tutto quello che devo fare ora è creare un PCB e concedere il monitor VGA una residenza permanente all’interno dell’ambito.

Allora, qual è il prossimo chiedi? Bene, attualmente l’unico modo per salvare gli screenshots è attraverso un’unità floppy datata. Ma poiché ora abbiamo i dati LCD passando attraverso un FPGA, perché non scriverlo a una scheda SD?

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *