www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Spartan 6 Eval Board SP601: Programm über JTAG persistent auf Board laden?


Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/refere...

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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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? ;-)

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Kohler schrieb:
> LED leuchten wenn eine Taste gedrückt wird
library ieee;
use ieee.std_logic_1164.all;

entity test is
  port (
    taste : in  std_logic;
    led   : out std_logic
  );
end entity test;

architecture rtl of test is
begin

  led <= taste;

end;

Suchst Du sowas?

Rick

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
-------------------------------------------------------------------------
-- Project Name: LED+Button Test
-------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity MINIMALTEST is
    port (
        USER_CLOCK          : in STD_LOGIC;

        GPIO_BUTTON0        : in STD_LOGIC;
        GPIO_BUTTON1        : in STD_LOGIC;
        GPIO_BUTTON2        : in STD_LOGIC;
        GPIO_BUTTON3        : in STD_LOGIC;

        GPIO_LED_0          : out STD_LOGIC;
        GPIO_LED_1          : out STD_LOGIC;
        GPIO_LED_2          : out STD_LOGIC;
        GPIO_LED_3          : out STD_LOGIC
    );
end MINIMALTEST;

architecture MINIMALTEST_arch of MINIMALTEST is

begin
    process(USER_CLOCK)
    begin
        if rising_edge(USER_CLOCK) then
            GPIO_LED_0 <=     GPIO_BUTTON0;
            GPIO_LED_1 <= not GPIO_BUTTON1;
        end if;
    end process;

    GPIO_LED_2 <=     GPIO_BUTTON2;
    GPIO_LED_3 <= not GPIO_BUTTON3;

end MINIMALTEST_arch;

und das steht im .ucf File
NET "GPIO_BUTTON0"                  LOC = "P4";
NET "GPIO_BUTTON1"                  LOC = "F6";
NET "GPIO_BUTTON2"                  LOC = "E4";
NET "GPIO_BUTTON3"                  LOC = "F5";

NET "GPIO_LED_0"                    LOC = "E13";
NET "GPIO_LED_1"                    LOC = "C14";
NET "GPIO_LED_2"                    LOC = "C4";
NET "GPIO_LED_3"                    LOC = "A4";

NET "USER_CLOCK"                    LOC = "V10";

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das nicht so das der Spartan6 den Programmspeicher im FPGA hat und 
somit kein externer Speicher mehr benötigt wird?

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johann

nein, bei Xilinx FPGAs ist lediglich die XC3AN Familie mit Flashon 
Chip(or Case) bestueckt...

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.