www.mikrocontroller.net

Forum: FPGA, VHDL & Co. DDR-RAM Spartan3E Starterkit nutzen


Autor: noeppkes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.

Ich habe erfolgreich auf dem Spartan3 Starterkit eine 
TFT-Display-Ansteuerung (600 * 480 Pixel mit 16 Bit Farbtiefe) mit 2 
Hardwarefenstern in VHDL programmiert. Incl. Anbindug an einen 
Controller.

Da dort das RAM aber nur 1MB gross ist, bin ich sehr eingeschränkt.
Ich besitze ncoh das Spartan 3E Starterkit (Rev.C). Da drauf sind 32 MB 
(oder sogar 64MB?) DDR RAM.
Das neun MIG (V3.61) von xilinx habe ich dazu bewegt, mir den core zu 
generieren.
Nun meine Probleme.

1.)
Ich bekomme einen Haufen Fehlermeldungen, sobald ich versuche das 
Programming File zu generieren.
Hier mal 4 Fehlermeldungen (von 302 ! welche alle ähnlich sind).
ERROR:ConstraintSystem:59 - Constraint <NET "infrastructure_top0/sys_clk_ibuf"
   TNM_NET = "SYS_CLK";>
   [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD_mig_
   ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(18)]: NET
   "infrastructure_top0/sys_clk_ibuf" not found.  Please verify that:
   1. The specified design element actually exists in the original design.
   2. The specified object is spelled correctly in the constraint source file.
ERROR:ConstraintSystem:58 - Constraint <NET "infrastructure_top0/wait_200*"
   TIG;>
   [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD_mig_
   ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(22)]: NET
   "infrastructure_top0/wait_200*" does not match any design objects.
ERROR:ConstraintSystem:59 - Constraint <NET "infrastructure_top0/wait_clk90"
   TIG;>
   [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD_mig_
   ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(23)]: NET
   "infrastructure_top0/wait_clk90" not found.  Please verify that:
   1. The specified design element actually exists in the original design.
   2. The specified object is spelled correctly in the constraint source file.
ERROR:ConstraintSystem:58 - Constraint <NET "infrastructure_top0/sys_rst*"  
   TIG;>
   [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD_mig_
   ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(24)]: NET
   "infrastructure_top0/sys_rst*" does not match any design objects.

2.)
Wie binde ich diesen nun an mein Projekt an. Bei mir läuft alles über 
Adresse 0 ... 21, Daten 0 ... 15 und CS, RD, WR. (SRAM)

Am liebsten wäre mir, wenn ich eine entsprechende Schnittstelle zum DDR 
RAM hätte in die ich lesen bzw. schreiben kann.

Hier mal die entity die mir der coregen erzeugt hat.
Vielleicht kann mit jemnd behilflich sein.
Vielen Dank.
noeppkes ...
entity top_level_ddr is
    Port ( cntrl0_DDR_DQ            : inout STD_LOGIC_VECTOR (15 downto 0);
           cntrl0_DDR_A             : out STD_LOGIC_VECTOR (12 downto 0);
           cntrl0_DDR_BA            : out STD_LOGIC_VECTOR (1 downto 0);
           cntrl0_DDR_CK            : out STD_LOGIC;
           cntrl0_DDR_CK_N          : out STD_LOGIC; 
           cntrl0_DDR_CKE           : out STD_LOGIC;
           cntrl0_DDR_CS_N          : out STD_LOGIC;
           cntrl0_DDR_RAS_N         : out STD_LOGIC;
           cntrl0_DDR_CAS_N         : out STD_LOGIC;
           cntrl0_DDR_WE_N          : out STD_LOGIC;
           cntrl0_DDR_DM            : out STD_LOGIC_VECTOR (1 downto 0);
           -- S3E_STARTER cntrl0_rst_dqs_div_in,
           -- S3E_STARTER cntrl0_rst_dqs_div_out,
           cntrl0_rst_dqs_div       : inout STD_LOGIC; -- S3E_STARTER
           -- S3E_STARTER SYS_CLKb,
           SYS_CLK                  : in STD_LOGIC;
           cntrl0_led_error_output1 : out STD_LOGIC;
           -- S3E_STARTER reset_in,
           reset                    : in STD_LOGIC; -- S3E_STARTER
           DATA_VALID               : out STD_LOGIC; -- S3E_STARTER
           cntrl0_DDR_DQS           : inout STD_LOGIC_VECTOR (1 downto 0)
      );
end top_level_ddr;

Autor: Subjekt5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noeppkes schrieb:
> Hallo zusammen.

Hallo!

> Ich besitze ncoh das Spartan 3E Starterkit (Rev.C). Da drauf sind 32 MB
> (oder sogar 64MB?) DDR RAM.
> Das neun MIG (V3.61) von xilinx habe ich dazu bewegt, mir den core zu
> generieren.
> Nun meine Probleme.

Hatte da letztens auch Probleme.
Näheres in den neuesten Artikeln in:

Beitrag "Bytefehler beim Schreiben ins DDR2"

ab dem Datum: 11.01.2011

Am besten erstmal alles in dem Artikel zum Spartan-3E-Starberboard 
durchlesen.

> 1.)
> Ich bekomme einen Haufen Fehlermeldungen, sobald ich versuche das
> Programming File zu generieren.
> Hier mal 4 Fehlermeldungen (von 302 ! welche alle ähnlich sind).
> ERROR:ConstraintSystem:59 - Constraint <NET "infrastructure_top0/sys_clk_ibuf"
>    TNM_NET = "SYS_CLK";>
>    [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD 
mig
>    ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(18)]: NET

Du musst vor infrastructure_top0/ noch den Instanznamen des Controllers 
angeben. ( also: controllerinstanzname/infrastructure_top0/u.s.w )

Wie es aussieht, hast du die den Controller plus Testbench generieren 
lassen. Da muß wohl das UCF-File noch angepasst werden.

> 2.)
> Wie binde ich diesen nun an mein Projekt an. Bei mir läuft alles über
> Adresse 0 ... 21, Daten 0 ... 15 und CS, RD, WR. (SRAM)
>

Du schreibst dir einen Controller, der anstatt der eingebauten Testbench 
den Memory-Controller ansteuert.
Beschrieben in der Controller-Dokumentation UG086 Seite 281 bis 312.
Man muß sich exakt an die Vorgaben halten.

Und noch ein wichtiger Tipp: Die Frequenz, die du im MIG für das Memory 
einstellt (von 77-133 MHz) muss exact mit der benutzten Frequenz 
übereinstimmen.

Alles in allem eine recht fummelige Angelegenheit bis alles fehlerfrei 
läuft.

Subjekt5

Autor: Christian Armbruster (noeppkes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Subjekt5,

danke für deine Antwort.
Ich denke mit DDR-Ram hast du einen gewaltigen Vorsprung mir gegenüber.
So wie es aussieht hast du deines auf dem Spartan 3E zum laufen bekommen 
(Siehe anderer Beitrag von dir).
Ich habe allerdings noch die Rev.C Variante. Anscheinend gibt es auch 
schon die Rev.D. Es soll aber nicht daran scheitern, dass ich nur Rev.C 
habe. Würde (wenn das DDR-RAM dann auch funktioniert) auch Rev.D kaufen. 
Auch ein anderes Board (Spartan 3A, 3AN) würde ich mir zulegen, wenn das 
DDR / DDR2 Ram darauf läuft.

Subjekt5 schrieb:
> Hatte da letztens auch Probleme.
>
> Näheres in den neuesten Artikeln in:
>
>
>
> Beitrag "Bytefehler beim Schreiben ins DDR2"
>
>
>
> ab dem Datum: 11.01.2011

Würdest du mir das Projekt zur Verfügung stellen, so dass ich darauf 
aufsetzen kann?

Wie gesagt: Ich möchte mir meinem Controller (Standard SRAM-BusSignale) 
ins DDR-RAM schreiben und auch daraus lesen können.

Das wäre mein Anfang.

Sofern es nicht zu gross ist, könntest du es doch auch hier zur 
Verfügung stellen.
Es würden sich sicherlich einige Leute darüber freuen.

noeppkes ...

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Armbruster schrieb:
> Anscheinend gibt es auch
> schon die Rev.D.
Jepp. Hab ich hier. Der DDR-RAM (32MB) läuft mit 100 MHz.

Allerdings habe ich den Versuch mit dem MIG was zu generieren vor einem 
halben Jahr aufgegeben. Das könnte den Forumseinträgen nach zu urteilen, 
jetzt besser gehen.

Duke

Autor: Christian Armbruster (noeppkes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Duke Scarring schrieb:
> Christian Armbruster schrieb:
>> Anscheinend gibt es auch
>> schon die Rev.D.
> Jepp. Hab ich hier. Der DDR-RAM (32MB) läuft mit 100 MHz.
Heisst das etwa, du hast das DDR "am laufen" ?
Wenn ja: Kann ich da etwas Hilfe (oder dein Projekt zu meinem Start) 
bekommen ?

>
> Allerdings habe ich den Versuch mit dem MIG was zu generieren vor einem
> halben Jahr aufgegeben. Das könnte den Forumseinträgen nach zu urteilen,
> jetzt besser gehen.
>
> Duke

Oder ist das so zu verstehen, dass du es aufgegeben hast ?

noeppkes ...

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Armbruster schrieb:
> Heisst das etwa, du hast das DDR "am laufen" ?
Ja.

> Wenn ja: Kann ich da etwas Hilfe (oder dein Projekt zu meinem Start)
> bekommen ?
Der Quellcode (bzw. das Modul ddrspa), den ich verwendet habe gibt es 
hier: [1]
Ich weiß nicht ob Dir ein Core mit AMBA/AHB was nutzt. Schau es Dir mal 
an.

> Oder ist das so zu verstehen, dass du es aufgegeben hast?
Mit dem MIG, ja. Vorerst. Das "Referenzdesign" [2] spielt bis jetzt bei 
mir auch nicht.

Duke


[1]http://www.gaisler.com/cms/index.php?option=com_co...
[2]ftp://ftp.xilinx.com/pub/applications/misc/s3e_starter_revd_mig_ddr%5 
B1%5D.zip

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.