X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Ffleet%2Fslipway%2Ffunnel.v;h=e2f5f6273c2dd06dfda5681c50a599703512ad85;hb=50a8a63a50739299e3ccdbd17c7091fbfa2fc039;hp=d82b9ae33667d4bc30b94524da4ad9543c7f6238;hpb=93c7fccaf707a3c83b429691d5d7365668e07843;p=fleet.git diff --git a/src/edu/berkeley/fleet/slipway/funnel.v b/src/edu/berkeley/fleet/slipway/funnel.v index d82b9ae..e2f5f62 100644 --- a/src/edu/berkeley/fleet/slipway/funnel.v +++ b/src/edu/berkeley/fleet/slipway/funnel.v @@ -1,41 +1,51 @@ -`include "macros.v" +module funnel(clk + , out_r_, out_a, out_ + , in1_r, in1_a_, in1 + , in2_r, in2_a_, in2 + ); -module funnel(clk, - out_r_, out_a, out_d_, - in1_r, in1_a_, in1_d, - in2_r, in2_a_, in2_d - ); + input clk; + output out_r_; +input out_a; +output [47:0]out_; +reg out_r; +initial out_r = 0; +reg [47:0]out; +initial out = 0; - input clk; - reg last; - initial last=0; - reg full; - initial full=0; + input in2_r; +output in2_a_; +input [47:0]in2; +reg in2_a; +initial in2_a = 0; - `input(in1_r, in1_a, in1_a_, [(`PACKET_WIDTH-1):0], in1_d) - `input(in2_r, in2_a, in2_a_, [(`PACKET_WIDTH-1):0], in2_d) - `output(out_r, out_r_, out_a, [(`PACKET_WIDTH-1):0], out_d_) - `defreg(out_d_, [(`PACKET_WIDTH-1):0], out_d) + input in1_r; +output in1_a_; +input [47:0]in1; +reg in1_a; +initial in1_a = 0; - always @(posedge clk) begin - if (full) begin - `onwrite(out_r, out_a) - full = 0; - end - end else begin - last = ~last; - if (last) begin - `onread(in1_r, in1_a) - full = 1; - out_d = in1_d; - end - end else begin - `onread(in2_r, in2_a) - full = 1; - out_d = in2_d; - end - end - end - end - + assign out_r_ = out_r; +assign out_ = out; + + assign in2_a_ = in2_a; + + assign in1_a_ = in1_a; + +always @(posedge clk) begin +if (out_r && out_a) begin out_r<=0; end +if (!in1_r && in1_a) in1_a<=0; +if (!in2_r && in2_a) in2_a<=0; +if (1 && in2_r && !in2_a && !out_r && !out_a) begin +in2_a <= 1; +out_r <= 1; +out = in2; +end else +if (1 && in1_r && !in1_a && !out_r && !out_a) begin +in1_a <= 1; +out_r <= 1; +out = in1; +end else + begin end +end endmodule