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?
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.
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.
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?
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.
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.
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-
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.
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);
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.
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);
Matze schrieb:> NET "led<0>" LOC = "M5" ; # Bank = 2, Signal name = LD0> NET "sw<0>" LOC = "P11"; # Bank = 2, Signal name = SW0Matze 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?
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.
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.
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.
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-
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.