Forum: FPGA, VHDL & Co. Software in .pof bekommen


von Max K. (mku)


Lesenswert?

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 :)

von nios (Gast)


Lesenswert?

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?

von Michael F. (mifi)


Lesenswert?

Hallo Max,

funktioniert es mit der JIC Datei?

Gruß,
Michael

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Soweit Ich weiss, muss ein Flash angebunden und bekannt gemacht sein, 
damit Du es zuweisen kannst.

von Max K. (mku)


Lesenswert?

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
von Delta (Gast)


Lesenswert?

Ich benutze das onChipFlash, damit funktioniert es einwandfrei. Siehe:
https://www.altera.com/documentation/kly1419303836473.html

von nios (Gast)


Lesenswert?

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.

von ElKo (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.