diff options
| author | Matt Ettus <matt@ettus.com> | 2011-03-18 16:11:02 -0700 | 
|---|---|---|
| committer | Matt Ettus <matt@ettus.com> | 2011-05-26 17:31:21 -0700 | 
| commit | a4dc4a539a61d94a2d18b4576371d230c0dc6514 (patch) | |
| tree | 115f01c6db3d1684d22368fb7bd0887963966778 | |
| parent | ac3e42d1053772f324245dfff23eadcc7c6135cd (diff) | |
| download | uhd-a4dc4a539a61d94a2d18b4576371d230c0dc6514.tar.gz uhd-a4dc4a539a61d94a2d18b4576371d230c0dc6514.tar.bz2 uhd-a4dc4a539a61d94a2d18b4576371d230c0dc6514.zip | |
u1p: use 18 bit fifos and use full size of a block ram in the tx path
| -rw-r--r-- | usrp2/fifo/fifo_2clock.v | 19 | ||||
| -rw-r--r-- | usrp2/gpif/gpif_wr.v | 13 | 
2 files changed, 19 insertions, 13 deletions
| diff --git a/usrp2/fifo/fifo_2clock.v b/usrp2/fifo/fifo_2clock.v index 34c85ccb4..f3ed5324f 100644 --- a/usrp2/fifo/fifo_2clock.v +++ b/usrp2/fifo/fifo_2clock.v @@ -14,7 +14,8 @@ module fifo_2clock     assign src_rdy_o  = ~empty;     assign write      = src_rdy_i & dst_rdy_o;     assign read 	     = src_rdy_o & dst_rdy_i; - +   wire 	 dummy; +        generate        if(WIDTH==36)  	if(SIZE==9) @@ -37,12 +38,16 @@ module fifo_2clock  	       (.rst(arst),  		.wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk),  		.rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); -      else if((WIDTH==19)|(WIDTH==18)) -	if(SIZE==4) -	  fifo_xlnx_16x19_2clk fifo_xlnx_16x19_2clk -		     (.rst(arst), -		      .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), -		      .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); +      else if((WIDTH==19) & (SIZE==4)) +	fifo_xlnx_16x19_2clk fifo_xlnx_16x19_2clk +	  (.rst(arst), +	   .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), +	   .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); +      else if((WIDTH==18) & (SIZE==4)) +	fifo_xlnx_16x19_2clk fifo_xlnx_16x19_2clk +	  (.rst(arst), +	   .wr_clk(wclk),.din({1'b0,datain}),.full(full),.wr_en(write),.wr_data_count(level_wclk), +	   .rd_clk(rclk),.dout({dummy,dataout}),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) );     endgenerate     assign occupied  = {{(16-SIZE-1){1'b0}},level_rclk}; diff --git a/usrp2/gpif/gpif_wr.v b/usrp2/gpif/gpif_wr.v index e9b3c72ea..bf95931dc 100644 --- a/usrp2/gpif/gpif_wr.v +++ b/usrp2/gpif/gpif_wr.v @@ -44,19 +44,20 @@ module gpif_wr       else         gpif_full_d <= fifo_space < 256; -   wire [18:0] data_int; +   wire [17:0] data_int;     wire        src_rdy_int, dst_rdy_int; -   fifo_cascade #(.WIDTH(19), .SIZE(9)) wr_fifo +   fifo_cascade #(.WIDTH(18), .SIZE(10)) wr_fifo       (.clk(gpif_clk), .reset(gpif_rst), .clear(0), -      .datain({1'b0,eop,sop,gpif_data_reg}), .src_rdy_i(~ep_reg & wr_reg & ~write_count[8]), .dst_rdy_o(), .space(fifo_space), +      .datain({eop,sop,gpif_data_reg}), .src_rdy_i(~ep_reg & wr_reg & ~write_count[8]), .dst_rdy_o(), .space(fifo_space),        .dataout(data_int), .src_rdy_o(src_rdy_int), .dst_rdy_i(dst_rdy_int), .occupied()); -   fifo_2clock_cascade #(.WIDTH(19), .SIZE(4)) wr_fifo_2clk +   fifo_2clock_cascade #(.WIDTH(18), .SIZE(4)) wr_fifo_2clk       (.wclk(gpif_clk), .datain(data_int), .src_rdy_i(src_rdy_int), .dst_rdy_o(dst_rdy_int), .space(), -      .rclk(sys_clk), .dataout(data_o[18:0]), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i), .occupied(), +      .rclk(sys_clk), .dataout(data_o[17:0]), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i), .occupied(),        .arst(sys_rst)); - +   assign data_o[18] = 1'b0; +        // Control Path     wire [15:0] ctrl_fifo_space;     always @(posedge gpif_clk) | 
