www.mikrocontroller.net

Forum: FPGA, VHDL & Co. EPCS Flash ohne NIOS vom FPGA aus beschreiben


Autor: flint (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich würde gerne von meinen Stratix 2&3 FPGAs aus den Bitstream im EPCS 
Config Flash überschreiben. Ich bin beim Googeln auf die EPCS Device 
Controller Core Komponente gestoßen, die angeblich das leistet, was ich 
brauche, aber in der Dokumentation ist angegeben, dass diese Komponente 
von einem NIOS aus angesteuert werden muss. Ich würde es gerne direkt 
machen von einer FSM in VHDL aus. Hat jemand eine Ahnung, woran das 
scheitern könnte? Das Interface zum EPCS Device Controller Core ist ja 
Avalon-MM, die HAL-Treiber gibts angeblich auch im Source, woran soll es 
also scheitern (außer dass Quartus dann vielleicht einfach die Synthese 
abbricht).

Hat da jemand eine Idee?

LG,
flint

Autor: dnalorac (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde mir den ganzen IP-Kram nicht antun, sondern alles zu Fuß 
machen. Das ROM hat eine ganz normale SPI-Schnittstelle. Da musst Du ein 
paar Befehle hinschicken (Schreiben freischalten, Page löschen und 
Startadresse setzen) und dann die Daten byteweise übertragen. Das ist 
alles sehr ausführlich im Altera Configuration Handbook Vol. II 
dokumentiert.

Autor: flint (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber die Pins an denen der Flash hängt sind bei einem Stratix keine User 
Pins, wenigstens wenn ich die Doku richtig verstanden habe. Der IP Core 
ist die einzige Möglichkeit, an die Programmier-HW in dem Ding 
ranzukommen.

Ansonsten würde ich auch lieber eine FSM in meinem Stil dafür 
implementieren.

lg
flint

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn das keine Antwort auf die Frage ist: Was für einen triftigen 
Grund kann man dafür anführen, das NICHT mit einem NIOS und den 
Device-Treibern zu machen? Die neuen Konfigurationsdaten wird das FPGA 
ja nicht selbst erfinden, sondern über irgendeinen Kommunikationskanal 
mitgeteilt bekommen. Dort muss man bestimmt ein Protokoll bedienen, mit 
Sicherungsschichten etc. Genau hierfür wurde Software erfunden.

Grüße,
Harald

Autor: flint (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, es handelt sich um ein Board in einem Datenpfad, dh der 
Übertragungskanal ist schon vorhanden. Weiters sitzen mehrere dieser 
Instanzen sehr nahe an einem Prozess, der thermisch ziemlich heikel ist. 
Es ist das absolute Ziel, die Leistungsaufnahme niedrig zu halten.

In dieser Situation einfach einen NIOS reinzutun nur für die Aufgabe, 
den Flash zu beschreiben, das wäre imo ein Blödsinn. Abgesehen davon, 
dass der FPGA-interne SRAM dann vielleicht knapp werden könnte und ein 
externer ist, siehe Leistungsproblematik, einfach keine Option.

lg
flint

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind natürlich gute Gründe, obwohl, Stratix und geringe 
Leistungsaufnahme passen eigentlich nicht zusammen. Und einen Nios/e 
kann man mit 1000 LE und 4 kByte RAM schon hinbekommen. Aber ok.

Bleibt nur noch das Problemchen, dass Du an die Pins nicht hinkommst. Da 
wirst Du wohl um eine externes Multiplexing nicht drumrum kommen.

Grüße,
Harald

Autor: flint (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Rankommen an die Pins sollte nach meinem Verständnis über diesen IP 
Core gehen. Falls das nicht klappt bin ich chancenlos, die Boards sind 
schon gebaut.

lg
flint

Autor: dnalorac (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne leider nur Cyclone III. Man kann im Quartus (Settings - Device 
- Button "Device and Pin Options"- Reiter "Dual Purpose Pins" 
einstellen, was mit (einigen) der speziellen Pins nach dem Booten des 
FPGA geschehen soll. Für die Cyclones kann man alle relevanten Pins auf 
"Regular I/O" stellen. Dann geht's definitiv. Vielleicht funktioniert 
das ja auch bei den Stratixen...

flint schrieb:
> Aber die Pins an denen der Flash hängt sind bei einem Stratix keine User
> Pins, wenigstens wenn ich die Doku richtig verstanden habe. Der IP Core
> ist die einzige Möglichkeit, an die Programmier-HW in dem Ding
> ranzukommen.

Autor: Günter (dl4mea) (dl4mea)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

weils thematisch ein bischen hier dazu passt: Ich habe es mittlerweile 
geschafft das EPCS1 mit diesem Programmer
http://www.embeddedcomputers.net/products/BlackcatUSB
zu beschrieben.
(War nicht ganz einfach, denn es waren Anpassungen in der BlackCat 
GUI-SW nötig)

Ich habe mir dazu einen kleinen Adapter für den AS-Stecker gebaut, mit 
einem Schalter wird nCONFIG des FPGAs auf LOW und nCE auf HIGH gebracht. 
Wie erwartet wird das EPCS1 als ST M25P10 erkannt (sind ja beides 
bekanntlich identische Device).

Die Bits in jedem Byte werden offenbar inverse programmiert, aber dann 
klappt es, ich kann ein RBF-File ins Flash-Device schreiben, den 
Schalter umlegen und das FPGA liest die Konfiguration und arbeitet.

Warum das ganze?
1) BlackCat ist wesentlich!!! schneller als der USB-Blaster, was für die 
größeren dann noch interessanter wird.
2) BlackCat kann auch alternative Flashtypen beschreiben, während der 
USB Blaster die ID des EPCS-Device überprüft und andere nicht 
akzeptiert.

Das Vorgehen ist beispielsweise hier beschrieben:
http://www.spansion.com/Support/AppNotes/Configuri...

Damit braucht man nicht die sündhaft teueren EPCS devices, sondern kann 
die deutlich günstigeren Alternativen verwenden.

Ciao, Günter (dl4mea)

Autor: flint (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat übrigens wunderbar funktioniert, ich hab jetzt eine VHDL State 
Machine, die alle Kommandos auf dem Flash durchführen kann. Mir ist 
nicht ganz klar, warum Altera das nicht von VHDL aus zugänglich macht, 
es ist wirklich nicht allzu schwierig.

lg
flint

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.