Forum: FPGA, VHDL & Co. quartus constraints feedback clock input (DECA SD Karten interface)


von Christian G (Gast)


Lesenswert?

Hallo,

ich spiele etwas mit dem terasic DECA board und dem SD Karten interface 
und bis lang bin ich immer irgendwie drumherum gekommen mich mit timing 
constraints zu beschäftigen aber jetzt gehts wohl nicht mehr ohne und 
ich steh auf dem Schlauch....

Es geht um den feedback clock input des ST6G3238 level translator 
welcher sich zwischen den fpga pins und der SD Karte befindet.

Ich möchte die feedback clock nutzen um an deren rising edge Daten von 
der SD Karte zu lesen. Ich denke dafür ist die gedacht.

Quartus compiliert zwar mein design aber meckert halt berrechtigterweise 
an das mein feedback clock input als clock erkannt wurde es aber kein 
clock assignment gibt:

Warning (332060): Node: SD_FB_CLK was determined to be a clock but was 
found without an associated clock assignment.

Schätze weil mein .sdc file nur die basics enthällt:
1
create_clock -period "10.0 MHz" [get_ports ADC_CLK_10]
2
create_clock -period "50.0 MHz" [get_ports MAX10_CLK1_50]
3
create_clock -period "50.0 MHz" [get_ports MAX10_CLK2_50]
4
derive_pll_clocks
5
derive_clock_uncertainty

Ich hab mir auf die schnelle ein paar constraints Beispiele angeschaut 
aber mein Problem nicht gefunden oder erkannt.

Wie sage ich dem timing analyzer das der feedback clock input eine clock 
ist mit variabler Frequenz von 100KHz - 25 MHz ?
100KHz während der initialisierungs Phase der SD Karte und 25MHz danach.

Wenn ich das db des ST6G3238 richtig verstehe ist die feedback clock um 
ein paar ns versetzt zu der output clock die mein design generiert (1 - 
~6ns) aber auch das hilft mir im Moment nicht wirklich weiter.

Hat evtl. jemand ne Ahnung wie man das macht?

von Christian G (Gast)


Lesenswert?

... Frage mich ob das nicht evtl. die falsche Herangehensweise ist. 
Sollte ich lieber eine Art edge detection einbauen welche die Feedback 
clock sampled (Haupttakt ist 50MHz)? Muss man dann entsprechend setup 
Zeiten setzten für die Feedback clock und die Daten inputs wegen dem 
Versatz zum Haupttakt?

von Christian G (Gast)


Lesenswert?

glaube das hat sich erledigt, habe es erstmal hinbekommen indem ich die 
Feedback clock als normalen Input definiere und dann auf die "rising 
edge" checke.

von Duke Scarring (Gast)


Lesenswert?

Christian G schrieb:
> Es geht um den feedback clock input des ST6G3238 level translator
> welcher sich zwischen den fpga pins und der SD Karte befindet.
>
> Ich möchte die feedback clock nutzen um an deren rising edge Daten von
> der SD Karte zu lesen. Ich denke dafür ist die gedacht.
Ich denke, man sollte im Datenblatt des ST6G3238 nachschauen, wofür die 
feedback clock gedacht ist und wie die Spezifikation dafür aussieht.
Ansonsten ist es prinzipiell richtig, das level shifter, Optokoppler und 
magnetische Isolatoren (ADUMxx) die Latenz erhöhen und das Rücklesen von 
Daten oft nur dann funktioniert, wenn man die Datenrate reduziert.

Mit den timing constraints kannst Du dem Tool sagen, in welchem 
Zeitfenster gültige Daten anliegen. Du mußt die Daten trotzdem im 
passenden Moment abholen. Es wird nur geprüft, das die Logik das dann 
auch sicher schafft.

Duke

von Markus F. (mfro)


Lesenswert?

Aus FPGA-Sicht ist das ein "ganz normaler", externer Takt.

"Variabel" kannst Du den nicht gestalten, aber Du kannst definieren, 
dass ein und derselbe Pin potentiell exklusiv mit mehreren Frequenzen 
getaktet wird. Mehrere "create_clock" auf dem selben Pin, die dann per 
"set_clock_groups -exclusive" als ausschliesslich (also nicht 
gleichzeitig auftretend) definiert werden.

Das "Empfängerdesign" des SD-Controllers wird dann mit diesem Takt 
betrieben, der Datenaustausch zum "Hauptdesign" mit dem FPGA-Takt ggf. 
per asynchronem Fifo.

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.