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


von noeppkes (Gast)


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).
1
ERROR:ConstraintSystem:59 - Constraint <NET "infrastructure_top0/sys_clk_ibuf"
2
   TNM_NET = "SYS_CLK";>
3
   [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD_mig_
4
   ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(18)]: NET
5
   "infrastructure_top0/sys_clk_ibuf" not found.  Please verify that:
6
   1. The specified design element actually exists in the original design.
7
   2. The specified object is spelled correctly in the constraint source file.
8
ERROR:ConstraintSystem:58 - Constraint <NET "infrastructure_top0/wait_200*"
9
   TIG;>
10
   [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD_mig_
11
   ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(22)]: NET
12
   "infrastructure_top0/wait_200*" does not match any design objects.
13
ERROR:ConstraintSystem:59 - Constraint <NET "infrastructure_top0/wait_clk90"
14
   TIG;>
15
   [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD_mig_
16
   ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(23)]: NET
17
   "infrastructure_top0/wait_clk90" not found.  Please verify that:
18
   1. The specified design element actually exists in the original design.
19
   2. The specified object is spelled correctly in the constraint source file.
20
ERROR:ConstraintSystem:58 - Constraint <NET "infrastructure_top0/sys_rst*"  
21
   TIG;>
22
   [C:/Designs/Spartan-3E_Starter_Kit/Test_Designs/DDR_MIG/s3e_starter_revD_mig_
23
   ddr/xst_vlog_bl2cl2/xst_vlog_bl2cl2/par/xst_vlog_bl2cl2.ucf(24)]: NET
24
   "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 ...
1
entity top_level_ddr is
2
    Port ( cntrl0_DDR_DQ            : inout STD_LOGIC_VECTOR (15 downto 0);
3
           cntrl0_DDR_A             : out STD_LOGIC_VECTOR (12 downto 0);
4
           cntrl0_DDR_BA            : out STD_LOGIC_VECTOR (1 downto 0);
5
           cntrl0_DDR_CK            : out STD_LOGIC;
6
           cntrl0_DDR_CK_N          : out STD_LOGIC; 
7
           cntrl0_DDR_CKE           : out STD_LOGIC;
8
           cntrl0_DDR_CS_N          : out STD_LOGIC;
9
           cntrl0_DDR_RAS_N         : out STD_LOGIC;
10
           cntrl0_DDR_CAS_N         : out STD_LOGIC;
11
           cntrl0_DDR_WE_N          : out STD_LOGIC;
12
           cntrl0_DDR_DM            : out STD_LOGIC_VECTOR (1 downto 0);
13
           -- S3E_STARTER cntrl0_rst_dqs_div_in,
14
           -- S3E_STARTER cntrl0_rst_dqs_div_out,
15
           cntrl0_rst_dqs_div       : inout STD_LOGIC; -- S3E_STARTER
16
           -- S3E_STARTER SYS_CLKb,
17
           SYS_CLK                  : in STD_LOGIC;
18
           cntrl0_led_error_output1 : out STD_LOGIC;
19
           -- S3E_STARTER reset_in,
20
           reset                    : in STD_LOGIC; -- S3E_STARTER
21
           DATA_VALID               : out STD_LOGIC; -- S3E_STARTER
22
           cntrl0_DDR_DQS           : inout STD_LOGIC_VECTOR (1 downto 0)
23
      );
24
end top_level_ddr;

von Subjekt5 (Gast)


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

von Christian A. (noeppkes)


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 ...

von Duke Scarring (Gast)


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

von Christian A. (noeppkes)


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 ...

von Duke Scarring (Gast)


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_content&task=section&id=13&Itemid=125
[2]ftp://ftp.xilinx.com/pub/applications/misc/s3e_starter_revd_mig_ddr%5 
B1%5D.zip

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.