Hallo, Ich befasse mich zur Zeit mit dem Xilinx Spartan 6, konkret mit dem vor mir liegenden EvalBoard SP601. Nun habe ich die fix einprogrammierten Selftests durchgespielt, was bis auf die nicht reagierenden Pushbuttons auch geklappt hat. Als nächsten Schritt wollte ich das Board via ISE iIMPACT12.1 ansteuern, um dieses in einem nächsten Schritt mit einem eigenen Design zu befüllen. Das USB Download Cable wird auch wunderbar erkannt, welches auf dem Board bereits integriert ist. Soweit so gut. Nach "Initialize Chain" erscheint auch mein Spartan 6 (xc6slx16 bypass) in der grafischen Darstellung. Nun zum Problem: Wohin brate ich denn jetzt mein config File, damit dieses persistent auf dem Board gespeichert wird und das FPGA die Daten aus dem Flash lädt (aus welchem?). Ich möchte eigentlich vermeiden, dass die auf dem Board abgelegten Selftests etc. gelöscht werden... Hat jemand dasselbe Board? Wie muss es programmiert werden? Gruss, Martin
Martin Kohler schrieb: > Ich möchte eigentlich vermeiden, dass die auf dem Board abgelegten > Selftests etc. gelöscht werden... Da wirst Du nicht drumherumkommen. Aber die Selftests sind sicher auch bei Xilinx zum Download zu finden. [1] > Hat jemand dasselbe Board? Wie muss es programmiert werden? Ja, wir haben hier auch so ein Board, aber ich hatte es noch nicht in den Fingern. Programmieren kannst Du den FPGA (mittels .bit-File, nicht dauerhaft) oder den Flash (dauerhaft). Wie das geht sollte sich auch in der Appnote zu finden sein. [2] Rick [1] http://www.xilinx.com/support/answers/35871.htm [2] http://www.xilinx.com/products/boards/sp601/reference_designs.htm P.S.: Ich sehe gerade: auf der Webseite steht was von Multiboot. Schau Dir die Dokumente an, vielleicht kannst Du Dein Design doch daneben legen.
Ich hab das Board auch hier. Für dauerhafte Speicherung gibts 2 varianten: BPI Flash oder SPI Flash. In Impact musst du dann auf "Create PROM File" links und dann über den Wizzard ein mcs File erzeugen. Je nachdem, welchen der beiden Chips du nutzen möchtest, halt entsprechend beim Wizzard einstellen. Dann im Boundary Scan Mode auf das blaue Kästchen über dem erkannten Spartan, wo BPI/SPI steht und "Add BPI/SPI Flash" anklicken. Dann das MCS File zuweisen und nochmals den richtigen Flash typ auswählen. Dann kannst du auch per ReadBack erst mal das File von Xilinx speichern. Dauert beim BPI Flash einige Minuten. Und dann einfach dein MCS da rein und fertig ist.
Vielen Dank für die kompetenten bisherigen Antworten. Ich habe jetzt mal für beide Flashtypen ein Readback gemacht - man weiss ja nie. Multiboot möchte ich mir vorerst noch nicht antun, zuerst soll jetzt mal eine LED leuchten wenn eine Taste gedrückt wird... Hat einer zuuuufälligerweise gleich ein ähnliches Minimalprojekt zur Hand? ;-)
Martin Kohler schrieb: > LED leuchten wenn eine Taste gedrückt wird
1 | library ieee; |
2 | use ieee.std_logic_1164.all; |
3 | |
4 | entity test is |
5 | port ( |
6 | taste : in std_logic; |
7 | led : out std_logic |
8 | );
|
9 | end entity test; |
10 | |
11 | architecture rtl of test is |
12 | begin
|
13 | |
14 | led <= taste; |
15 | |
16 | end; |
Suchst Du sowas? Rick
Rick Dangerus schrieb: > Suchst Du sowas? Ja genau. Ich habe das Minimalprojekt noch auf die weiteren 3 Taster erweitert - es funktioniert aber einfach nicht! BPI und SPI Flash habe ich jetzt gesichert und gelöscht, d.h. die DONE LED kommt bei Wahl des Flash und Impuls auf PROG nicht mehr, die rote INIT LED leuchtet. Ich kann dann auch wunderbar mit IMPACT mein .bit File direkt ins FPGA laden, die DONE LED kommt - aber weder Tasten noch LED des Evalboard zeigen eine Reaktion! Hmmm...
Martin Kohler schrieb: > aber weder Tasten noch LED des Evalboard > zeigen eine Reaktion! Hmmm... Du brauchst noch ein passendes .ucf-File. Sonst verteilt er die Ein- und Ausgaenge nach gutduenken auf dem Chip. Rick
Rick Dangerus schrieb: > Du brauchst noch ein passendes .ucf-File. Das ist natürlich dabei, ich habe das komplette Standard .ucf File vom SP601 Board genommen und auch die darin aufgeführten Namen verwendet. Was ich nicht gemacht habe ist timing constraints zu definieren, aber das dürfte wohl nicht das Problem sein. Zur Hintergrundinfo: Mit dem Spartan 3 XC3S250E habe ich schon so einiges gemacht, nur eben noch nie mit dem Spartan 6. Die VHDL-technische Seite inkl. Builden des .bit und .mcs Files ist weniger das Problem. Ich poste dann morgen wohl mal ein paar Daten mehr, habe diese aber leider nicht zu Hause.
Nun hat es geklappt, das Projekt lauffähig auf das Board zu laden. Irgendwas mit dem ursprünglichen .ucf File passte nicht. Nach dem Neu-erstellen des Projekts funktioniert nun alles wie vorgesehen. Danke für die Unterstützung. Falls später mal jemand seine LEDs zum Leuchten bringen will füge ich noch die verwendeten Sourcen ein. Es ist kein Copyright drauf ;-) Das ist das Projekt:
1 | -------------------------------------------------------------------------
|
2 | -- Project Name: LED+Button Test
|
3 | -------------------------------------------------------------------------
|
4 | library IEEE; |
5 | use IEEE.STD_LOGIC_1164.ALL; |
6 | |
7 | entity MINIMALTEST is |
8 | port ( |
9 | USER_CLOCK : in STD_LOGIC; |
10 | |
11 | GPIO_BUTTON0 : in STD_LOGIC; |
12 | GPIO_BUTTON1 : in STD_LOGIC; |
13 | GPIO_BUTTON2 : in STD_LOGIC; |
14 | GPIO_BUTTON3 : in STD_LOGIC; |
15 | |
16 | GPIO_LED_0 : out STD_LOGIC; |
17 | GPIO_LED_1 : out STD_LOGIC; |
18 | GPIO_LED_2 : out STD_LOGIC; |
19 | GPIO_LED_3 : out STD_LOGIC |
20 | );
|
21 | end MINIMALTEST; |
22 | |
23 | architecture MINIMALTEST_arch of MINIMALTEST is |
24 | |
25 | begin
|
26 | process(USER_CLOCK) |
27 | begin
|
28 | if rising_edge(USER_CLOCK) then |
29 | GPIO_LED_0 <= GPIO_BUTTON0; |
30 | GPIO_LED_1 <= not GPIO_BUTTON1; |
31 | end if; |
32 | end process; |
33 | |
34 | GPIO_LED_2 <= GPIO_BUTTON2; |
35 | GPIO_LED_3 <= not GPIO_BUTTON3; |
36 | |
37 | end MINIMALTEST_arch; |
und das steht im .ucf File
1 | NET "GPIO_BUTTON0" LOC = "P4"; |
2 | NET "GPIO_BUTTON1" LOC = "F6"; |
3 | NET "GPIO_BUTTON2" LOC = "E4"; |
4 | NET "GPIO_BUTTON3" LOC = "F5"; |
5 | |
6 | NET "GPIO_LED_0" LOC = "E13"; |
7 | NET "GPIO_LED_1" LOC = "C14"; |
8 | NET "GPIO_LED_2" LOC = "C4"; |
9 | NET "GPIO_LED_3" LOC = "A4"; |
10 | |
11 | NET "USER_CLOCK" LOC = "V10"; |
Ist das nicht so das der Spartan6 den Programmspeicher im FPGA hat und somit kein externer Speicher mehr benötigt wird?
@Johann nein, bei Xilinx FPGAs ist lediglich die XC3AN Familie mit Flashon Chip(or Case) bestueckt...
Und ich dachte das jetzt alle Spartan 6 FPGAs einen internen Speicher besitzen, da war ich wohl falsch informiert. Ich hatte dies immer noch als Vorteil im Hinterkopf.
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.