Mercurial > pygar
comparison modules/bluespec/Pygar/lab4/GetPutExt.bsv @ 8:74716e9a81cc pygar svn.9
[svn r9] Pygar now has the proper directory structure to play nicely with awb. Also, the apm file for audio-core willcompile successfully.
author | rlm |
---|---|
date | Fri, 23 Apr 2010 02:32:05 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
7:7393cd19371e | 8:74716e9a81cc |
---|---|
1 import FIFOF::*; | |
2 import RWire::*; | |
3 import GetPut::*; | |
4 | |
5 // Convert a FIFOF into a put interface | |
6 | |
7 function Put#(item_t) fifofToPut( FIFOF#(item_t) f ) provisos ( ); | |
8 return | |
9 ( | |
10 interface Put | |
11 method Action put( item_t item ); | |
12 f.enq(item); | |
13 endmethod | |
14 endinterface | |
15 ); | |
16 endfunction | |
17 | |
18 // Convert a FIFOF into a get interface | |
19 | |
20 function Get#(item_t) fifofToGet( FIFOF#(item_t) f ) provisos ( ); | |
21 return | |
22 ( | |
23 interface Get | |
24 method ActionValue#(item_t) get(); | |
25 f.deq(); | |
26 return f.first(); | |
27 endmethod | |
28 endinterface | |
29 ); | |
30 endfunction | |
31 | |
32 // Convert a register into an (always ready) put interface | |
33 | |
34 function Put#(item_t) regToPut( Reg#(item_t) r ) provisos ( ); | |
35 return | |
36 ( | |
37 interface Put | |
38 method Action put( item_t item ); | |
39 r <= item; | |
40 endmethod | |
41 endinterface | |
42 ); | |
43 endfunction | |
44 | |
45 // Convert a register into an (always ready) get interface | |
46 | |
47 function Get#(item_t) regToGet( Reg#(item_t) r ) provisos ( ); | |
48 return | |
49 ( | |
50 interface Get | |
51 method ActionValue#(item_t) get(); | |
52 return r; | |
53 endmethod | |
54 endinterface | |
55 ); | |
56 endfunction | |
57 | |
58 // Convert a Wire into a put interface | |
59 | |
60 function Put#(item_t) wireToPut( Wire#(item_t) w ) provisos ( ); | |
61 return | |
62 ( | |
63 interface Put | |
64 method Action put( item_t item ); | |
65 w._write(item); | |
66 endmethod | |
67 endinterface | |
68 ); | |
69 endfunction | |
70 | |
71 // Convert a WIREF into a get interface | |
72 | |
73 function Get#(item_t) wireToGet( Wire#(item_t) w ) provisos ( ); | |
74 return | |
75 ( | |
76 interface Get | |
77 method ActionValue#(item_t) get(); | |
78 return w._read(); | |
79 endmethod | |
80 endinterface | |
81 ); | |
82 endfunction | |
83 | |
84 // Convert a RWire into a put interface | |
85 | |
86 function Put#(item_t) rwireToPut( RWire#(item_t) w ) provisos ( ); | |
87 return | |
88 ( | |
89 interface Put | |
90 method Action put( item_t item ); | |
91 w.wset(item); | |
92 endmethod | |
93 endinterface | |
94 ); | |
95 endfunction | |
96 | |
97 // Convert a RWire into a get interface | |
98 | |
99 function Get#(item_t) rwireToGet( RWire#(item_t) w ) provisos ( ); | |
100 return | |
101 ( | |
102 interface Get | |
103 method ActionValue#(item_t) get() if ( isValid(w.wget()) ); | |
104 return unJust(w.wget()); | |
105 endmethod | |
106 endinterface | |
107 ); | |
108 endfunction |