INDEX...
Georg Acher's Homepage
ABOUT
PROJECTS
LINKS
TGI@TUM
   
LCD PCD-4ND

Wichtig!

Weil mich langsam die Anfragen zum Notebook PCD-4ND überhäufen:

ICH HABE DAS (GANZE) NOTEBOOK NICHT, KEINE SCHALTPLÄNE, KEIN BIOS, KEINE SYSTEMDISKETTEN UND AUCH SONST KEINERLEI AHNUNG VON DIESEM DING! ICH WEISS NICHT MAL, WIE DAS TEIL AUSSIEHT!

PCD-4ND FAQ

Nachdem ich für das PCD-4ND inzwischen ein Controller mit einem FPGA (XC3042 von Xilinx) gebaut habe, sind fast alle Geheimnisse um das Display gelüftet.

Was ist das PCD-4ND?

Das PCD-4ND ist ein von Pollin für 39DM angebotenes "Auschlacht"-Display aus einem Siemens-Nixdorf-Laptop. Das Display wird mit Klappscharnier und dem ganzen Plastik-Drumherum geliefert, ein (schlechter) Schaltplan ist auch dabei. Das Display-Modul an sich ist von Sharp (LM64183P) und hat eine Auflösung von 640*480 in monochrom (mit CCFL-Hintergrundbeleuchtung). Die nutzbare Bildschirmfläche ist ca. 19cm*14cm. Neben dem LCD-Modul befindet sich noch eine Platine zur Hochspannungserzeugung für die Hintergrundbeleuchtung und eine Platine zur Erzeugung der negativen LCD-Spannung (VEE, ca. -17V) und zur Verteilung der Signale im Scharnier. Die eingebaute Leuchtstoffröhre hat eine Leuchtlänge von 15.5cm.

Wie arbeitet das Display?

Das Modul hat keinerlei Controller, d.h. für Normalanwender ist das Display völlig nutzlos, es hat keine VGA/RGB/FBAS/Monchrom-Eingänge, die zu irgendwas (PC/TV) kompatibel wären. Zum Betrieb ist ein spezieller LCD-Controller notwendig, entweder einer der üblichen VGA/LCD-Controller (Chips&Technologies ct65xxx etc.) oder (falls man Lust+Zeit hat) ein Eigenbaucontroller mit GALs/FPGAs.

Wie wird das Teil angeschlossen?

Die Verbindung geschieht (wenn man die Zwischenplatine hernehmen will) über einen doppelseitigen Platinenstecker mit je 20 Anschlüssen pro Seite im 1.27mm-Raster. Die passende Buchse befindet sich auf der Zwischenplatine(ZP). Wenn man so auf die Buchse blickt, daß das Display nach rechts zeigt (der mittlere Bolzen ist dann unterhalb der Buchse) gilt folgende Pinbelegung, es sind nur die Signale aufgeführt, die wirklich was tun):
 
Links oben  Signal  Rechts oben  Signal 
21  VLD3 
22 
SCLK  23  VLD1 
VLD2  24  VLD0 
25 
26 
VUD3  27  VUD2 
VUD1  28 
FP  29  LP 
10  30  VUD0 
11  STNW1  31  STNL1 
12  DISPON  32  VEEEN 
13  33  VDDEN 
14  +5V  34  GND 
15  35  GND 
16  36 
17  BATLED  37  +5V 
18  +5V  38  GND 
19  VIN  39  VADJ 
20  VIN1  40  +5V 

Was braucht das Ding an Spannung?

5V (LCD), VIN1=7.5V-12V (CCFL) und VIN=5V-12V (für den VEE-Schaltwandler auf der ZP). Ich betreibe VIN/VIN1 beide mit 12V.
  • Was sind denn das alles für Signale?

  •  
    BATLED  geht zur Batterie-LED 
    VADJ  Helligkeitsregelung CCFL
    STNL1/STNW1  Kontrastregelung (steuert VEE)
    VDDEN  Schaltet die +5V für das LCD-Modul ein 
    VEEEN  Schaltet die -17V (VEE) an 
    DISPON  Schaltet die Hintergrundbeleuchtung an 
    FP  Frame-Clock (Bildbeginn)
    LP  Line-Clock (Zeilenbeginn)
    SCLK  Pixeltakt
    VLD(3:0)  Daten für untere Bildschirmhälfte
    VUD(3:0)  Daten für obere Bildschirmhälfte

    VADJ wird über ein 10K-Poti an Masse angeschlossen, am hellsten ist es, wenn VADJ=0V.

     STW1/STH1: 10K-Poti zwischen STW1/STH1 (STW1 liegt entgegen dem Schaltplan nicht an Masse!!!)

    VDDEN/VEEEN/DSPON: Highaktiv, können miteinander verbunden werden, aber:
     
     

    !!! ACHTUNG !!!

    Ohne vernünftigen FP-Takt führt das Anlegen von VEEEN nach kurzer Zeit (einige Sekunden) zur fortschreitenden Zerstörung des Displays durch Elektrolyse (LCDs werden deswegen intern IMMER mit Wechselspannung betrieben, die wird im Modul aber aus FP abgeleitet). Wenn FP ausbleibt, fängt die aktuelle Zeile an zu "kochen". Selbst wenn FP wieder taktet, braucht es einige Minuten, bis die Zeile wieder einwandfrei funktioniert und die hellen Winz-Bläschen verschwinden! Daher sollte man beim Experimentieren das Display erst dann anschließen, wenn man die Korrektheit der Signale vorher (mit Oszi etc.) überprüft hat!

    FP/LP/SCLK: Siehe Timingdiagramm!

    VUD(3:0)/VLD(3:0): Je 4 Pixel für obere/untere Hälfte, Bit 3 ist das linkeste.

  • Was soll das mit oberer und unterer Hälfte?Das Display ist in zwei Hälften aufgeteilt (2 mal 240 Zeilen). Mit jedem Schiebetakt werden je 4 Pixel für beide Bereiche reingeschoben, d.h. ein Frame besteht aus 240 LP-Impulsen. Der Grund liegt in der Verminderung des Flimmerns, da der eigentliche Updatevorgang trotz der Trägheit des Displays selbst bei 40Hz noch als Flimmern wahrnehmbar ist. Mit scharfem Auge kann man die Trennline in der Matrix sogar sehen.

  • Wie macht man GraustufenDas Display hat eine digitale Ansteuerung, d.h. Graustufen gehen nur mit An/Abschalten der Pixel nach jedem Frame. Die Controller von C&T haben dafür das "True Gray"-Feature, mit dem max. 16 Graustufen erzeugt werden können, mehr geht mit Dithering. Die beiden Hälften werden phasenverdreht angesteuert, damit fällt die Halbierung bei der Graustufenerzeugung besonders auf, wenn nicht auch die Erzeugung für die Hälften verdreht gemacht wird.

  • Was für ein Timing braucht man bei FP/LP/SCK?Damit es möglichst wenig flimmert, sollte FP über 40Hz (mit Graustufen über 70Hz) liegen, d.h. LP hat dann ca. 10kHz, SCLK ca. 1.5MHz. Zu hohe Framerates verringern allerdings den Kontrast, brauchen mehr Strom und erzeugen mehr Störungen (Schmieren)...

  • Im Prinzip ist das Display ein riesiges zweidimensionales Schieberegister. Ich habe allerdings keine genauen Daten im WWW gefunden, hier also ein mögliches Timing frisch aus dem Simulator (so geht es auch in echt (nach vielen Versuchen) bei mir):

    Bemerkung: Signale, die mit X anfangen, sind externe Signale, der Rest existiert nur intern im Controller.

    Der Takt CLK beträgt 16MHz, die Statemachine hat in STATE 8 Zustände (01, 02, 04 ... 80), in 01/02 wird aus dem RAM je ein Byte (bei 2Bit/Pixel also eben gerade passend 4Pixel) für die obere bzw. untere Hälfte ausgelesen. Der Einfachheit halber (Speicher ist ja sooo billig und Multiplizieren mit 160 ist zeitaufwendig...) wird für eine Zeile nicht 160Byte (640/4) sondern 256Byte gerechnet. Damit werden also nur zwei Zähler mit je 8Bit für X (A(7:0)) und Y-Position (A(15:8)) gebraucht, die Speicheradresse wird einfach aus beiden Zählern zusammengesetzt. Die Adresse für die untere Hälfte wird durch Addition von $F0 (240*256/256) auf den Y-Zähler berechnet, der Carry-Ausgang des Adders ist dann A16. Die Signale LOAD1 und LOAD2 laden mit der fallenden Flanke die Daten aus dem RAM, und werden (durch Graustufen-Manipulation) einen Takt später auf den LCD-Bus VUD(3:0) und VLD(3:0) gegeben (in der Simulation Dummy-Daten). SCLK taktet die Daten dann ein.

    Der LP-Impuls kommt nach 160 SCLK-Impulsen (X=$A0), der SCLK-Impuls während LP scheint nicht zu schaden (es sind also effektiv 161 SCLK-Takte pro Zeile, siehe übernächstes Bild):

    Und noch lustiger ist, daß FP während der zweiten Zeile (Y=1) aktiv sein muß, sonst verliert man die Zeile 0. D.h. das Sync-Signal kommt nicht am Ende des Bildes sondern kurz nach dem Anfang!

    FP wird nach einer Zeile (nach dem nächsten LP-Impuls) wieder zurückgenommen:

    So geht das Spiel jetzt weiter , bis der Y-Zähler 239 erreicht hat, nach Beendigung der Zeile 239 wird er wieder auf 0 gesetzt.

    Zur Vereinfachung habe ich in der Simulation die 2 Timeslots (04/08) für das Auslesen des zweiten Displays weggelassen (bei den Adressen kann man sie noch erkennen...). Während 40/80 hat die CPU eine Zugriffsmöglichkeit, 10/20 ist für einen geplanten Videodigitizer reserviert.
     

  • Und wo liegt das Problem, wenn ich mir einen Controller selber bauen will? 

    Nur zu, aber es braucht schon einige Erfahrung mit Digitaltechnik, die Arbeit beschränkt sich nicht auf ein paar NAND-Gatter. Und ohne Zugriff auf GALs oder besser integrierte Logikchips (EPLD/FPGA) wird der Controller ein TTL-Grab. Mein Controller im XC3042-FPGA (640*480 mit 4 Graustufen, zwei Displays anschliessbar, 256K Speicher, 68030-Bus mit 8Bit) braucht ca. 80 FlipFlops! Davon sind nur 16 der eigentliche Displayzähler, der Rest geht für die Zustandsmaschine, Ein/Ausgangslatches, Graustufenerzeugung, CPU-Zugriffslogik und diverse 'Glue'-Logik drauf. Und nebenbei:Die CPU sollte auch ab und zu auf den Videospeicher zugreifen können :-) Als 'Video'RAM empfiehlt sich übrigens Cache-RAM, die Ansteuerung ist trivial (im Gegensatz zu DRAM) und 128KB mit 15ns kosten auch nur ca. 10DM (der PC-Mania sei Dank...).

  • Dann kaufe ich mir halt paar EPLDs/FPGAs!?!

    Die ICs sind billig, aber die Entwicklungssysteme leider nicht so ganz. Das Xilinx-System kostet in der billigsten Version ca.100$, für AMDs bessere MACHs (oder Lattice oder Altera oder Cypress oder oder...) ist es ähnlich. D.h. wenn man damit nicht unbedingt Geld verdienen will, ist es rein als Hobby-Anschaffung nicht billig :-/ Aber (mit etwas mehr Verdrahtungsarbeit) sollte es auch mit GALs hinzubekommen sein...

  • Wie kann denn so ein Controller aussehen?

    Hier ein Bild von meiner selbst entwickelten Grafikkarte zur Ansteuerung von zwei LC-Displays:

  •  

     

    (HIRES, ca. 100KB)


     
    Georg Acher
    Last Update: 2000-09-30