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.
Ich bin nicht sicher, aber probier mal statt NET LED7 LOC = G1; das hier NET LED7 LOC = "G1";
und dann gab es ja noch das Grossschrift-kleinschrift Problem in der ISE
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?
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-
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.
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 |
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 = 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?
TQ144 passt schon, aber led0 hängt beim basys an p15 und sw0 ist an p38. Passende .ucf hatte ich oben verlinkt. -gb-
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.
@ Gustl Buheitel Es ist ein Basys2, die Belegung im entsprechenden UCF stimmt mit mit der im Datenblatt überein. Ich Schlaf mal drüber...
Die Belegung stimmt mit der im Datenblatt von Digilent zum Basys2 überein. Auf dem Chip selber steht: 3S250E D42003-1029
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.