CRegs: Ausführung in einem Takt

s1mstar
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 18. Apr 2013 14:26

CRegs: Ausführung in einem Takt

Beitrag von s1mstar »

Hallo,

was ist hier der Nachteil?

Mit Hilfe von CRegs führen wir eine mehrstufige Berechnung (ähnlich wie Übung 2.3) in nur einem Takt aus. Mit normalen Registern würden wir hier mehrere Takte brauchen.

Unsere Vermutung ist, dass der Ansatz sehr schlecht skaliert (Für mehrere Input-Werte) und den Takt aufblähen würde (Propagation Delay der Multiplexer?). Stimmt das so oder/und gibt es noch weitere Nachteile an diesem Lösungsansatz?

Liebe Grüße,
Simon

Code: Alles auswählen

  1  package cregs;
  2 
  3     module mkCregs(Empty);
  4 
  5         Reg#(int) c_ctr[5] <- mkCReg(5, 0);
  6         Reg#(int) op1[2] <- mkCReg(2, 0);
  7         Reg#(int) op2[2] <- mkCReg(2, 0);
  8         Reg#(int) op3[2] <- mkCReg(2, 0);
  9 
 10         function Action inpoo(int poo, int x, int y, int z);
 11             action
 12                 c_ctr[0] <= poo;
 13                 op1[0] <= x;
 14                 op2[0] <= y;
 15                 op3[0] <= z;
 16             endaction
 17         endfunction
 18 
 19         rule start;
 20             inpoo(5,5,2,8);
 21         endrule
 22 
 23         rule add5;
 24             c_ctr[1] <= c_ctr[1] + op1[1];
 25         endrule
 26 
 27         rule times2;
 28             c_ctr[2] <= c_ctr[2] * op2[1];
 29         endrule
 30 
 31         rule minus8;
 32             c_ctr[3] <= c_ctr[3] - op3[1];
 33         endrule
 34 
 35         rule out;
 36             $display("[%d] res: %d",$time, c_ctr[4]);
 37             $finish();
 38         endrule
 39 
 40     endmodule
 41 endpackage


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

Re: CRegs: Ausführung in einem Takt

Beitrag von JHofmann »

Hallo,

bei der Benutzung von CRegs müssen Sie vor allem auf den kritischen Pfad achten (+,*,- hintereinander), insbesondere wenn Sie CRegs an der Modulgrenze verwenden (und nicht Wissen in welchem Kontext Ihr Modul benutzt wird). Dies ist bei Ihrem Beispiel der Fall, da Sie direkt in die CRegs schreiben und somit die Berechnung im selben Takt initiieren.

Viele Grüße,

s1mstar
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 18. Apr 2013 14:26

Re: CRegs: Ausführung in einem Takt

Beitrag von s1mstar »

Danke, das hat mir sehr geholfen! (insbesondere auch bei der Klausur ;-))

Antworten

Zurück zu „Archiv“