von Function auf mehrdimensionalen Array zugreifen

Gast #799414
Lesenswert?

Hallo,
hab folgendes Problem:
Ich habe dieses Array global deklariert:

"architecture Behavioral of Testbench_1st is

type codematrix is array (0 to 100,0 to 255) of integer;"

und befülle es in einer späteren Prozedur mit Werten. Innerhalb dieser 
Prozedur wird eine Funktion aufgerufen, welche ebenso auf diese 
Codematrix zugreifen soll....passiert allerdings nicht:

function summe(difsign,mid: integer ) return integer is
   variable e,g,x: integer:=0;
  variable cod: codematrix;

begin
  cod(5,0):=12345;

  xy := difsign + mid;
       return xy;
   end summe;

Benötige allerdings unbedingt eine Funktion um einen rekursiven Aufruf 
zu ermöglichen. Ist nur ein theoretisches Beispiel, soll nicht 
synthetisiert werden. Ich will nur diese 12345 in die Codematrix 
schreiben...aus der Funktion. Xilinx gibt mir auch keine Syntaxfehler 
aus.

DANKE!!!
Gast #799461
Lesenswert?

hab es mit:
"shared variable code: codematrix" probiert-stürzt mir aber der 
simulator ab. übrigens hab ich mich oben verschrieben:statt procedure 
mein ich process.

danke!!!

Hier nochmal:

architecture Behavioral of Testbench_1st is

type codematrix is array (0 to 100,0 to 255) of integer;
type rechenmatrix is array (0 to 100,0 to 255) of integer;
-- shared variable code: codematrix;

 impure function summe(difsign,mid: integer ) return integer is
   variable ef,gh,xy: integer:=0;
--  variable code: codematrix;

   begin
  code(5,0):=12345;

  xy := difsign + mid;

    return xy;
   end summe;
.
.
.
begin


testlesen: process
    file INFILE: text open read_mode is "eingabe.txt" ;
    file OUTFILE: text open write_mode is "ausgabe1.txt";
    variable Line1, Line2, Line3: line;
    variable div: rechenmatrix ;
.
.
.
for x in difsign_count-1 downto 1 loop
div(1,x-1) := div(1,x) + div(0,x+1);
--div(1,20) := div(1,x-1);
code(2,x) := 0;--null schreiben
mitte := x;
exit when div(1,x-1) > 500;
end loop;

for i in mitte downto 0 loop
code(2,i) := 1;--eins schreiben
end loop;

div(1,20) := summe(55,500);
.
.
.
ist allerdings erstmal ein test...den eigentlichen algorithmus 
(shannon-fano) muss ich wohl mit rekursiven funktionen verwirklichen, 
deswegen brauch ich das ganze.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren