Forum: FPGA, VHDL & Co. generate innerhalb eines process?


von Matthias G. (mgottke)


Lesenswert?

Hallo zusammen,

ich habe nun ein keines Problem. In einem process werden von irgendwo 
her ein Sack voll Daten (data_array_of_processdata) übernommen. 
"processdata" selbst ist wiederum ein record. Zur Manipulation der Daten 
gibt es wiederum ein proceduren in einer library. So z.B. 
"process_data_set_nullbits". Nun möchte ich aber nicht händisch alles 
einzeln auscodieren.

Folgender Code geht nicht:
1
null_bits_proc: process(rst, clk)
2
begin
3
   if rst = '1' then
4
      data_array_of_processdata <= (others => PROCESS_DATA_RESETVALUE);
5
   elsif rising_edge(clk) then
6
      data_array_of_processdata <= data_array_of_processdata_von_irgendwo;
7
      -- Übernahme der Null-Bits
8
      insert_null_bits_gen: for i in 0 to 63 generate
9
         process_data_set_nullbits(data_array_of_processdata(i), zero_bits);
10
      end generate insert_null_bits_gen;
11
   end if;
12
end process;
Mit einer For-Schleife gehts aber auch nicht, hat jemand eine Idee?

Matthias

von Timm B. (timmbo)


Lesenswert?

Hallo Matthias,

"generate" ist nur in parallelem Kontext zulässig. In sequentiellem 
Kontext (Prozesse, Funktionen, Prozeduren) ist "loop" zu verwenden.
http://www.et.fh-trier.de/EtechHomePage/team/schindel/downloadbereich/Vorlesungen/VhdlEasy/Kap5/k523.html

Timm

von Matthias G. (mgottke)


Lesenswert?

Hallo Tim,

> "generate" ist nur in parallelem Kontext zulässig. In sequentiellem
> Kontext (Prozesse, Funktionen, Prozeduren) ist "loop" zu verwenden.

"loop" geht leider auch nicht, das war ja mein erster Ansatz. Da kommt 
folgende Fehlermeldung:
1
      for i in 0 to 63 loop
2
         process_data_set_nullbits(data_array_of_processdata(i), zero_bits);
3
      end loop;
# ** Error: xxx.vhd(931): Actual (indexed name) for formal 
"process_data" is not a static signal name.

"process_data" entspricht dem Signal "data_array_of_processdata(i)" in 
der procedure.

Matthias

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.