Hallo an alle, ist es möglich den Config-Flash an einem Cyclone mittels einer MCU neu zu programmieren, während der FPGA seine für ihn vorgesehene Aufgabe erledigt? Hintergrund: Wenn ich das richtig verstanden habe lädt der FPGA beim Start "seine" Konfiguration aus dem externen SPI-Flash in seine Register (wenn er so konfiguriert ist). Wenn die Konfiguration geladen ist wird nicht mehr auf den Flash zugegriffen - richtig? Wie verhalten sich in diesem Zustand (FPGA hat seine Konfiguration geladen und erledigt seine Aufgabe) die Leitungen des FPGA zum Flash? Sind die Tristate? Kann man mit einem Mikrocontroller den Flash neu programmieren während der FPGA "seine" Aufgabe erledigt? Muss man dazu eventuell mit einem Pegel an einem FPGA-Pin den Flash abkoppeln (== tristaten) ?? Falls ja: beendet dieses "abkoppeln" auch die aktuelle Arbeit des FPGA (das wäre nicht so schick...)? Ich habe schon sehr viele Intel / Altera Datenblätter gewälzt aber auf exakt diese Fragen keine Antwort gefunden...
Nach der Konfiguration des FPGA kannst du über cyclone_asmiblock auf den Flash zugreifen. Siehe auch Beitrag "Re: Cyclone 1 : Config Flash als Datenspeicher?" Wenn du von extern zugreifen willst, kannst du das auf Tri-State schalten: set_global_assignment -name USE_CONFIGURATION_DEVICE ON set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE EPCS4 set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "AS INPUT TRI-STATED"
Hallo, https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_altasmi_parallel.pdf Damit kann man relativ einfach den Konfig-Flash (z.B. EPCS) vom FPGA ansprechen (lesen/schreiben/löschen). Man kann sich dann noch im FPGA eine Schnittstelle zum Mikrocontroller bauen und dann kann der Mikrocontroller auf den Flash zugreifen. Viele Grüße, Paul
Danke für eure Antworten! Ich habe zunächst diese Lösung probiert: ######################################################################## Wenn du von extern zugreifen willst, kannst du das auf Tri-State schalten: set_global_assignment -name USE_CONFIGURATION_DEVICE ON set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE EPCS4 set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "AS INPUT TRI-STATED" ######################################################################## Ich habe es sowohl im .qsf und als das nichts änderte wahlweise im .sdc eingefügt - aber das resultierende Bitfile ändert sich auch dadurch nicht. Dementsprechend ist auch das Verhalten der Leitungen vom Flash zum FPGA unverändert: alle Leitungen bis auf CLK (Pin 6) sind tristated - aber der CLK liegt auf L. Ich bin noch ziemlich am Anfang was den Umgang mit FPGAs angeht - mache ich was falsch? Diese Zeilen KÖNNEN in dem .qsf eingetragen werden. Aber besser sind sie im .sdc aufgehoben - oder ist das völlig falsch?
Andreas R. schrieb: > Danke für eure Antworten! Ich habe zunächst diese Lösung probiert: > > ######################################################################## > Wenn du von extern zugreifen willst, kannst du das auf Tri-State > schalten: > set_global_assignment -name USE_CONFIGURATION_DEVICE ON > set_global_assignment -name CYCLONE_CONFIGURATION_DEVICE EPCS4 > set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "AS INPUT > TRI-STATED" > ######################################################################## Was mir noch einfällt: ASDO ist nur einer der Pins des AS-Interfaces. Im Quartus GUI gibt es unter "Assignments" -> "Device" -> "Device and Pin Options" -> "Dual-Purpose Pins" ein Fester (siehe Anhang), wo man für alle Pins des AS-Interfaces die Funktion einstellen kann.
Ja. Wenn ich in Quartus dieses Fenster öffne und den Pin DCLK anschaue dann kann man ihn aber nicht tristaten - nur als Ausgang setzen. Das ist unglücklich. Das einzige was mir dann noch einfallen würde wäre eine Hardwarelösung: der Clock am Flash wird via Pulldown an GND gezogen und der DCLK wird via Schottkydiode (Anode an DCLK Kathode an den Flash) beschaltet... Da der DCLK nach der Konfiguration dauerhaft auf L liegt müsste es so auch gehen (wenn der Spannungsabfall an der Diode nicht schon alles kaputtmacht).
Andreas R. schrieb: > Ja. Wenn ich in Quartus dieses Fenster öffne und den Pin DCLK anschaue > dann kann man ihn aber nicht tristaten - nur als Ausgang setzen. Das ist > unglücklich. Das einzige was mir dann noch einfallen würde wäre eine > Hardwarelösung: der Clock am Flash wird via Pulldown an GND gezogen und > der DCLK wird via Schottkydiode (Anode an DCLK Kathode an den Flash) > beschaltet... Da der DCLK nach der Konfiguration dauerhaft auf L liegt > müsste es so auch gehen (wenn der Spannungsabfall an der Diode nicht > schon alles kaputtmacht). Oder Du nimmst das ASMI-Parallel Interface IP und baust Dir einen weiteren Zugang (z.B. SPI, UART) für den Mikrocontroller und lässt den FPGA die Kommunikation mit dem Konfig-Flash machen.
...oder ich lasse den Mikrocontroller als "Flash" ansprechen. Ich lasse den Flash also komplett weg und verbinde einen SPI-Bus meines Mikrocontrollers mit dem FPGA. Den SPI-Bus des Mikrocontrollers muss ich so mit Software hinterfüttern dass er sich wie ein Flash Baustein verhält. Wirft denn Quartus auch irgendein Binärfile raus das ich auf diese Weise offerieren kann?
Andreas R. schrieb: > Wirft denn Quartus auch irgendein Binärfile raus das ich auf diese Weise > offerieren kann? Seite 37 https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_altremote.pdf
Danke! Ich verwende noch die falschen Suchmuster - hatte ich nicht gefunden...
Es gibt auch hier ein Projekt, dass den Cyclone direkt vom Raspberry konfiguriert: https://github.com/pa3gsb/Radioberry-2.x Da kannst Du abschauen, wie sie den Flash nachbilden.
Na das nenne ich ja mal eine Steilvorlage :) Danke für den Link - damit werde ich definitiv anfangen.
Andreas R. schrieb: > Na das nenne ich ja mal eine Steilvorlage :) Danke für den Link - damit > werde ich definitiv anfangen. Cool, lass dann gerne wissen, wie es so klappt, denn in einem nächsten Projekt könnte ich das auch auch brauchen ;-)
Hier: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_altasmi_parallel.pdf gibt es auf Seite 26 noch einen wichtigen Hinweis: "When writing .rpd file for FPGA configuration purposes such as the application imagefor remote system upgrade, you need to swap the bit order for every byte from themost significant bit (MSB) to the least significant bit (LSB). This step is requiredbecause the FPGA configuration reads data from the EPCS/EPCQ/EPCQ-L/EPCQ-Adevices from LSB to MSB."
Ich werde mir einfach mal den Code vom Radioberry anschauen. Ist ja überschaubar...
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.