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
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
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.
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.
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.
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?
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.
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
Stimmt der path seperator hat sich zw. ISE 6.3 und 8.1 geändert. Hätt ich mir auch merken können :-(
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.