Forum: FPGA, VHDL & Co. LVDS Display per Spartan 6 ansteuern


von fpga (Gast)


Lesenswert?

Hallo,

habe bis jetzt nur grundlegendes gefunden.

Ich will ein Display mit LVDS-Interface (je 6 Bit pro Farbe) per FPGA ( 
Spartan 6) ansteuern.

Google sagt folgendes:
http://www.helmholtz-berlin.de/media/media/spezial/events/sei/FZJ09/kreidl_fzj09_web.pdf

http://www.xilinx.com/support/documentation/user_guides/ug381.pdf

Hat jemand Erfahrungswerte?

von fpga (Gast)


Lesenswert?

Nachtrag:
sorry Jungs, dass "je 6 Bit pro Farbe" habe ich vom derzeitigen 
RGB-Display.

LVDS ist noch nichts bekannt / festgelegt.
Hätte das nur vorab schon gern auf meinem Board berücksichtigt, falls es 
später dank EMV, etc. dann doch in Richtung LVDS läuft.

von Yoschka (Gast)


Lesenswert?

DS90C365A
funktioniert gut an Displays mit LVDS Eingang.
gibt auch Receiver um dann wieder TTL/CMOS Displays anzuschliessen.

von fpga (Gast)


Lesenswert?

da hab ich wohl zu weit / falsch gedacht.

Also doch so wie hier:
Beitrag "TFT Display ansteuern"

Den Treiber "DS90C365A" im FPGA abbilden / einsparen geht nicht?
Sprich ich gebe die "Differential pairs" direkt raus und ab aufs 
Display.

von Christian R. (supachris)


Lesenswert?

Warum einen externen Transmitter? Das machen doch die OSERDES 
Schaltungen im Spartan 6. Schau dir mal die XAPP1064 an.

von fpga (Gast)


Lesenswert?

mach ich, danke.

Das war die Info die ich wollte :-)

von fpga (Gast)


Lesenswert?

dass echt n tolles Teil:
http://www.xilinx.com/support/documentation/application_notes/xapp1064.pdf

aber um da rein zu kommen braucht man ne Weile.

Habt jemand noch einen Literatur Tipp?
Die Datenblätter, AppNotes sind nicht so leicht zu lesen,
wenn man keine Ahnung hat und davon ziemlich viel :-)

von Christian R. (supachris)


Lesenswert?

Geht auch mit dem Core Generator zu erstellen, das ist dann noch 
einfacher. SelectIO heißt der Core.

von fpga (Gast)


Lesenswert?


von Christian R. (supachris)


Lesenswert?

Das ist der User Guide. Der ist ziemlich umfangreich und an manchen 
Stellen falsch. Siehe Xilinx User Forum. Ich meine den Core Generator 
der ja bei ISE dabei ist. Mit dem kannst du dir alles erzeugen lassen, 
da musst du nur angeben wieviel Bits rein, wieviel Bits raus und dann 
macht der das.

von BB (Gast)


Lesenswert?

Mit dem Coregen hatte ich aber schon Probleme beim SERDES. Es konnten 
keine Bits > 4 instanziiert werden, weil die Master/Slave Konfiguration, 
die der CoreGen entwarf nicht synthetisierte. (Virtex6)

Er hatte immer einen buffer zuviel oder einen zu wenig.

von Sebastian B. (sfreak) Benutzerseite


Lesenswert?

Hi,

ich habe vor einer Weile ein altes Laptop-TFT mit einem Spartan 
angesteuert. Dazu hab ich eine extrem abgespeckte Version des XAPP1064 
benutzt. Ich schau mal ob ich den Code wieder finde...

Sebastian

von Sebastian B. (sfreak) Benutzerseite


Angehängte Dateien:

Lesenswert?

So, habe den Code gefunden.

Das ganze ist für das Digilent Atlys Board.

Ein Paar Infos zum Datenformat des verwendeten Displays finden sich 
hier: http://www.ags.tu-bs.de/?id=e.lab:projekte:atlys

Das Projekt ist aus verschiedenen Beispielprojekten von Xilinx und 
Digilent zusammengebastelt. Rechte sind also vorsichtig ausgedrückt 
"ungeklärt".

Viel Spass damit
Sebastian

von Christian R. (supachris)


Lesenswert?

Ja, die XAPP1064 ist sehr generisch. Wenn man mit dem Core Generator den 
Code erzeugt, ist er übersichtlicher. Da kann man die ganzen IDELAY 
weglassen. Ich hab damit für den Spartan 6 den Empfänger für einen Kanal 
des LTM9011-14 erstellt und das lief auf Anhieb sauber und fehlerfrei 
bei 1GBit/s (Mit 2x BUFIO für DDR 8 Bit pro Lane, 500MHz Clock bei 
125MS/s) auf dem SP605. Der Core Generator spuckt auch lesbaren VHDL 
Code aus, also kein Black-Box Modul.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

fpga schrieb:
> dass echt n tolles Teil:
> http://www.xilinx.com/support/documentation/application_notes/xapp1064.pdf
>
> aber um da rein zu kommen braucht man ne Weile.
>
> Habt jemand noch einen Literatur Tipp?
> Die Datenblätter, AppNotes sind nicht so leicht zu lesen,
> wenn man keine Ahnung hat und davon ziemlich viel :-)

In dem Buch Pedroni  "Circuit Design and Simulation with VHDL" werden 
auch verschiedene Ansteuerungen von Grafikschnittstellen erklärt.

so VGA, DVI und FPD,

von Florian M. (micro-flo)


Lesenswert?

Hi,
Ich habe die Artikel mit Spannung gelesen und am Ende bleiben mir noch 
ein paar Fragen.
Für den Anfang reduziere ich es auf wenige :)

Ich habe mit FPGAs noch nicht viel Erfahrung, daher kann ich nicht 
einschätzen, welcher meine Anforderungen erfüllen kann.
Und zwar will ich ein LVDS Signal mit 28 Bits, die auf einem Kanal sind, 
empfangen und später auch senden.
Die Bitclock ist 42MHz, das LVDS Signal hat also 1,176GHz.
Nur TX+ und TX-. Der FPGA muss also die Clock und die Daten aus diesem 
Signal gewinnen.

Welcher FPGA kann das leisten?
Sind generell Xilinx oder Altera besser geeignet? Wo gibt es bessere 
Tools oder App Notes, Beispiele etc. für die ersten Schritte?

Danke :)

von Christian R. (supachris)


Lesenswert?

Hm, das geht eigentlich wenn überhaupt dann nur mit den Multi Gigabit 
Transceivern. Da bräuchtest du einen FPGA, der die in Hardware schon 
drin hat. Allerdings ist es fraglich, ob der entsprechende Sender alle 
Voraussetzungen mitbringt, um so ein Signal passend für den FPGA 
rauszugeben. Denn wenn kein CLK mit kommt, muss man eine Art Clock 
Correction haben, die den Phasenunterschied zwischen Sender und 
Empfänger dauernd ausgleicht. Eventuell brauchst du dann doch einen 
ensprechenden Serdes für genau diesen Anwendungsfall. Ich bin mir nicht 
sicher, ob das mit FPGAs ohne extra Serdes machbar ist.
Was genau ist das für ein Sender und wie sind die Daten kodiert? 8B/10B 
dürfte ja klar sein bei asynchron, aber wo ist der Start eines Frames? 
Was für ein Signal genau ist das? Was standardisiertes?

von Florian M. (micro-flo)


Lesenswert?

Hi,
Danke für Deine Antwort.

Das Signal heisst FPD-Link II.

von Lattice User (Gast)


Lesenswert?

Florian Micro schrieb:
> Das Signal heisst FPD-Link II.

Nach allem was mir da Google ausgeworfen hat, würde ich sagen da hast du 
Pech. Ohne externen Desrializer geht da nichts.

von Florian M. (micro-flo)


Lesenswert?

Lattice User schrieb:
> Florian Micro schrieb:
>> Das Signal heisst FPD-Link II.
>
> Nach allem was mir da Google ausgeworfen hat, würde ich sagen da hast du
> Pech. Ohne externen Desrializer geht da nichts.

Weil der FPGA zu langsam ist?
Die hier verkaufen IP Cores für etwas ähnliches:
http://www.mixel.com/FeaturedProducts/LVDS_SR_SerDes.php

Wo liegt denn die Grenze von FPGAs?

von Christian R. (supachris)


Lesenswert?

Das liegt eher daran, dass es dafür keine geeigneten Transceiver in den 
FPGAs gibt. Den IP-Core für "sowas ähnliches" brauchst du nichtmal, wäre 
beim SPartan 6 schon drin, das machen die ISERDES und OSERDES Elemente. 
Aber da ist ja auch ein CLK dabei. Das FPD-II "Protokoll" ist schon 
etwas dusselig, kein Clock, keine 8b/10B Kodierung und keine Clock 
Correction. Da brauchts dann schon spezielle Hardware um das zu 
dekodieren. Mit einem FPGA wird das nix, du müsstest da überabtasten um 
das zu erkennen, aber bei 1,17GHz wird das auch nix.

von Lattice User (Gast)


Lesenswert?

Florian Micro schrieb:
> Weil der FPGA zu langsam ist?

Jein

> Die hier verkaufen IP Cores für etwas ähnliches:
> http://www.mixel.com/FeaturedProducts/LVDS_SR_SerDes.php

Diese IP-Cores sind erstens für 10b8b codierung, und zweitens für ASICs. 
FPGAs haben so was schon als HW Block.

>
> Wo liegt denn die Grenze von FPGAs?

Mit Virtex 7 bei > 10 GBit/s, vorrausgesetzt du verwendest eine 
Codierung die von den Transceivern im FPGA unterstüzt wird, so dass die 
CDR (Clock Data Recevory) im Transceiver gemacht werden kann.

Für die kapute FPD Link II Codierung (eine Clockflanke pro 28 bit!) 
müsste man die CDR in der normalen Logik realisieren, und dafür sind 1 
GBit/s etwas viel. Ich bezweifle auch, dass die PLLs dafür stabil genug 
sind so dass nur, wie Chris geschrieben hat, Überabtastung bleibt.

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.