fpga: x300: Support advanced transport adapter

Original-commit: adc938c0b6c9b045ad60c8f5297303495a96f0ca
This commit is contained in:
Wade Fife
2023-01-10 14:19:00 -08:00
committed by michael-west
parent 82321919dd
commit fb4542e9ef
3 changed files with 312 additions and 81 deletions
+15 -5
View File
@@ -157,6 +157,8 @@ module bus_int #(
localparam SR_ETHINT1 = 8'd56;
localparam SR_FP_GPIO_SRC = 8'd72;
localparam SR_BASE_TIME = 8'd100;
localparam SR_TA_SFP0_BASE = 8'd144;
localparam SR_TA_SFP1_BASE = 8'd160;
localparam RB_COUNTER = 8'd00;
localparam RB_SPI_RDY = 8'd01;
@@ -173,6 +175,8 @@ module bus_int #(
localparam RB_NUM_TIMEKEEPERS = 8'd12;
localparam RB_FP_GPIO_SRC = 8'd13;
localparam RB_DEVICE_ID = 8'd14;
localparam RB_TA_SFP0_BASE = SR_TA_SFP0_BASE;
localparam RB_TA_SFP1_BASE = SR_TA_SFP1_BASE;
localparam COMPAT_MAJOR = 16'h0027;
localparam COMPAT_MINOR = 16'h0000;
@@ -201,9 +205,9 @@ module bus_int #(
wire [7:0] set_addr;
reg [31:0] rb_data;
wire [RB_AWIDTH-1:0] rb_addr;
wire rb_rd_stb;
wire rb_rd_stb;
wire set_stb;
wire spi_ready;
wire spi_ready;
wire [31:0] rb_spi_data;
wire [15:0] device_id;
@@ -410,6 +414,7 @@ module bus_int #(
reg radio_time_hi_ld;
reg radio_time_last_pps_hi_ld;
wire [31:0] rb_ta_sfp0_data, rb_ta_sfp1_data;
always @(posedge clk) counter <= counter + 1;
@@ -470,7 +475,8 @@ module bus_int #(
SR_BASE_TIME + 'h20: rb_data = period_ns_q32_tb[63:32];
default: begin
rb_data = 32'h0;
// Allow read-back of Ethernet transport adapter regs
rb_data = rb_ta_sfp0_data | rb_ta_sfp1_data;
end
endcase // case (rb_addr)
end
@@ -644,11 +650,13 @@ module bus_int #(
assign {zpui0_tdata, zpui0_tlast, zpui0_tvalid, zpuo0_tready} = {64'h0, 1'b0, 1'b0, 1'b1};
`else
x300_eth_interface #(
.PROTOVER(RFNOC_PROTOVER), .MTU(BYTE_MTU-3), .NODE_INST(0), .BASE(SR_ETHINT0)
.PROTOVER(RFNOC_PROTOVER), .MTU(BYTE_MTU-3), .NODE_INST(0),
.ETH_BASE(SR_ETHINT0), .TA_BASE(SR_TA_SFP0_BASE)
) eth_interface0 (
.clk(clk), .reset(reset),
.device_id(device_id),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.rb_addr(rb_addr), .rb_data(rb_ta_sfp0_data),
.eth_tx_tdata(sfp0_tx_tdata), .eth_tx_tuser(sfp0_tx_tuser), .eth_tx_tlast(sfp0_tx_tlast),
.eth_tx_tvalid(sfp0_tx_tvalid), .eth_tx_tready(sfp0_tx_tready),
.eth_rx_tdata(sfp0_rx_tdata), .eth_rx_tuser(sfp0_rx_tuser), .eth_rx_tlast(sfp0_rx_tlast),
@@ -667,11 +675,13 @@ module bus_int #(
assign {zpui1_tdata, zpui1_tlast, zpui1_tvalid, zpuo1_tready} = {64'h0, 1'b0, 1'b0, 1'b1};
`else
x300_eth_interface #(
.PROTOVER(RFNOC_PROTOVER), .MTU(BYTE_MTU-3), .NODE_INST(1), .BASE(SR_ETHINT1)
.PROTOVER(RFNOC_PROTOVER), .MTU(BYTE_MTU-3), .NODE_INST(1),
.ETH_BASE(SR_ETHINT1), .TA_BASE(SR_TA_SFP1_BASE)
) eth_interface1 (
.clk(clk), .reset(reset),
.device_id(device_id),
.set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
.rb_addr(rb_addr), .rb_data(rb_ta_sfp1_data),
.eth_tx_tdata(sfp1_tx_tdata), .eth_tx_tuser(sfp1_tx_tuser), .eth_tx_tlast(sfp1_tx_tlast),
.eth_tx_tvalid(sfp1_tx_tvalid), .eth_tx_tready(sfp1_tx_tready),
.eth_rx_tdata(sfp1_rx_tdata), .eth_rx_tuser(sfp1_rx_tuser), .eth_rx_tlast(sfp1_rx_tlast),