NCC clean newCell
[fleet.git] / bee2-selectmap / root.v
1 // megacz@cs.berkeley.edu,  public domain
2
3 module root(clk,
4             read_empty, read_enable, read_data,
5             write_full, write_enable, write_data);
6
7   input clk;
8   input read_empty;
9   input write_full;
10   output read_enable;
11   output write_enable;
12   input  [7:0] read_data;
13   output [7:0] write_data;
14
15   reg read_enable_;
16   assign read_enable = read_enable_;
17   reg write_enable_;
18   assign write_enable = write_enable_;
19   reg [7:0] write_data_;
20   assign write_data = write_data_;
21
22   initial read_enable_ = 1;
23   initial write_enable_ = 0;
24
25   always @(posedge clk) begin
26
27     // if there's stuff to read and room to write, read a byte,
28     // increment it, and write it
29     if (!read_enable_ && !write_enable_ && !read_empty && !write_full) begin
30       read_enable_  <= 1;
31       write_enable_ <= 1;
32       write_data_   <= read_data + 1;
33
34     // else do nothing
35     end else begin
36       read_enable_  <= 0;
37       write_enable_ <= 0;
38
39     end
40
41   end
42
43 endmodule