www.mikrocontroller.net

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


Autor: Joerg B (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :(

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joerg B (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg B (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frager (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frager (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft das nun mit dem DDR-Controller und dem RAM ?

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.