Forum: FPGA, VHDL & Co. IO Konfiguration von einem Xilinx FPGA herausfinden.


von Hans-Georg L. (h-g-l)


Lesenswert?

Hallo,

ich möchte herausfinden wie ein 32Bit breites SDR-SDRAM
(ESMT M12L128324A) an ein XC6SLX9 angeschlossen ist.
FPGA und RAM sind leider BGA und die Platine ist mehrlagig.
Bei SDR (single data rate) wird ja der eingebaute Memory Controller 
nicht benutzt, sonst wärs ja relativ einfach.

Die einzige Möglichkeit, die ich im Moment sehe ist das Ram auslöten und 
über Boundary Scan die Verbindungen suchen.

Oder gibt es eine Möglichkeit die Konfiguration eines FPGA auszulesen 
und daraus irgendwie ein UCF File zu generieren ?.


Hat jemand noch eine bessere Idee ?

von Duke Scarring (Gast)


Lesenswert?

Hans-Georg Lehnard schrieb:
> ich möchte herausfinden wie ein 32Bit breites SDR-SDRAM
> (ESMT M12L128324A) an ein XC6SLX9 angeschlossen ist.
Ähm. Ich würde in den Schaltplan gucken.

> Oder gibt es eine Möglichkeit die Konfiguration eines FPGA auszulesen
Auslesen sollte gehen. Wie wird denn das FPGA kofiguriert?

> und daraus irgendwie ein UCF File zu generieren ?
Ein UCF wird da aber nicht rausfallen....

Duke

von Christian R. (supachris)


Lesenswert?

Hans-Georg Lehnard schrieb:
> Oder gibt es eine Möglichkeit die Konfiguration eines FPGA auszulesen
> und daraus irgendwie ein UCF File zu generieren ?.

Wenn der Hersteller das nicht gesperrt hat ja. Sperren geht sinnvoll nur 
mit Platform Flash.
Aber aus dem Bit-File kannst du keine Design-Daten herausbekommen. Das 
wäre ja noch schöner. Es gab mal eine Diplom- oder Doktor-Arbeit, wo 
versucht wurde, Bit Files von alten Virtex II o.ä. zurück zu wandeln. 
Soweit ich mich erinnere hat das aber auch nur teilweise geklappt.

von Hans-Georg L. (h-g-l)


Lesenswert?

Duke Scarring schrieb:
> Hans-Georg Lehnard schrieb:
>> ich möchte herausfinden wie ein 32Bit breites SDR-SDRAM
>> (ESMT M12L128324A) an ein XC6SLX9 angeschlossen ist.
> Ähm. Ich würde in den Schaltplan gucken.
>

Leider habe ich den Schaltplan nicht und er ist auch nicht vom 
Hersteller zu bekommen ;)

>> Oder gibt es eine Möglichkeit die Konfiguration eines FPGA auszulesen
> Auslesen sollte gehen. Wie wird denn das FPGA kofiguriert?
>
>> und daraus irgendwie ein UCF File zu generieren ?
> Ein UCF wird da aber nicht rausfallen....
>
Mir würde die Information, wie die IOs configuriert sind schon einmal 
weiterhelfen und das ich das UCF File selbst von Hand erstellen muss ist 
klar .

von Hans-Georg L. (h-g-l)


Lesenswert?

Christian R. schrieb:
> Hans-Georg Lehnard schrieb:
>> Oder gibt es eine Möglichkeit die Konfiguration eines FPGA auszulesen
>> und daraus irgendwie ein UCF File zu generieren ?.
>
> Wenn der Hersteller das nicht gesperrt hat ja. Sperren geht sinnvoll nur
> mit Platform Flash.
> Aber aus dem Bit-File kannst du keine Design-Daten herausbekommen. Das
> wäre ja noch schöner. Es gab mal eine Diplom- oder Doktor-Arbeit, wo
> versucht wurde, Bit Files von alten Virtex II o.ä. zurück zu wandeln.
> Soweit ich mich erinnere hat das aber auch nur teilweise geklappt.

Manchmal hilft denken ;)

Das Board hat kein Flash und das FPGA wird über den FX2 geladen. Da kann 
ich auch direkt nach dem Bitfile auf der Platte bei den Treibern suchen.


Und du meinst bestimmt diese Arbeit:
http://www2.uni-frankfurt.de/40067115/2011_-_Design_and_Implementation_of_an_Object-Oriented_Framework_for_Dynamic_Partial_Reconfiguration__Abel_.pdf

Da wird die Bitstream Komposition beschrieben, vielleicht ein Ansatz ...

von Christian R. (supachris)


Lesenswert?

Hans-Georg Lehnard schrieb:
> Mir würde die Information, wie die IOs configuriert sind schon einmal
> weiterhelfen und das ich das UCF File selbst von Hand erstellen muss ist
> klar .

Die kriegt man aber auch nicht aus dem Bit File wieder heraus. Du musst 
wohl oder übel physisch da ran.

von Fpgakuechle K. (Gast)


Lesenswert?

Hans-Georg Lehnard schrieb:
> Hallo,
>
> ich möchte herausfinden wie ein 32Bit breites SDR-SDRAM
> (ESMT M12L128324A) an ein XC6SLX9 angeschlossen ist.
> FPGA und RAM sind leider BGA und die Platine ist mehrlagig.
> Bei SDR (single data rate) wird ja der eingebaute Memory Controller
> nicht benutzt, sonst wärs ja relativ einfach.
>
> Die einzige Möglichkeit, die ich im Moment sehe ist das Ram auslöten und
> über Boundary Scan die Verbindungen suchen.


Man könnte auch Chipscope / Vio einbauen und die leistungsaufnahme des 
SDRAM überwachen (Shunt an Stromversorgung oder IR- Kanera).

Dann legst du an alle "verdächtigen" FPGA-Pins bis auf eins einen Takt 
und an das eine Pin ca 1s lang 1 oder 0. geht die Stromaufnahme in die 
Höh, hast du CLKE gefunden. jetzt schaltest du von allen anderen Pins 
nach und nach den takt weg bis der Stromverbrauch sinkt - du hast CLK 
gefunden.

Es lohnt sich auch die IO-Spannungen an den FPGA zu prüfen. Die Bänke 
die nicht an 3V3 hängen, werden es nicht sein. beim Spartan6 gibt es 
noch Einschränkungen bezüglich local clocking, das könnte die Auswahl 
auch einschränken. Terminierungswiderstände könnten auch einen Tip geben 
wofür die Leitung benutzt wird. Ebenso Pull-Widerstände in der Nähe des 
sdrams, da könnte einer an CLKE sein, dann siehst du im FPGA an dieser 
Stelle eine fixe '1'. Manchmal setzt man in die Taktleitung einen 
kleinen serienwiderstand (22 Ohm) um die EMV durch verschleifen der 
Flanken zu verbessern. Ist aber bei Hi-Speed eher unwahrscheinlich.

"Interessante" leitungen (wie ras/cas/clk) haben gern vias, damit man 
bei der InBetriebnahme des PCB direkt messen kann. Also mal alle Vias 
oder Testpunkte am SDRAM per scope anschauen. Dann könnte man dort kurze 
Pulse reinjagen und schauen an welchen FPGA-Pin die ankommen.

MfG,

von Duke Scarring (Gast)


Angehängte Dateien:

Lesenswert?

Christian R. schrieb:
> Die kriegt man aber auch nicht aus dem Bit File wieder heraus.
Wenn man einen Weg findet, aus dem Bit-File ein ncd-File zu erzeugen, 
könnte man dieses im FPGA-Editor öffnen. Dort findet sich dann auch 
"relativ komfortabel" die Einstellung für die IO.

Duke

von Hans-Georg L. (h-g-l)


Lesenswert?

Ich muss mich korrigieren, es sitzt noch ein SPI 8Mbit (MX25L8006E)Flash 
im auslötbarem Gehäuse auf dem Board. Dieser Chip hat aber HW Protect 
und da muss ich erst mal schauen ob das aktiviert ist.

@Fpga Kuechle
Meine Chipscope Version ist leider auf den Zynq beschränkt.


Aber es gibt ja diese Register, die sowohl von JTAG als auch von der 
FPGA Logik angesprochen werden können da kann man bestimmt ein Chipscope 
für "arme" selbst stricken.

Jetzt such ich erst mal mein Jtag Kabel zusammen ;)

von Fpgakuechle K. (Gast)


Lesenswert?

Hans-Georg Lehnard schrieb:

> @Fpga Kuechle
> Meine Chipscope Version ist leider auf den Zynq beschränkt.
>
> Aber es gibt ja diese Register, die sowohl von JTAG als auch von der
> FPGA Logik angesprochen werden können da kann man bestimmt ein Chipscope
> für "arme" selbst stricken.

Da gibbets diesen Fred:
Beitrag "Logic Analyzer im FPGA via JTAG"


MfG,

von Sigi (Gast)


Lesenswert?

Mit JTAG bzw. dem Bit-File kriegst du ja nur die IO-Konfig raus,
aber ob dir das bei deinem SDRAM-Chip weiterhilft? Evtl. sind alle
SDR-Pins BIDIR-Pins...

Ich hatte vor ein paar Monaten ein Virtex2-FF980 mit SSRAM, die
restlichen Pins alle auf 2 grosse IO-Stecker. Falls alle FPGA-Pins
auf der Unterseite zugänglich sind: Im ersten Schritt habe ich die 
CE-Leitungen zum SSRAM gesucht (ging rel. schnell, ist der "grosste"
Teil der Arbeit). Dann habe ich eine kleine UART-Komponente
geschrieben und jedem Pin ausser den CE-Pins eine ID zugeordnet.
Per Messspitze habe ich dann an allen SSRAM-Pins und IO-Pins diese
ID abgelesen und so meine UCF-Datei erstellt (ging ebenfalls recht
schnell, glaube so um die 1-2 Stunden).

von Xilinx Phreak (Gast)


Lesenswert?

Wenn man an das FPGA ankommt, kann man ein Leer-Image draufspielen, bei 
dem man immer nur einen Ausgang treibt und liest, um die 
Leitungsimpedanz zu messen. Die RAM-Bus-Daten müssten sich da deutlich 
von den Steuersignalen abheben.

Ich halte das gesamte Vorgehen aber dennoch für abenteuerlich.
Bei den ganzen möglichen Konfigurationen dürfte das Suchen der richtigen 
Kombi ins Nirvana führen.

In der Zeit kann man die Platine neu bauen!

von Hans-Georg L. (h-g-l)


Lesenswert?

Sigi schrieb:
> Mit JTAG bzw. dem Bit-File kriegst du ja nur die IO-Konfig raus,
> aber ob dir das bei deinem SDRAM-Chip weiterhilft? Evtl. sind alle
> SDR-Pins BIDIR-Pins...
>
Wenn ich aus dem Konfig File die bidirektionale IO des RAMs finde sind 
das schon mal 32 Leitungen ;)

> Ich hatte vor ein paar Monaten ein Virtex2-FF980 mit SSRAM, die
> restlichen Pins alle auf 2 grosse IO-Stecker. Falls alle FPGA-Pins
> auf der Unterseite zugänglich sind: Im ersten Schritt habe ich die
> CE-Leitungen zum SSRAM gesucht (ging rel. schnell, ist der "grosste"
> Teil der Arbeit). Dann habe ich eine kleine UART-Komponente
> geschrieben und jedem Pin ausser den CE-Pins eine ID zugeordnet.
> Per Messspitze habe ich dann an allen SSRAM-Pins und IO-Pins diese
> ID abgelesen und so meine UCF-Datei erstellt (ging ebenfalls recht
> schnell, glaube so um die 1-2 Stunden).

Es ist kein Pin der BGAs zugänglich.

von Hans-Georg L. (h-g-l)


Lesenswert?

Xilinx Phreak schrieb:
> Wenn man an das FPGA ankommt, kann man ein Leer-Image draufspielen, bei
> dem man immer nur einen Ausgang treibt und liest, um die
> Leitungsimpedanz zu messen. Die RAM-Bus-Daten müssten sich da deutlich
> von den Steuersignalen abheben.
>
Ich kann am RAM ohne es auszulöten leider nichts messen, aber 
wahrscheinlich wird mir nichts anderes übrig bleiben.

> Ich halte das gesamte Vorgehen aber dennoch für abenteuerlich.
> Bei den ganzen möglichen Konfigurationen dürfte das Suchen der richtigen
> Kombi ins Nirvana führen.
>
> In der Zeit kann man die Platine neu bauen!

Ich will ja die Platine nicht nachbauen !
Sondern einfach eine vorhandene Platine zweckentfremden ..

von Christian R. (supachris)


Lesenswert?

Hans-Georg Lehnard schrieb:
> Wenn ich aus dem Konfig File die bidirektionale IO des RAMs finde sind
> das schon mal 32 Leitungen ;)

Das geht aber definitiv nicht, glaub´s doch endlich. Das Format der 
Bitstreams sind gut gehütete Geheimnisse der FPGA Hersteller. Hätte auch 
keinen Sinn, denn nach dem Routing sind nahezu keine Signalnamen aus dem 
Design mehr vorhanden.

Bleibt nur RAM auslöten und z.B. mit einem Boundary Scan Tool* jeden Pin 
setzen und am RAM messen, welcher wo dazu gehört.

* z.B. das hier: 
http://wesche.we.ohost.de/Homepage/Version_3/index.php?section=PC_Delphi_FT2232_JTAG.html

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

Hans-Georg Lehnard schrieb:
> Sigi schrieb:
> Es ist kein Pin der BGAs zugänglich.

Was nicht heisst, das keines der Signale zugänglich ist. Schau doch mal
nach Vias oder Bauelementen nahe oder unter dem SDRAM. Bspw. liegen 
immer Koppel-C zwischen Vcc und GND, somit sind diese BGA-Pins 
"zugänglich".

Ebenso braucht es durchkontaktierungen um die Signale von den 
landing-Pads für das BGA in die Signal-layer des PCB's zu bringen. Das 
können zwar blind vias (Sacklöcher)  sein, mußen aber nicht. Es kann gut 
sein das die
Rückseites des PCB's ("gegenüber" des SDRAMs/FPGAs) fein gelöchert ist 
wie ein Schweizer Käse. Dann hast du zu jedem Pin/Landing Pad ein Via an 
dem du messen kannst. Bsp.: 
http://saturnelectronics.com/images/product/finepitchbga/finepitchbga2.jpg

MfG,

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.