Forum: Offtopic Projekt PAL-Testbild-Generator


von Ralf G. (old-school) Benutzerseite


Lesenswert?

Hallo zusammen,

ich möchte hier mein Projekt PAL-Testbild-Generator vorstellen.

http://www.greinert-dud.de

Es handelt sich um eine einfache Schaltung ohne uP, mit der es
möglich ist eigene Testbilder (BMP-File) als FBAS darzustellen.

es können verschiedene Auflösungen über eine Software generiert werden 
z.B.
624x576 oder 520x576 bei einer Farbtiefe von 21 Bit (3x7)

Das Testbild wird über die LPT in den Speicher geladen.
Der PC-Adapter verhält sich dabei wie ein alter Drucker und ist so OS 
unabhängig.

Das Problem mit der Laufzeitanpassung beim TDA8501 werde ich in den 
nächsten Tagen wohl behoben haben. Ich habe hier im Forum jemanden 
gefunden der noch passive Verzögerungsleitungen liegen hat.

schaut es euch einfach mal an ...

R.Greinert

von Gerd B. (Gast)


Lesenswert?

Hallo Ralf,
Das ist meine Version:
ich habs mit Eporoms gemacht:

http://www.silicat.de/upload1.html

Gruß, Gerd

von friend-of-rq (Gast)


Lesenswert?

Hallo Gerd

Farbbild ?

Du hast doch nur eine DAC der auch die Syncs noch erzeugen muss ...

1Vss = 0,7Vss Video + 0,3V Sync macht bei 7Bit 90 Graustufen

wie soll denn da die Farbe entstehen ?

wie kommst Du denn auf die Auflösung von 680 bei 13,1 (2x6,55) MHz

576 Zeilen a 64 uS  bei 13,1 MHz ergitb 909,7 Byte/Bit pro Zeile
bei 52uS Bildanteil ist das aber 739 x 576

bei 680 Pixel benötigt man 837 Byte/Bit pro Zeile
x 576 Zeilen = 482.067 Byte * 25 Hz ergibt eine Taktrate von 12.052 MHz

Wie hast Du denn das geschaft aus den EProms mit 100nS Zugriffszeit
die Daten zu bekommen

 1/6,55 MHz  = 152 nS /2 = 76 nS

alle 152 nS wir eine neue Adresse an beide Eproms gelegt,
der eine Latch übernimmt sofort der andere nach 76nS und das geht

Ich musste bei meiner Schalung wo die SRAMs 55nS Zugriff haben,
schon die Übernahme mit Laufzeit-gattern verzögern, damit ich saubere 
Daten erhalten habe.


Gruss
Ralf

von Benedikt K. (benedikt)


Lesenswert?

friend-of-rq wrote:

> Farbbild ?
>
> Du hast doch nur eine DAC der auch die Syncs noch erzeugen muss ...
>
> 1Vss = 0,7Vss Video + 0,3V Sync macht bei 7Bit 90 Graustufen
>
> wie soll denn da die Farbe entstehen ?

Ganz einfach: Er erzeugt direkt das FBAS Signal. Das habe ich auch 
schonmal probiert, bin aber an der Software gescheitert die BMP->FBAS 
Binärdaten macht. Am Ende habe ich dann ein Bild über den TV Ausgang der 
Grafikkarte ausgegeben, das Signal mit 13,1MHz aufgezeichnet und in 
einen 512k Flash gebrannt. Funktioniert wunderbar.
Abgesehen von dem Adresszähler (dafür habe ich einen kleinen CPLD 
verwendet), sieht der Rest meiner Schaltung genauso aus wie die von 
Gerd.

@Gerd B.
Besteht die Möglichkeit deine Software zur Erzeugung der Binärdaten, 
bzw. den Quellcode davon zu bekommen?

von Gerd B. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Ralf

>Farbbild ?
ja

>1Vss = 0,7Vss Video + 0,3V Sync macht bei 7Bit 90 Graustufen
ja - Ich benutze nur 7 Bit. das 8. Wird für Sound benutzt.
Das Auge kann eh nur 64 Graustufen unterschieden.
Im Anhang ein Bild, das auf 64 Stufen (6Bit) reduziert wurde.

>wie soll denn da die Farbe entstehen ?
Ich erzeuge das Signal im Zeitbereich. Also incl. Quadaturmodulation der 
Farbe

>wie kommst Du denn auf die Auflösung von 680 bei 13,1 (2x6,55) MHz
>576 Zeilen a 64 uS  bei 13,1 MHz ergitb 909,7 Byte/Bit pro Zeile
>bei 52uS Bildanteil ist das aber 739 x 576
>bei 680 Pixel benötigt man 837 Byte/Bit pro Zeile
>x 576 Zeilen = 482.067 Byte * 25 Hz ergibt eine Taktrate von 12.052 MHz

52µs*13.1MHz=680


>Wie hast Du denn das geschaft aus den EProms mit 100nS Zugriffszeit
>die Daten zu bekommen
>1/6,55 MHz  = 152 nS /2 = 76 nS
>alle 152 nS wir eine neue Adresse an beide Eproms gelegt,
>der eine Latch übernimmt sofort der andere nach 76nS und das geht

Die beiden Eproms werden phasenversetzt angesteuert. Jedes Eprom sieht 
nur 6.5MHz.
Die nachgeschalteten Latches übernehmen dann die Daten.

Gruß, Gerd

von Gerd B. (Gast)


Lesenswert?

Hallo Benedikt.
Ja - im Prinzip ist die Software kein Geheimnis. Ich habe Sie nur 
"damals" vor 15 Jahren geschrieben. In Turbo Pascal. Ich glaube, 
Kommentare gabs 1994 noch keine ;)

Müsste mal schaun, ob ich das noch finde.

Gerd

von friend-of-rq (Gast)


Lesenswert?

Hallo

für das Farbträgersignal benötig man doch ein Frequenz von 4,43361875

dieses Signal wir je nach Farbe bis zu 360* Phasenverschoben.

bei 13,1 MHz habe ich aber nur 3 Byte je Periode um die 
Farbträgeramplitude zu simulieren und somit nur 3 mögliche Farben (120*) 
... oder ?

genau so muss auch das Trägersignal in jeder 2 Zeile um 180* gespiegelt 
sein.

reichen denn drei Byte aus um ein Sinus-Farbträgersignal richtig zu 
simulieren ?
sollte die (Abtastfequenz) nicht wesendlich höher sein um das komplette 
Farbspektrum (Quadraturamplitudenmodulation) darzustellen ?

http://de.wikipedia.org/wiki/Quadraturamplitudenmodulation

warum mache ich mir dann die Mühe mit 3 Dacs + Encoder ... wenn das so 
einfach zu realisieren ist (Harware) ... Software ist da doch etwas 
koplizierter

von friend-of-rq (Gast)


Lesenswert?

Hallo Gerd,

>Die beiden Eproms werden phasenversetzt angesteuert. Jedes Eprom sieht nur 
6.5MHz.
>Die nachgeschalteten Latches übernehmen dann die Daten.

muss ich im Schaltplan übersehen haben ...

> 52µs*13.1MHz=680

stimmt :-)

warum habe ich deine Schaltung nicht schon viel früher gesehen ... habe 
doch so lange im WEB gesucht ... hätte mir eine menge Arbeit sparen 
können,
um das Rad viel zu kompliziert neu zu erfinden ...

Gruss Ralf

von Benedikt K. (benedikt)


Lesenswert?

friend-of-rq wrote:
> bei 13,1 MHz habe ich aber nur 3 Byte je Periode um die
> Farbträgeramplitude zu simulieren und somit nur 3 mögliche Farben (120*)
> ... oder ?

Man darf das Signal nicht nur über so einen kurzen Abstand betrachten. 
Über einen unendlich langen Zeitraum betrachtet, reichen sogar ein ganz 
klein wenig mehr als die doppelte Signalfrequenz aus um nahezu beliebige 
Phasenlagen zu erzeugen.
Die Samplerate muss lediglich ausreichen hoch sein, um die Bandbreite 
der beiden AM modulierten Quadratursignale abdecken zu können. Und da 
ein FBas Signal nur etwa 5,5MHz Bandbreite hat, reichen die 13,x MHz 
aus.

> sollte die (Abtastfequenz) nicht wesendlich höher sein um das komplette
> Farbspektrum (Quadraturamplitudenmodulation) darzustellen ?

13,5MHz ist afaik sogar irgendein Standard für digitale Bildsignale. Die 
meisten ICs die ich jetzt gefunden habe, arbeiten allerdings mit 27MHz 
um YUV->FBAS oder FBAS->YUV zu machen. Ich kann mich aber glaube ich an 
ein IC erinnern das wirklich nur 13,5MHz Samplerate hatte.

> warum mache ich mir dann die Mühe mit 3 Dacs + Encoder ...

Deine Lösung verlagert den Aufwand auf die Hardware, die andere eben auf 
die Software.
Es gibt übrigends auch einen Zwischenweg den ich momentan verfolge: 
Sowas wie einen BT865: Dieses IC macht aus YUV Daten die es per 16 oder 
8bit Bus mit 13,5MHz bzw. 27MHz bekommt RGB, S-Video und FBas. Und es 
erzeugt alle Timingsignale selbst. Theoretische sollte ein Speicher + 
Adresszähler als Zusatzbeschaltung ausreichen.

von Gerd B. (Gast)


Lesenswert?

Bendedikt:
ich hatte damals zuerst eine Art "Software-Scope" gemacht, das die 
EEprom Daten "visualisierte". Und erst dann habe ich die Software 
geschrieben, die ein BMP in EEprom Daten konvertiert.

Gerd B.

von friend-of-rq (Gast)


Lesenswert?

hallo Benedikt,

ich habe gerade mal mir den BT865A angesehen ...

hat auch einen I2C Anschluss ... garantier für die Initalisierung.

Ich werde mir die Schaltung von Berd noch mal durch den Kopf gehen 
lassen,
ist ja genial einfach, meine Software würde ich dann entsprechend 
anpassen müssen.

Würde nur weiterhin meine SRams verwenden, zum probieren doch schnelle 
als ein Prommer ... 1x SRAM, 1xDAC, Zähler, Latch etwas verzögern ... 
ist ja schön klein ...


@Gerd

Gibt es denn eine Formel wie ich aus einem RGB den Phasenwinken und die 
Amplitude bekomme ?

>Die beiden Eproms werden phasenversetzt angesteuert. Jedes Eprom sieht nur
ich kann aber in deinem Schaltplan nicht erkennen wo Du die EPROMS 
selectiv ansteuerst, nur Latches bekommen das phasenversetzte Taktsignal 
?

hat das einen Grund das du HC590 genommen hast ? syncron/asyncron

von Benedikt K. (benedikt)


Lesenswert?

friend-of-rq wrote:
> ich habe gerade mal mir den BT865A angesehen ...
>
> hat auch einen I2C Anschluss ... garantier für die Initalisierung.

Ja, da kann man den Modus (NTSC, PAL usw.) einstellen und noch viel 
mehr.
Es gibt da eine ganze Menge ICs, den BTA865 hatte ich zur zufällig aus 
einem alten DVD Player geschlachtet.
Das einzig wirklich schlechte an dem ist die Stromaufnahme. Das Teil 
wird über 60°C heiß...

> Gibt es denn eine Formel wie ich aus einem RGB den Phasenwinken und die
> Amplitude bekomme ?

Ja, über YUV:
http://de.wikipedia.org/wiki/YUV

Jetzt brauchst du nur noch Sinus und Cosinus mit 4,33MHz der jeweils mit 
U bzw. V Amplituden moduliert werden muss und fertig ist das Signal 
(mehr oder weniger, man muss die Phase noch passend zum Burst machen, in 
jeder Zeile invertieren usw.) Genau an diesen Details ist meine Software 
gescheitert, ein paar Zeilen habe ich farbig bekommen, beim Rest ist die 
Farbe weggelaufen.

von friend-of-rq (Gast)


Lesenswert?

Besten Dank erstmal für die lehreichen Informationen

Gruss
R.Greinert

von Gerd B. (Gast)


Lesenswert?

>Genau an diesen Details ist meine Software gescheitert
Ich bin damals fast gescheitert, weil ich dachte, ein Farbbild 
wiederholt sich nach 2 Halbbildern. Ein FARBbild wiederholt sich aber 
erst nach 4 !!

Deswegen hatte sich am Anfang der Fernseher auch immer zwischen Farbe 
und Schwarzweiss umgeschaltet.

Gerd B.

von Benedikt K. (benedikt)


Lesenswert?

Gerd B. wrote:
>>Genau an diesen Details ist meine Software gescheitert
> Ich bin damals fast gescheitert, weil ich dachte, ein Farbbild
> wiederholt sich nach 2 Halbbildern. Ein FARBbild wiederholt sich aber
> erst nach 4 !!

Interessant, das könnte erklären wieso ich Probleme hatte.

> Deswegen hatte sich am Anfang der Fernseher auch immer zwischen Farbe
> und Schwarzweiss umgeschaltet.

Kommt mir bekannt vor...

Interessant ist jedoch, dass es mit dem aufgezeichneten Vollbild 
funktioniert. Das besteht auch nur aus 2 Halbbildern.

von friend-of-rq (Gast)


Lesenswert?

@Gerd B.

> Ich bin damals fast gescheitert, weil ich dachte, ein Farbbild
> wiederholt sich nach 2 Halbbildern. Ein FARBbild wiederholt sich aber
> erst nach 4 !!


hast Du in deinen EProms jetzt 2 Teilbilder oder 4 gespeichert ?

wie ist das mit der Laufzeitanpassung zwischen sw und den Farbsignal ?

von Gerd B. (Gast)


Lesenswert?

@Ralf
4 Halbbilder.

2x4MBit Eproms für 1 Testbild oder
2x8MBit Eproms für 2 umschaltbare Testbilder

Was meinst Du mit Laufzeitanpassung ?
Ich habe sowas nicht drin. Braucht man wahrscheinlich nicht, da das 
Signal digital erzeugt wird.

Gerd

von Gerd B. (Gast)


Lesenswert?

Hier der Quellcode.

http://www.silicat.de/upload/BMP2PAL.PAS
(ist 1 File zu 34kB)

Hier wird das Farbbild erzeugt:
Zeile 418-470 in "PROCEDURE modulieren" werden die Y, R-Y und B-Y 
Komponenten im Zeitbereich zusammengesetzt.


Gerd

von friend-of-rq (Gast)


Lesenswert?

>Was meinst Du mit Laufzeitanpassung ?
>Ich habe sowas nicht drin. Braucht man wahrscheinlich nicht, da das
>Signal digital erzeugt wird.

bei meiner Schaltung habe ich den TDA8501 als encoder verwendet,
der benötigt eine externe Delay-Line um die Laufzeiten zwischen den
sw Signal und Farbsignal anzupassen, bei den neueren Encodern ist die 
meistens schon drin.

Pal Verzögerungsleitung

habe ich heute bekommen und eingebaut jetzt funktioniert es gut
aber noch nicht sehr gut, die Farbabgrenzungen zu den Nachbarfeldern 
sind noch zu unsauber (leicht verwaschen) desweiteren habe ich in 
einigen Bereichen noch Pixelfehler, lieg wohl an meine Zähler HC393 
hätte HC590 wie Du für die unteren Bits nehmen sollen.

Dein Testbild auf deiner Seite ist das die Vorlage oder das mit deiner 
Schaltung erzeugte Bild (Screenshot)


>4 Halbbilder.
>2x4MBit Eproms für 1 Testbild oder
>2x8MBit Eproms für 2 umschaltbare Testbilder

wie unterscheidet sich den die Teilbilder 1/3 und 2/4 ?

13,1 MHz ist ja optimal fast genau 512kByte (511k) Speicherbelegung,

ich glaube ich muss erstmal bei Reich.... bestellen...
so einen krummen Quarz habe ich bestimmt nicht liegen ... doch 6552.00

13.104.000 Hz = 524375 Byte leider 87 Byte zuviel ... :-(
mache ich jede Zeile ein Byte kürzer ... passt schon ...

von Benedikt K. (benedikt)


Lesenswert?

friend-of-rq wrote:

> so einen krummen Quarz habe ich bestimmt nicht liegen ... doch 6552.00

Ja, habe ich damals auch lange gesucht. Am Ende ist bei mir ein LC 
Oszillator draus geworden, den kann man schön auf den genauen Wert 
abstimmen.

Mittlerweile sind aber auch kundenspezifische Quarze sehr günstig 
geworden.


@Gerd B.
Danke für dir Software! Ich werde in den nächsten Wochen wenn ich mal 
dazu komme hoffentlich damit den Fehler in meiner Software finden.
Vieles sieht auf den ersten Blick sehr ähnlich aus (ist ja auch klar, es 
gibt nicht viele Wege ein FBas Signal zu erzeugen).

von friend-of-rq (Gast)


Lesenswert?

Dein Code werde ich mir nachher mal in ruhe ansehen,

schreibe selber in RQ ist für mich am einfachsten

Gruss
Ralf

von Gerd B. (Gast)


Lesenswert?

524375 Byte leider 87 Byte zuviel ... :-(

Ich hab das 7. Bit, um den Zähler ein kleines Stück vor dem Überlauf 
schon zurückzusetzen. Deswegen gehts mit nem "normalen" 
Quarz(oszillator)

von friend-of-rq (Gast)


Lesenswert?

Das habe ich genau so gemacht,

aber ich meinte bei 13.104.000 Hz benötigt man 524375 Byte ein 
512KROM/RAM
hat aber nur 524288 Bytes also 87 zu wenig um bei dieser Frequenz die 
Zeiten z.B. 64us genau einzuhalten

es passt alles irgend wie nicht so recht ...

bei 13.104.000 Hz
und   838 Byte pro Zeile x 625 = 523759 Byte = 63,95  uS = 15637 Hz
oder  839 Byte pro Zeile x 625 = 524375 Byte = 64,026 uS = 15619 Hz

die Zeilen-Frequenz (15625 Hz) darf nur um 0.0001% abweichen,
das ist nur 1,56 Hz , da ist nicht viel Spielraum

wenn es also ganz genau sein soll:

bei einer Auflösung 680 Pixel (52 uS) braucht man 837 Byte pro Zeile,
837 x 625 = 522500 Byte Speicher (512k reicht)
15625 x 837 = 13.078.125 Hz / 2 = 6.539.062,5 Hz

bei einer Auflösung 702 Pixel (52 uS) braucht man 864 Byte pro Zeile,
864 x 625 = 540000 Byte Speicher (über 512k) und einen Takt von 13,5 MHz 
genau.

schade bei 13,5 MHz fehlen sogar 15712 Byte, währe eine super
Auflösung 702x576 aber extra deswegen ein zweiten RAM anfangen.

und dann noch den Farbträger von 4,43361875 Hz da irgenwie richtig rein 
zu bekommen.

ich habe gerade mal reich... geschaut die haben nur 6,5536 MHz Quarze
13,1072 MHz / 837 = 15659,7 Hz
13,1072 MHz / 838 = 15641 Hz
13,1072 MHz / 839 = 15622 Hz kommt der Norm am nächsten / passt nur 
nicht ins RAM
13,1072 MHz / 15625 = 838,86 Byte pro Zeile

bei 6MHz x 2 =12 MHz  ergibt sich eine Auflösung von 624x576 und somit
768 Pixel pro Zeile * 576 = 442368 Byte Speicher
12,0 MHz / 768 = 15625 Hz passt genau
12,0 MHz / 4,4336 = 2,72  sollte noch gehen (>2)

von Benedikt K. (benedikt)


Lesenswert?

Ich würde 13,1072MHz verwenden. Bei 524288 Werten ist ein Vollbild exakt 
25,0000Hz lang. Verwendet man einen ordentlichen Antialiasing Filter 
hinter dem DAC ist es vollkommen egal, ob das Signal mit 12MHz 
13,1072MHz oder sonst was abgetastet wurde, denn die diskreten 
Samplewerte werden zu einem kontinuierlichen Signal verwaschen.
Wenn man den Sync Puls etwas verformt (die Übergänge nicht nur mit 
digitalen Werten füllt, sondern auch Zwischenwerten), dann kann man 
problemlos auch Timingwerte zwischen den Samples treffen.

von friend-of-rq (Gast)


Lesenswert?

13.107.200 Hz / 524288 Byte = 25 Hz stimmt genau

524288 Byte / 625 Zeilen = 838,861  = 76,3 nS pro Byte
man genötigt keinen Reset für den Zähler und hätte die vollen 8Bit für 
den DAC,
aber ist nur so schlecht auf die 625 Zeilen aufzuteilen
538 Zeilen mit 939 Byte
87 Zeilen mit 838 Byte
also ca jede 7 Zeile 838 Byte sonst 839 Byte/Zeile bei 76,3 nS ist das 
jeweils eine Abweichung von 0,0012%

Berd sagte man muss 4 Teilbilder abspeichern
vieleicht wegen der 180* gespiegelten modulation in jeder zweiten Zeile 
?

von Gerd B. (Gast)


Lesenswert?

>Berd ...

Gerd B. !
> ... sagte man muss 4 Teilbilder abspeichern
>vieleicht wegen der 180* gespiegelten modulation in jeder zweiten Zeile
>?

Die Phase des PAL Farbsignals wird ja in jeder Zeile umgeschaltet.
(Das ist der Clou bei PAL)

Nach 2 Halbbildern sind 625 Zeilen vergangen. Die Phase ist also gerade 
anders, als 2 Halbbilder vorher.

Eine Phasenverschiebung macht nichts aus, diese wird immer wieder 
synchronisiert.
Aber hier wird das "Phasentoggleauswertgedöns" im Empfänger (TV- Gerät) 
durcheinander gebracht.

Berd G.

von Benedikt K. (benedikt)


Lesenswert?

friend-of-rq wrote:
> aber ist nur so schlecht auf die 625 Zeilen aufzuteilen
> 538 Zeilen mit 939 Byte
> 87 Zeilen mit 838 Byte
> also ca jede 7 Zeile 838 Byte sonst 839 Byte/Zeile bei 76,3 nS ist das
> jeweils eine Abweichung von 0,0012%

Wieso? Wie ich oben sagte: Du darfst das ganze nicht als einzelne 
diskrete Werte betrachten. Am Ende kommt eine analoges Signal raus, da 
gibt es keine 838/839 Byte pro Zeile, sondern eine kontinuierliche 
Kurvenform.
Ein CD Player kann auch 15kHz abspielen, obwohl 15kHz nicht ganzzahlig 
in 44,1kHz passt.

von friend-of-rq (Gast)


Lesenswert?

>>Berd ...
>Gerd B. !

Sorry ich meinte natürlich "Gerd" ...
habe die Wechstaben ein wenig verbuchselt

> Am Ende kommt eine analoges Signal raus

mache mir nur eben gedanken darüber ... nicht das es nacher nicht geht 
wegen ein Byte was man untern Tisch hat fallen lassen.

Ich brauche nur ein absulutes Normgerechtes PAL-Signal zum testen von
Videokomponenten und da reicht mir nicht fast PAL,
ich muss mich darauf verlassen können.

Ich möchte wissen was Videokomponenten z.B. Farbmultiplexer / 
VGA-Konverter / u.s.w so wirklich können, in den Datenblättern wird 
häufig mit FBAS (576 Zeilen) geworben, nur welcher Kunde prüft das 
wirklich,
wie viel Zeilen wirklich dargestellt werden !

z.B. mein Plasma-TV lässt oben und unten einige Zeilen einfach weg,
links und recht wird auch nicht alles dargestellt.
Wobei mein einfacher USB-Video-Grabber und mein alter Bernstein-Monitor 
das Testbild richtig und komplett darstellt.

Gruss
Ralf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.