mikrocontroller.net

Forum: FPGA, VHDL & Co. XESS XSA-3S1000 und SDRAM


Autor: Jan Ziehnert (salatkopf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe seit kurzem das XSA-3S1000 Board, weil ich wegen
Platzproblemen vom Spartan3-Starter-Kit umsteigen musste. Leider ist
die SDRAM-Ansteuerung wesentlich umständlicher. Hat sich jemand
schonmal mit dem Board und dem RAM beschäftigt und könnte mir ein paar
Hinweise geben?

Grüße
Jan

Autor: Thomas Pototschnig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: Cpt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe ein XESS Board mit einem Spartan 2 drauf. Dafür gibt es einen
SDRAM Controller als Download bei XESS vielleicht gibt es das auch für
deins. Hab allerdings nicht nachgesehen.

Grüße Cpt

Autor: gerdp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal bei www.xess.com vorbei.
Da gibt es fertig einen SDRAM Controller plus Adaption auf das
XSA-3S1000 board (Clock aufbereitung) sowie ein Dual-Port und ein VGA
Modul als Vhdl. Bei mir funktioniert das sehr gut.

Autor: Jan Ziehnert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort, hab es auch endlich gefunden. Habe nur noch ein
Problem mit dem Beiliegenden ucf-file. Da sind 2 Einträge drin:

# Manually assign locations for the DCMs along the bottom of the FPGA
# because PAR sometimes places them in opposing corners and that ruins
the clocks.
INST "u0_u1_dllint" LOC="DCM_X0Y0";
INST "u0_u1_dllext" LOC="DCM_X1Y0";

Wie muss ich die 2 INST-Zeilen verändern, damit es klappt? Im Moment
bekomme ich bei Translate nur den Fehler:

ERROR:NgdBuild:752 - Line 8 in 'test_board.ucf': Could not find
instance(s)
   'u0_u1_dllint' in the design.  To suppress this error, specify the
correct
   instance name or remove the constraint.  The 'Allow Unmatched LOC
   Constraints' ISE property can also be set ( -aul switch for command
line
   users ).

Danke.

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder die beiden Zeilen per Kommentarzeichen unschädlich machen und
hoffen das der Placer einen guten Tag hat, (ist garnicht mal so
selten).

#INST "u0_u1_dllint" LOC="DCM_X0Y0";
#INST "u0_u1_dllext" LOC="DCM_X1Y0";

Wenn die Meldung "Constraint not meet" erscheint, hat er vielleicht
einen schlechten Tag.

Oder Du packst ein Wildcard in den Instancenamen, das sollte klappen.

INST "*u0_u1_dllint" LOC="DCM_X0Y0";
INST "*u0_u1_dllext" LOC="DCM_X1Y0";

Ansonsten frag nochmal nach.

Autor: Jan Ziehnert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

das funktioniert zwar, aber jetzt bekomm ich ne Warnung:

WARNING:Timing:2804 - Feedback on DCM dllext forms an incomplete loop.
The
   Tdcmino calculation will be invalid. If the DCM uses external
feedback,
   please apply the FEEDBACK constraint to indicate the external board
delay.
   Consult the Constraints Guide for further information on how to
apply the
   FEEDBACK constraint.

Kann ich die ignorieren?

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, besser nicht ignorieren.

Wahrscheinlich treibt eine DCM ein Ausgangspin, von dort zieht das
Signal eine Schleife auf dem board, wahrscheinlich zu den
(DDR-)SDRAM's. Dann gehts über ein Global clock pin wieder rein in den
FPGA und dann zum FEEDBACK eingang der DCM. Die Timinganalyse hätte gern
eine Angabe über die zeit die das Signal auf dieser Schleife braucht.

Vielleicht wird nur überprüft ob Grenzwerte überschritten werden, aber
möglicherweise werden auch zeiten für FPGA interne Werte
daraus ermittelt. Ohne die FEEDBACK Werte, könnten die Tools worst Case
werte ansetzten, was Place und Route unnötig erschwert. Oder diese Pfade
werden garnicht auf Timing überprüft, dann ist es russiches Roulette ob
der FPGA funktioniert. Also am Besten das FEEDBACK auf 1-2 ns setzten,
das sollte fürs erste reichen. Dazu im UCF File eine Zeile wie

NET feedback_signal FEEDBACK = real units NET output_signal

einfügen. feedback signal sollte der signalname am FEEDBACK Pin der DCM
sein. Output signal das ausgangssignal an der Top Entity, das raus zur
schleife führt. Oder das Signal am CLK Ausgang der DCM, das wie
beschrieben rausführt, real Units wird mit 2 ns ersetzt. Falls er die
signalnamen bemeckert, ein Sternchen vorn und hinten an den Signalnamen
setzten. Oder im FPGEEditor die DCM anzoomen und die Signalnamen
übernehmen. Falls 2 ns zu eng sind, auf 1 ns gehen, idealerweise auf
dem Board ausmessen.

Vielleicht gibt es schon dieses FEEDBACK constraint im UCF Files
des memorycontrollers. Dann helfen die Sternchen wie bei den LOCATE
Constraints weiter.

IMHO solltest Du unbedingt diese Warning wegbekommen, es kann sein, das
es auch ohne dieses Constraint klappt (bei fast leeren FPGA, alle
Optimierung vom Place und Route aktiviert), es kann aber auch schief
gehen. Dann suchst Du Dir nen Wolf warum die Daten aus dem SDRAM nicht
stimmen.

Autor: Jan Ziehnert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

erstmal danke für die Hilfe. Habe das Problem gelöst. Der Fehler lag
bei XESS. Im UCF-File standen die Zeilen

INST "u0_u1_dllint" LOC="DCM_X0Y0";
INST "u0_u1_dllext" LOC="DCM_X1Y0";

es muss aber u0/u1/dllint und u0/u1/dllext heißen.

Dann kommt nur noch eine Warnung mit "Unexpected DCM feedback loop",
die man aber laut Xilinx Answers Database ignorieren kann (in 8.1 soll
sie weg sein).

Grüße Jan

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt der path seperator hat sich zw. ISE 6.3 und 8.1 geändert.
Hätt ich mir auch merken können :-(

Autor: Siavosh Nafisi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
I don't know German, So I write my answer in  English.
I have sent the correct file for you.
I exactly know waht you should do because I have worked on the problem a 
lot and finally I was able to solve the problem.
You have two ways to solve the problem:
1.These constraints were used to guide the Xilinx ISE 6.3 software when 
it was placing-and-routing the design.  Newer versions of the ISE 
software may not need these constraints, so you can remove them.
2.Another way is that you can leave them in place, but you will have to 
find the instance names assigned to the DLLs by your version of the ISE 
software.
You must correct the file as the following:
INST "u0_u1_gen_dlls.dllint" LOC="DCM_X0Y0";
INST "u0_u1_gen_dlls.dllext" LOC="DCM_X1Y0";

and the problem will be solved.




Note:
If you act as I said, this warning will be appeared:
Timing constraints didn't meet.
To solve this problem you must increase the optimization effort level in 
place and route properties.
The software has recommended other thing too.


If you had any questions don't hesitate to ask me:
nafisi_sia@yahoo.com

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.