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:

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:

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:
SN74HCT540N
De Counter Units (x2):

Ik heb deze topic onder Discussie/ervaring/feedback topic geplaats maar ik heb toch een aantal vraagjes.
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:

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:

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
SN74HCT540N
De Counter Units (x2):
- 3x 4-bit Binary Counters : CD74ACT161E
- 1x 2 element JK Flip Flop : CD74AC109E
- 4x 8-input NAND Gate : SN74LS30N
- 2x 68 Ohm resistors
- 1x 2 input quad AND gate : SN74LS08N
- 2x 2 element JK Flip Flop : CD74AC109E
- 4x 8-input NAND Gate : SN74LS30N
- 3x 470Ohm weerstanden

Ik heb deze topic onder Discussie/ervaring/feedback topic geplaats maar ik heb toch een aantal vraagjes.
- Hoe erg zal de propagation delay parte spelen in dit schema? Zal dit veel uitmaken voor mijn uiteindelijk signaal?
- Zijn er bepaalde dingen waar ik mogelijk geen rekening mee heb gehouden of die makkelijk over het hoofd te zien zijn?
- Zal dit überhaupt werken(begrijpelijk als je dit niet wilt/kunt beantwoorden)?
- Wat voor componenten zouden jullie mij aanraden om dit mogelijk te versimpelen?
- 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?