VGA Timing hardware plan/schema feedback/discussie/vragen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • RareAMV
  • Registratie: November 2012
  • Laatst online: 23-03 21:25
Hallo iedereen,

Ik ben een beginnende elektronica student (nouja, ik volg een minor in elektronica, ik kom van de ESA/IT kant af). Ik liep al een hele tijd met een idee rond voor een (digitaal) elektronica project, maar had nog niet echt een idee hoe ik alles in elkaar moest flansen. Het idee leg ik hieronder zo uit. Mijn probleem is, ik ben niet heel echt zeker van mijn zaak, en ik heb niet veel zin om componenten te bestellen die in combinatie mogelijk niet helemaal werken. Ik begrijp het als mensen het teveel werk vinden om mijn schema te controleren, maar niet geschoten altijd mis zeg ik maar :+ .

Mijn idee is om te beginnen, omslachtig, te veel van het goede, te hoog gegrepen, en mogelijk velenmalen efficienter te doen. Maar daar gaat het mij niet echt om.Ik doe het vooral omdat ik het leuk vind om te doen, en dat ik hiervan wil leren.

Ik heb tijdens het ESA gedeelte van mijn study lekker mogen spelen met de al bekende Atmega328p MCU (de Arduino Uno). Nu leek het me leuk om in plaats van een klein schermpje speciaal voor de MCU, de MCU direct op een monitor te kunnen aan sluiten. Dit door middel van VGA. Nu weet ik dat er verscheidene libraries zijn die zoiets al kunnen, maar ik ben een doe het zelf-er die ook een beetje lui is. De atmega is met zijn 16 Mhz (Of 20, met wat gepuzzel) niet snel genoeg om een volledig correcte signaal voor VGA te genereren. Ok, niet helemaal waar, met wat ultra efficiënt programmeren in assembly en een bult tijd zal het wel lukken, maar dat kost mij een beetje teveel tijd. Om toch mogelijk te maken om op een relatief makkelijke manier een beeld te krijgen met een MCU bedacht ik me dat als je het hele timing/synchronisatie gedeelte hardware matig laat afhandelen (met mijn beginners kennis dacht ik aan een aantal timers en (n) and gates in combinatie met wat flip flops). Waardoor de processor kracht die je daarvoor kwijt bent (door te wachten tot het juiste moment voor een sync signaal), kunt gebruiken om daadwerkelijk iets interessants te genereren op het scherm, of beter om gewoon beeld data op te halen tijdens dat de hardware kant bezig is met synchroniseren(daarbij front porch en back porch ook meegerekend). In mijn optiek lijkt me dit een logische denk wijze, maar vertel me gerust als ik er faliekant naast zit.

Zo gezegd zo gedaan, ben ik een beetje gaan onderzoeken wat ik hiervoor zoal nodig heb. Het eerste wat ik gedaan heb, is de timing van een VGA signaal op te zoeken. Gelukkig is hier relatief veel op internet over te vinden, en ook best simpel. Voor mijn idee/project ben ik uitgegaan van een resolutie van 800x600@60hz waarvoor je een pixel clock van 40Mhz nodig hebt. Leek mij mooi een rond getal.
Op deze site staat eigenlijk alles al wat ik moest weten:

http://tinyvga.com/vga-timing/800x600@60Hz

Hieruit voort denkend heb ik een simpel blok schema gemaakt:
Afbeeldingslocatie: https://i.imgur.com/pYKpmac.png

Hierbij zijn de in/uitgangen aan de linker kant de in/uitgangen naar de microcontroller en de rechter kant de uitgangen naar de VGA poort.

Stapje voor stapje, nouja een paar stapjes kwam er een iets meer gedetailleerde blok diagram uit:
Afbeeldingslocatie: https://i.imgur.com/zz9gvUB.png

Ik heb me rot gezocht naar binaire tellers die werkten met een clock van 40Mhz of meer, waarbij een vereiste voor mij was dat het te bestellen viel bij Conrad. Zelfde geld voor de andere componenten. Het was iets moeilijker dan ik dacht om de juiste componenten te vinden die op zo'n snelheid kunnen werken. En ik weet nog steeds niet 100% zeker of dit allemaal wel gaat werken. Vandaar ook deze post. Goed, verder. Ik ben tot de conclusie gekomen dat ik de volgende spullen nodig had.

De crystal die alles waar moet maken:
  • 1x 40Mhz Crystal Oscillator : TFT680
De inverter voor alle Nand Gates (ik kon geen 8 input AND gate vinden op conrad die boven de 40Mhz ondersteunde):

SN74HCT540N

De Counter Units (x2):En de Output unit (naar vga en MCU):Afgelopen week hebben we een introductie tot eagle gehad, en ik had al bedacht dat een schema maken voor überhaupt te denken over bouwen handig kan zijn. Dus dat kwam goed uit. Hieronder zie je dan ook mijn eerste schema ooit x). Tis best wel een warboel van wires, maar ik persoonlijk vind het relatief duidelijk. Nu heb ik nog niet echt een idee wat de standaard regeltjes zijn bij het ontwerpen van een design, dus verwacht facepalm momenten als je het wat beter bekijkt. (klik voor vergroting)

Afbeeldingslocatie: https://i.imgur.com/jIjPJY1.png


Ik heb deze topic onder Discussie/ervaring/feedback topic geplaats maar ik heb toch een aantal vraagjes.
  1. Hoe erg zal de propagation delay parte spelen in dit schema? Zal dit veel uitmaken voor mijn uiteindelijk signaal?
  2. Zijn er bepaalde dingen waar ik mogelijk geen rekening mee heb gehouden of die makkelijk over het hoofd te zien zijn?
  3. Zal dit überhaupt werken(begrijpelijk als je dit niet wilt/kunt beantwoorden)?
  4. Wat voor componenten zouden jullie mij aanraden om dit mogelijk te versimpelen?
  5. Hetgeen waar ik nog het minst verstand van heb zijn de oscillatoren, heb ik meer componenten nodig om mijn gekozen oscillator te kunnen gebruiken, of is het simpel gezegd gewoon een voeding aansluiten de enable zo instellen dat deze gaat oscilleren, waardoor ik vervolgens een oscillerende uitgang heb?

Acties:
  • 0 Henk 'm!

  • EHelmond
  • Registratie: December 2012
  • Laatst online: 27-03 23:18
Ik heb nu niet perse tijd om heel uitgebreid te reageren, maar alvast een begin.

Afgezien van het feit dat het allemaal veel makkelijker moet kunnen lijkt het me een leerzaam project.

Een aantal dingen in je schema kloppen niet helemaal.
je geeft aan een oscillator te willen gebruiken. in je schema heb je een kristal staan.

Om kort een je vragen te beantwoorden zonder alle datasheets door te lezen.
1. Geen idee. je kun in de dataheets van de gebruikte chips wel de flanktijden en vertraging opzoeken. het maakt ook heel veel uit hoe je het uiteindelijk opbouwt. de lengte van de draden speelt op deze snelheden toch ook al wat parten.
2. als je het schema hebt ben je er nog lang niet. hoe je alles uiteindelijk opbouwt maakt heel veel uit. had je gedacht om vanuit dit schema een PCB te ontwerpen?. de kans dat dit vanaf een breadboard gaat werken schat ik in op ongeveer 1 %. als je een beetje handig bent moet het op gaatjes print lukken.
3. Ik heb je hele schema niet uitgebreid bekeken maar wil wel 1 tip geven/ vraag stellen. heb je wel eens van FPGA's gehoord. dit zijn bij uitstek de perfecte dingen om dit soort dingen mee te maken.
4. Een FPGA.
5. Een oscillator oscilleert als je m voeding geeft en enabled. de vraag is of je gekozen oscillator de aangesloten belasting aan kan. het kan zijn dat je aansluitdraden te lang zijn of er teveel belasting aanhangt. dan moet je hem bufferen.

Acties:
  • 0 Henk 'm!

  • RareAMV
  • Registratie: November 2012
  • Laatst online: 23-03 21:25
EHelmond schreef op dinsdag 11 oktober 2016 @ 11:40:
Ik heb nu niet perse tijd om heel uitgebreid te reageren, maar alvast een begin.

Afgezien van het feit dat het allemaal veel makkelijker moet kunnen lijkt het me een leerzaam project.

Een aantal dingen in je schema kloppen niet helemaal.
je geeft aan een oscillator te willen gebruiken. in je schema heb je een kristal staan.

Om kort een je vragen te beantwoorden zonder alle datasheets door te lezen.
1. Geen idee. je kun in de dataheets van de gebruikte chips wel de flanktijden en vertraging opzoeken. het maakt ook heel veel uit hoe je het uiteindelijk opbouwt. de lengte van de draden speelt op deze snelheden toch ook al wat parten.
2. als je het schema hebt ben je er nog lang niet. hoe je alles uiteindelijk opbouwt maakt heel veel uit. had je gedacht om vanuit dit schema een PCB te ontwerpen?. de kans dat dit vanaf een breadboard gaat werken schat ik in op ongeveer 1 %. als je een beetje handig bent moet het op gaatjes print lukken.
3. Ik heb je hele schema niet uitgebreid bekeken maar wil wel 1 tip geven/ vraag stellen. heb je wel eens van FPGA's gehoord. dit zijn bij uitstek de perfecte dingen om dit soort dingen mee te maken.
4. Een FPGA.
5. Een oscillator oscilleert als je m voeding geeft en enabled. de vraag is of je gekozen oscillator de aangesloten belasting aan kan. het kan zijn dat je aansluitdraden te lang zijn of er teveel belasting aanhangt. dan moet je hem bufferen.
Bedankt voor de reactie! Ja ik heb van FPGA's gehoord en tijdens ESA zelfs mee gespeeld, maar ik vind het wel wat hebben om allemaal IC's te zien samenwerken om iets voor mekaar te krijgen. Efficiëntie is zoals eerder aangegeven geen doel.

Mijn idee was om met dip sockets op een prototype bordje te werken. Ik heb al wat geprobeerd om een pcb te generen voor 1 van de counters, maar dat leek me haast niet te doen. Ik vond dit prototype bordje op conrad: WR Rademacher WR-type 932.

In het schema gebruikte ik de crystal als ene place holder omdat ik mijn specifieke component niet kon terugvinden (ook niet in libraries, nog niet gekeken naar het zelf maken daarvan), maar dat had inderdaad beter/duidelijker gemoeten ^^.

Over dat bufferen/belasting had ik niet nagedacht, maar dat moet ik mogelijk wel uit de datasheet kunnen halen.En/of trial & error.

Acties:
  • 0 Henk 'm!

  • EHelmond
  • Registratie: December 2012
  • Laatst online: 27-03 23:18
heb nog even (niet uitgebreid) naar het schema gekeken en er vielen mij nog een aantal dingen op.

1. Ik zie bij geen een IC ontkoppel condensatoren. dit is een must. google is je vriend in het waarom.
2. De 1N821 is een zener diode en niet bedoeld voor wat je er hiermee gaat doen. gebruik hiervoor een smal signal diode. zonder ook maar gekeken te hebben of tie geschikt is komt in mij iets van een 1n4148 op.
3. je kunt eventueel voor de overzichtelijkheid in eagle gebruik maken van labels om niet zo'n warboel te krijgen.

op zich is zo'n gaatjesprint hiervoor wel geschikt. Je moet wel rekening houden om de snel schakelende signalen zo kort mogelijk te houden. en het liefst allemaal ongeveer even lang. een PCBtje maken heeft wel de voorkeur maar als je dat nog niet ziet zitten ( en geen zin hebt om dat ook te leren) moet je het maar doen met gaatjesprint

Acties:
  • 0 Henk 'm!

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Hoe erg zal de propagation delay parte spelen in dit schema? Zal dit veel uitmaken voor mijn uiteindelijk signaal?:

Dit kan een rol spelen, maar wie zal het zeggen. Good design practice met dit soort dingen is om het eerst te simuleren, met opgegeven rise en fall tijden. Dan zie je vanzelf of je wellicht ergens een extra flipflop in moet zetten om dat op te lossen. Dit zie je niet met het blote oog en een doorberekening hiervan is behoorlijk wat werk.

Die oscillator moet je wel even goed naar kijken, daar komt niet de 40MHz klok uit die je wil. Effe zitten Googelen en ik vind dit wel een leuke bron van schakelingen om naar te kijken. 74 series nemen het voor zover ik weet niet zo nauw met wat jitter op de klok, als je een loepzuivere wil dan kun je het beste naar een clock generator ic zoeken.

Acties:
  • 0 Henk 'm!

  • RareAMV
  • Registratie: November 2012
  • Laatst online: 23-03 21:25
Dank allemaal voor reacties! Ga binnenkort als ik wat meer tijd heb eens kijken of ik het voor elkaar kan krijgen^^.
Pagina: 1