KC85/4 dual VGA
- PIC18F2550
- Beiträge: 2851
- Registriert: Fr 30. Sep 2011, 13:08
KC85/4 dual VGA
Hi,
der KC85/4 unterstützt zwei Bildschirmseiten.
Daher habe ich ein Modul geschaffen das beide gleichzeitig anzeigt, Wie bei einem PC mit zwei Monitore.
Ich habe mal die Eckdaten mit angehangen
Adresszuordnung im IRM (Grafik und Video-RAM)
Mit Hilfe der folgenden Formeln kann man die Speicherzellen, die die Informationen zur Darstellung eines beliebigen Bildpunktes enthalten, ermitteln.
Die Bildinformationen sind im IRM nach folgendem Prinzip abgelegt:
Je 8 horizontal nebeneinander liegende Bildpunkte sind im Pixel-RAM als 1 Byte abgespeichert.
Dieses Byte enthält nur die Vordergrund-Hintergrundinformation der Bildpunkte.
Die Farbinformation ist für jeweils 1 Reihe von 8 Bildpunkten zu einem Byte im COLOR-RAM zusammen gefaßt.
Dieses Byte legt also für 8 Bildpunkte eine Vorder- und eine Hintergrundfarbe fest.
Um das Farb- und das Pixelbyte eines Bildpunktes zu bestimmen, werden die Pixelzeilennummer und die Zeichenspaltennummer, in der sich der Punkt
befindet, hexadezimal verwendet.
Mit der folgenden Formel kann man die Pixel-Byte-Adresse (hRAM) errechnen:
Adresse = 0H + Zeichenspalte * 100H + Pixelzeile
0 =< Zeichenspalte =< 27H
0 =< Pixelzeile =< 0FFH
Mit der folgenden Formel kann man die Farb-Byte-Adresse (hRAM) errechnen:
Adresse = 4000H + Zeichenspalte * 100H + Pixelzeile
0 =< Zeichenspalte =< 27H
0 =< Pixelzeile =< 0FFH
der KC85/4 unterstützt zwei Bildschirmseiten.
Daher habe ich ein Modul geschaffen das beide gleichzeitig anzeigt, Wie bei einem PC mit zwei Monitore.
Ich habe mal die Eckdaten mit angehangen
Adresszuordnung im IRM (Grafik und Video-RAM)
Mit Hilfe der folgenden Formeln kann man die Speicherzellen, die die Informationen zur Darstellung eines beliebigen Bildpunktes enthalten, ermitteln.
Die Bildinformationen sind im IRM nach folgendem Prinzip abgelegt:
Je 8 horizontal nebeneinander liegende Bildpunkte sind im Pixel-RAM als 1 Byte abgespeichert.
Dieses Byte enthält nur die Vordergrund-Hintergrundinformation der Bildpunkte.
Die Farbinformation ist für jeweils 1 Reihe von 8 Bildpunkten zu einem Byte im COLOR-RAM zusammen gefaßt.
Dieses Byte legt also für 8 Bildpunkte eine Vorder- und eine Hintergrundfarbe fest.
Um das Farb- und das Pixelbyte eines Bildpunktes zu bestimmen, werden die Pixelzeilennummer und die Zeichenspaltennummer, in der sich der Punkt
befindet, hexadezimal verwendet.
Mit der folgenden Formel kann man die Pixel-Byte-Adresse (hRAM) errechnen:
Adresse = 0H + Zeichenspalte * 100H + Pixelzeile
0 =< Zeichenspalte =< 27H
0 =< Pixelzeile =< 0FFH
Mit der folgenden Formel kann man die Farb-Byte-Adresse (hRAM) errechnen:
Adresse = 4000H + Zeichenspalte * 100H + Pixelzeile
0 =< Zeichenspalte =< 27H
0 =< Pixelzeile =< 0FFH
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2851
- Registriert: Fr 30. Sep 2011, 13:08
Re: KC85/4 dual VGA
Jetzt erst ein mal ist jetzt der CPLD dran.
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2851
- Registriert: Fr 30. Sep 2011, 13:08
Re: KC85/4 dual VGA
Muss ich nächstes Wochenende Testen.
Code: Alles auswählen
;---------------------------------- Declaration Segment ------------
TITLE M122 VGA-Modul für KC85/4/5
PATTERN 0
REVISION 0
AUTHOR PIC18F2550
COMPANY KC-Klub 2019
DATE 20/01/2019
CHIP M122 MACH111
;---------------------------------- PIN Declarations --------------
PIN 1 GND
PIN 2 AB00
PIN 3 AB01
PIN 4 AB02
PIN 5 AB03
PIN 6 AB04
PIN 7 AB05
PIN 8 AB06
PIN 9 AB07
PIN 10 AB08
PIN 11 AB09
PIN 12 GND
PIN 13 AB14
PIN 14 AB15
PIN 15 DB00
PIN 16 DB01
PIN 17 DB02
PIN 18 DB03
PIN 19 DB07
PIN 20 RST
PIN 21 IORQ
PIN 22 Vcc
PIN 23 GND
PIN 24 MERQ
PIN 25 WR
PIN 26 MAD
PIN 27 IRM1 ; Ausgang
PIN 28 IRM2 ; Ausgang
PIN 29 PC ; Ausgang
PIN 30 BLK ; Ausgang
PIN 31 LED
;PIN 32
;PIN 33 CLK
PIN 34 GND
;PIN 35
PIN 36 VMUX ; Ausgang Umschaltung Videomultiplexer
PIN 37 VHFA ; Ausgang Umschaltung Videomode
;PIN 38
;PIN 39
;PIN 40
;PIN 41
;PIN 42
;PIN 43
PIN 44 Vcc ; Ausgang
NODE ? IRM ;Pio Port A (88h) bit 2
NODE ? cIRM ;Clock für Port A
NODE ? BLI ;Pio Port B (89h) bit 7
NODE ? cBLI ;Clock für Port b
NODE ? D01 ;Kanal (84h) bit 0 Anzeige Bild 0 oder 1
NODE ? WPC ;Kanal (84h) bit 1 schreiben auf Pixel=0 oder Farbe=1
NODE ? W01 ;Kanal (84h) bit 2 schreiben auf Bild0 oder 1
NODE ? HFA ;Kanal (84h) bit 3 hohe Farbauflösung
NODE ? cKAN ;Clock für Kanal84
;--------------------------------------------------------------------------
EQUATIONS
;--------------------------------------------------------------------------
; Taktgenerierung für Merker
cIRM = /MAD * /IORQ * /WR * /AB09 * /AB08 * AB07 * /AB06 * /AB05 * /AB04 * AB03 * /AB02 * /AB01 * /AB00
cBLI = /MAD * /IORQ * /WR * /AB09 * /AB08 * AB07 * /AB06 * /AB05 * /AB04 * AB03 * /AB02 * /AB01 * AB00
cKAN = /MAD * /IORQ * /WR * /AB09 * /AB08 * AB07 * /AB06 * /AB05 * /AB04 * /AB03 * AB02 * /AB01 * /AB00
;--------------------------------------------------------------------------
; Portnachbildung
Minimize_off
IRM = DB02 * cIRM * RST
+ IRM * /cIRM * RST
BLI = DB07 * cBLI * RST
+ BLI * /cBLI * RST
D01 = DB00 * cKAN * RST
+ D01 * /cKAN * RST
WPC = DB01 * cKAN * RST
+ WPC * /cKAN * RST
W01 = DB02 * cKAN * RST
+ W01 * /cKAN * RST
HFA = DB03 * cKAN * RST
+ HFA * /cKAN * RST
Minimize_on
;--------------------------------------------------------------------------
; Modulanzeige
LED = IRM
;--------------------------------------------------------------------------
; Statusbildung für Propeller (noch offen)
BLK = BLI
VMUX = D01
PC = WPC
IRM1 = IRM * /W01 * /MERQ * /WR * /AB14 * AB15
IRM2 = IRM * W01 * /MERQ * /WR * /AB14 * AB15
VHFA = HFA
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2851
- Registriert: Fr 30. Sep 2011, 13:08
Re: KC85/4 dual VGA
Irgend wo im MACH Code ist ein Fehler nur wo.
Das Teil hat mich schon die 3. Woche im Würgegriff.
Kuroneko hat inzwischen schon den VGA Treiber gebaut.
Einfach nur Frustrierend.
Nächste Woche packe ich mein Auto mit meinen ganzen Bastelkram zu.
Solangsam bekomme ich vom dauernden fehlen von Arbeitsmitteln einen dicken Hals.
Das Teil hat mich schon die 3. Woche im Würgegriff.
Kuroneko hat inzwischen schon den VGA Treiber gebaut.
Einfach nur Frustrierend.
Nächste Woche packe ich mein Auto mit meinen ganzen Bastelkram zu.
Solangsam bekomme ich vom dauernden fehlen von Arbeitsmitteln einen dicken Hals.
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2851
- Registriert: Fr 30. Sep 2011, 13:08
Re: KC85/4 dual VGA
So gleich mal den Chipbrutzler angeworfen und was neues gehackt.
Dieses mal habe ich mich von meiner alten GAL16V8 Vorlage vom KC85/3 getrennt
und bin auf die internen D-FF umgestiegen.
Der Dateneingang des D-FF wird mit zwei Varianten versorgt die erste ist das
einlesen des Datenbits bei entsprechender Merkergültigkeit.
Oder bei fehlen der Merkergültigkeit einfach das Rücklesen seines eigenen Wertes.
Die Bits werden am Ende von /IORQ mit der L/H Flanke übernommen.
Morgen geht es ans Testen.
Dieses mal habe ich mich von meiner alten GAL16V8 Vorlage vom KC85/3 getrennt
und bin auf die internen D-FF umgestiegen.
Der Dateneingang des D-FF wird mit zwei Varianten versorgt die erste ist das
einlesen des Datenbits bei entsprechender Merkergültigkeit.
Oder bei fehlen der Merkergültigkeit einfach das Rücklesen seines eigenen Wertes.
Die Bits werden am Ende von /IORQ mit der L/H Flanke übernommen.
Code: Alles auswählen
;---------------------------------- Declaration Segment ------------
TITLE M122 Doppel-VGA-Modul fr KC85/4/5
PATTERN 0
REVISION 1
AUTHOR PIC18F2550
COMPANY KC-Klub 2019
DATE 01/02/2019
CHIP M122_0_1 MACH111
;---------------------------------- PIN Declarations --------------
PIN 1 GND
PIN 2 AB00
PIN 3 AB01
PIN 4 AB02
PIN 5 AB03
PIN 6 AB04
PIN 7 AB05
PIN 8 AB06
PIN 9 AB07
;PIN 10 AB08 ;kein Modulsteuerword
;PIN 11 AB09 ;kein Modulsteuerword
PIN 12 GND
PIN 13 AB14
PIN 14 AB15
PIN 15 DB00
PIN 16 DB01
PIN 17 DB02
PIN 18 DB03
PIN 19 DB07
PIN 20 RST
;PIN 21 IORQ umlegen auf CLK pin 21
PIN 22 Vcc
PIN 23 GND
PIN 24 MERQ
PIN 25 WR
;PIN 26 MAD ;kein Modulsteuerword
PIN 27 IRM1 ; Ausgang
PIN 28 IRM2 ; Ausgang
PIN 29 PC ; Ausgang
PIN 30 BLK ; Ausgang
PIN 31 LED
;PIN 32
PIN 33 CLK ; =pin 21 IORQ
PIN 34 GND
;PIN 35
PIN 36 VMUX ; Ausgang Umschaltung Videomultiplexer
PIN 37 VHFA ; Ausgang Umschaltung Videomode
;PIN 38
;PIN 39
;PIN 40
;PIN 41
;PIN 42
;PIN 43
PIN 44 Vcc ; Ausgang
NODE ? IRM ;Pio Port A (88h) bit 2
NODE ? cIRM ;Clock fr Port A
NODE ? BLI ;Pio Port B (89h) bit 7
NODE ? cBLI ;Clock fr Port b
NODE ? D01 ;Kanal (84h) bit 0 Anzeige Bild 0 oder 1
NODE ? WPF ;Kanal (84h) bit 1 schreiben auf Pixel=0 oder Farbe=1
NODE ? W01 ;Kanal (84h) bit 2 schreiben auf Bild0 oder 1
NODE ? HFA ;Kanal (84h) bit 3 hohe Farbauflsung
NODE ? cKAN ;Clock fr Kanal84
;--------------------------------------------------------------------------
EQUATIONS
;--------------------------------------------------------------------------
; Merker
cIRM = /WR * AB07 * /AB06 * /AB05 * /AB04 * AB03 * /AB02 * /AB01 * /AB00
cBLI = /WR * AB07 * /AB06 * /AB05 * /AB04 * AB03 * /AB02 * /AB01 * AB00
cKAN = /WR * AB07 * /AB06 * /AB05 * /AB04 * /AB03 * AB02 * /AB01 * /AB00
;/IORQ=>CLK entscheident ist die L/H Flanke da die Daten hier stabiel sind.
;--------------------------------------------------------------------------
; Portnachbildung mit D-FF
IRM.CLKF=CLK
IRM.RSTF=RST
IRM := DB02 * cIRM
+ IRM * /cIRM
BLI.CLKF=CLK
BLI.RSTF=RST
BLI := DB07 * cBLI
+ BLI * /cBLI
D01.CLKF=CLK
D01.RSTF=RST
D01 := DB00 * cKAN
+ D01 * /cKAN
WPF.CLKF=CLK
WPF.RSTF=RST
WPF := DB01 * cKAN
+ WPF * /cKAN
W01.CLKF=CLK
W01.RSTF=RST
W01 := DB02 * cKAN
+ W01 * /cKAN
HFA.CLKF=CLK
HFA.RSTF=RST
HFA := DB03 * cKAN
+ HFA * /cKAN
;--------------------------------------------------------------------------
; Modulanzeige
LED = IRM
;--------------------------------------------------------------------------
; Signalbildung fr P8x32a
BLK = BLI
VMUX = D01
PC = WPF
IRM1 = IRM * /W01 * /MERQ * /WR * /AB14 * AB15
IRM2 = IRM * W01 * /MERQ * /WR * /AB14 * AB15
VHFA = HFA
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2851
- Registriert: Fr 30. Sep 2011, 13:08
Re: KC85/4 dual VGA
Beide seiten sind HW mäßig IO. Neuer Treiber auf Demo Bord.
Warum er auf meinen neuen nicht will weiß ich zur Zeit auch nicht.
Werde mal die Blockkondensatoren auf verdacht tauschen.
Sonnst fällt mir nichts weiter dazu ein.
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2851
- Registriert: Fr 30. Sep 2011, 13:08
Re: KC85/4 dual VGA
Mit reichlich C an den Anschlüssen konnte ich einen überreden mit den neuen Treiber ein Bild aus zu geben.
von 2x 100nF auf 2x470nF erhöt.
Das Timing der Video PLL könnte eventuell etwas zu knapp sein vermute ich.
von 2x 100nF auf 2x470nF erhöt.
Das Timing der Video PLL könnte eventuell etwas zu knapp sein vermute ich.
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Re: KC85/4 dual VGA
Ist das gleiche wie beim "alten". Der einzige Unterschied ist jetzt, dass zwei cogs werkeln (bei mir auf dem Quickstart+HIB getested).PIC18F2550 hat geschrieben:Das Timing der Video PLL könnte eventuell etwas zu knapp sein vermute ich.
Wenn die nicht stimmen kriegst Du Probleme (die Diskussion hatten wir bei der Neu-Auflage des Hives auch, deshalb hab ich auch immer noch keinen).PIC18F2550 hat geschrieben:Werde mal die Blockkondensatoren auf verdacht tauschen.
- PIC18F2550
- Beiträge: 2851
- Registriert: Fr 30. Sep 2011, 13:08
Re: KC85/4 dual VGA
Das Teil treibt einen in den Wahnsinn.
Auch der Alte Treiber läuft nicht sauber.
Zeitweise gibt es Bildausfälle besonders wenn der KC Daten sendet.
Gerade der Prop der die Muxer Steuert spinnt damit lässt sich nichts Testen.
Die Muxer habe ich auch schon getauscht hat auch nichts gebracht.
Das Tauschen und aufrüsten der Blockkondensatoren hat beim 1. Prob nichts gebracht keine Besserung in Sicht.
Werde morgen den 1. Prop Totlegen und die Muxersteuerung auf dem 2. fädeln.
Dann muss ich schon wieder alles einpacken.
Auch der Alte Treiber läuft nicht sauber.
Zeitweise gibt es Bildausfälle besonders wenn der KC Daten sendet.
Gerade der Prop der die Muxer Steuert spinnt damit lässt sich nichts Testen.
Die Muxer habe ich auch schon getauscht hat auch nichts gebracht.
Das Tauschen und aufrüsten der Blockkondensatoren hat beim 1. Prob nichts gebracht keine Besserung in Sicht.
Werde morgen den 1. Prop Totlegen und die Muxersteuerung auf dem 2. fädeln.
Dann muss ich schon wieder alles einpacken.

Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo