VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
Funktionsaufruf mit 2DArray als Argument

Anfang   zurück   weiter   Ende
Autor Beitrag
dschaen
Registrierter Benutzer


Beiträge: 2

New PostErstellt: 20.06.09, 21:02  Betreff: Funktionsaufruf mit 2DArray als Argument  drucken  Thema drucken  weiterempfehlen Antwort mit Zitat  

Hallo,

ich bin neu hier im Forum und höffe, Ihr könnt mir weiterhelfen!

Folgends Problem:

Ich will eine Funktion aufrufen, die in einem 2D Array Werte interpoliert. Der Algorithmus ist an sich kein Problem, vielmehr der Funktionsaufruf:

Bis jetzt sieht die Funktion so aus (definiert in einem separaten package):

package interpolate is
type real_array2D is array (1 to 7, 1 to 9) of real;
function inter (data : real_array2D) return real;
end interpolate;

package body interpolate is
function inter (data : real_array2D) return real is
begin
return data(2,2)*2.0; -- some math for testing
end inter;
end interpolate;


Diese Funktion möchte ich nun wo anders aufrufen mit

variable result: real := inter(HDINVD1_A_r_mu);

mit der bereits definierten Konstante:

constant HDINVD1_A_r_mu : real_array2D :=
((6.605091e-09, 8.233016e-09, 9.816608e-09, 1.293426e-08, 1.911347e-08, 3.143472e-08, 5.606581e-08, 1.053358e-07, 2.037920e-07 ), <...>
(1.564942e-08, 3.186405e-08, 4.504218e-08, 6.602079e-08, 9.655917e-08, 1.376546e-07, 1.912387e-07, 2.647705e-07, 3.793970e-07 ) );
...ein 2D-Array halt.

Aber es kommt immer die Compilermeldung:
"subprogram call or operator argument type mismatch"
bei eben diesem Funktionsaufruf.

Ich verstehe dass nicht und bin total verzweifelt.
Kann mir bitte jemand helfen?

Vielen Dank!

Schöne Grüße

Jan Kokert

nach oben
Benutzerprofil anzeigen Private Nachricht an dieses Mitglied senden
Dr. Faustus

Administrator

Beiträge: 107
Ort: Aßling


New PostErstellt: 21.06.09, 15:20  Betreff: Re: Funktionsaufruf mit 2DArray als Argument  drucken  weiterempfehlen Antwort mit Zitat  

Hallo,

mir leuchtet zwar nicht ganz ein was Du machen willst aber egal.

Genau sicher bin ich mir auch nicht.
Hast Du mal probiert "result" nicht als variable sondern als signal zu deklarieren?
Ich würde auch die deklaration und den Funktionsaufruf nicht in einer Zeile machen. Weis gar nicht ob das geht.

Gruesse.


[editiert: 21.06.09, 17:22 von Dr. Faustus]
nach oben
Benutzerprofil anzeigen Private Nachricht an dieses Mitglied senden
dschaen
Registrierter Benutzer


Beiträge: 2

New PostErstellt: 21.06.09, 16:52  Betreff: Re: Funktionsaufruf mit 2DArray als Argument  drucken  weiterempfehlen Antwort mit Zitat  

Hallo! Danke für deine Antwort!

Zu dem, was ich machen will:
Ein Inverter-Gatter wurde in Abhängigkeit von der Eingangskapazität (9 Spalten und der riseTime(7 Zeilen) charakterisiert.
Es ergibt sich die bereits erwähnte Tabelle in Form eines real_array2D (constant HDINVD1_A_r_mu).
Die einzelnen Werte sind dann die Verzögerungszeiten.

Nun sind diese Wert aber eben nur bei diskreten Kapazitätswerten (0 pF, 0.3 pF, 0.6 pF, 1.2 pF, ...) angegeben.
Für beliebige Werte muss demzufolge (lin.) interpoliert werden.

Dafür soll eine Funktion geschrieben werden, der als Argumente das 2DArray, die gewünschte Kapazität und die RiseTime übergeben wird.

Zum Problem:
Als Test soll zunächst eine Funktion geschrieben werden, die ein 2D-Array übergeben werden kann und die dann z.B einfach den Wert der Tabelle an der Stelle (1,1) zurückgibt.
Die Funktion habe ich in dem separatem package interpolate definiert.

Jetzt habe ich Probleme mit dem Funktionsaufruf

(...) inter(HDINVD1_A_r_mu);

Ob ich das Ergebnis einer Variablen oder einem Signal zuweise spielt keine Rolle.
Immer kommt der Fehler:
"subprogram call or operator argument type mismatch"
obwohl ich doch eine real_array2D "reinstecke".

Muss man da noch einen Art Type-Cast durchführen?

Funktionsaufrufe von dieser Stelle aus mit Funktionen mit z.B. real Argumenten funktioniert.

Danke für weitere Antworten!


Schöne Grüße

nach oben
Benutzerprofil anzeigen Private Nachricht an dieses Mitglied senden
Sortierung ndern:  
Anfang   zurück   weiter   Ende
Seite 1 von 1
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj