Forum: FPGA, VHDL & Co. Spartan3e SK & DDR RAM


von Joerg B (Gast)


Lesenswert?

Hallo,

Ich habe hier ein Spartan3e Starter Kit und moechte gerne das RAM
darauf benutzen -- und zwar nicht via OPB fuer den Microblaze, sondern
fuer eine eigene Schaltung.

Nach einigen Umwegen bin ich zu der Ueberzeugung gekommen, dass es
wohl
am sichersten ist, wenn ich den MIG von der Xilinx Seite benutze. Aber
auch dabei stellen sich einige Probleme ein:


1) Habe ISE 8.1.03i installiert, zusaetzlich das MIG Paket. Im
CoreGenerator erscheint auch MIG, aber bei "customize" passiert
einfach gar nichts (Unter Windows & Linux).

2) Ich habe mal die Verziechnisse des CoreGenerators durchstoebert,
und
da auch die MIG.exe gefunden. Dem Tool habe ich eine Datei als Eingabe
gegeben, die sagt dass ich einen xc3s500e-fg320-4 habe -- es startet
dann auch, ich kann mir RAM aussuchen und es generiert mir auch VHDL
Files.
Aber: Ich kann nirgends waehlen welche Signale auf welchen Pins
liegen,
und ueberhaupt werde ich aus den generierten Files nicht ganz schlau.



Lange Rede, kurze Frage: Hat jemand von euch irgendein demo-design,
das
DDR RAM auf dem Starter Kit benutzt, und das nicht mit dem
System-Builder fuer Miroblaze gebaut wurde?


Vielen Danker schonmal,

   joerg



PS: sorry for repost! -- Aber offenbar kann ich HTML Formulare nicht
bedienen :(

von FPGAküchle (Gast)


Lesenswert?

#Aber: Ich kann nirgends waehlen welche Signale auf welchen Pins
#liegen,

Das macht man im *.ucf file oder per Klickkacki im pace .

bei den generierten files sollte eine Vorlage (Template) in vhdl
sein die du in dein design als component einbindest. Ferner eine
netzliste (*.ngc (?) *.edn (?)) . Die wird während der Implementierung
(ngdbuilt) automatisch in den FPGA eingebunden.

Also das gleiche prinzip wie für jedes module aus dem Coregen (hoffe
ich), so dass du auch bei den tutorials für den coregen nachschlagen
kannst.

von Joerg B (Gast)


Lesenswert?

##Aber: Ich kann nirgends waehlen welche Signale auf welchen Pins
##liegen,

#Das macht man im *.ucf file oder per Klickkacki im pace .

Aber Coregen schreibt mir schon eine riesige .ucf, in der ganz viele
contraints stehen:

===
[..]
#############################################################
##  constraints for bit cntrl0_DDR_DQS, 0, location in tile: 0
NET "cntrl0_DDR_DQS[0]" LOC = N4;

## LUT location constraints for col 0
INST
"main_00/top0/data_path0/data_read_controller0/dqs_delay0_col0/one"
LOC = SLICE_X2Y17;
INST
"main_00/top0/data_path0/data_read_controller0/dqs_delay0_col0/one"
BEL = F;
INST
"main_00/top0/data_path0/data_read_controller0/dqs_delay0_col0/two"
LOC = SLICE_X2Y17;
[..]
===


D.h. coregen schreibt die LUT belegung fuer (fast jede?) Logikzelle
schon ins *.ucf; da kann ich doch jetzt nicht einfach die IO/Pins
verlegen ohne dass das Timing kaputt geht, oder?



  joerg

von Joerg B (Gast)


Lesenswert?

Zu Dokumentationszwecken:


Ich habe mit dem Xilinx-Support gemailed, und die haben mir einen
speziell fuer das S3E StarterKit zugeschnittenen DDR Controller
zugeschickt.

MIG 1.5 kann den DDR Controller nicht generieren, da er die noetiger
verteilung der Pins auf die IO-Banks gar nicht unterstuetzt.

=> Xilinx fragen, die schicken einem das.


  j.

von FPGAküchle (Gast)


Lesenswert?

Wieder was gelernt, bisher kannte ich nur den Xilinx PCI-Core als den
Core der ein festes pinning verlangt. Jetzt kommt der DDR
Mem-Controller dazu, bei dem sich das PCB-layout (pinning) nach dem
Core zu richten hat. (oder Xilinx schickt einem den modifizierten Core)


Langsam stimmt das mit den flexiblen User-I/O Pins nicht mehr :-( .

Experimentell könnte man im generierten ucf zuerst die PIN-locations
ändern ändern und schauen ob der PAR timing fehler meldet.
Vorausgesetzt die richting timing constraints stehen im *.ucf.
Wenns nicht klappt LOC-constraints für die slices im MemController
auskommentieren. Am besten zuerst die die zu den Pins gehen (falls das
im Core-ucf erkenntlich ist). Und Xilinx hat bei anderen cores die
Möglichkeit relative LOCATION- constraints zu vergeben, also den Block
im Ganzen innerhalb des FPGA's zu verschieben.
Kollege hat mächtig gekämpft einen DDR-Controller mit korrektem timing
zu schaffen, er hat dann manuell geplaced und geroutet (den Teil zu den
Pins hin). Wäre schön wenn xilinx da 'ne flexible Lösung schafft.

von Frager (Gast)


Lesenswert?

Gerade heute habe ich im google FPGA Forum gelesen, daß der neue MIG ein 
speziell auf das Starterkit zugeschnittene DEsign liefert.

Nur, wie kriege ich den MIG (ans LAufen)? Ich finde weit und breit 
keinen im CORE Generator.

von Frager (Gast)


Lesenswert?

Läuft das nun mit dem DDR-Controller und dem RAM ?

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.