verschiedene Arten von Zuweisungen

schamane
Erstie
Erstie
Beiträge: 13
Registriert: 23. Feb 2015 18:30

verschiedene Arten von Zuweisungen

Beitrag von schamane »

Hallo,

leider bin ich mir nicht sicher, ob ich die 3 verschiedene Arten von Zuweisungen in Bluespec richtig verstanden habe.

1. =
Wird benutzt um temporäre Werte mit let zuzuweisen.
zB let sum = x+y;
(siehe Folie 23)

2. <=
Zuweisungen an Register oder andere Modulinstanzen (also Zustand).
zB sum <= sum+x;
(siehe Folie 23)

3. <-
Instanziierungen von Modulen (in Java würde ich von Objekten reden).
zB Reg#(int) sum <- mkReg(0);


Was aber nicht in dieses Schema passt, ist das Beispiel auf Folie 31:
let x2 <- m1.get_w();

Wieso wird hier einer temporären Variable ein Wert mit einer anderen Zuweisung als = zugewiesen?

Danke und viele Grüße,
schamane

JHofmann
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 182
Registriert: 23. Apr 2015 10:43

Re: verschiedene Arten von Zuweisungen

Beitrag von JHofmann »

Hallo,

1, 2 und 3 sehen soweit gut aus.

"<-" wird allerdings auch als Auswertung einer ActionValue Methode verwendet, daher "let x2 <- m1.get_w()" für ActionValue "get_w".

Viele Grüße,

jon as
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 23. Nov 2014 23:14

Re: verschiedene Arten von Zuweisungen

Beitrag von jon as »

Hi,
danke für diese Frage!

Wie ordne ich folgende Konstrukte ein?
  • let cur_time <- $stime; // Warum isr das nicht "=", da eine lokale Variable zugewiesen wird und keine Aktion ausgeführt wird
    Quelle: Folie 94 im Bluespec Foliensatz
  • method Bool notEmpty = (rg_count == 1); // Wird hier einer lokaler Variable vom Typ method ein Wert zugewiesen?
    Quelle: Folie 110 im Bluespec Foliensatz

JHofmann
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 182
Registriert: 23. Apr 2015 10:43

Re: verschiedene Arten von Zuweisungen

Beitrag von JHofmann »

let cur_time <- $stime; // Warum isr das nicht "=", da eine lokale Variable zugewiesen wird und keine Aktion ausgeführt wird
Siehe Seite 92ff des Bluespec Reference Guides. System tasks und Funktionen sind in Bluespec (je nach Funktion) als ActionValue oder Value Funktion definiert. Auf Seite 98 (Abschnitt 12.8.10) wird $stime als ActionValue angegeben.
method Bool notEmpty = (rg_count == 1); // Wird hier einer lokaler Variable vom Typ method ein Wert zugewiesen?
Dieses Shorthand ist im Bluespec Reference Guide ab Seite 39 beschrieben und wird zur Syntax-Vereinfachung benutzt. Neben Value Methoden geht das genauso mit Action und ActionValue Methoden wenn der Rückgabetyp entsprechend angepasst wird:

Code: Alles auswählen

method Action writeSomething(Bool b) = (action myB <= b; endaction);

Antworten

Zurück zu „Archiv“