Hallo zusammen,
da ich ein Design plane, bei dem ein FPGA (SPARTAN 6) über eine relativ
lange Leitung konfiguriert (Boot-Flash schreiben) und auch via
CHIP-SCOPE ausgelesen werden soll, möchte ich die JTAG-Schnittstelle per
LVDS verbinden. Single-Ended ist mir zu unsicher.
Der FPGA hat natürlich eine Single-Ended Schnittstelle, aber intern
besitzt er ja LVDS-Buffer. Gibt es eine praktikable Möglichkeit auf
einen zusätzlichen LVDS-Baustein zu verzichten? Ich habe schon überlegt
die JTAG-Schnittstelle wieder auf FPGA Pins zu führen intern LVDS-Buffer
zu nehmen und wieder auf anderen Pins rauszugehen. Dazu muss er
natürlich einmal entsprechend konfiguriert sein. Gibt es da Fallstricke
die ich übersehen habe?
Viele Grüße!
Die von dir vorgesehenen internen Verbindungen sind nur dann vorhanden,
wenn das FPGA seine Konfiguration erfolgreich geladen hat. Somit kannst
du mit einem "leeren" FPGA nicht kommunizieren. Hinzu kommt noch, das
für die Programmierung des Flashes wahrscheinlich ein Flash-Programmer
in das FPGA geladen wird... und dann sind deine internen Verbindungen
auch weg.
@ fpga (Gast)
>da ich ein Design plane, bei dem ein FPGA (SPARTAN 6) über eine relativ>lange Leitung konfiguriert
Wie lang?
>(Boot-Flash schreiben) und auch via>CHIP-SCOPE ausgelesen werden soll, möchte ich die JTAG-Schnittstelle per>LVDS verbinden. Single-Ended ist mir zu unsicher.
Naja, soooo viel besser ist LVDS da auch nicht, hat auch nur knapp 1V
Common Mode Voltage Toleranz. RS485 ist da deutlich besser.
Warum glaubst du, dass es Single Ended nicht schafft?
Hannes schrieb:> Die von dir vorgesehenen internen Verbindungen sind nur dann> vorhanden,> wenn das FPGA seine Konfiguration erfolgreich geladen hat. Somit kannst> du mit einem "leeren" FPGA nicht kommunizieren. Hinzu kommt noch, das> für die Programmierung des Flashes wahrscheinlich ein Flash-Programmer> in das FPGA geladen wird... und dann sind deine internen Verbindungen> auch weg.
Hallo Hannes,
So etwas habe ich geahnt.
> Wie lang?
vermutlich bis zu 3 Meter. Die genaue Länge weiß ich allerdings jetzt
noch nicht.
> RS485 ist da deutlich besser.> Warum glaubst du, dass es Single Ended nicht schafft?
Das mit dem RS485 habe ich auch schon angedacht. Im Grunde will ich auf
Nummer sicher gehen, da ich mit langen Programmierkabeln schon
verschiedentlich Probleme hatte und das Ganze solide funktionieren soll.
Auch wenn es EMV-Einflüsse gibt, die ich jetzt noch nicht absehen kann,
ist mir ein differenzielles Übertragungsverfahren lieber.
Da werde ich wohl um einen extra Baustein nicht herum kommen.
@ fpga (Gast)
>vermutlich bis zu 3 Meter. Die genaue Länge weiß ich allerdings jetzt>noch nicht.
Naja, ist schon mal was.
>Das mit dem RS485 habe ich auch schon angedacht. Im Grunde will ich auf>Nummer sicher gehen, da ich mit langen Programmierkabeln schon>verschiedentlich Probleme hatte und das Ganze solide funktionieren soll.
Ich hatte auch mal Probleme mit sowas. Das Problem ist, dass die
JTAG-Pins mit der gleiche Technologie aufgebaut sind wie die normalen
User-IOs. Damit sind sie SAUSCHNELL und reagieren auf jeden Zappler,
gerade beim Takt.
Lösung. Einfache RC-Tiefpässe mit ein paar MHz Grenzfrequenz, danach
Schmitt-Trigger direkt auf dem Board. Dann ist es solide und man kann
selbst mieseste JTAG-Signale noch sauber nutzen. Damit lief ein 2m
Programmierkabel Marke Eigenbau 100% stabil, während das Original von
Xilinx instabil war.
>Da werde ich wohl um einen extra Baustein nicht herum kommen.
Wo ist das Problem? Mal wieder nur noch 0,3mm^2 Platz frei?
Falls du dich für differentielle Datenübertragung entscheidest, dann
denk bitte an den Anwendungsfall, dass dein Programmieradapter nicht
angeschlossen oder abgeschaltet ist. LVDS- oder RS485-Empfänger würden
in diesem Fall die differentielle Eingangsspannung 0V "sehen"... womit
die minimale Eingangsdifferenzspannung unterschritten wird. Ich würde
daher "fail-safe"-Empfänger einsetzen (siehe MAX9171/MAX9172) oder
mittels externer Beschaltung sicherstellen, dass keine unerwünschten
Signaländerungen an den JTAG-Eingangspins auftreten (siehe dazu
snla051b.pdf von TI oder AN-5046.pdf von FAIRCHILD). Ausserdem solltest
du darauf achten, dass die Pegel der differentiellen Empfänger bzw. des
differentiellen Senders mit VCCAUX des FPGA harmonieren.
fpga schrieb:>> Wie lang?>> vermutlich bis zu 3 Meter. Die genaue Länge weiß ich allerdings jetzt> noch nicht.
Grundsätzlich kannst DU dir eine LVDS Umgebung basteln. Du musst aber
auch darauf achten, dass Du nicht aus dem Common-Mode Bereich
herauskommst, (z.B) getrennte Massen aufgrund von
Potentialunterschieden, womit Du ggfs. dann doch wieder einen Massebezug
zwischen den entfernt aufgabauten Systemen herstellst...
Die Frage die sich mir stellt, macht das ganze Sinn?
Zum Programmieren kann man in den meisten Fällen einen Laptop geschwind
neben das System stellen.
Zum Debuggen mit dem Chipscope bietet sich dann an, einen (Chipscope)
Server auf jenem Laptop laufen zu lassen und vom Entwicklungsrechner via
Netzwerk (TCP/IP) darauf zuzugreifen...
Das funktioniert wenns sein soll auch einmal quer über den Globus mit
Internet.
Gruß
Vanilla
Danke für die vielen Rückmeldungen!
> Falls du dich für differentielle Datenübertragung entscheidest, dann> denk bitte an den Anwendungsfall, dass dein Programmieradapter nicht> angeschlossen oder abgeschaltet ist. LVDS- oder RS485-Empfänger würden> in diesem Fall die differentielle Eingangsspannung 0V "sehen"... womit> die minimale Eingangsdifferenzspannung unterschritten wird. Ich würde> daher "fail-safe"-Empfänger einsetzen (siehe MAX9171/MAX9172) oder> mittels externer Beschaltung sicherstellen, dass keine unerwünschten> Signaländerungen an den JTAG-Eingangspins auftreten (siehe dazu> snla051b.pdf von TI oder AN-5046.pdf von FAIRCHILD). Ausserdem solltest> du darauf achten, dass die Pegel der differentiellen Empfänger bzw. des> differentiellen Senders mit VCCAUX des FPGA harmonieren.
@ Hannes,
An die Fail-Save-Schaltung hätte ich jetzt vermutlich gar nicht gedacht.
Danke für den Hinweis. Die werde ich auf jeden Fall noch vorsehen um
einen definierten Pegel im besagten Fall zu erzeugen. Die von dir
genannten Chips sehen gut aus. Allerdings würde ich davon 3 Stück
benötigen. Vielleicht finde ich Chips wo 3 Empfänger und 1 Sender in
einem Gehäuse untergebracht sind.
> Zum Programmieren kann man in den meisten Fällen einen Laptop geschwind> neben das System stellen.> Zum Debuggen mit dem Chipscope bietet sich dann an, einen (Chipscope)> Server auf jenem Laptop laufen zu lassen und vom Entwicklungsrechner via> Netzwerk (TCP/IP) darauf zuzugreifen...> Das funktioniert wenns sein soll auch einmal quer über den Globus mit> Internet.
Das Problem ist, dass der FPGA sich in einem unzugänglichen Bereich
(hermetisch abgeschlossenes System) befinden wird.