aboutsummaryrefslogtreecommitdiffstats
path: root/usrp2/top/u2plus/u2plus_core.v
diff options
context:
space:
mode:
authorIan Buckley <ian.buckley@gmail.com>2010-10-15 11:37:23 -0700
committerMatt Ettus <matt@ettus.com>2010-11-11 12:10:35 -0800
commit7e75951d263c00e9f84bdf14d6176680cb3de833 (patch)
treebf5fd721b3c287b9a2a62d0664e2c107fee6eafc /usrp2/top/u2plus/u2plus_core.v
parent8507271de44aadc564354a77c8b9259e24f0d246 (diff)
downloaduhd-7e75951d263c00e9f84bdf14d6176680cb3de833.tar.gz
uhd-7e75951d263c00e9f84bdf14d6176680cb3de833.tar.bz2
uhd-7e75951d263c00e9f84bdf14d6176680cb3de833.zip
Added external RAM FIFO to u2plus.
Added code branch to ext_fifo.v using generate that instantiates different input and out fifo's and touched nobl_fifo code so that it works at 18 and 36bit widths. Added 2nd DCM to top level to generate off chip RAMCLK. Added explicit I/O instances to top level for tristate drivers and changed signals to core as needed. Creted new FIFO's in core gen to replace much larger FIFO's used on u2rev3
Diffstat (limited to 'usrp2/top/u2plus/u2plus_core.v')
-rw-r--r--usrp2/top/u2plus/u2plus_core.v37
1 files changed, 34 insertions, 3 deletions
diff --git a/usrp2/top/u2plus/u2plus_core.v b/usrp2/top/u2plus/u2plus_core.v
index 4378436a6..9b177390a 100644
--- a/usrp2/top/u2plus/u2plus_core.v
+++ b/usrp2/top/u2plus/u2plus_core.v
@@ -110,11 +110,12 @@ module u2plus_core
inout [15:0] io_rx,
// External RAM
- inout [35:0] RAM_D,
+ input [35:0] RAM_D_pi,
+ output [35:0] RAM_D_po,
+ output RAM_D_poe,
output [20:0] RAM_A,
output RAM_CE1n,
output RAM_CENn,
- output RAM_CLK,
output RAM_WEn,
output RAM_OEn,
output RAM_LDn,
@@ -606,11 +607,41 @@ module u2plus_core
wire tx_src_rdy, tx_dst_rdy;
wire [31:0] debug_vt;
+/* -----\/----- EXCLUDED -----\/-----
fifo_cascade #(.WIDTH(36), .SIZE(DSP_TX_FIFOSIZE)) tx_fifo_cascade
(.clk(dsp_clk), .reset(dsp_rst), .clear(0),
.datain({rd1_flags,rd1_dat}), .src_rdy_i(rd1_ready_o), .dst_rdy_o(rd1_ready_i),
.dataout(tx_data), .src_rdy_o(tx_src_rdy), .dst_rdy_i(tx_dst_rdy) );
-
+ -----/\----- EXCLUDED -----/\----- */
+ // External and internal clock run at 100MHz for USRP2+ because ext RAM is 36bits wide
+ // and provides ample bandwidth.
+ assign RAM_A[20:18] = 3'b0;
+
+ ext_fifo #(.EXT_WIDTH(36),.INT_WIDTH(36),.RAM_DEPTH(18),.FIFO_DEPTH(18))
+ ext_fifo_i1
+ (
+ .int_clk(dsp_clk),
+ .ext_clk(dsp_clk),
+ .rst(dsp_rst),
+ .RAM_D_pi(RAM_D_pi),
+ .RAM_D_po(RAM_D_po),
+ .RAM_D_poe(RAM_D_poe),
+ .RAM_A(RAM_A[17:0]),
+ .RAM_WEn(RAM_WEn),
+ .RAM_CENn(RAM_CENn),
+ .RAM_LDn(RAM_LDn),
+ .RAM_OEn(RAM_OEn),
+ .RAM_CE1n(RAM_CE1n),
+ .datain({rd1_flags[3:2],rd1_dat[31:16],rd1_flags[1:0],rd1_dat[15:0]}),
+ .src_rdy_i(rd1_ready_o), // WRITE
+ .dst_rdy_o(rd1_ready_i), // not FULL
+ .dataout({tx_data[35:34],tx_data[31:16],tx_data[33:32],tx_data[15:0]}),
+ .src_rdy_o(tx_src_rdy), // not EMPTY
+ .dst_rdy_i(tx_dst_rdy),
+ .debug(debug_extfifo),
+ .debug2(debug_extfifo2)
+ );
+
vita_tx_chain #(.BASE_CTRL(SR_TX_CTRL), .BASE_DSP(SR_TX_DSP),
.REPORT_ERROR(1), .PROT_ENG_FLAGS(1))
vita_tx_chain