Tesi Robotica Un coprocessore per Stereo-Matching: Profiling ... | Page 71
i
i
“MF_Tesi” — 2011/9/12 — 11:39 — page 71 — #71
i
5.5. COSTRUTTI PRINCIPALI
1
i
71
package Hello;
interface Hello_Ifc;
method Reg#(2) valueX;
endinterface: Hello_Ifc
6
(* synthesize *)
module mkHello (Hello_Ifc);
Reg#(Bit#(2)) x = mkReg(0);
11
rule greet;
$display ("Value before-x:",x);
x<=x+1;
$display ("Value after-x:",x);
16
Bit#(2) y=0;
$display ("Value before-y:",y);
y=y+1;
$display ("Value after-y:",y);
21
$display ("Hello World!");
endrule
26
method Bit#(2) valueX()
return x;
endmethod
endmodule: mkHello
endpackage: Hello
In ogni file viene definito un package (Hello) e al suo interno bisogna definire almeno un modulo (mkHello) che implementi l’interfaccia dichiarata (Hello_Ifc),
nello stesso package inoltre possiamo avere tanti moduli quanti sono necessari.
In ogni modulo è possibile definire molti costrutti, i più importanti sono le regole
(rule) e i metodi (method). Le rule vengono eseguite a ogni ciclo di clock, in
questo caso avremo che la stringa “Hello World!” verrà stampata ad ogni ciclo di
clock. I method devono essere implementati a seconda dell’interfaccia, così come
accadrebbe in un normale linguaggio di programmazione ad oggetti e possono
essere di tre Tipi:
i
i
i
i