Woord vooraf Op de eerste plaats wil Dhr. Trypsteen bedanken voor de goede begeleiding die ik van hem gekregen heb tijdens het voorbije jaar. Hij heeft mij op een vlotte manier heel wat bijgeleerd over TV-technieken waardoor ik zelf tot een goed eindresultaat kon komen. Ook ben ik dankbaar dat Dhr. Trypsteen mijn zelfvertrouwen heeft opgekrikt wanneer dit nodig was. Ik bedank ook de firma Trycom om mijn eindwerk te financiëren en mij alle nodige apparatuur ter beschikking te stellen. Ook wil ik mijn binnenpromotor Ing. Luc Decroos bedanken voor zijn begeleiding en steun tijdens het verwezenlijken van mijn eindwerk. Ik bedank ook het ganse KHBO voor de goede opleiding die ik in de voorbije 3 jaar heb gekregen. Tenslotte wil ik mijn ouders bedanken voor het mogelijk maken van mijn studies en de steun en begrip die ze tijdens deze periode hebben getoond.
3
Samenvatting De bedoeling van dit eindwerk is het maken van een beeldgenerator. De beeldgenerator is een stand-alone toestel en kan twee figuren van op computer opslaan en elk apart weergeven op een televisietoestel. De resolutie van het weergegeven beeld is dezelfde als de resolutie van een normale TV, nl. 768 x 576 pixels. Het toestel kan een kleurresolutie weergeven van 24 bits. Dit betekent dat de meeste figuren van op computer op een correcte manier kunnen worden weergegeven. Het eindwerk bestaat uit twee delen: een hardwaregedeelte en een softwaregedeelte. Het hardwaregedeelte is het grootste deel en zorgt er voor dat het beeld dat opgeslagen is in drie EPROM’s, wordt omgevormd naar een PAL-videosignaal. Het softwaregedeelte zorgt er voor dat de figuur die moet weergegeven worden op de juiste manier wordt omgevormd om dan via een programmer in de EPROM’s te programmeren.
4
Inhoudstafel Mededeling...........................................2 Woord vooraf.........................................3 Samenvatting.........................................4 Inhoudsopgave........................................5 Lijst van gebruikte afkortingen en symbolen..........7 Inleiding............................................8 1 Opbouw van de programmeerbare beeldgenerator.......9 2 Analoog gedeelte ..................................11 2.1 Televisie.............................................11 2.2 Synchronisatiesignalen................................12 2.3 Sync. generator.......................................18 2.3.1 SAA1101...........................................18 2.3.2 Configuratie van de sync. generator...............19 2.3.2.1 Algemene instellingen........................20 2.3.2.2 Klokoscillator...............................20 2.3.2.3 Kleurdraaggolfoscillator.....................21 2.3.2.4 Overige aansluitingen........................23 2.4 Video sync. separator.................................23 2.5 Kleur in het videosignaal.............................27 2.5.1 Compatibiliteit...................................27 2.5.2 Modulatie van de kleuren op het videosignaal......28 2.6 RGB naar PAL encoder..................................29 2.6.1 MC1377............................................30 2.6.2 Configuratie van de RGB naar PAL encoder..........31 2.6.2.1 Algemene instellingen.........................32 2.6.2.2 Ingangen......................................32 2.6.2.3 Plaatsbepaling van de burst op de achterstoep.32 2.6.2.4 Filter voor het chromasignaal.................34 2.6.2.5 Vertragingsnetwerk voor het luminantiesignaal.35 2.6.2.6 Bijregelen van de kleuren.....................36 2.6.2.7 Overige aansluitingen.........................37
5
3 Digitaal gedeelte.......................................40 3.1 Geheugen..............................................40 3.1.1 Grootte van het geheugen..........................40 3.1.2 Soort geheugen....................................41 3.1.3 M27C801...........................................42 3.1.4 Gebruik van het geheugenelement M27C801...........43 3.2 Teller................................................46 3.2.1 De manier van tellen..............................46 3.2.2 Telfrequentie.....................................48 3.2.3 74HCT4040.........................................50 3.3 Latch.................................................54 3.4 DAC...................................................55
4 Software.................................................58 4.1 4.2 4.3 4.4 4.5
Doel .................................................58 Wat programmeren in de EPROM’s?.......................58 Programmer............................................60 BMP-formaat...........................................60 Werking van het programma.............................62
5 Het printontwerp........................................65 6 De lijnselecter.........................................68 7 Testbeeld................................................71 Besluit ....................................................72 Bijlage ....................................................73 SAA1101...................................................73 LM1881....................................................86 MC1377....................................................95 M27C801..................................................106 Programmacode............................................113 PCB-layout...............................................123 Schakeling van de lijnselecter...........................125
Literatuurlijst ..........................................126
6
Inleiding Afkortingen CE: Chip enable DAC: Digitaal naar analoog omvormer EEPROM: Electrical erasable programmable read only memory EPROM: Erasable programmable read only memory NTSC: National television system committee OE: Output enable PAL: Phase alternating line PLL: Phase locked loop PROM: programmable read only memory RAM: Random access memory RGB: Rood groen en blauw ROM: read only memory
Symbolen µ: m: n: P:
micro (10^-6) milli (10^-3) nano (10^-9) pico (10^-12)
7
Inleiding De bedoeling van dit eindwerk was oorspronkelijk om een testbeeldgenerator te maken die een figuur kon weergeven met een zo hoog mogelijke resolutie. In de testbeeldgenerator moest ook een ander beeld kunnen worden geprogrammeerd en dit op een zo gemakkelijk mogelijke manier. Het ontwerp dat ik heb gemaakt kon twee beelden opslaan en weergeven in de normale resolutie van een televisie (780 x 576 pixels) en kon kleuren weergeven met een resolutie van 24 bits per pixel. Dit maakte het ontwerp bruikbaar voor niet alleen een testbeeld, maar voor bijna alle mogelijke figuren of foto’s. Hierdoor werd de titel van het eindwerk veranderd naar “beeldgenerator”. Het opslaan van de beelden gebeurt in EPROM’s. Om deze gemakkelijk te kunnen programmeren heb ik een hulpprogramma geschreven. Om zelf tot het ontwerp van de beeldgenerator te komen heb ik een aantal stappen ondergaan waarin Dhr. Trypsteen mij zeer goed begeleid heeft. Toen ik voor het eerst te maken kreeg met het onderwerp kende ik heel weinig over TV-techniek. Hierin heeft Dhr. Trypsteen mij geholpen door mij de basis van TVtechniek bij te brengen. Toen ik wat meer over het onderwerp kende, heb ik een aantal andere ontwerpen van beeldgenerators of testbeeldgenerators bestudeerd. Van hieruit heb ik dan zelf uitgemaakt hoe mijn ontwerp zou worden opgebouwd. Terwijl ik mijn ontwerp maakte, heb ik ook geleerd hoe ik moest te werk gaan, om een goed printontwerp te maken en te bestukken. Dit zorgde er voor dat ik heel wat problemen van vooraf heb kunnen vermijden.
8
1 Opbouw van de programmeerbare beeldgenerator De beeldgenerator bestaat voor een stuk uit software die er voor zorgt dat de beelden op een zo gemakkelijk mogelijke manier kunnen worden geprogrammeerd in de beeldgenerator. Dit gedeelte komt aan bod in hoofdstuk 4. Het belangrijkste stuk is echter de hardware. Deze bestaat opnieuw uit twee delen: een analoog gedeelte en een digitaal gedeelte.
ANALOOG GEDEELTE
DIGITAAL
TELLER
SYNC. GENERATOR
GEHEUGEN
LATCH R RGB NAAR PAL ENCODER
G B
DAC
VIDEO SIGNAAL Figuur 1.1: blokschema van de volledige beeldgenerator
Het analoog gedeelte zorgt er voor dat een volledig videosignaal gegenereerd wordt volgens het PAL-systeem (Het PAL-videosysteem is het systeem dat in België wordt toegepast). Het enige dat aan het analoog gedeelte moet worden toegevoerd zijn de R-, G-, en B-signalen (Rood, Groen en Blauw).
9
Het digitaal gedeelte zorgt er voor dat het beeld dat opgeslagen is (of de data die overeenkomt met dat beeld), verwerkt wordt tot de R-, G-, en B-signalen. Als geheugenelementen worden drie EPROM’s gebruikt die elk informatie bevatten van één kleur. De adressen van de EPROM’s worden gestuurd via tellers die synchroon lopen met het analoog gedeelte. De data van de EPROM’s gaan eerst door een latch om daarna te worden omgevormd naar analoge signalen: de R-, G-, en B-signalen.
10
2 Analoog gedeelte 2.1 Televisie Om goed te kunnen begrijpen wat er precies gebeurt in het analoog gedeelte van de schakeling moet je eerst één en ander weten over TV-technieken. Een TV kan een bewegend beeld weergeven door heel snel na elkaar opeenvolgende stilstaande beelden weer te geven. Doordat deze elkaar zo snel opvolgen lijkt het alsof de beelden vloeiend bewegen. Zo worden er 25 beelden overlopen per seconde. Om het effect van de vloeiende beweging te versterken wordt het beeld nog eens onderverdeeld in twee rasters die afwisselend worden weergegeven. Hierdoor lijkt het alsof er 50 beelden per seconde op het scherm komen. Eén beeld bestaat ook nog uit heel veel puntjes. Deze puntjes zijn zo klein dat ze van op een normale afstand van de televisie niet van elkaar kunnen onderscheiden worden. Dit wordt verduidelijkt in figuur 2.1. Men spreekt van de verticale resolutie of het aantal lijnen per beeld en de horizontale resolutie of het aantal puntjes per lijn. Bij het TV-systeem dat gebruikt wordt in België (PAL-systeem) zijn er 625 lijnen per beeld. Deze lijnen worden één voor één op het TV-beeld geschreven (van links naar rechts en van boven naar onder).
Figuur 2.1: minimale afstand van de beeldpunten
11
Hierbij wordt een onderscheid gemaakt tussen de even lijnen en de oneven lijnen. Deze vormen de rasters die eerder vermeld werden. De even lijnen vormen het even raster en de oneven lijnen vormen het oneven raster. Figuur 2.2 toont hoe de twee rasters in elkaar verweven zitten. Merk op dat het oneven raster begint met een halve lijn en het even raster eindigt met een halve lijn.
Figuur 2.2: samenstelling van het even - en oneven raster
2.2 Synchronisatiesignalen Het is nu heel belangrijk dat de ontvangende televisie weet welke informatie precies waar hoort op het scherm of: wanneer er een nieuwe lijn begint en wanneer er een nieuw raster of beeld begint. Hiervoor worden er in een videosignaal naast de effectieve beeldinformatie ook na elke lijn en na elk raster een aantal synchronisatiesignalen meegegeven. Een volledig videosignaal heeft een maximale amplitude van 1V. Alles wat onder de 0.3V ligt zal voor de TV beschouwd worden als synchronisatiesignaal en alles boven de 0.3V wordt beschouwd als beeldinformatie. De verschillende niveaus in een videosignaal worden verduidelijkt in figuur 2.3.
12
Figuur 2.3: verschillende spanningsniveaus bij een videosignaal
Wat de beeldinformatie betreft: hoe groter het signaal hoe groter de “luminantie” of hoe meer lichtintensiteit (0.3V komt overeen met het zwart-niveau en 1V komt overeen met het witniveau). Er zijn twee soorten synchronisatiepulsen: lijnpulsen (één puls tussen twee lijnen) voor de “horizontale synchronisatie” en rasterpulsen (een aantal opeenvolgende pulsen tussen twee rasters) voor de “verticale synchronisatie”. In figuur 2.4 kun je zien hoe de lijnpulsen er uitzien.
Figuur 2.4: schets van opeenvolgende lijnen met lijnsynchronisatie
Zoals gezegd zijn er 625 lijnen per beeld en 25 beelden per seconde. Dit betekent dat er om de 64µs een lijn geschreven wordt. 12µs hiervan wordt gebruikt voor de lijnsynchronisatie. Als we dit van dichterbij bekijken (figuur 2.5) kunnen we drie delen onderscheiden:
13
Figuur 2.5: volledige samenstelling van de lijnsynchronisatie
Eerst hebben we de voorstoep van 1.5µs die de ontvanger duidelijk maakt dat er een synchronisatiepuls volgt. Daarna hebben we de eigenlijke synchronisatiepuls van 4.7µs die er voor zorgt dat de televisie op een nieuwe lijn begint. En dan hebben we de achterstoep van 5.8µs die voor de televisie dient als referentie voor het zwart-niveau. In de achterstoep zit ook de burst. Dit is de kleurdraaggolf waarop de kleuren zullen worden gemoduleerd. Deze dient opnieuw als referentie om later de kleuren op een correcte manier te kunnen detecteren. Bij een normale lijn wordt de spanning dus 0V gedurende 4.7µs en 0.3V of meer gedurende de rest van de tijd. Om de rasterpulsen nu te kunnen onderscheiden van de lijnpulsen zullen de rasterpulsen omgekeerd verlopen: het signaal wordt 0.3V gedurende 4.7µs en 0V gedurende de rest van de lijntijd. Omdat in de TV de verticale synchronisatie langer duur dan de horizontale synchronisatie zal de totale verticale synchronisatie actief blijven gedurende 25 lijntijden. De twee kunnen nu in de TV heel gemakkelijk onderscheiden worden met een integrerend netwerk. Figuur 2.6a toont het verloop van de uitgangsspanning van deze integrator bij een rasterpuls.
14
A
B
Figuur 2.6: verloop van de integratorspanning bij detectie van de verticale synchronisatie
Wanneer de uitgangsspanning van de integrator onder een bepaald niveau komt is dit voor de TV een teken dat er verticaal moet gesynchroniseerd worden. Nu is er echter een probleem: doordat bij het éne raster de verticale synchronisatie begint na een volledige lijn en bij het andere raster na een halve lijn, begint de uitgangsspanning van de integrator niet in beide gevallen op hetzelfde niveau. Dit betekent dat de verticale synchronisatie niet in beide gevallen op hetzelfde moment begint en dus ook niet op hetzelfde moment gedaan is. Hierdoor zal in het éne geval de eerste lijn van het volgende raster niet op de juiste plaats beginnen. Dit wordt verduidelijkt in figuur 2.7.
15
Figuur 2.7: invloed van de duur van de rastersynchronisatie
Om er voor te zorgen dat de uitgangsspanning van de integrator bij beide rasters op hetzelfde niveau begint, wordt het synchronisatiesignaal aangepast: de pulsen voor de verticale synchronisatie worden voorafgegaan door “egalisatiepulsen”. Dit zijn lijnpulsen per halve lijntijd (32µs) maar met dezelfde duty-cycle als lijnpulsen. In figuur 2.6b kan je zien hoe deze egalisatiepulsen er voor zorgen dat de rastersynchronisatie bij beide rasters precies op hetzelfde moment begint. In figuur 2.8 kan je de volledige samenstelling zien van de rastersynchronisatiepulsen (Overgang van even naar oneven raster: bovenaan. Overgang van oneven naar even raster: onderaan).
16
Figuur 2.8: volledige samenstelling van de rastersynchronisatie
Als we er nu rekening mee houden dat door de rastersynchronisatie een aantal lijnen niet gebruikt worden, dan kunnen we zeggen dat er nog 576 lijnen zijn waar wel beeldinformatie in zit. Dit zijn de lijnen die verspreid zijn over het volledige scherm. Aangezien de verhouding van de breedte en de hoogte van een scherm nog steeds 4/3 blijft en de puntjes op het scherm steeds even breed als hoog zijn kunnen we bepalen hoeveel puntjes er zijn per lijn: 576 * 4 / 3 = 768. We spreken dus van een effectieve beeldresolutie van 768 x 576 pixels. Dit is dan ook de resolutie die ik in dit eindwerk heb willen bereiken.
17
2.3 Sync generator Nu het duidelijk is hoe een gestandaardiseerd videosignaal (volgens het PAL systeem) er moet uit zien, is het gemakkelijker om te begrijpen wat de sync. generator (SAA1101) precies doet. Deze genereert namelijk alle nodige synchronisatiesignalen waaruit we dan later een videosignaal kunnen samenstellen.
2.3.1 SAA1101 De SAA1101 is een universele sync. generator die voor tal van toepassingen kan gebruikt worden. Dit betekent dan ook dat er heel wat instellingen moeten worden gedaan aan het IC, voor het precies werkt zoals je wilt. We bekijken eerst eens het IC van dichterbij:
Figuur 2.9: inwendig blokschema van de SAA1101 (sync. generator)
18
Alle frequenties die nodig zijn voor het opbouwen van de synchronisatiesignalen, worden met delers afgeleid uit een klokfrequentie. Met deze voorgeprogrammeerde delers kunnen we kiezen tussen verschillende TV-systemen. Alle synchronisatiesignalen worden via logica opgebouwd uit de deelfrequenties en de gekozen instellingen. De kleurdraaggolf kan eveneens uit de klokfrequentie afgeleid worden, maar we kunnen deze ook voorzien van een eigen oscillator. De volledige datasheets van de SAA1101 kan je terugvinden in de bijlage.
2.3.2 Configuratie van de sync. generator Figuur 2.10 toont de volledige configuratie van de sync. generator en zijn randcomponenten. We overlopen stap voor stap de verschillende onderdelen.
Figuur 2.10: configuratie van de sync. generator
19
2.3.2.1
Algemene instellingen
Op pin 3 en 4 (SC1 en SC0) kan je de keuze maken tussen verschillende klokfrequenties (2.5MHz, 5MHz, 15MHz of 22.5MHz). Aangezien we in deze toepassing gebruik maken van een 15MHz klokfrequentie, moeten we op SC1 een laag niveau (massa) aansluiten en op SC0 een hoog niveau (5V). Waarom we voor deze frequentie kiezen wordt duidelijk in hoofdstuk 3. Bij pin 9 en 10 (LM1 en LM0) maak je de keuze waar de sync. generator zijn kleurdraaggolf vandaan haalt (intern of extern). In onze toepassing maken we hiervoor een oscillator op pin 1 en 2. Hiervoor sluiten we op LM1 en LM0 een laag niveau. Op pin 23 (NORM) kan je de keuze maken tussen 625/525 of 624/524 lijnen. In het Amerikaanse systeem worden 525 lijnen gebruikt en de 624 of 524 lijnen worden gebruikt op computergebied. Wij maken gebruik van 625 lijnen, en sluiten daarvoor op NORM een laag niveau aan. Op pin 25, 26 en 27 (X, Y en Z) maken we de keuze voor welk TV-systeem onze toepassing zal dienen. Voor het systeem dat in België gebruikt wordt (PAL B/G), sluiten we op X en Z een hoog niveau aan en op Y een laag niveau. De SAA1101 wordt verder gevoed met een spanning van 5V die ontkoppeld is met een condensator.
2.3.2.2
Klokoscillator
Met pin 5, 6 en 8 kunnen we een PLL maken die oscilleert op de ingestelde klokfrequentie. Dit gebeurt dan met een varicap in een LC-oscillator. Maar één van de schakelingen die ik bestudeerd heb in mijn voorstudie, maakte hier gebruik van en daarbij heb ik ondervonden dat deze oplossing niet stabiel genoeg was. Daarom heb ik in mijn ontwerp gekozen voor een kristal-oscillator. In dit geval gebruiken we enkel Pin 5 en 6 (pin 8 wordt bij de PLL gebruikt voor de fase detector). In de datasheets van de SAA1101 staat een mogelijke schakeling om
20
met een kristal een oscillator op 15MHz te vormen op pin 5 en 6. Dit is dan ook de opstelling die ik gebruikt heb. De klokoscillator is te zien in figuur 2.11.
Figuur 2.11: oscillator voor de klokfrequentie van 15MHz
2.3.2.3
Kleurdraaggolfoscillator
Voor de kleurdraaggolf kunnen we opnieuw kiezen tussen een aantal mogelijkheden. Ofwel gebruiken we een externe kleurdraaggolf om hier verder te gebruiken, ofwel laten we de kleurdraaggolf intern in het IC afleiden van de klokfrequentie. Dit kan dan ook weer op verschillende manieren, maar in geen van deze gevallen wordt de kleurdraaggolf nog naar buiten gebracht. We hebben deze verder nog nodig bij de RGB naar PAL encoder. Om deze reden maken we gebruik van de externe kleurdraaggolf, die we bouwen op pin 1 en 2. Deze oscillator werkt eveneens met een kristal en is op een gelijkaardige manier opgebouwd als de klokoscillator. De opstelling is te zien in figuur 2.12.
21
Figuur 2.12: oscillator voor de kleurdraaggolf
Zoals je kan zien is er bij deze oscillator een afstembare condensator bijgeplaatst. Hiermee kan de frequentie een honderdtal kHz bijgeregeld worden. Dit is nodig omdat de werkfrequentie van de RGB naar PAL encoder niet altijd correct overeenkomt met de frequentie van het kristal (4.433MHz). Om de frequentie van het kristal af te stemmen op de werkfrequentie van de RGB naar PAL encoder, gebruiken we dus een afstembare condensator. Verder zien we dat de frequentie wordt afgetak, omdat de kleurdraaggolf ook wordt gebruikt in de RGB naar PAL encoder (later meer uitleg hierover).
22
2.3.2.4
Overige aansluitingen
Pin 7, 8, 11, 12 en 13 zijn ingangen die we niet gebruiken en mogen verbinden met de massa (om geen onbepaalde toestanden te bekomen). Pin 15, 16, 19, 20 en 22 zijn uitgangen die we niet gebruiken. Deze verbinden we dan ook nergens mee. Pin 17 (composite blanking) gebruiken we om aan te geven wanneer er geen beeldinformatie op het videosignaal mag terechtkomen, dus ook wanneer er geen geheugenplaatsen mogen overlopen worden. Pin 18 (composite sync.) wordt gebruikt om het uiteindelijke videosignaal op te stellen (het videosignaal zal steeds volgens dit patroon verlopen). Pin 21 (vertical drive pulse) gebruiken we om de tellers die de geheugenplaatsen overlopen te resetten (meer uitleg hierover in hoofdstuk 3). Pin 24 (gebufferde klokfrequentie) gebruiken we als werkfrequentie voor de tellers. Ook hier volgt meer uitleg over in hoofdstuk 3.
2.4 Video sync separator We hebben gezien dat de sync. generator alle nodige synchronisatiesignalen kan genereren. Er is echter een tekortkoming aan het IC, en dat is dat we niet weten wanneer er een even raster bezig is of een oneven raster. Dat moeten we echter wel weten om te bepalen welke geheugenplaatsen we moeten verwerken in het videosignaal. Als we even kijken naar twee signalen van de sync. generator: horizontale synchronisatiepulsen en verticale synchronisatiepulsen. Het verloop van deze twee signalen bij de overgang tussen twee rasters is weergegeven in figuur 2.13.
23
Overgang van oneven naar even raster
HD
VD
10 lijntijden Overgang van even naar oneven raster
HD
VD
10 lijntijden
Figuur 2.13: synchronisatiepulsen bij overgangen tussen twee rasters
Bij de overgang van een oneven naar even raster, worden de horizontale en verticale synchronisatie op het zelfde moment hoog. Bij de andere overgang komen de positieve flanken niet op hetzelfde moment. We laten nu de verticale synchronisatie iets vertraagd door. Als we nu kijken bij de positieve flank, is bij de éne overgang van rasters de horizontale synchronisatie hoog en bij de andere overgang laag. Met een D-flipflop kunnen we dan bepalen of er een even raster geschreven wordt of een oneven raster. Een mogelijke opstelling zie je in figuur 2.14. 5V
D HD
S R
VDD Q
Even/Oneven
CLK VD
vertraging
Q
Figuur 2.14: mogelijke opstelling voor raster-identificatie
24
Hiervoor hebben we dus eerst een vertragingsnetwerk nodig (vb een monostabiele multivibrator) en een D-flipflop. Een gemakkelijkere oplossing is echter gebruik te maken van een video sync. separator: LM1881. De datasheets van de LM1881 zijn terug te vinden in de bijlage.
Figuur 2.15: aansluitingen van de LM1881
Het gebruik van dit IC is zeer eenvoudig. Op pin 2 sluiten we het aangemaakte videosignaal aan (ontkoppeld met een condensator van 0.1µF) en op pin 6 sluiten we een RC-kring aan die er voor zorgt dat het IC kan gebruikt worden voor videosignalen met 525 lijnen. De componenten getekend in figuur 2.15 zijn van toepassing bij video-signalen met 625 lijnen. Pin 4 is de massa en pin 8 is de voedingsspanning van 5V tot 12V. Verder hoeven we aan het IC niets te doen en we krijgen vier uitgangssignalen. Op pin 1 krijgen we het samengesteld synchronisatiesignaal. Dit hebben we niet meer nodig aangezien we ditzelfde signaal al gebruikt hebben van de sync. generator. Op pin 3 krijgen we de verticale synchronisatiepulsen. Ook dit was al aanwezig op de sync. generator. Op pin 5 krijgen we de horizontale synchronisatie, samen met de burst. Dit kan gebruikt worden om de kleurdraaggolf uit het signaal te halen of om een referentie in te stellen voor het zwart-niveau. Dit is dus eerder voor toepassingen in de ontvanger en hebben we hier niet nodig. Op pin 7 kunnen we zien of het videosignaal in het even raster zit of in het oneven raster. Dit is het signaal dat we nodig
25
hebben om te bepalen welke geheugenplaatsen we moeten verwerken in het videosignaal. In figuur 2.16 kan je zien hoe de LM1881 in deze toepassing is opgenomen.
Figuur 2.16: opstelling van de video sync. separator
De uitgang (pin 7) wordt, zoals reeds besproken, gebruikt om te bepalen of we nu een lijn in het even of in het oneven raster aan het schrijven zijn. Aan de ingang wordt het reeds aangemaakte videosignaal aangesloten. Dit betekent dus dat de bepaling van het raster eigelijk een terugkoppeling is. Aangezien de LM1881 maximaal één raster nodig heeft om te synchroniseren, kan enkel het eerste raster (na het aanschakelen van de voeding) verkeerd geschreven worden. Dit zal uiteraard nooit zichtbaar zijn en is dus ook niet erg. In figuur 2.16 zien we ook nog dat de LM1881 gevoed wordt met een ontkoppelde voedingsspanning van 12V.
26
2.5 Kleur in het videosignaal We hebben reeds besproken hoe een videosignaal opgesteld is, maar hoe de kleur van het beeld hierin verwerkt is, is nog niet helemaal duidelijk. Om de werking van de RGB naar PAL encoder beter te begrijpen moeten we hier even op terugkomen.
2.5.1 Compatibiliteit Elk kleur die kan verstuurd worden kunnen we steeds opbouwen uit drie basiskleuren: rood, groen en blauw. Dit betekent dat we door deze drie kleuren (met elk hun eigen niveau) te versturen steeds het originele kleur weer kunnen opbouwen. Er is echter een probleem. Omdat eerst de zwart-wit TV uitgevonden is moest men bij de kleuren-TV er rekening mee houden dat het uitgezonden signaal nog steeds zou kunnen ontvangen worden op een zwart-wit TV. Aangezien de zwart-wit TV een luminantiesignaal (Y) nodig heeft, (lichtsterkte) betekent dit dat we bij de kleuren TV niet zomaar de drie kleursignalen (R, G en B) kunnen doorsturen, maar dat ook hier het luminantiesignaal aanwezig moet zijn. Figuur 2.17 maakt duidelijk wat er precies moet verstuurd worden.
27
Zwart-wit zender
Kleur zender Y
Y
Y (+ kleur)
Zwart-wit ontvanger
Y + kleur
Kleur ontvanger
Figuur 2.7: compatibiliteit van kleuren TV met zwart-wit TV
2.5.2 Modulatie van de kleuren op het videosignaal Aangezien we uit de R-, G- en B-signalen terug het Y-signaal kunnen afleiden is het ook niet nodig om ze alle vier te versturen. Om te vermijden dat het videosignaal groter wordt dan 1Vtt (overmodulatie) worden niet twee kleursignalen verstuurd maar zogenaamde kleurverschilsignalen: B-Y en R-Y. Deze signalen houden er ook rekening mee dat de drie basiskleuren niet dezelfde bijdrage hebben tot de helderheidsindruk voor het menselijk oog, maar hier gaan we niet verder op in. Aangezien er bij deze signalen nog steeds overmodulatie mogelijk is worden deze kleurverschilsignalen nog eens met een factor verminderd: U= 0.493(B-Y) V= 0.877(R-Y)
28
In figuur 2.18 zie je een eenvoudige manier om deze twee signalen op de kleurdraaggolf te moduleren:
Figuur 2.18: kwadratuurmodulatie van de kleurverschilsignalen
De beide signalen worden 90° verschoven t.o.v. elkaar, waarna ze in amplitude gemoduleerd worden op de kleurdraaggolf. Op deze manier kunnen de twee signalen in de ontvanger gemakkelijk weer uit elkaar gehaald worden. Het PAL-systeem laat het V-signaal na iedere lijn omkeren van teken (Phase Alternating Line). Dit zorgt er voor dat eventuele fasefouten op het kleursignaal weggewerkt worden. Hier gaan we niet verder op in.
2.6 RGB naar PAL encoder Nu je ongeveer weet hoe het volledige videosignaal is opgesteld, kunnen we eens kijken hoe de RGB naar PAL encoder precies te werk gaat. Deze zorgt er voor dat de synchronisatiesignalen van de SAA1101 en de RGB-signalen van het digitaal gedeelte verwerkt worden tot een correct PAL-videosignaal.
29
2.6.1 MC1377 De MC1377 is een IC dat een PAL-videosignaal genereert uit synchronisatiesignalen en drie kleursignalen. Er zijn echter heel wat zaken die nog moeten ingesteld of bijgeregeld worden rond het IC. Dit is de reden waarom ik voor dit IC heb gekozen: aangezien je heel veel kan bijregelen kan je ook veel
Figuur 2.19: inwendig blokschema van de PAL naar RGB-encoder
beter zien wat de invloed van alles is op het videosignaal. In figuur 2.19 bekijken we het IC van dichterbij: De volledige datasheets van de MC1377 zijn terug te vinden in de bijlage maar we leggen opnieuw de werking uit a.d.h.v. het blokschema. Uit de signalen R, G en B worden het luminantiesignaal en de kleurverschilsignalen (R-Y en B-Y) berekend. De kleurverschilsignalen worden gemoduleerd op de kleurdraaggolf (al dan niet 90° verschoven). Deze worden opgeteld en vormen samen het chromasignaal, die door een externe filter gaat. Het luminantiesignaal wordt extern vertraagd. De burst, de synchronisatiesignalen, het chromasignaal en het
30
luminantiesignaal worden nu samengevoegd om het uiteindelijke videosignaal te vormen.
2.6.2 Configuratie van de RGB naar PAL encoder Figuur 2.20 toont hoe de RGB naar PAL encoder is opgenomen in de schakeling.
Figuur 2.20: configuratie van de RGB naar PAL encoder
Dit ziet er voorlopig nog wat ingewikkeld uit, maar we overlopen stuk voor stuk wat er precies gebeurt.
31
2.6.2.1
Algemene instellingen
Tussen pin 17 en 18 kunnen we een kleurdraaggolfoscillator maken. Maar we hebben al een kleurdraaggolfoscillator gemaakt bij de sync. generator. We takken gewoon van hieruit af om dit signaal aan te sluiten op pin 17. We gebruiken een potentiometer om het niveau van dit signaal te regelen tussen de gewenste 0.5Vtt – 1.0Vtt. Daarna ontkoppelen we dit signaal nog met een condensator van 47pF. Pin 18 wordt verder niet meer gebruikt. Op pin 20 kunnen we de keuze maken tussen het PAL-systeem en het NTSC-systeem. Aangezien we hier gebruik maken van het PALsysteem laten we deze klem ongebruikt.
2.6.2.2
Ingangen
Op pin 2 wordt het samengesteld synchronisatiesignaal afkomstig van de sync. generator aangesloten. Hier wordt het volledige videosignaal opgemaakt. We moeten echter wel het signaal van de sync. generator inverteren, omdat deze gebruik maakt van de omgekeerde logica t.o.v. de RGB naar PAL encoder. Op pin 3, 4 en 5 worden respectievelijk de R-, G- en Bsignalen aangesloten. Deze moeten een amplitude hebben van 1Vtt bij een overgang van minimale naar maximale saturatie. De drie signalen worden verder nog ontkoppeld met condensatoren van 10µF.
2.6.2.3
Plaatsbepaling van de burst op de achterstoep
Op pin 1 kunnen we de plaats bijregelen, waar de burst in de achterstoep geplaatst wordt (zie videosignaal in figuur 2.5). Op deze klem wordt een integrator aangesloten. In figuur 2.21 zien we dat de tijdsconstante van de integrator bepaalt waar de burst terecht komt.
32
Figuur 2.21: plaatsbepaling van de burst op de achterstoep
De condensator begint op te laden wanneer er een synchronisatiepuls komt. Wanneer de condensatorspanning 1.0V bereikt, wordt de burst op het videosignaal geplaatst. Wanneer de condensatorspanning 1.3V bereikt, wordt de burst weggelaten. Bij 5V zal de condensator terug ontladen. Om nu te bepalen welke waarden voor de condensator en de weerstand we hier nodig hebben, moeten we het bereik bepalen waarin we moeten werken: de werkspanning van de integrator is 8.2V. Dit betekent dat 5V bereikt wordt na ongeveer 1 keer de tijdsconstante. De condensator moet 5V bereiken voor de volgende lijnpuls, anders krijgen we maar om de twee lijnen een burst. Dit betekent dat de maximale tijdsconstante 64µs bedraagt. Als de tijdsconstante te klein wordt, zal de burst in de synchronisatiepuls terecht komen. Dit is zo wanneer de tijdsconstante kleiner wordt dan 50µs. Alle tijdsconstantes tussen 50µs en 64 µs, zullen dus een goed resultaat opleveren. We wensen het regelbereik dan ook minstens zo groot te nemen. In de datasheets raadt men aan om een condensator te gebruiken van 1nF. Dit betekent dus dat we nog een weerstand nodig hebben van 50kohm tot 64kohm. In figuur 2.22 zie je de opstelling van de gekozen componenten.
33
Figuur 2.22: opstelling voor het bijregelen van de plaats van de burst
Met de gekozen weerstanden hebben we een bereik van 47kohm tot 72kohm. Dit is dus zeker voldoende om de plaats van de burst bij te regelen.
2.6.2.4
Filter voor het chroma signaal
Tussen pin 10 en 13 kunnen we een filter plaatsen om storingen en eventuele harmonischen in het kleursignaal (of chromasignaal) weg te werken. Het volledig videosignaal bestaat uit een kleursiglaaal en een luminantiesignaal. De bandbreedte van het luminantiesignaal is in frequentie verspreid over een breed gebied, en komt dan ook in de buurt van de kleurdraaggolf. Wanneer de bandbreedte van het kleursignaal dus te groot wordt, zal het luminantiesignaal hierdoor verstoord worden. Ook als we het videosignaal willen moduleren om te versturen, en hierbij ook een geluidssignaal willen versturen, krijgen we een zelfde probleem. Ook de geluidsdraaggolf bevindt zich niet ver van de kleurdraaggolf. Hierdoor kan het geluid verstoord worden. De bandbreedte van het kleursignaal moeten we dus
34
beperken. We doen dit a.d.h.v het filter dat te zien is in figuur 2.23.
Figuur 2.23: opstelling van het filter voor het chromasignaal
2.6.2.5
vertragingsnetwerk voor het luminantiesignaal
Tussen pin 6 en 8 kunnen we een vertragingsnetwerk plaatsen voor het luminantiesignaal. Door het filter voor het chromasignaal en de interne vertragingen in het IC wordt het chromasignaal 400ns meer vertraagd dan het luminantiesignaal. Om dit te compenseren moet dus ook het luminantiesignaal vertraagd worden. De opstelling van dit vertragingsnetwerk is gebaseerd op de gegevens uit de datasheets in de bijlage en is weergegeven in figuur 2.24.
35
Figuur 2.24: schakeling van het vertragingsnetwerk voor het luminantiesignaal
2.6.2.6
Bijregelen van de kleuren
Op pin 11 en 12 is het mogelijk om de DC niveaus van de signalen B-Y en R-Y, bij te regelen. Wanneer de DC niveaus van de twee signalen namelijk niet correct afgeregeld zijn, zal er ofwel in het wit-niveau ofwel in het zwart-niveau steeds kleur vermengd zijn. De fout die hierin optreedt is echter zo klein, dat het bijna niet zichtbaar is. Dit maakt het afregelen niet gemakkelijk. Het is echter niet strikt noodzakelijk om dat te doen. Ik heb de mogelijkheid toch gelaten indien de gebruiker dit zou wensen. De schakeling is te zien in figuur 2.25. Op pin 19 komt een gelijkaardige schakeling als op pin 11 en 12. Het is met deze klem mogelijk om de faseverschuiving van 90° tussen de draaggolven (voor R-Y en B-Y), bij te regelen. Ook dit is moeilijk af te regelen omdat de fout hierbij nauwelijks merkbaar is. Deze schakeling is eveneens te zien in figuur 2.25.
36
Figuur 2.25: schakeling voor het bijregelen van de faseverschuivingen bij R-Y en B-Y
2.6.2.7
Overige aansluitingen
Op pin 7 kunnen we een extern videosignaal aansluiten waaruit dan een nieuw videosignaal wordt gegenereerd (synchroon). Aangezien we een volledig nieuw videosignaal genereren maken we hier geen gebruik van. Daarom moeten we deze klem ontkoppelen naar de massa met een condensator van 10nF. Op pin 9 komt het uiteindelijke gegenereerde videosignaal. Bij het gebruik van deze pinaansluiting moeten we echter opletten. Figuur 2.26 toont het inwendig schema aan de video-uitgang van de RGB naar PAL encoder. 37
Figuur 2.26: inwendig schema aan de uitgang van de RGB naar PAL encoder
De uitgang van de RGB naar PAL encoder moet belast worden met een 75ohm impedantie. De kabel die we gebruiken om het signaal naar de TV te sturen is 75 ohm. De uitgang moet echter ook op DC gebied belast worden om het DC-instelpunt van de inwendige transistor juist te zetten. Aangezien de kabel voor de TV geen belasting vormt op DC gebied, moeten we de uitgang met een ohmse weerstand belasten. In de datasheets spreekt men van een weerstand van 150ohm, maar hiermee wordt de uitgang te veel belast waardoor het uitgangssignaal heel zwak wordt. Proefondervindelijk werd vastgesteld dat een weerstand van 220ohm of 270ohm het beste resultaat oplevert. Aangezien er dan op de uitgang een signaal komt van 2Vtt, moeten we nog een weerstand van 75ohm in serie plaatsen. Omdat de impedantie van de kabel ook 75ohm is, zal hier dus 1Vtt over komen te staan. In figuur 2.27 zien we het resultaat hiervan.
38
Figuur 2.27: verwerking van het videosignaal aan de uitgang van de RGB naar PAL encoder
Ook wordt er van het uiteindelijke videosignaal afgetakt naar de eerder besproken video sync. separator. Aangezien de ingangsimpedantie van dit IC zeer groot is mogen we dit zomaar doen. Als de ingangsimpedantie hier ook 75ohm zou zijn zouden we de serieweerstand van 75ohm moeten wijzigen. Op pin 16 komt er een intern opgebouwde referentiespanning van 8.2V die we nodig hebben om een aantal instellingen te maken. We gebruiken deze spanning bij het regelen van de plaats van de burst en bij het bijregelen van de kleuren.
39
3 Digitaal gedeelte Nu kunnen we uit de drie kleursignalen, R, G en B, een volledig videosignaal opstellen. Het enige waar we nu nog voor moeten zorgen zijn dus de drie kleursignalen. Hier zorgt het digitaal gedeelte voor.
3.1 Geheugen
3.1.1 Grootte van het geheugen Om een beeld te kunnen genereren in een stand-alone apparaat, moeten we er dus eerst en vooral voor zorgen dat dit beeld ergens opgeslagen wordt. Hiervoor hebben we dus geheugen nodig. We bepalen eerst hoeveel geheugen dit precies is. Het aantal beeldpunten waar informatie in zit, hebben we al eerder bepaald, nl: 768 x 576. Dit is het aantal puntjes dat we moeten kunnen opslaan om een volledig beeld te bekomen. Aangezien we echter met een frequentie werken van 15MHz, zullen er steeds 780 puntjes zijn per lijn (meer uitleg hierover in paragraaf 3.2.2). Dit betekent dus dat we 780 x 576 puntjes moeten opslaan. 780 x 576 = 449280. We moeten dus 449280 puntjes kunnen opslaan. Als we dit afronden omhoog naar een macht van 2 bekomen we 2^19 = 524288 geheugenplaatsen. Dit betekent dat we ten minste 19 adresbits nodig hebben. Als we een geheugen nemen met meer adresbits kunnen we er gewoon meerdere beelden in opslaan. De overige bits gebruiken we dan om de keuze te maken tussen de beelden. Nu moeten we ook nog bepalen hoeveel bits we willen gebruiken om één beeldpuntje op te slaan. Dit zal uiteindelijk bepalen hoeveel verschillende kleuren we kunnen weergeven. De meeste geheugens hebben 8 bits per adres (sommigen 16). Als we met 8 bits echter de drie basiskleuren willen weergeven, betekent dit dat we slechts twee bits per kleur kunnen gebruiken. Hiermee kunnen we dan 64 verschillende kleuren weergeven. Dit is zeer weinig, en aangezien het de bedoeling is dat alle figuren van op computer kunnen worden weergegeven, is het beter om 24 (3 x 8) bits te nemen om de kleuren te definiëren. Op deze manier kunnen we de meeste figuren van op
40
computer correct weergeven. Dat maakt de schakeling ook voor een stuk eenvoudiger, in die zin dat er voor elk van de basiskleuren een geheugenelement kan worden genomen. We zoeken nu dus drie geheugenelementen met 8 databits en minstens 19 adresbits.
3.1.2 Soort geheugen Als we nu nog weten welk soort geheugen we willen gebruiken kunnen we op zoek gaan naar de juiste IC’s. Met het soort geheugen bedoelen we RAM, ROM, PROM, EPROM of EEPROM. Aangezien we een beeld, willen programmeren in de beeldgenerator (dus in het geheugen) en later misschien een ander beeld vallen de ROM’s en PROM’s al weg. Het nadeel van RAM-geheugens is dat we er een back-up batterij bij nodig hebben aangezien de data in deze geheugens verdwijnt bij het wegvallen van de voedingsspanning. Het nadeel van EPROM’s is dat deze uit de schakeling moeten gehaald worden, om te wissen en te herprogrammeren. Daarom dacht ik eerst om EEPROM’s te gebruiken, maar deze blijken niet te bestaan met 19 adresbits (17 was het maximum). Om de beeldgenerator gemakkelijk programmeerbaar te maken zouden we dus moeten kiezen voor RAM’s. Hiervoor zouden we dan via RS232 communicatie met de computer de geheugens kunnen programmeren. Uit praktische overwegingen heb ik toch besloten om EPROM’s te gebruiken.
41
3.1.3 M27C801 Een geheugen dat precies zou passen was de M27C4001. Dit IC heeft 19 adresbits en 8 databits. Er is echter nog een EPROM die iets groter is, nl. de M27C801. Ik heb voor deze laatste gekozen omdat het met deze mogelijk is om twee beelden op te slaan. De datasheets zijn terug te vinden in de bijlage en in figuur 3.1 zie je de pinconfiguratie van de M27C801.
Figuur 3.1: pinconfiguratie van de geheugenelementen
42
3.1.4 Gebruik van het geheugenelement M27C801 Figuur 3.2 toont hoe de geheugenelementen in de schakeling zijn opgenomen. Rasteruitgang van de video sync. separator
Composite blanking van de sync. generator
}
tellers
latch
andere EPROM’s
Figuur 3.2: het gebruik van de EPROM’s
43
Het gebruik van de adreslijnen en de datalijnen is duidelijk: wanneer er op de adreslijnen een bepaalde code wordt aangeboden (in ‘1’-en en ‘0’-en), wordt het desbetreffende adres aangesproken. Daarna wordt de data op dat adres op de datalijnen geplaatst. Zoals ook te zien is in figuur 3.2 worden 18 adreslijnen gestuurd door tellers. Dit is slechts de helft van een beeld. Dit komt dan ook overeen met één raster. De tellers overlopen dus een volledig raster. De volgende adreslijn komt van de video sync. separator. Zoals eerder besproken geeft deze aan wanneer de sync. generator bezig is in een even raster of in een oneven raster. Tijdens een even raster geeft deze een laag niveau op de uitgang en tijdens een oneven raster een hoog niveau. Het oneven raster wordt ook wel het eerste raster genoemd en het even raster het tweede raster. In de EPROM’s willen we dan ook eerst het oneven raster opslaan en daarna het even raster. Daarom moeten we er wel op letten dat het signaal van de video sync. separator geïnverteerd wordt. Tenslotte hebben we nog 1 adreslijn. Met de 19 andere wordt een volledig beeld overlopen. Dus met deze laatste adreslijn kunnen we kiezen tussen twee verschillende beelden. In figuur 3.3 kan je zien hoe een eenvoudige wisselschakelaar hier voor zorgt.
Figuur 3.3: keuze tussen 2 beelden met een wisselschakelaar
44
Er zijn nog een aantal aansluitingen van de M27C801 die nog niet besproken werden. Deze zijn te zien in figuur 3.4. Composite blanking van de sync. generator
Figuur 3.4: configuratie van de geheugenelementen
In figuur 3.1 stond bij pin 22 ‘E’ en bij pin 24 ‘GVPP’. In figuur 3.4 worden echter andere benamingen gebruikt: voor pin 22 ‘CE’ of ‘Chip Enable’ en voor pin 24 ‘OE’ of ‘Output Enable’. Bij een hoog niveau op CE wordt intern de voedingsspanning van het IC afgeschakeld. Dit is voor toepassingen waarbij verschillende EPROM’s met gemeenschappelijke uitgangen, kunnen worden aangesproken. Hier maken we in deze toepassing geen gebruik van, pin 22 verbinden we dus met de massa. Pin 24 kunnen we gebruiken om de databits op een laag niveau te plaatsen. Bij de latch wordt er al gezorgd dat de uitgangen een bepaald niveau aannemen wanneer er geen beeldinformatie moet verstuurd worden. De reden wordt dan ook bij de latch uitgelegd. Hier doen we precies hetzelfde om extra zeker te zijn dat de uitgangen geen onbepaalde waarde aannemen. Pin 24 moet dus actief zijn wanneer er geen beeldinformatie wordt verstuurd (tijdens de blanking). We mogen OE dus
45
rechtstreeks aansturen met het samengesteld blankingsignaal van de sync. generator. Verder zien we nog in figuur 3.4 dat de EPROM’s gevoed worden met een ontkoppelde 5V voedingsspanning.
3.2 Teller
3.2.1 De manier van tellen Als de beelden opgeslagen zijn in de EPROM’s moeten we er nog voor zorgen dat de informatie op het juiste moment naar buiten komt. Dit gebeurt a.d.h.v. tellers. Er zijn twee manieren waarop je dit kunt doen. Een eerste mogelijkheid is het gebruik maken van twee aparte tellers (voor de lijnen en voor de puntjes). Hierbij kunnen we dan de teller die de beeldpuntjes afloopt op een willekeurige frequentie laten tellen, uiteraard moet deze dan overeen komen met het aantal puntjes per lijn dat er in de EPROM’s geprogrammeerd zijn. Het resetten van deze teller gebeurt dan op het einde van iedere lijn. De teller voor de lijnen laten we tellen op de lijnfrequentie. We kunnen deze dan resetten na een volledig raster of volledig beeld. Dit is zeer eenvoudig te realiseren maar op deze manier wordt het geheugenelement zeer inefficiënt gebruikt. We kijken even naar figuur 3.5.
46
Beeldpunten
Lijnen
1, 2, 3, … 2 3 …
767, 768 769, …
1023, 1024
575 576 577 …
TV-beeld
1023 1024
EPROM
Figuur 3.5: inefficiënt gebruik van de geheugenelementen
Als we de gewenste 768 beeldpunten op het scherm willen afbeelden, hebben we voor de beeldpunten een teller nodig van 10 bits (2^10 = 1024). Nu weten we dat de teller zal gereset worden wanneer hij 768 bereikt heeft. Dit betekent dat de volgende 256 geheugenplaatsen (van 768 tot 1024) overgeslagen worden, en dit voor elke lijn. Ook bij de teller voor de lijnen hebben we hetzelfde probleem. Deze teller wordt zelfs al gereset bij 576. Hier worden dus nog meer geheugenplaatsen overgeslagen. Dit alles zorgt er voor dat nog niet de helft van de geheugenplaatsen benut worden. Dit betekent dan ook dat er in de M27C801 geen twee beelden, maar slechts één beeld kan worden opgeslagen. Een andere mogelijkheid om de geheugenplaatsen te overlopen is het gebruik maken van één grote teller. Hierbij laten we de teller gedurende een volledig raster of beeld doortellen, om daarna pas te resetten. Dit zorgt er voor
47
dat alle geheugenplaatsen overlopen worden en de geheugenelementen veel efficiënter gebruikt worden. In figuur 3.6 zien we hoe de geheugenplaatsen nu gebruikt worden.
1, 2, 3, … 769, 770, … …
767, 768 1535, 1536
442368 442368 TV-beeld 524288
EPROM
Figuur 3.6: efficiënt gebruik van de geheugenelementen
Als alle beeldpunten op de juiste plaats zijn geprogrammeerd begint de eerste lijn op de eerste geheugenplaats, de tweede lijn op geheugenplaats 769, enz. Op deze manier zijn alle beeldpunten overlopen wanneer de teller aan 442368 komt. Nu schieten er nog 81920 plaatsen over. Dit is al heel wat minder dan daarstraks. We kunnen dus zeggen dat we nu de geheugenelementen efficiënt gebruiken.
3.2.2 Telfrequentie Aangezien we 768 puntjes per lijn willen, en deze moeten overlopen worden in 52µs kunnen we berekenen dat we de teller moeten laten tellen op een frequentie van 14.77MHz. Er is echter een probleem. Doordat het aantal puntjes per lijn vast ligt door het programmeren, moeten we zeker zijn dat lijn 2 begint op adres 769 en niet op adres 768 of 770. Een verschuiving van 1 puntje per lijn zou betekenen dat de
48
laatste lijn 576 puntjes verschoven is (bijna een volledig scherm dus). Dit wil zeggen dat we een uiterst nauwkeurige telfrequentie zouden moeten opbouwen, ofwel een frequentie die een vast verband heeft met de lijnfrequentie. Hier komen we even terug op de sync. generator. De werkfrequentie van de SAA1101 konden we kiezen, en we hebben gekozen voor die van 15MHz. Deze frequentie kunnen we hier gebruiken om de teller aan te sturen. Nu hebben we echter niet precies de frequentie die we daarstraks berekend hebben. Aangezien de frequentie hoger wordt bekomen we een iets hogere resolutie. Dit heeft dus zeker geen nadelige invloed op de beeldresolutie. We zijn nu echter wel zeker dat er in iedere lijn evenveel geheugenplaatsen overlopen worden. Met een frequentie van 15MHz worden er 780 geheugenplaatsen overlopen in 52µs. Figuur 3.7 toont hoe de geheugenelementen nu worden gevuld.
1, 2, 3, … 781, 782, … …
779, 780 1559, 1560
449280 449281 TV-beeld 524288
EPROM
Figuur 3.7: gebruik van de geheugenelementen in de schakeling
Bij hoofdstuk 4 volgt een uitgebreidere uitleg hierover.
49
3.2.3 74HCT4040 Een veel gebruikte teller is de 4040. Deze heb ik dan ook gekozen in mijn ontwerp. Figuur 3.8 geeft een voorstelling weer van de 74HCT4040.
Figuur 3.8: schematische voorstelling van de teller
Deze teller heeft 12 bits. Aangezien we 18 bits nodig hebben (zie 3.1) moeten we dus twee van deze tellers in cascade plaatsen. Dit kan heel eenvoudig door één van de telleruitgangen van de eerste teller te verbinden met de klokingang van de tweede teller. Figuur 3.9 toont hoe ik de tellers heb opgenomen in de schakeling.
50
Klok van de sync. generator Verticale synchronisatiepulsen van de sync. generator
Adreslijnen 017 van de EPROM’s
Figuur 3.9: gebruik van de tellers in de schakeling
51
De klokingang van de onderste teller wordt zoals gezegd aangestuurd met de 15Mh klok van de sync. generator (straks meer uitleg hierover). De uitgangen worden verbonden met de adresingangen van de geheugenelementen waardoor alle geheugens dus overlopen worden. De tellers worden gereset door de verticale synchronisatiepuls van de sync. generator (dus na elk raster). Als we nu de tellers gewoon zouden laten lopen op een frequentie van 15MHz, zouden tijdens de eerste lijn 780 beeldpunten overlopen zijn. Maar tijdens de lijnsynchronisatie zou de teller gewoon verder lopen. Hierdoor zou de volgende lijn toch weer niet op de juiste plaats beginnen. Bij de sync. generator hadden we een uitgangssignaal “composite blanking”. Dit signaal neemt een hoog niveau aan op de momenten dat er geen beeldinformatie mag verstuurd worden. Tijdens deze momenten mogen de tellers dus ook niet verder tellen. Figuur 3.10 toont hoe we met het samengesteld blanking signaal, de tellers op de juiste momenten en op de juiste frequentie laten tellen.
52
Klokingang van de teller
Figuur 3.10: opstelling van de telfrequentie.
Op pin 24 komt de klokfrequentie naar buiten en op pin 17 het samengesteld blanking signaal. Tijdens de blanking zal de klokfrequentie tegengehouden worden en het signaal die naar de teller gaat een hoog niveau aannemen. Als de blanking niet actief is, wordt de klokfrequentie gewoon doorgestuurd.
53
3.3 Latch De datauitgangen van de EPROM’s worden eerst gebufferd met latches. Bij een geheugenelement ben je namelijk nooit zeker dat alle uitgangen evenveel tijd nodig hebben om hun volgende toestand aan te nemen. Dit zou kunnen leiden tot fouten in de DAC’s en dus ook op het beeld. Door het gebruik van een latch kunnen we er voor zorgen dat alle data zeker op hetzelfde moment doorgestuurd wordt naar de DAC’s. In figuur 3.11 zien we hoe de latches in de schakeling zijn opgenomen. Compsite blanking van de sync. generator
EPROM uitgangen
{
Klok van de sync. generator
}
DAC ingangen
Figuur 3.11: gebruik van de latches in de schakeling
De clear-ingang wordt verbonden met het samengesteld blankingsignaal. Dit betekent dat tijdens de blanking (dus ook tijdens de synchronisatie) alle uitgangen een laag niveau aannemen. Als we dit niet doen, en de uitgangen een onbepaalde toestand laten aannemen, zorgt dit tijdens de synchronisatie voor storing in het videosignaal. Hiermee kan de TV het soms
54
moeilijk hebben. Om dit te vermijden laten we de uitgangen een vast niveau aannemen. De klok-ingang wordt verbonden met hetzelfde signaal als bij de tellers (tegengehouden tijdens de blanking). De tellers reageren op de positieve flank van de klokfrequentie en de latches op de negatieve flank. In figuur 3.12 zien we hoe dit er voor zorgt dat de data van de EPROM’s steeds wordt doorgestuurd, wanneer ze een stabiele toestand bereikt hebben.
Klok frequentie
Uitgang van de EPROM
Uitgang van de latch
Figuur 3.12: stabiliseren van de datauitgangen van de EPROM’s
Eerst wordt de EPROM aangesproken. Deze heeft een bepaalde tijd nodig om zijn uitgang te stabiliseren en na een halve periode van de klokfrequentie worden deze uitgangen doorgestuurd. Dit zorgt er voor dat de data zeer stabiel wordt aangeboden aan de DAC’s.
3.4 DAC De 8 bits van een EPROM stellen het niveau van één van de drie basiskleuren (R, G of B) voor. Hoe groter de waarde van de 8bits code, hoe meer lichtintensiteit bij dat kleur. De bits moeten dus via een DAC omgevormd worden, om een analoge spanning te kunnen aanbieden aan de RGB naar PAL encoder. De TDA8702 is een DAC die gemaakt is om op hoge snelheden te werken. Hij kan conversies doen tot op een snelheid van 30MHz en wordt dan ook veel gebruikt in TV-applicaties. In mijn schakeling heb ik dit IC ook toegepast.
55
Figuur 3.13 toont hoe ik de TDA8702 in mijn schakeling heb opgenomen.
Latch uitgangen
{
R-, G- of B-ingang van de RGB naar PAL encoder
Figuur 3.13: gebruik van de DAC’s in de schakeling
We zien dat de TDA8702 een klok-ingang heeft. Je kan je nu misschien afvragen of we dit IC dan niet tegelijkertijd als latch zouden kunnen gebruiken. De benaming “CLK” is echter niet goed gekozen. Het is eerder een “output enable”. Wanneer deze laag is, wordt de digitale code namelijk voortdurend geconverteerd naar een analoge spanning. Als de klok-ingang hoog is, blijft de uitgang op de laatst berekende waarde staan. De REF-ingang van de DAC dient om op de uitgang een DC offset spanning bij te voegen indien dit gewenst is. Wanneer we dit niet willen doen, moeten we deze klem met een condensator ontkoppelen naar massa.
56
Om te weten wat er precies moet gebeuren met de uitgang van de DAC (en welke uitgang we zullen kiezen), moeten we volgende tabel bekijken. De tabel geeft de uitgangsspanningen weer, bij een bepaalde digitale code aan de ingang. Let er echter op dat de spanningen bepaald zijn t.o.v. de voeding, en niet t.o.v. de massa.
Figuur 3.14: uitgangsspanningen van de DAC
We zien dat de niet-geïnverteerde uitgang bij een stijgende digitale code daalt. Terwijl de geïnverteerde uitgang bij een stijgende digitale code stijgt. Aangezien een stijgende digitale code overeenstemt met een stijgende lichtintensiteit, en dat hiervoor de R-, G- of B-ingang van de RGB naar PAL encoder ook moet stijgen, zullen we hier gebruik maken van de geïnverteerde uitgang van de DAC. Bij een overgang van de kleinste digitale waarde naar de hoogste, heeft de uitgang een amplitude van 1.6V (onbelast) of 0.8V (belast met 75ohm). Aangezien we bij de RGB naar PAL encoder een amplitude wensen van 1Vtt, zullen we dus een grotere weerstand dan 75ohm moeten gebruiken. Omdat deze “1Vtt” nogal kritisch is heb ik er ook voor gekozen deze regelbaar te maken. Met de componenten die je kon zien in figuur 3.13, kunnen we de spanning regelen tussen 0.5V en 1.5V. Dit is dus zeker voldoende. Er staat op dit signaal nog een zekere DC spanning maar aangezien we de ingangen van de RGB naar PAL encoder hebben ontkoppeld, hoeven we ons hier geen zorgen over te maken. De nodige DC instelling op dit signaal wordt intern in de RGB naar PAL encoder gevormd.
57
4 Software 4.1 Doel We kunnen nu uit een beeld dat opgeslagen is in drie EPROM’s, een videosignaal genereren, waaruit een televisietoestel het originele beeld terug kan opbouwen. Het enige waar we nu nog moeten voor zorgen, is dat het beeld op een correcte manier wordt geprogrammeerd in de EPROM’s. Een eenvoudige Programmer kan gelijk welke informatie in de EPROM’s programmeren. Het probleem is echter dat we niet precies weten wat er moet geprogrammeerd worden. Hier zal de software die ik geschreven heb een handje toesteken.
4.2 Wat programmeren in de EPROM’s? Om te weten waar precies welke informatie van het beeld moet komen, moeten we zeer goed weten in welke volgorde het beeld overlopen wordt. Zoals we gezien hebben in hoofdstuk 2, worden eerst alle oneven lijnen van het beeld overlopen, en daarna pas de even lijnen. We hebben echter ook gezien dat het oneven raster begint met een halve lijn, en het even raster eindigt met een halve lijn. Laten we dit even van dichterbij bekijken:
Begin van halve lijn
20µs
12µs
64µs 32µs
Figuur 4.1: bepalen van het begin van de halve lijn
58
Voor het bepalen van het begin van de eerste halve lijn van het oneven raster, werd er rekening gehouden met de synchronisatiesignalen die achter de lijn komen. Dit betekent dat er in die eerste halve lijn 20µs beeldinformatie verstuurd wordt. Dit komt overeen met 300 beeldpunten (20µs x 15MHz). De halve lijn op het einde van het even raster is van minder belang, maar op deze lijn worden 480 beeldpunten geschreven. Aangezien een figuur van op computer rechthoekig is (en dus enkel volledige lijnen bevat), zou er discussie kunnen ontstaan over wat er precies in die twee halve lijnen wordt geschreven. De twee zijn echter op geen enkele TV zichtbaar, en de software zal de bijhorende geheugenplaatsen dan ook leeg laten. We moeten er wel op letten dat we deze lijnen niet zomaar vergeten maar dat we juist zoveel geheugenplaatsen overslaan in de geheugenelementen. De volgorde waarmee de informatie wordt opgeslagen in de EPROM’s, wordt voorgesteld in volgende tabel.
Eerste halve lijn Eerste lijn van het eerste raster
Laatste lijn van het eerste raster Over te slaan geheugenplaatsen Eerste lijn v.h. tweede raster
Laatste lijn van het tweede raster Over te slaan geheugenplaatsen
Geheugenplaats
Beeldinformatie
1 – 300 301 – 1080 1081 – 1860 1861 – 2640 … 223381 – 224160 224160 – 262144 262145 – 262924 262925 – 263704 263705 – 264484 … 485223 – 486004 486004 – 524288
Leeg Lijn 1 Lijn 3 Lijn 5 … Lijn 575 Leeg Lijn 2 Lijn 4 Lijn 6 … Lijn 574 Leeg
Figuur 4.2: overzicht van de data in de geheugenelementen
Dit is alles wat moet worden geprogrammeerd voor één beeld. Hiermee wordt ook precies de helft van de EPROM’s gevuld. De andere helft wordt uiteraard in dezelfde volgorde ingevuld voor een ander beeld.
59
4.3 Programmer Met de programmer die ik gebruikt heb kan je elk type bestand inlezen. De programmer vertaalt elk karakter uit dat bestand naar 8 bits en zet deze op het juiste adres in de EPROM. De volgorde waarmee de karakters elkaar opvolgen blijft ongewijzigd, het eerste karakter van het bestand komt terecht op adres 0, het tweede op adres 1,… We moeten dus drie bestanden aanmaken (voor elke EPROM, of voor elk kleur, één bestand), waarin elk puntje van de figuur opgeslagen zit als één karakter. Dan pas kunnen we met de programmer beginnen werken.
4.4 BMP-formaat Om een figuur te kunnen herleiden tot allemaal verschillende puntjes, moeten we goed begrijpen hoe de figuur is opgeslagen op de computer. Het bmp-formaat is hier het eenvoudigste voorbeeld van. Hierin worden immers alle puntjes opgeslagen met precies evenveel bits. Bij andere formaten zoals jpeg of gif, worden allerlei compressietechnieken toegepast waardoor het vrij ingewikkeld wordt om de puntjes van de figuur er afzonderlijk uit te halen. Het is vrij gemakkelijk om op computer het formaat van een figuur te wijzigen. Ik heb er dan ook voor gekozen om enkel het bmp-formaat te laten verwerken door het programma. Bij het bmp-formaat kun je ook nog kiezen hoeveel bits er precies gebruikt worden om een figuur op te slaan: 1 bit (zwart-wit), 8 bits, 16 bits of 24 bits. Aangezien er in de schakeling uiteindelijk 24 bits worden gebruikt om de kleur van één puntje weer te geven, heb ik er opnieuw voor gekozen enkel deze laatste in mijn programma te verwerken. In veel gevallen zul je dus de figuur, die je wenst in de EPROM’s te programmeren, eerst moeten veranderen van formaat. Als we nu even verder kijken hoe de puntjes van de figuur precies worden opgeslagen in het bmp-formaat, blijkt dit voor onze schakeling zeer gunstig te zijn. Van de 24 bits die gebruikt worden om één puntje op te slaan, stellen de eerste 8 het kleur blauw voor, de volgende 8 het kleur groen, en de
60
laatste 8 het kleur rood. Dit betekent dus dat we geen berekeningen hoeven te doen en geen tabellen hoeven te gebruiken om de 24-bits code te vertalen naar de drie juiste 8-bits codes. Wat de volgorde betreft waarop de puntjes worden opgeslagen in het bmp-formaat, lijkt dit ook zeer sterk op de volgorde waarop ze worden geschreven op het TV-beeld. De puntjes worden opgeslagen van links naar rechts, maar van beneden naar boven. In het uiteindelijke bmp-bestand komen alle puntjes gewoon achter elkaar te staan. Figuur 4.3 toont de volgorde van de opgeslagen puntjes. Figuur
Einde van het bestand
Begin van het bestand
Figuur 4.3: Volgorde van de beeldpunten in het bmp-formaat
Het enige waar we nu nog moeten voor zorgen, is dat we figuren van gelijk welke breedte of hoogte kunnen weergeven. Dit betekent dat we dus meestal het formaat zullen moeten aanpassen. We zullen echter steeds de verhouding van de hoogte en de breedte van de figuur behouden. Dit betekent dat we soms zwarte balken aan de figuur zullen moeten toevoegen. Om het programma automatisch te laten bepalen wat er precies moet aangepast worden, moet het ook van vooraf weten wat de grootte van de figuur is. Hiervoor bekijken we de rest van het bmp-bestand. De header van een bmp-bestand met 24-bits kleuren bestaat uit 54 karakters en bevat heel wat nuttige informatie over de
61
figuur. In de header staat hoeveel puntjes er zijn per lijn, hoeveel lijnen er zijn, hoeveel bits er gebruikt worden voor één puntje, de grootte van het hele bestand, en nog andere informatie. Uit de breedte en de hoogte kunnen we afleiden hoe de figuur moet aangepast worden en wat er precies waar geprogrammeerd moet worden. De header van een BMP-bestand begint steeds met dezelfde twee karakters. Deze, samen met het aantal bits per puntje, kunnen worden gebruikt als controle. Als deze niet juist zijn zal de rest van het programma niet correct uitgevoerd worden. Op het einde van elke lijn worden soms extra karakters toegevoegd (als extra headers). Als dit gebeurt, is dat bij elke lijn evenveel karakters. Uit de grootte van het bestand kunnen we berekenen hoeveel karakters dit zijn. We moeten er voor zorgen dat deze in het programma niet verwerkt, maar overgelaten worden.
4.5 Werking van het programma Het uiteindelijke programma zorgt er nu voor dat uit één of twee figuren (naar keuze), drie bestanden worden aangemaakt die we dan kunnen inladen met een programmer om in de EPROM’s te programmeren. Als programmeertaal heb ik gekozen voor Visual Basic. Het volledige programma kan je terug vinden in de datasheets. Nu bespreken we enkel de belangrijkste commando’s. Het eerste dat we moeten doen is uiteraard het bmp-bestand, dat we willen verwerken, openen. Dit gebeurt met de volgende commando’s: OpenFileDialog1.Filter = "bitmaps (*.bmp)|*.bmp" OpenFileDialog1.ShowDialog()
We willen de data van het bestand inlezen en eventueel verwerken. Hiervoor moeten we eerst een datastream aanmaken. Dit kan met de volgende commando’s: dataIn = New FileStream(OpenFileDialog1.FileName, FileMode.Open) Dim karakterIn As New BinaryReader(dataIn)
62
Nu kunnen we karakter per karakter het volledige bestand inlezen. Dit gebeurt met het volgende commando: buffer = karakterIn.ReadByte()
Hierbij komt het desbetreffende karakter in “buffer” terecht, waarna we deze kunnen verwerken. We kijken ook eens hoe een lijn precies opgebouwd wordt: j = lrzwart i = lrzwart While i < breedte + lrzwart If i > j Then lijnB((j - lrzwart) / verhouding + lrzwart) = Chr(bufferB) lijnG((j - lrzwart) / verhouding + lrzwart) = Chr(bufferG) lijnR((j - lrzwart) / verhouding + lrzwart) = Chr(bufferR) j = j + verhouding Else bufferB = karakterIn.ReadByte() bufferG = karakterIn.ReadByte() bufferR = karakterIn.ReadByte() i = i + 1 End If End While
We laten twee tellers lopen: i en j. Beide tellers lopen van 0 tot het aantal puntjes in de figuur. De teller i wordt steeds verhoogd met 1, waardoor hij zoveel stapjes maakt als er puntjes zijn in de figuur. De teller j telt in stapjes met de grootte van de verhouding. Dit wil zeggen dat deze teller evenveel stapjes maakt als er puntjes moeten weggeschreven worden. Eerder werd de verhouding berekend van de figuur t.o.v. het beeld. Als deze groter is dan 1 moeten dus meerdere puntjes gelezen dan geschreven worden. Als de verhouding kleiner is dan 1 moeten de ingelezen puntjes eventueel twee of meer keer geschreven worden. Als we nu informatie wegschrijven, telkens de teller j verhoogt, zorgen we er voor dat er altijd precies genoeg puntjes weggeschreven worden. Als we informatie inlezen, telkens de teller i verhoogt, worden steeds alle puntjes van de figuur overlopen. Door nu de simpele vergelijking te maken of i al dan niet groter is dan j, weten we of het inlezen al dan niet verder gevorderd is dan het wegschrijven. We weten dus ook wat de
63
volgende actie moet zijn. De lijn is geschreven wanneer alle puntjes van de figuur overlopen zijn. Eerder hebben we al gezegd dat er soms op het einde van iedere lijn extra karakters bijgevoegd zijn in het bmp-bestand. Hiermee moet er niets gebeuren maar we moeten ze wel eerst inlezen voor we de volgende informatie kunnen inlezen. Dit doen we met de volgende code: i = 0 While i < extraperlijn buffer = karakterIn.ReadByte() i = i + 1 End While
Het programma in werking ziet er uit als in figuur 4.4.
Figuur 4.4: BMP naar RGB encoder in werking
De software is zeer eenvoudig te gebruiken: om een figuur in te laden kies je gewoon open figuur 1 of 2 in het menu “bestand”. Daarna kan je een BMP-bestand kiezen. Informatie i.v.m. de figuur komt in een tekstvak op het scherm ter verificatie. Om uit de gekozen figuren de RGB-bestanden aan te maken kies je “RGB bestanden aanmaken” uit het menu. Je geeft een bestandsnaam in, en het programma geeft een melding wanneer dat gebeurd is.
64
5 Het printontwerp Het maken van een goed printontwerp is bij vele schakelingen van groot belang om de werking ervan te garanderen. Dit is ook zo bij de beeldgenerator die ik heb ontworpen. Ik heb dan ook heel wat bijgeleerd over het ontwerpen van een print. In de firma Trycom wordt gebruik gemaakt van een freesmachine om printplaten te maken. Als we een schakeling hebben getekend (in Multicap), kunnen we hier de printlayout van tekenen (in Ultiboard). Daarna berekenen we (met Circuitcam) de plaatsen op de printplaat die moeten weg gefreesd worden, waarna we de freesmachine zijn werk laten gaan (gestuurd door het programma Boardmaster). De resultaten zijn hoogst nauwkeurig, maar de professionele programma’s betekenen uiteraard niet dat we zelf niet meer hoeven na te denken. Waar ik bijvoorbeeld veel over geleerd heb is het maken van een dubbelzijdige printplaat. Aangezien mijn printontwerp nogal veel componenten bevat was het dan ook nodig een dubbelzijdige printplaat te maken. Bij het eerste ontwerp dat ik heb gemaakt waren zeer weinig fouten te merken die uit de schakeling kwamen. Waar ik echter wel problemen mee had was het solderen. Aangezien ik nogal veel baantjes aan de componentenzijde had geplaatst, kon ik hier moeilijk bij om ze te solderen. In mijn tweede ontwerp was het dan ook de bedoeling om dit zoveel mogelijk te vermijden. Hierbij heb ik op de eerste plaats er voor gezorgd dat zoveel mogelijk baantjes aan de onderzijde van de print kwamen. Voor de baantjes die toch aan de bovenzijde moesten, heb ik de eilandjes zo’n groot mogelijk oppervlak laten bestrijken. Dit is voorgesteld in figuur 5.1.
65
Figuur 5.1: voorstelling van pads aan de componentenzijde van een print
Het solderen van de componenten werd op deze manier een heel stuk gemakkelijker. Toch is een enkelvoudige printplaat nog steeds de beste oplossing. Helaas is dit niet altijd mogelijk. Waar we ook moeten op letten is dat tijdens het tekenen van de schakeling, componenten gekozen worden met de juiste footprint. Als we hier niet op letten, en componenten kiezen met misschien hetzelfde symbool maar een andere footprint dan de componenten die we willen gebruiken, kan het zijn dat de printplaat onbruikbaar is. In veel gevallen moeten we ook de grootte van de eilandjes aanpassen of de dikte van de gaatjes. Soms zijn de gaatjes veel te groot of net iets te klein en soms zijn de eilandjes zodanig klein dat ze helemaal weggefreesd worden. Hier moet allemaal rekening mee gehouden worden om tot een goed eindresultaat te komen. Hoe het uiteindelijke printontwerp er uitziet kan je zien in figuur 5.2. De volledige printlayout, laag per laag, kan je terug vinden in de bijlage.
66
Figuur 5.2: printontwerp van de beeldgenerator
67
6 De lijnselecter Een andere schakeling die ik heb gemaakt i.v.m het eindwerk is de lijnselecter. Als we het videosignaal van de beeldgenerator (of gelijk welk ander videosignaal) op een oscilloscoop weergeven, worden alle lijnen van het hele beeld door elkaar geschreven. Op deze manier kunnen we natuurlijk niet tot in detail controleren of de lijnen er wel goed uitzien. De lijnselecter biedt hier een oplossing voor. De schakeling maakt dus geen deel uit van het eindwerk maar heeft me wel geholpen om tot een goed resultaat te komen. De schakeling zorgt er voor dat één of meerdere lijnen (maximum 16) van ieder beeld doorgelaten worden terwijl voor de rest van het videosignaal de uitgang 0V is. Welke lijn we willen doorlaten, kunnen we kiezen a.d.h.v. schakelaars. Op deze manier kan de oscilloscoop telkens triggeren op precies dezelfde lijn, en krijgen we een stilstaand beeld waar één of meerdere lijnen van het videosignaal op te zien zijn. De schakeling is gebaseerd op een schema die je kan terugvinden in de datasheets van de LM1881. De schakeling die ik ervan heb gemaakt, na een aantal aanpassingen, vind je terug in de bijlage.
Figuur 6.1: printontwerp van de lijnselecter
68
Om de keuze te maken welke lijn we precies zichtbaar willen maken, heb ik gebruik gemaakt van HEX-switches. Hiermee is het mogelijk te kiezen tussen 256 verschillende lijnen. Doordat de schakeling niet precies op het juiste moment triggert (door een beperkte mogelijkheid aan synchronisatiesignalen), moeten we echter de schakelaars hoger instellen dan de lijn die we willen zien. Zo moet je om lijn 1 zichtbaar te maken de schakelaars instellen op 3, om lijn 10 zichtbaar te maken op 12, enz. Hierdoor kunnen we nog slechts de lijnen 1 tot 253 weergeven. Met een andere schakelaar kunnen we echter wel nog kiezen tussen de twee rasters van het videosignaal. Waardoor we in totaal 506 van de 576 lijnen zichtbaar kunnen maken. Met de derde HEX-switch kunnen we kiezen hoeveel lijnen we na elkaar willen doorlaten, of hoeveel lijnen we willen zichtbaar maken(1 tot 16). De eerste zichtbare lijn blijft nog steeds degene die we met de andere schakelaars hebben ingesteld. Dit was de eerste schakeling waarvan ik een printontwerp heb gemaakt. Ik heb hier dan ook uit geleerd hoe ik moest te werk gaan om de beeldgenerator te maken. Figuur 6.1 toont hoe het uiteindelijke printontwerp van de lijnselecter er uitziet.
69
7 Testbeeld Omdat de beeldgenerator oorspronkelijk bedoeld was om testbeelden weer te geven op de TV, heb ik ook gezorgd voor een testbeeld om in de EPROM’s te programmeren. De officiële naam van het testbeeld waarvoor ik gekozen heb is PM5544 en werd vroeger gebruikt op Vlaamse, Nederlandse en Britse zenders. Ik heb de figuur aangepast om zo goed mogelijk te kunnen weergeven met de beeldgenerator, maar de specificaties ervan zijn ongewijzigd t.o.v. het oorspronkelijke beeld. Het resultaat is te zien in figuur 7.1
Controle op eventuele reflectie
kleurbalken
definitielijnen
grijstinten
Controle op convergentie
Figuur 7.1: internationaal gebruikt testbeeld.
We bespreken even de voornaamste functies van dit testbeeld: Ten eerste zorgt de cirkel ervoor dat we eventuele vervorming in het beeld kunnen zien. Als de cirkel niet perfect rond is, wijst dit er op dat de TV een vervormd beeld weergeeft. De horizontale en verticale lijnen op de achtergrond hebben een dubbele functie. Op de eerste plaats moeten deze perfect recht lopen. Wanneer dit niet zo is wijst dit op wat men noemt 70
kussenvorming in het beeld. De tweede bedoeling van de verticale lijnen is het controleren op convergentie. Bij de witte lijnen op de grijze achtergrond kan er soms kleur ontstaan bij de overgangen. Dit wordt convergentie genoemd. De verticale lijnen in de cirkel worden de definitielijnen genoemd. Deze geven weer hoe snel een TV reageert op zwart-wit overgangen. De bedoeling is om te controleren wanneer deze overgangen gaan interfereren met de kleurdraaggolf. De frequentie van de overgangen is namelijk 0.8MHz, 1.8MHz, 2.8MHz, 3.8MHz en 4.8MHz. Deze laatste twee zitten dicht in de buurt van de kleurdraaggolf van 4.3MHz. Dit kan kleurverschijnselen doen ontstaan in de zwart-wit overgangen. De definitielijnen controleren hoe goed deze kleurverschijnselen door de TV worden weggewerkt. De kleurbalken in de cirkel zijn uiteraard om te controleren of de kleuren in de TV goed zijn afgeregeld. De volgorde van de kleuren is in afnemende luminantie: geel, cyaan, groen, magenta, rood en blauw. Vervolgens hebben we de grijstinten in de cirkel. Hier mag geen enkel teken van kleur in te bespeuren zijn. Dit dient ook om de afregeling van de kleuren te controleren. Als de kleuren niet goed afgeregeld zijn kan dit soms duidelijk zichtbaar zijn in de grijstinten. De verticale zwarte streep op de witte achtergrond (boven in de cirkel) dient om de TV te testen op eventuele reflecties. Door het verwerken van het videosignaal in de TV kunnen er namelijk harmonischen ontstaan. Als deze niet goed weg gefilterd worden zal de verticale streep meerdere malen in het witte vlak zichtbaar zijn. Er zijn nog tal van andere mogelijkheden met het testbeeld maar met de vernoemde functies kun je de voornaamste testen op de TV uitvoeren.
71
Besluit Voldoet nu mijn eindresultaat aan de vooropgestelde eisen of niet? De bedoeling was om een beeldgenerator te maken met een zo hoog mogelijke resolutie. De beeldgenerator die ik heb gemaakt kan dan ook een beeld weergeven op een resolutie die net iets hoger ligt dan die van een televisiescherm. Wat de weergave van de kleuren betreft is het met mijn ontwerp mogelijk om 24 bits kleuren weer te geven. Hiermee kunnen de meeste figuren van op computer op een correcte manier weergegeven worden. Mijn eindwerk behaalt dus zeker de gewenste resolutie op welk vlak dan ook. Een tweede eis die gesteld werd aan het eindwerk, was dat de beeldgenerator zo gemakkelijk mogelijk herprogrammeerbaar zou zijn. Via de software die ik heb gemaakt, heb ik dit zo goed mogelijk proberen te benaderen. Als je een figuur in de beeldgenerator wilt programmeren moet je echter de geheugenelementen uit het toestel halen. Om dit te vermijden, maken we misschien beter gebruik van RAM’s die je via een seriële poort met de computer kan programmeren. Dit is dan ook eventueel een volgende stap in het ontwerp van de beeldgenerator. Globaal gezien voldoet mijn ontwerp dus aan de vooropgestelde eisen. Wat ik zelf vooral heb overgehouden aan dit eindwerk, is dat ik heel wat heb bijgeleerd over TV-technieken. Toen ik vorig jaar voor het eerst kennis maakte met het onderwerp, kende ik hier niets van. Nu ben ik er een stuk beter in thuis. Ook heb ik geleerd op een goede manier een printontwerp te maken. Hierbij zijn heel wat zaken die je in acht moet nemen om tot een goed resultaat te komen. Zo werkt de schakeling bijvoorbeeld frequenties tot 15 MHz. Dit is nog niet zo veel, maar toch al genoeg om problemen te veroorzaken bij een slecht ontwerp.
72
Literatuurlijst
Gedrukte bronnen CUPPENS, J. en SAEYS, H., 1981. Kleurentelevisie, PAL en SECAM. Lier, Van In, 474 p. DE CRAEMER, Renaat, 2000. Basisprincipes van televisie: verwerking van het beeldsignaal. Oostende, KHBO, 159 p. ELEKTUUR, september 2003. Elektuur: elektronica die verrast. 87 p. HALVORSON, Michael, 2002. Programmeercursus Microsoft Visual Basic .net. Den Haag, Academic Service, 657 p. ISBN 90-3951908-0 Elektronische bronnen: internetsites
Beeldresolutie http://www.tweakers.net/nieuws/26723 www.kristalvideo.nl/premiere.htm
Datasheets http://www.datasheetarchive.com/datasheet/pdf/92/92803.html http://www.datasheetarchive.com/datasheet/pdf/26/261266.html http://www.datasheetarchive.com/datasheet/pdf/23/239039.html http://www.datasheetarchive.com/datasheet/pdf/21/212036.html http://www.datasheetarchive.com/datasheet/pdf/95/95000.html http://www.datasheetarchive.com/datasheet/pdf/95/95797.html http://www.datasheetarchive.com/datasheet/pdf/80/80851.html
Testbeeld http://www.oodletuz.fsnet.co.uk/otz/testcard1.htm http://home.versatel.nl/radio_tv/testbeelden/testbeeld.html http://tcc.members.beeb.net/tchistory.html
73