Digitale producten die u kunt verkopen Digital Electronics FPGA redt de reikwijdte van de afvalcontainer

FPGA redt de reikwijdte van de afvalcontainer

Ik ben altijd op zoek naar een aanvulling op mijn laboratorium die mijn strikte budget zou respecteren. Onlangs heb ik ontdekt dat ik de Hertz-barrière duwde met elk ander project dat ik doe en dus wanhopig een hoog bandbreedtebestreker gewenst. Helaas, slechts kort geleden 70 MHz tot 100 MHz worden echt betaalbaar, terwijl een nieuwe quad-kanaal-oscilloscope in het bereik van 500 MHz tot 1 GHz nog steeds een fortuin kost om te verwerven. Mijn enige optie was om een ​​absoluut wonder te vinden in de vorm van een oud hoog bandbreedte-reikwijdte.

Het leek de goden van de overhandige elektronica aan het glimlachen toen ik deze dumpster heeft gevonden die bestemd HP 54542C had. Het leek in een goede vorm te zijn en was de bovenste hond in zijn dag. Maar iets moest zijn gebroken? Natuurlijk was het scherm duidelijk defect en onleesbaar. Wil je weten hoe ik het heb gerepareerd? Vier letters: FPGA.

Het probleem
Sommige ondiepe onderzoek naar deze scope onthulden een aantal interessante geschiedenis. Dit was zogenaamd HP’s eerste hoogwaardige reikwijdte met een LCD-scherm en was ook de voorloper van de Infiiium-serie van scopes die naar richtlijn de markt zou gaan. Het LCD-scherm voelde echter als een bijzaak. De scope had een anders soortgelijke variant met een CRT-display en de versie die ik heb verworven, had gewoon de CRT-spijsverteringskanalen geëlimineerd en een kleur LCD-scherm geïnstalleerd door HP. Ik hoopte dat het LCD-scherm in de schuld was en niet de ASIC’s drijden, dit leek een goede gok als een zachte kraan in sommige gevallen het scherm weer tot leven brengen!

Ik begon met het onderzoeken van de oorzaak, en begon door het LCD-scherm uit elkaar te gaan. Ik vond dat er enige vloeistof was gemorst; Niets had gecorrodeerd, maar het schoonmaken en opnieuw installeren maakte geen verschil. Hereniging van de reikwijdte met de Dumpster was geen optie, want naast het LCD-scherm voelde de scope als een absolute schatklep. Hoewel het Chauffeur-bord van het LCD-speler nu helemaal nutteloos was, kwam het uit een tijd dat de industrie nog niet op subatomische pin-pitch op draad-aan boord-connectoren was verhuisd. Dit impliceerde ik kon gemakkelijk solderen op een conventionele 26-pins lintkabeltelevisie om alle vereiste signalen te tikken en het proces van reverse engineering het in gebruik te maken.

Reverse Engineering De LCD-protocollen

Lintkabel-televisie gesoldeerd bovenop de bestaande connector
De eerste stap van het proces was om de signalen op de connector te identificeren. Ik was op zoek naar de meest generieke set signalen die nodig zijn om elk LCD-scherm te besturen. Dit omvat een paar strikt periodieke signalen, een paar enigszins willekeurige signalen en natuurlijk de typische kracht en grond. De periodieke signalen zouden veel waarschijnlijk de pixelklok en de synchronisatiesignalen zijn die het begin van een nieuwe lijn en frame zouden markeren; Aan de andere kant zouden de willekeurige uitziende signalen de werkelijke pixelgegevens zijn die moeten worden weergegeven. Te oordelen op de leeftijd van zijn leeftijd, werd een vrij eenvoudig protocol verwacht. Geleid door deze intuïtie begon ik de connector te onderzoeken en al snel genoeg had ik alle 25 signalen uitgereikt.

Ik vond slechts twee perfect periodieke signalen: één, een relatief lage 31,25 kHz-signaal met een verdachte 60 Hz, en de andere een vierkante golf van 25 MHz. De eerste moest een geïntegreerd synchronisatiesignaal zijn. De 60 Hz was een dode giveaway omdat het overeenkwam met het nominale framesnelheid. Het onderliggende signaal van 31,25 kHz moet dan overeenkomen met de horizontale lijntarief in een frame. Ten slotte moest het 25 MHz-signaal de klok zijn voor het hele systeem, in feite was het de pixelklok.

Vervolgens moest ik de willekeurige signalen begrijpen die blijkbaar de pixelgegevens waren. Ten eerste was de behoefte aan een 25-pins connector duidelijk bedoeld in een soort parallelle RGB-configuratie. In totaal vond ik negen dergelijke signalen die perfect met drie verdeelt en ingepakt dat het LCD-scherm negen bits per pixel en drie bits per respectievelijk kleurkanaal R, G en B gebruikt.

Voorbeeld: VGA-patioschema
Het schema en pin-out uitzoeken, maakte deel uit van de uitdaging. Mogelijk was veel meer essentieel uitzoeken de tijden van de in gebruik van signalen. Bijna altijd hebben RAW-display-signalen wat “veranda’s” worden genoemd. Deze kunnen worden beschouwd als regio’s binnen elk frame waar gegevens niet kunnen worden geschreven. Deze zijn ontstaan ​​in de dagen van CRT waar de fysieke elektronen-bundel van elektronen de tijd nam om van het einde van een lijn terug naar het begin van de andere, of zelfs vanaf de onderkant van het scherm naar de top. Hoewel minder uitgesproken in moderne elektronische schermen, bestaan ​​deze regio’s nog steeds omdat de LCD-controller tijd verwerken en inkomende gegevens schudden.

Bepalen van de tijden

Om de timings te extraheren die ik probeerde de pixelgegevens te correleren met de synchronisatiesignalen. Ik was op zoek naar eventuele regio’s waar de pixels consequent ongerust waren.

Horizontale timings
Na een tijdje naar de gegevens te staren, was het duidelijk dat het LCD-scherm een ​​eenvoudige, enkele patio-regeling gebruikte op zowel het horizontale als de verticale deel van het geïntegreerde synchronisatiesignaal. Dit was gemakkelijk te identificeren omdat de pixels waren ingesteld opOfwel alle hoge of alle lage tijdens deze periode. Zodra ik deze regio’s had aangespoeld, gebruikte ik de cursors om hun duur te meten en die tijd vertaald naar een equivalent aantal pixels.

Dit was een vitaal stukje informatie dat een stabiele en passende reproductie op de VGA-monitor zou garanderen. Het plan was om deze waarden als constanten in Verilog te voeden en tellers te gebruiken om de bijbehorende logica te “trippen” om de vereiste golfvormen te bereiken.

Verticale timings
Ten slotte moest de resolutie van de LCDS worden geïdentificeerd omdat ik de vervangende monitor op dezelfde instellingen zou moeten uitvoeren. Dit werd gedaan door eenvoudig de verschillende actieve periodes te meten en te vergelijken met andere signalen, zoals de pixelklok die een periode 40 ns had. De horizontale actieve tijd was vastbesloten om ongeveer 25.7 ons te zijn, dus vormt aldus van een totaal van 642,5 pixels en op dezelfde manier was de verticale actieve periode 15.42 ms en met een horizontale periode van 30 VS, die overeenkomt met 481 lijnen. Het was duidelijk dat dit een conventioneel 640 x 480-display was met een revitaliserende tarief van 60 Hz.

Het vinden van een substituut

De 8 inch Heiland
Dus het bestaande display [bleek uiteindelijk vrij gewoon te zijn, en een vervanging leek volledig aannemelijk. Helaas was de grootte een beetje vreemd; Het is gemakkelijk om zeven-inch schermen te vinden, maar acht? Ook al kon ik geen redelijk geprijsde daling van de vervanging op het web vinden, de grootte is toevallig hetzelfde als die wordt gebruikt door talloze moderne na markt LCD-installaties op auto’s. Dit zijn goedkope screens van topkwaliteit (£ 50) en accepteren letterlijk alle ontwikkelingen van video-ingang van alle analoge naar VGA en zelfs HDMI. Ze ondersteunen ook een veel hogere resolutie van 1024 * 768. Ik ben verbaasd dat dit scherm niet massaal populair is in de Raspberry PI-gemeenschap.

Ten slotte leek alles samen te klikken. Niet alleen kan ik het LCD-scherm vervangen door deze VGA-monitor, het past perfect als de scope zelfs voldoende ruimte had voor een CRT!

Dus precies, hoe voert men het LCD-scherm uit op VGA-conversie? Met een FPGA natuurlijk!

Signaalconversie

Op dit punt is het enige dat tussen mij en een functionerende 500 MHz-scope met succes de eerder genoemde LCD-signalen naar VGA, converteerde. Het was duidelijk dat dergelijke relatief snelle verwerking alleen op een FPGA kan worden gedaan, maar welke? Mijn doel was om, op een gegeven moment de FPGA in de reikwijdte met het scherm te laten, dus ik had iets kleins en goedkoop nodig. Gelukkig lijkt eBay een ton van deze oude ontwikkelingsborden van Altera Cyclone II te hebben voor een mind boggling £ 10! Dit zijn nogal capabele FPGA’s, die ongeveer 4K logische elementen en optimaal zijn voor een kleinschalig project zoals deze.

Een gebruikelijke manier waarop deze display-conversies zijn uitgevoerd, gebruiken framebuffers. Het idee is om een ​​hele frame te bufferen, de conversie uit te voeren en het aan de andere kant uit te spuwen. Helaas roept dit op voor een externe ram van respectabele grootte op de FPGA. Deze FPGA-borden zijn berucht omdat ze geen extern ram hebben, dus deze regeling was uit de vraag. Na een beetje denken had ik het besef dat de LCD-signalen en VGA tenslotte niet zo ongelijk waren. Wat als ik op een lijn-online basis van de ene naar de andere kon converteren en de behoefte aan een framebuffer omzeilen?

Vergelijking: VGA vs LCD. Dit diagram is van toepassing op zowel de horizontale als verticale segmenten
Samengevat:

LCD heeft:

Een pixelklok

Gecombineerde synchronisatiesignalen

Alleen terras

overwegende dat VGA:

Geen pixelklok

Afzonderlijke synchronisatiesignalen

Patio voor- en achterkant met een synchronisatieperiode

Het geïntegreerde synchronisatiesignaal
In detail gaande van hoe VGA-werken buiten de reikwijdte van dit artikel staat, maar ik zal dat later oplossen. Als we nu, als we eenvoudig de timingschets bekijken, zien we dat het enige verschil tussen de twee signalen het aantal voorvallen en locaties van de veranda’s en de plaatsing van geldige gegevens is.

De schets maakt de conversie er eenvoudig uit, maar is alleen geldig als de twee frames compleet synchroon zijn. Om de FPGA te laten beginnen met het produceren van een overeenkomstig LCD-frame boven VGA, moeten we eerst het begin van een nieuw frame identificeren dat uit de LCD-connector komt, zodat we het kunnen synchroniseren. Dit is mogelijk het lastige deel van het proces, omdat slechts de randen van het geïntegreerde synchronisatiesignaal van het LCD-scherm onderzoeken, niet voldoende is.

We moeten in plaats daarvan de tijd tussen twee randen meten en het optreden van een nieuw frame markeren. De rest is een relatief eenvoudige set logische poorten die het bovenstaande timingdiagram produceert. Ten slotte, aangezien het LCD-scherm geen patio of synchronisatiepuls heeft, moeten de inkomende RGB-gegevens in de loop van de tijd in balans worden gebracht met behulp van een kleine FIFO, zodat deze perfect uitlaat wanneer de VGA-monitor het verwacht. Zodra het gelijk is aan het bovenstaande in Verilog is voltooid, ging ik door met de hardware.

Apparatuur installatie

De hardware-instelling
De hardwareconfiguratie was gelukkig zeer minimalistisch. HP gebruikte het LCD-scherm niet helemaal tot het volste potentieel. Inspecteren van de individuele stukjes eACH-kanaal onthulde veel redundantie: de verschillende bits waren praktisch altijd identiek, wat een zeer ondiepe gebruik van het volledige negen-bit kleurenpalet aangeeft. Dit was niet schokkend omdat HP meestal firmware hergebruikt van de CRT-versie van het bereik. Dit alles impliceerde dat ik wegkwam met gewoon het aansluiten van het MSB van elk kleurenkanaal met praktisch geen verlies in het uiteindelijke beeld. Dit redde me nog veel meer kostbaarste geheugen op de FPGA.

Het belangrijkste probleem was dat het LCD-scherm 5 V TTL-signalen gebruikte. De FPGA kan bij Beste 3.3 V-signalen accepteren, zodat de conversie op het niveau moest worden uitgevoerd. Ik heb ervoor gekozen om de invoerklemdiodes te benutten in sommige van de 74HC-serie-logische buffers om deze conversie uit te voeren. Dit neigt echter aanzienlijk te vernietigen / vallen. De 74HC4050 heeft bijvoorbeeld polysilicon-weerstanden in serie met de diode in de matrijs, het verplaatsen van de noodzaak van een externe serieweerstand. Ik speelde het veilig en voegde 1 kΩ-serie weerstanden aan de input van deze buffer en de output van de FPGA gevoerd. De uitvoer van de HSYNC- en VSYNC-uitgangen van de FPGA werden rechtstreeks aan de monitor aangesloten terwijl de RGB-lijnen zijn gekoppeld via 330 Ω weerstanden.

Succes

Succes!
Na het temmen van de 25 MHz pixelklok om zich op een broodplank te gedragen en de FPGA aan het nieuwe externe te haken

Monitor’s VGA-poort, het bereik werd teruggebracht naar zijn formele glorie! Hoewel alles perfect werkte, was deze opstelling vrij lawaai-gevoelig. Het enige dat ik nu moet doen, is een PCB maken en de VGA-monitor een permanente woning in het bereik toestaan.

Dus wat vraagt ​​je dan? Nou, momenteel is de enige manier om schermafbeeldingen op te slaan, is via een gedateerde floppy-drive. Maar omdat we nu de LCD-gegevens hebben die door een FPGA gaan, waarom zou u dat niet op een SD-kaart schrijven?

Leave a Reply

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