Forum: FPGA, VHDL & Co. Xilinx ISE Pinzuordnung an Sparten 3E


von Matze (Gast)


Lesenswert?

Hallo,

Versuche grade mein erstes FPGA-Projekt zum laufen zu bringen.

Habe das Xilinx ISE Web pack (14.2), ein Digilent-Basys board mit 
Sparten 3E.
Zunächst soll wenn ein Schalter Eingschaltet wird eine LED Leuchten.
Der Code sieht so aus:

entity Laden3 is
    Port ( Switch5 : in  BIT;
           LED7 : out  BIT);
end Laden3;

architecture Behavioral of Laden3 is
begin
LED7<=Switch5;
end Behavioral;


Dieser Code Lasst sich Synthetisieren.
Das UCF-File ist oberhalb des Codes eingebunden und enthält:
NET LED7       LOC = IO_L05N_3;
NET Switch5    LOC = IO_L04P_3;

Nun bekomme ich die 2 Fehler:
ERROR:MapLib:
30 - LOC constraint IO_L05N_3 on LED7 is invalid: No such site on
the device. To bypass this error set the environment variable
'XIL_MAP_LOCWARN'.
ERROR:MapLib:
30 - LOC constraint IO_L04P_3 on Switch5 is invalid: No such site
on the device. To bypass this error set the environment variable
'XIL_MAP_LOCWARN'.

No such site on the device?
Meint das Tool es kennt keinen Pin am Chip der so heist?
Wie kann ich das ändern?

von Andi (chefdesigner)


Lesenswert?

Nein, die Pins heisten bei S3E so wie "A3" , "B13" oder so.

Sie mal das Beispiel UCF con Xilinx.

Hier im Forum gab es irgendwo ein Projekt mir einen S3E board, da ist 
eins dabei.

von Matze (Gast)


Lesenswert?

Mit den "kurzen" Namen hab ichs auch schon versucht, dann würde es 
heisen:
NET LED7       LOC = G1;
NET Switch5    LOC = F3;

Die Fehlermeldung ist jedoch identisch:
ERROR:MapLib:
30 - LOC constraint G1 on LED7 is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:MapLib:
30 - LOC constraint F3 on Switch5 is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.

Scheinbar kennt er die Pinbezeichnungen nicht.

von Hugo (Gast)


Lesenswert?

Ich bin nicht sicher, aber probier mal

statt
NET LED7       LOC = G1;

das hier

NET LED7       LOC = "G1";

von Andi (chefdesigner)


Lesenswert?

und dann gab es ja noch das Grossschrift-kleinschrift Problem in der ISE

von Hugo (Gast)


Lesenswert?

Hugo schrieb:
> NET LED7       LOC = "G1";

oder sowas

NET "LED7"       LOC = "G1";

von Matze (Gast)


Lesenswert?

Nun habe ich:
NET LED7       LOC = G1;
NET LED7       LOC = g1;
NET LED7       LOC = "G1";
NET LED7       LOC = "g1";
NET "LED7"     LOC = "g1";
NET "LED7"     LOC = "G1";

Die Fehlermeldung ist immer die gleiche, mit grossem G geschrieben.
Gross oder Kleinschreibung scheint ihn nicht zu interessieren.
Die "XX" ebensowenig.

Bin ratlos.
Gibt es noch andere Möglichkeiten die Pins zuzuseisen?

von Sven P. (Gast)


Lesenswert?

Matze schrieb:
> Gibt es noch andere Möglichkeiten die Pins zuzuseisen?

Mit PlanAhead zum Beispiel.

von Gustl B. (-gb-)


Lesenswert?

Warum nimmst du nicht das .ucf, das Digilent anbietet?
Wenn du ein Basys hast ist es das hier:
http://www.digilentinc.com/Data/Products/BASYS/BasysRevEGeneral.zip
Für das Basys2 das:
http://www.digilentinc.com/Data/Products/BASYS2/Basys2_100_250General.zip

Hast du auch den richtigen FPGA mit Package und so in deinem Projekt 
eingestellt?

-gb-

von Matze (Gast)


Lesenswert?

Ist echt gut das es ein UCF-File von Digilent gibt aber wenn ich es 
einbinde gibts über 130 Fehler.
So wie es aussieht hann er mit keiner einzigen Zuweisung was anfangen.
Dort wird so zugewiesen:

NET "led<0>" LOC = "M5" ;  # Bank = 2, Signal name = LD0

Im Programm hab ich nun jeweils:
led<0>
led0
LD0
Ausprobiert, immer mit dieser Fehlermeldung:

ERROR:ConstraintSystem:59 - Constraint <NET "led<0>" LOC = "M5" ;>
[Basys2_100_250General.ucf(2)]: NET "led<0>" 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.

Als Package hab ich TQ144 ausgewählt.

von Sven P. (Gast)


Lesenswert?

Das sind ja jetzt vollkommen andere Fehlermeldungen!
Zuvor hat er sich an der Location aufgehängt, nun am Netznamen.

Da geht vorher schon was schief; verschluckt sich die Synthese eventuell 
schon? Xilinx empfiehlt, STD_LOGIC zu verwenden, mach das doch auch mal, 
anstelle von BIT.

von Gustl B. (-gb-)


Lesenswert?

Ja richtig, alles was du nicht verwendest aus der .ucf kommentierst du 
einfach aus mit # am Zeilenanfang. Du lässt also nur die wirklich 
benötigten Zeilen stehen ohne # am Anfang.

Und wenn es dann immer noch nicht klappt vermute ich stark, dass du in 
den Projekteinstellungen einen anderen FPGA/Package gewählt hast.

-gb-

von Matze (Gast)


Lesenswert?

Die Synthese verschluckt sich nicht,
"completed successfully" sollte in ordnung sein.

Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Laden3 is
    Port ( SW0 : in  STD_LOGIC;
           LD0 : out  STD_LOGIC);
end Laden3;

architecture Behavioral of Laden3 is
begin
LD0<=SW0; --led0 / led<0>
end Behavioral;

UCF:
NET "led<0>" LOC = "M5" ;  # Bank = 2, Signal name = LD0
NET "sw<0>" LOC = "P11";  # Bank = 2, Signal name = SW0

Habe alle anderen auskommentiert.
Eingestellt ist der XC3S250E im TQ144 Package, er ist überall 
eingestellt.
(Projekt, Chipsymbol, 3-Faches Chip-Symbol, UCF)
Kann man Chip/Package sonst noch irgendwo einstellen?

Fehlermeldung:
ERROR:
ConstraintSystem:59 - Constraint <NET "led<0>" LOC = "M5" ;>
[Basys2_100_250General.ucf(2)]: NET "led<0>" 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.

WARNING:
ConstraintSystem - A target design object for the Locate constraint
'<NET "led<0>" LOC = "M5" ;> [Basys2_100_250General.ucf(2)]' could not 
be
found and so the Locate constraint will be removed.

von Sven P. (Gast)


Lesenswert?

Matze schrieb:
> Code:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
4
entity Laden3 is
5
    Port ( SW0 : in  STD_LOGIC;
6
           LD0 : out  STD_LOGIC);
7
end Laden3;
8
9
architecture Behavioral of Laden3 is
10
begin
11
LD0<=SW0; --led0 / led<0>
12
end Behavioral;

Das verlangt im UCF nach 'LD0' und 'SW0'. Also so:
1
NET "LD0" LOC = "M5" ;  # Bank = 2, Signal name = LD0
2
NET "SW0" LOC = "P11";  # Bank = 2, Signal name = SW0

von Gustl B. (-gb-)


Lesenswert?

Seltsam, aber ja:

Also wenn man in vhdl nur schreibt

entity LED is
    Port ( sw0 : in  STD_LOGIC;
           led0 : out  STD_LOGIC);
end LED;

und

NET "Led<0>" LOC = "M5" ;  # Bank = 2, Signal name = LD0
NET "sw<0>" LOC = "P11";  # Bank = 2, Signal name = SW0

geht es nicht, aber es geht wenn man alle LEDs nimmt. Also:

entity LED is
    Port ( sw : in  STD_LOGIC_VECTOR(7 downto 0);
           led : out  STD_LOGIC_VECTOR(7 downto 0));
end LED;

und dann natürlich:

led(0)<=sw(0);

von Matze (Gast)


Lesenswert?

Sven P. schrieb
> Das verlangt im UCF nach 'LD0' und 'SW0'. Also so:
> NET "LD0" LOC = "M5" ;  # Bank = 2, Signal name = LD0
> NET "SW0" LOC = "P11";  # Bank = 2, Signal name = SW0

Dann sind wir wider am Anfang, er kennt P11 und M5 nicht.

ERROR:
MapLib:30 - LOC constraint M5 on LD0 is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.

Durch Scheiben in 'XX' gehts auch nicht.

von Gustl B. (-gb-)


Lesenswert?

Nimm einfach alle LEDs und SW und nutze dann nur einen, du brauchst auch 
nur den einen den du nutzt in der .ucf Datei zu haben. Also:

entity LED is
    Port ( sw : in  STD_LOGIC_VECTOR(7 downto 0);
           led : out  STD_LOGIC_VECTOR(7 downto 0));
end LED;

.
.
.

led(0)<=sw(0);

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Matze schrieb:
> NET "led<0>" LOC = "M5" ;  # Bank = 2, Signal name = LD0
> NET "sw<0>" LOC = "P11";  # Bank = 2, Signal name = SW0
Matze schrieb:
> Eingestellt ist der XC3S250E im TQ144 Package, er ist überall
> eingestellt.
An einem TQ144 Gehäuse findest du keinen M5 und keinen P11...  :-o
Matze schrieb:
> ein Digilent-Basys board mit Sparten 3E.
Welcher Chip ist denn auf dem Board tatsächlich drauf?
Und welches ucf-File verwendest du dafür?

von Gustl B. (-gb-)


Lesenswert?

TQ144 passt schon, aber led0 hängt beim basys an p15 und sw0 ist an p38.

Passende .ucf hatte ich oben verlinkt.

-gb-

von Matze (Gast)


Lesenswert?

Gustl Buheitel schrieb
> geht es nicht, aber es geht wenn man alle LEDs nimmt. Also:
>
> entity LED is
>     Port ( sw : in  STD_LOGIC_VECTOR(7 downto 0);
>            led : out  STD_LOGIC_VECTOR(7 downto 0));
> end LED;
>
> und dann natürlich:
>
> led(0)<=sw(0);

Mein Programm nun:
entity Laden3 is
    Port ( sw : STD_LOGIC_VECTOR(7 downto 0);
           Led : out  STD_LOGIC_VECTOR(7 downto 0));
end Laden3;

architecture Behavioral of Laden3 is
begin
Led(0)<=sw(0);
end Behavioral;

Leider gehts bei mir nicht, bekomm wenn ich um UCF alle 8SW/LEDs NICHT 
Auskommentiere:

ERROR:MapLib:30 - LOC constraint M5 on Led<0> is invalid: No such site 
on the device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint P11 on sw<0> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint G1 on Led<7> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint N4 on Led<5> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint N5 on Led<4> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint M11 on Led<1> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint N3 on sw<7> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint E2 on sw<6> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint F3 on sw<5> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint G3 on sw<4> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint B4 on sw<3> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint K3 on sw<2> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.
ERROR:
MapLib:30 - LOC constraint L3 on sw<1> is invalid: No such site on the
device. To bypass this error set the environment variable 
'XIL_MAP_LOCWARN'.

Er Meckert also über sw0 bis sw7 (Alle)
Aber bei den LEDs fällt auf, er meckert nur über 0,1,4,5,6,7.
Er meckert nicht über LED2 und LED3!
Hab keine Ahnung warum grade über die 2 nicht.

Wenn ich im UCF alle bis auf die genutzten sw0 und led1 auskommentiere 
findet er auch diese nicht.

von Matze (Gast)


Lesenswert?

@ Gustl Buheitel
Es ist ein Basys2, die Belegung im entsprechenden UCF stimmt mit mit der 
im Datenblatt überein.

Ich Schlaf mal drüber...

von Matze (Gast)


Lesenswert?

Die Belegung stimmt mit der im Datenblatt von Digilent zum Basys2 
überein.
Auf dem Chip selber steht:
3S250E
D42003-1029

von Gustl B. (-gb-)


Lesenswert?

Echt? Hier (ok ist ein Basys) steht immer:

LOC = "Pxx" also immer P wie "Pin". Aber ok es ist noch was:

Wenn du nur led(0) und sw(0) verwendest, dann dürfen auch nur diese in 
der ucf stehen, also ohne #. Sonst geht zwar alles, aber es wird kein 
Bitstream gebaut.

Du kannst natürlich in vhdl alle leds und sw oben bei port 
reinschreiben, aber in der ucf sollen nur die auftauchen die du auch 
wirklich verwendest.

von Christian R. (supachris)


Lesenswert?

N5, G1, N4 usw. gibt es definitiv nicht an einem TQ144 FPGA, das sind 
BGA Ball Bezeichnungen. An einem TQFP Gehäuse beginnen alle mit P für 
Pin.
Laut Reference Manuel hat das Basys2 einen Spartan 3 im CP132 BGA 
Gehäuse verbaut. Das musst du in den Projektoptionen natürlich so 
einstellen.

von Gustl B. (-gb-)


Lesenswert?

Also: Das Basys2 hat ein BGA also ist der TQ144 in den 
Projekteinstellungen falsch.

led0 hängt an M5 und sw0 an P11 das stimmt.

In den Projekteinstellungen den richtigen Spartan wählen oder einfach 
ein Beispielprojekt öffnen und gucken was da wo eingestellt ist.

In einem Beispielprojekt das ich jetzt mal geöffnet habe ist

Spartan 3E
XC3S100E
CP123
-5

eingestellt.

-gb-

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Es ist einfach so, dass man nur mal den AUFDRUCK auf dem FPGA anschauen 
muss, dann weiss man was man hat. Und das gehört dann in die 
Projekteinstellungen, und das UCF File muss die entsprechenden Pinnamen 
verwenden, die im Datenblatt stehen...

Ich halte die Fehlermeldungen eigentlich für sehr aussagekräftig: det 
Planer kann den gewünschten Pin bei diesem Gehäuse nicht finden.

von Matze (Gast)


Lesenswert?

Nun Läufts, Fehler war die Package-Einstellung mit CP132 statt TQ144 
gehts.

Danke an Alle die geholfen haben!

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.