Forum: FPGA, VHDL & Co. Kann man am Config QSPI Flash die Datenpins tauschen?


von Gustl B. (-gb-)


Lesenswert?

Moin,

ich überarbeite jetzt gerade ein Platinenlayout und möchte den Flash 
S25FL128SXXXXXX0 etwas schöner anbinden. Das würde auch funktionieren 
wenn ich die Datenleistungen vom QSPI anders zuordne. Geht das?

Für die Daten müsste das tatsächlich egal sein wie ich meine, aber für 
die Befehle könnte das nicht funktionieren. Da müsste man dann also auch 
im Vivado oder so die neue Pinzuordnung dem write_cfgmem mitteilen. Geht 
das?

von Christian R. (supachris)


Lesenswert?

Nein das geht nicht. Jedenfalls nicht wenn das FPGA selber davon booten 
soll. Oder du nimmst nur normales SPI, da brauchst du nur MOSI und MISO, 
aber auch die kannst du nicht tauschen.

von Gustl B. (-gb-)


Lesenswert?

OK, Danke! Na dann setze ich ein paar Vias mehr ...

von Gustl B. (-gb-)


Lesenswert?

Oh und noch eine Nachfrage:

Warum werden oft in Schaltplänen an manche der Datenpins vom QSPI Flash 
Pullups angeschlossen? Ich habe das auch bisher so gemacht, funktioniert 
auch, aber es funktioniert auch ohne Pullups.

Z. B. hier 
https://www.trenz-electronic.de/fileadmin/docs/Trenz_Electronic/Modules_and_Module_Carriers/3.5x7.3/TE0725/REV03/Documents/SCH-TE0725-03-100-2C.PDF 
Seite 4.

Hier https://reference.digilentinc.com/_media/cmod_a7/cmod_a7_sch.pdf 
Seite 2.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Warum werden oft in Schaltplänen an manche der Datenpins vom QSPI Flash
> Pullups angeschlossen? Ich habe das auch bisher so gemacht, funktioniert
> auch, aber es funktioniert auch ohne Pullups.

Bin mir nicht ganz sicher - könnte etwas mit dem Switch auf den 
Quad-Modus zu tun haben.

Das ist auch der Grund, wieso man die Pins nicht vertauschen darf. 
(Kommando-Dekoder)

: Bearbeitet durch User
von Mike (Gast)


Lesenswert?

Gustl B. schrieb:
> Oh und noch eine Nachfrage:
>
> Warum werden oft in Schaltplänen an manche der Datenpins vom QSPI Flash
> Pullups angeschlossen? Ich habe das auch bisher so gemacht, funktioniert
> auch, aber es funktioniert auch ohne Pullups.

Vermute mal damit das Pin einen definierten Pegel hat wenn es als 
Eingang konfiguriert wurde.

Xilinx hat z.B. die Option unbenutzte Pins automatisch mit einem Weak 
Pulldown zu konfigurieren. Die Widerstand gewinnt in dem Fall und hält 
den Flash inaktiv.

Wäre auch die Frage wie sich die I/O verhalten wenn das FPGA 
konfiguriert wird.

Bei deinem Board z.B. scheint das Pin PUDC_B High Level zu haben. Der 
Eingang steuert den Zustand der I/O-Pins bis zum Ende der Konfiguration. 
H bedeutet, dass die Pins bis zum Ende der Konfiguration hochohming sind 
(Tristate).

https://www.xilinx.com/support/answers/50802.html

von Gustl B. (-gb-)


Lesenswert?

Hm, ja klar verwendet man Pullups für definierte Pegel. Ich kann das für 
ChipSelect auch verstehen, da will man nicht, dass der wackelt. Aber die 
Datenleitungen? Die interessieren doch sowieso nur wenn CS aktiv ist.

Der Grund für meine Frage ist, dass ich die 4 Datenpins am FPGA nach der 
Konfiguration weiterverwenden möchte. Und zwar ohne Pullups. Auf meiner 
aktuellen Bastelplatine habe ich die Pullups im Layout und hatte die 
auch bestückt. Funktioniert.

Jetzt ändere ich gerade mein Layout weil ich eben diese 4 zusätzlichen 
Pins verwenden will und habe zum Test mal die Pullups weggelötet. 
Funktioniert immer noch. Sowohl Konfiguration des FPGA als auch das 
Schreiben des Bitstreams ins Flash. Mir scheint also, ich bräuchte diese 
Pullups nicht.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Gustl B. schrieb:
> Warum werden oft in Schaltplänen an manche der Datenpins vom QSPI Flash
> Pullups angeschlossen?

Sieht fuer mich nach Kompatibilitaet/Ueberbleibsel zu "normalen" 
SPI-Flashes aus.

Gruss
WK

von Gustl B. (-gb-)


Lesenswert?

Vielen Dank! Ich lasse die im neuen Layout mal weg.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Vielen Dank! Ich lasse die im neuen Layout mal weg.

Mach sie doch hin und lasse sie unbestueckt. Sollten jemals Probleme 
auftauchen dann bist froh du kannst sie von Hand nachbestuecken.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Tobias B. schrieb:
> Mach sie doch hin und lasse sie unbestueckt. Sollten jemals Probleme
> auftauchen dann bist froh du kannst sie von Hand nachbestuecken.

Wuerd ich auch sagen - ist viel simpler, die einfach nicht zu bestuecken 
als nachtraeglich dranzubasteln. Ein Blick in die Datenblaetter der 
beteiligten Chips ist auch zuverlaessiger als der Versuch im Einzelfall.

Gruss
WK

von Gustl B. (-gb-)


Lesenswert?

Im Datenblatt https://www.cypress.com/file/448601/download kann ich dazu 
kaum was finden.

Reset#, IO2 und IO3 haben interne Pullups. CS# allerdings nicht, und 
dazu steht auf Seite 24:

The device must not be selected at power-up or power-down (that is, CS# 
must follow the voltage applied on VCC) until VCC reaches the correct 
value as follows:
- VCC (min) at power-up, and then for a further delay of t_PU
- VSS at power-down
A simple pull-up resistor (generally of the order of 100 kOhm) on Chip 
Select (CS#) can usually be used to insure safe and proper power-up and 
power-down.

Nun, wie ist das, wenn CS# nur mit dem FPGA verbunden ist, ist dann 
sichergestellt, dass das gleich mit der Versorgungsspannung auf high 
geht?
Aber gut, weil ich CS# sowieso nicht für weitere Dinge nutzen kann/will, 
kann ich da auch den Pullup hinsetzen. Aber ich sehe keinen Grund einen 
Pullup an die Datenleitungen zu bauen.

von Andi (Gast)


Lesenswert?

Gustl B. schrieb:
> Aber ich sehe keinen Grund einen
> Pullup an die Datenleitungen zu bauen.

Wenn der Chip interne Pullups an IO2 und IO3 hat, brauchst du natürlich 
keine externen.
Ein Flash started im SPI Modus und wird erst durch einen SPI Befehl in 
den Qaud Modus befördert. Damit dieser Befehl funktioniert muss Hold 
(IO3) auf High sein.

von Gustl B. (-gb-)


Lesenswert?

OK, habe mich damit nicht beschäftigt. Gut, das erledigt also der 
interne Pullup. Und eigentlich würde ich auch erwarten, dass das FPGA am 
QSPI Interface beim Starten sofort CS# und auch Hold hoch zieht. Erst 
wenn der sich dann konfiguriert dann sollte der ja den Flash Baustein 
ansprechen.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> OK, habe mich damit nicht beschäftigt. Gut, das erledigt also der
> interne Pullup. Und eigentlich würde ich auch erwarten, dass das FPGA am
> QSPI Interface beim Starten sofort CS# und auch Hold hoch zieht. Erst
> wenn der sich dann konfiguriert dann sollte der ja den Flash Baustein
> ansprechen.

Die Spartan 7 Configuration Guide sagt:

> For SPI x4: Connect D02 to the SPI flash quad data
> bit 2 output (DQ2/W#/WP#/IO2) pin and connect
> to an external 4.7kohm pull-up resistor to
> VCCO_14.
> For SPI x4: Connect D03 to the SPI flash quad data
> bit 3 output (DQ3/HOLD#/IO3) pin and connect
> to an external 4.7kohm pull-up resistor to
> VCCO_14

Weiterhin ("Power-on Sequence Precautions"):

> At power-on, the FPGA automatically starts its configuration procedure.
> When the FPGA is in Master Serial SPI configuration mode, the FPGA asserts
> FCS_B Low to select the SPI flash and drives a read command to the SPI flash.
> The SPI flash must be awake and ready to receive commands before the FPGA
> drives FCS_B Low and sends the read command.

Da steht nicht, der FPGA würde Hold oder WP ansteuern.

Mir wären das zu viele Annahmen, die du triffst und ich würde mich an 
die Configuration-Guide halten, um sicher zu gehen.

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Mampf F. schrieb:
> Mir wären das zu viele Annahmen, die du triffst und ich würde mich an
> die Configuration-Guide halten, um sicher zu gehen.

Aber sowas von...

Gustl B. schrieb:
> Und eigentlich würde ich auch erwarten, dass das FPGA ...
Da gabs frueher mal MAD-TV, iirc auf RTL, dort hatten die eine 
Partnervermittlung namens "Lowered Expectations"...

Gruss
WK

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.