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
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.
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
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
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
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
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
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.
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/Configuring_Altera_FPGAs_via_SPI_Flash_AN_02_e.pdf
Damit braucht man nicht die sündhaft teueren EPCS devices, sondern kann
die deutlich günstigeren Alternativen verwenden.
Ciao, Günter (dl4mea)
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
Hallo,
sorry erstaml, dass ich hier einen 6 Jahre alten Thread ausgrabe.
Aber ich stehe gerade vor der gleichen Aufgabe. Diese sieht wie folgt
aus:
Mein FPGA (Cyclone V) hat bereits eine Datenverbindung zum PC (USB mit
dem FTDI FT2232). Über diese Datenschnittstelle soll die FPGA Firmware
auch Upgedated werden können. Folglich muss ich in das EPCS (bzw.
benutze ich ein EPCQ) schreiben.
Ich wäre über Tipps dankbar ob es hierzu mittlerweile einen IP-Core
(ohne nios) gibt oder ob jemand der das schonmal realisiert hat
eventuell seine SM oder gute Ratschläge zur verfügung stellt.
VG Lrak