hi ich habe ein Programm in C in eclipse. nun möchte ich, dass das Programm auch nach raus ziehen der Stromversorgung noch auf dem FPGA bleibt. ich habe auf dem BeMicro keinen extra Speicher und dort ist ein Max10 verbaut. Folgende Anleitung habe ich schon gefunden: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/an/an736.pdf http://www.alterawiki.com/wiki/Booting_Nios_from_Serial_Flash_with_the_new_Altera_Serial_Flash_Controller#Using_the_Example_Project Dort wird es aber nur mit .jic erklärt. Sobald ich eine .pof erstellen möchte kann ich die .hex welche angegeben wird, nicht mit hinzufügen. Wie kann ich das lösen? Danke :)
Es muss ja Exception und Interrupt Vektor in ein Bram zeigen. Und normalerweise kann man dann im Speicherblock ein Hex-File angeben. Poste doch mal screenshot von deinem QSYS Projekt. Vielleicht hast du falsch übernommen von den Vorlagen für externen rom?
Soweit Ich weiss, muss ein Flash angebunden und bekannt gemacht sein, damit Du es zuweisen kannst.
ich habe doch keinen externen seriellen speicher, wie die ganzen EPCS ich habe nur die variante mit der .pof also ist es da nicht so möglich? bei dem "convert programming files" kann ich keine hex angeben, wenn ich eine .pof erstellen möchte, sobald ich als speicher mode: "internal configuration"
:
Bearbeitet durch User
Ich benutze das onChipFlash, damit funktioniert es einwandfrei. Siehe: https://www.altera.com/documentation/kly1419303836473.html
Das hex file kann im Qsys angegeben werden. Nicht in eclipse. Standardmäßig ist ein hex file vorgesehen, dahin müsstest du das hex aus eclipse aber immer manuell kopieren. Also finde ich es besser direkt das hex file, dass beim build rauskommt in Qsys einzutragen.
Also irgendwie blicke ich bei deinem Problem noch nicht recht durch. Zunächst: Welches BeMirco hast du genau? Kannst du ein Datenblatt verlinken? Bei Arrow kommt nur "Page does not exist." Und: Ist auf deinem Board ein EPCS Chip drauf? Möchtest du deine Config in den EPCS oder in den Flash vom MAX10 bekommen? Wie lädst du bisher das Hex in den FPGA? Ich kenne es so, dass man bei der Instanzierung des Speichers ein HEX-File (oder ein MIF-File) angibt, welches die Synthese dann mit einbaut. Im Beispiel unten ist über den MegaWizard ein ROM erstellt und ein MIF File eingebunden. MIF ist wie ein HEX-File, nur anders angeordnet. Einstellungen im Bild. Bei QSYS sieht das ähnlich aus, siehe Screenshot. Ist die Init-Datei bei dir angegeben?
1 | // synopsys translate_on |
2 | module progMem ( |
3 | address, |
4 | clock, |
5 | q); |
6 | |
7 | input [11:0] address; |
8 | input clock; |
9 | output [7:0] q; |
10 | `ifndef ALTERA_RESERVED_QIS |
11 | // synopsys translate_off |
12 | `endif |
13 | tri1 clock; |
14 | `ifndef ALTERA_RESERVED_QIS |
15 | // synopsys translate_on |
16 | `endif |
17 | |
18 | wire [7:0] sub_wire0; |
19 | wire [7:0] q = sub_wire0[7:0]; |
20 | |
21 | altsyncram altsyncram_component ( |
22 | .address_a (address), |
23 | .clock0 (clock), |
24 | .q_a (sub_wire0), |
25 | .aclr0 (1'b0), |
26 | .aclr1 (1'b0), |
27 | .address_b (1'b1), |
28 | .addressstall_a (1'b0), |
29 | .addressstall_b (1'b0), |
30 | .byteena_a (1'b1), |
31 | .byteena_b (1'b1), |
32 | .clock1 (1'b1), |
33 | .clocken0 (1'b1), |
34 | .clocken1 (1'b1), |
35 | .clocken2 (1'b1), |
36 | .clocken3 (1'b1), |
37 | .data_a ({8{1'b1}}), |
38 | .data_b (1'b1), |
39 | .eccstatus (), |
40 | .q_b (), |
41 | .rden_a (1'b1), |
42 | .rden_b (1'b1), |
43 | .wren_a (1'b0), |
44 | .wren_b (1'b0)); |
45 | defparam |
46 | altsyncram_component.address_aclr_a = "NONE", |
47 | altsyncram_component.clock_enable_input_a = "BYPASS", |
48 | altsyncram_component.clock_enable_output_a = "BYPASS", |
49 | altsyncram_component.init_file = "empty.mif", // <- das Hex File |
50 | altsyncram_component.intended_device_family = "Cyclone IV E", |
51 | altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=PROM", |
52 | altsyncram_component.lpm_type = "altsyncram", |
53 | altsyncram_component.numwords_a = 4096, |
54 | altsyncram_component.operation_mode = "ROM", |
55 | altsyncram_component.outdata_aclr_a = "NONE", |
56 | altsyncram_component.outdata_reg_a = "UNREGISTERED", |
57 | altsyncram_component.widthad_a = 12, |
58 | altsyncram_component.width_a = 8, |
59 | altsyncram_component.width_byteena_a = 1; |
60 | endmodule |
Gehört zwar nicht direkt zur Frage, aber passt hier ganz gut als nettes Wissen: Man kann den Speicher bequem über den Blaster von von der Konsole aus beschreiben, ohne neue Synthese oder das Design neu laden zu müssen:
1 | quartus_stp.exe --tcl_eval begin_memory_edit -hardware_name "USB-Blaster \[USB-0\]" -device_name "@1: EP3C25/EP4CE22 (0x020F30DD)" ; update_content_to_memory_from_file -instance_index 0 -mem_file_path C:\Pfad\zum\Hex\file.hex -mem_file_type hex ; end_memory_edit; |
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.