fde05a319edd52ca207b3845a3c0321b6a8d0973
[fleet.git] / ships / Fifo.ship
1 ship: Fifo
2
3 == Ports ===========================================================
4 data  in:   in
5 data  out:  out
6
7 == Constants ========================================================
8 == TeX ==============================================================
9 == Fleeterpreter ====================================================
10     private Queue<Long> fifo = new LinkedList<Long>();
11     public void service() {
12         if (box_in.dataReadyForShip()) {
13             fifo.add(box_in.removeDataForShip());
14         }
15         if (box_out.readyForDataFromShip() && fifo.size() > 0) {
16             box_out.addDataFromShip(fifo.remove());
17         }
18     }
19
20 == FleetSim ==============================================================
21 == FPGA ==============================================================
22 `include "macros.v"
23
24 // fifo *ship*: a 16-deep word-wide fifo
25 module fifo (clk, 
26              in_r,  in_a, in_d,
27              out_r, out_a, out_d);
28
29   input  clk;
30   input  in_r;
31   input  out_a;
32   output in_a;
33   output out_r;
34   input  [(`DATAWIDTH-1):0] in_d;
35   output [(`DATAWIDTH-1):0] out_d;
36
37   wire   [(`DATAWIDTH-1):0] d12;
38   wire   [(`DATAWIDTH-1):0] d23;
39   wire   [(`DATAWIDTH-1):0] d34;
40
41   fifo4 s1(clk, in_r, in_a, in_d, r12, a12,     d12);
42   fifo4 s2(clk, r12,  a12,  d12,  r23, a23,     d23);
43   fifo4 s3(clk, r23,  a23,  d23,  r34, a34,     d34);
44   fifo4 s4(clk, r34,  a34,  d34,  out_r, out_a, out_d);
45
46 endmodule
47
48 == Contributors =========================================================
49 Adam Megacz <megacz@cs.berkeley.edu>