Forum: FPGA, VHDL & Co. Spartan Slave Serial Programming


von Gustav G. (gustavgggg)


Lesenswert?

Ich habe probleme beim programmieren eines Spartan 3 über den slave 
serial mode. Die Programmierung habe ich von einem Atmega328 auf einen 
STM32F1 portiert. Der einzige Unterschied ist, dass ich die CCLK und DIN 
nun nicht über SPI laufen lasse, sondern die Takte in Software 
generiere, da beide SPI Port belegt sind.

Ich bekomme immer an der gleichen Stelle im Bitstream einen CRC Fehler, 
den INIT_B während der Programmierung signalisiert. Das passiert 
reproduzierbar recht nahe am Ende des Bitstreams.

Weiß jemand ob CCLK sehr empfindlich gegen Jitter ist, der bei dieser 
Art der Taktgenerierung eher katastrophal ist, da Interrupts dazwischen 
sind? Das ist im Moment mein einziger Ansatz.

von Falk B. (falk)


Lesenswert?

Gustav G. schrieb:
> Weiß jemand ob CCLK sehr empfindlich gegen Jitter ist,

Nein, aber gegen unsaubere Flanken! Der Konfigurationstakt ist aus der 
gleichen Technologie gebaut wie die schauschnelle Logik. Wenn die 
Flanken nicht ASTREIN sind, holst du dir Doppelpulse und damit Fehler an 
den Hals. Siehe Wellenwiderstand.

> der bei dieser
> Art der Taktgenerierung eher katastrophal ist, da Interrupts dazwischen
> sind?

Das ist egal, das ist wie SPI echt synchron.

> Das ist im Moment mein einziger Ansatz.

Aber der falsche ;-)

von Gustav G. (gustavgggg)


Lesenswert?

Falk B. schrieb:
> Nein, aber gegen unsaubere Flanken! Der Konfigurationstakt ist aus der
> gleichen Technologie gebaut wie die schauschnelle Logik. Wenn die
> Flanken nicht ASTREIN sind, holst du dir Doppelpulse und damit Fehler an
> den Hals. Siehe Wellenwiderstand.

Das wird mit aktuell unter 1MHz programmiert und ich habe mir die Flanke 
mal in Scope angesehen. Sieht sauber aus.

von Jens W. (jensw)


Lesenswert?

Ist die CCLK Leitung abgeschlossen über Widerstände, so wie es die 
Application Guides vorgeben?

von Falk B. (falk)


Lesenswert?

Gustav G. schrieb:
>> den Hals. Siehe Wellenwiderstand.
>
> Das wird mit aktuell unter 1MHz programmiert

Interessiert nicht! Siehe Wellenwiderstand!

> und ich habe mir die Flanke
> mal in Scope angesehen.

WIE genau? Mit gescheiter HF-Anbindung? Welche Bandbreite hat dein Oszi 
und dein Tastkopf?

> Sieht sauber aus.

Das denken die Meisten.

Beitrag "Probleme mit SPI"

von Gustav G. (gustavgggg)


Lesenswert?

Jens W. schrieb:
> Ist die CCLK Leitung abgeschlossen über Widerstände, so wie es die
> Application Guides vorgeben?

Ja die ist abgeschlossen und das Hardware Design ist an der Stelle nicht 
geändert worden.

von Gustav G. (gustavgggg)


Lesenswert?

Ich bin nun dahinter gekommen was schief gelaufen ist. Der INIT_B Pin 
wird von mit im Design als Input definiert mit Pulldown. Das scheint so 
nicht zu funktionieren. Wenn ich allerdings bei INIT_B die Einstellung 
auf NONE setzte kommt am Ende kein CRC Error mehr und mittendrin auch 
nicht mehr.

von Falk B. (falk)


Lesenswert?

Gustav G. schrieb:
> Ich bin nun dahinter gekommen was schief gelaufen ist. Der INIT_B Pin
> wird von mit im Design als Input definiert mit Pulldown.


Fail.

> Das scheint so
> nicht zu funktionieren. Wenn ich allerdings bei INIT_B die Einstellung
> auf NONE setzte kommt am Ende kein CRC Error mehr und mittendrin auch
> nicht mehr.

Zufall. INIT_B ist im FPGA ein open drain, der braucht einen externen 
Pull-Up!

von Gustav G. (gustavgggg)


Lesenswert?

Falk B. schrieb:
> Zufall. INIT_B ist im FPGA ein open drain, der braucht einen externen
> Pull-Up!

Der hat einen externen 47k Pullup wie im Configuration Guide angegeben.

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.