Forum: FPGA, VHDL & Co. JTAG via LVDS praktikable Möglichkeiten?


von fpga (Gast)


Lesenswert?

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!

von Grendel (Gast)


Lesenswert?

ft2232 und dann per USB...?

von Hannes (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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?

von fpga (Gast)


Lesenswert?

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.

von fpga (Gast)


Lesenswert?

> ft2232 und dann per USB...?

Hi Grendel,

Dann bräuchte ich ja auch einen extra Baustein.

von Falk B. (falk)


Lesenswert?

@ 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?

von Hannes (Gast)


Lesenswert?

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.

von Vanilla (Gast)


Lesenswert?

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

von fpga (Gast)


Lesenswert?

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.

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.