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.
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.
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 :-)
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.
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.
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
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
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.
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,
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 :)
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?
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.
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?
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.
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.