summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usrp2/gpmc/gpmc_async.v8
-rw-r--r--usrp2/top/u1e/u1e_core.v20
2 files changed, 18 insertions, 10 deletions
diff --git a/usrp2/gpmc/gpmc_async.v b/usrp2/gpmc/gpmc_async.v
index 22e56cc89..b1a545907 100644
--- a/usrp2/gpmc/gpmc_async.v
+++ b/usrp2/gpmc/gpmc_async.v
@@ -19,6 +19,8 @@ module gpmc_async
output [35:0] tx_data_o, output tx_src_rdy_o, input tx_dst_rdy_i,
input [35:0] rx_data_i, input rx_src_rdy_i, output rx_dst_rdy_o,
+ input [15:0] tx_frame_len, output [15:0] rx_frame_len,
+
output [31:0] debug
);
@@ -40,9 +42,7 @@ module gpmc_async
wire [17:0] tx18_data, tx18b_data;
wire tx18_src_rdy, tx18_dst_rdy, tx18b_src_rdy, tx18b_dst_rdy;
- wire [15:0] tx_fifo_space, tx_frame_len;
-
- assign tx_frame_len = 10;
+ wire [15:0] tx_fifo_space;
gpmc_to_fifo_async gpmc_to_fifo_async
(.EM_D(EM_D), .EM_NBE(EM_NBE), .EM_NCS(EM_NCS4), .EM_NWE(EM_NWE),
@@ -66,7 +66,7 @@ module gpmc_async
wire [17:0] rx18_data, rx18b_data;
wire rx18_src_rdy, rx18_dst_rdy, rx18b_src_rdy, rx18b_dst_rdy;
- wire [15:0] rx_fifo_space, rx_frame_len;
+ wire [15:0] rx_fifo_space;
fifo36_to_fifo18 f18_to_f36
(.clk(fifo_clk), .reset(fifo_rst), .clear(0),
diff --git a/usrp2/top/u1e/u1e_core.v b/usrp2/top/u1e/u1e_core.v
index 40950bf82..30396de3a 100644
--- a/usrp2/top/u1e/u1e_core.v
+++ b/usrp2/top/u1e/u1e_core.v
@@ -34,6 +34,8 @@ module u1e_core
wire [35:0] tx_data, rx_data;
wire tx_src_rdy, tx_dst_rdy, rx_src_rdy, rx_dst_rdy;
+ reg [15:0] tx_frame_len;
+ wire [15:0] rx_frame_len;
gpmc_async gpmc (.arst(wb_rst),
.EM_CLK(EM_CLK), .EM_D(EM_D), .EM_A(EM_A), .EM_NBE(EM_NBE),
@@ -51,7 +53,8 @@ module u1e_core
.fifo_clk(wb_clk), .fifo_rst(wb_rst),
.tx_data_o(tx_data), .tx_src_rdy_o(tx_src_rdy), .tx_dst_rdy_i(tx_dst_rdy),
.rx_data_i(rx_data), .rx_src_rdy_i(rx_src_rdy), .rx_dst_rdy_o(rx_dst_rdy),
-
+
+ .tx_frame_len(tx_frame_len), .rx_frame_len(rx_frame_len),
.debug(debug_gpmc));
fifo_cascade #(.WIDTH(36), .SIZE(9)) loopback_fifo
@@ -133,11 +136,13 @@ module u1e_core
reg [15:0] reg_leds, reg_cgen_ctrl, reg_test;
- localparam REG_LEDS = 7'd0; // out
- localparam REG_SWITCHES = 7'd2; // in
- localparam REG_CGEN_CTRL = 7'd4; // out
- localparam REG_CGEN_ST = 7'd6; // in
- localparam REG_TEST = 7'd8; // out
+ localparam REG_LEDS = 7'd0; // out
+ localparam REG_SWITCHES = 7'd2; // in
+ localparam REG_CGEN_CTRL = 7'd4; // out
+ localparam REG_CGEN_ST = 7'd6; // in
+ localparam REG_TEST = 7'd8; // out
+ localparam REG_RX_FRAMELEN = 7'd10; // out
+ localparam REG_TX_FRAMELEN = 7'd12; // in
always @(posedge wb_clk)
if(wb_rst)
@@ -155,6 +160,8 @@ module u1e_core
reg_cgen_ctrl <= s0_dat_mosi;
REG_TEST :
reg_test <= s0_dat_mosi;
+ REG_TX_FRAMELEN :
+ tx_frame_len <= s0_dat_mosi;
endcase // case (s0_adr[6:0])
assign { debug_led[2],debug_led[0],debug_led[1] } = reg_leds; // LEDs are arranged funny on board
@@ -166,6 +173,7 @@ module u1e_core
(s0_adr[6:0] == REG_CGEN_CTRL) ? reg_cgen_ctrl :
(s0_adr[6:0] == REG_CGEN_ST) ? {13'b0,cgen_st_status,cgen_st_ld,cgen_st_refmon} :
(s0_adr[6:0] == REG_TEST) ? reg_test :
+ (s0_adr[6:0] == REG_RX_FRAMELEN) ? rx_frame_len :
16'hBEEF;
assign s0_ack = s0_stb & s0_cyc;