From 8d5393ca6e08e9396413e26c409aabe762780680 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Tue, 20 Aug 2024 08:27:17 -0700 Subject: [PATCH] Changes before work --- .../src/sub/network_processor/doc/tcp.drawio | 54 ++-- .../sub/network_processor/doc/tcp.drawio.png | Bin 168003 -> 170106 bytes .../src/network_processor.sv | 210 +++++++++----- .../src/sub/network_processor/src/tcp.sv | 260 ++++++++++++++++-- 4 files changed, 417 insertions(+), 107 deletions(-) diff --git a/hw/super6502_fpga/src/sub/network_processor/doc/tcp.drawio b/hw/super6502_fpga/src/sub/network_processor/doc/tcp.drawio index 3c7b473..41bdbc0 100644 --- a/hw/super6502_fpga/src/sub/network_processor/doc/tcp.drawio +++ b/hw/super6502_fpga/src/sub/network_processor/doc/tcp.drawio @@ -1,6 +1,6 @@ - + - + @@ -15,7 +15,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -213,7 +213,7 @@ - + @@ -368,14 +368,12 @@ - + + - - - @@ -416,12 +414,12 @@ - + - + @@ -497,34 +495,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -668,6 +666,20 @@ + + + + + + + + + + + + + + diff --git a/hw/super6502_fpga/src/sub/network_processor/doc/tcp.drawio.png b/hw/super6502_fpga/src/sub/network_processor/doc/tcp.drawio.png index c9116f32f1aef8aa561111421dddabcf1eb57d46..7c1e3fb023563053a9cbdab0e3d1e60950fcde5e 100644 GIT binary patch literal 170106 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 CnWPT@ literal 168003 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

>c)Rn+prC`CB|u#RIwLvpSvO8M$*I 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�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 W-C_07-1P|fr>UxY^UV!N`2PR{e_%BL diff --git a/hw/super6502_fpga/src/sub/network_processor/src/network_processor.sv b/hw/super6502_fpga/src/sub/network_processor/src/network_processor.sv index 4d01cf1..9b0b08f 100644 --- a/hw/super6502_fpga/src/sub/network_processor/src/network_processor.sv +++ b/hw/super6502_fpga/src/sub/network_processor/src/network_processor.sv @@ -151,29 +151,29 @@ logic tcp_tx_ip_payload_axis_tready; logic tcp_tx_ip_payload_axis_tlast; logic tcp_tx_ip_payload_axis_tuser; -logic udp_ip_hdr_valid; -logic udp_ip_hdr_ready; -logic [47:0] udp_ip_eth_dest_mac; -logic [47:0] udp_ip_eth_src_mac; -logic [15:0] udp_ip_eth_type; -logic [3:0] udp_ip_version; -logic [3:0] udp_ip_ihl; -logic [5:0] udp_ip_dscp; -logic [1:0] udp_ip_ecn; -logic [15:0] udp_ip_length; -logic [15:0] udp_ip_identification; -logic [2:0] udp_ip_flags; -logic [12:0] udp_ip_fragment_offset; -logic [7:0] udp_ip_ttl; -logic [7:0] udp_ip_protocol; -logic [15:0] udp_ip_header_checksum; -logic [31:0] udp_ip_source_ip; -logic [31:0] udp_ip_dest_ip; -logic [7:0] udp_ip_payload_axis_tdata; -logic udp_ip_payload_axis_tvalid; -logic udp_ip_payload_axis_tready; -logic udp_ip_payload_axis_tlast; -logic udp_ip_payload_axis_tuser; +logic udp_rx_ip_hdr_valid; +logic udp_rx_ip_hdr_ready; +logic [47:0] udp_rx_ip_eth_dest_mac; +logic [47:0] udp_rx_ip_eth_src_mac; +logic [15:0] udp_rx_ip_eth_type; +logic [3:0] udp_rx_ip_version; +logic [3:0] udp_rx_ip_ihl; +logic [5:0] udp_rx_ip_dscp; +logic [1:0] udp_rx_ip_ecn; +logic [15:0] udp_rx_ip_length; +logic [15:0] udp_rx_ip_identification; +logic [2:0] udp_rx_ip_flags; +logic [12:0] udp_rx_ip_fragment_offset; +logic [7:0] udp_rx_ip_ttl; +logic [7:0] udp_rx_ip_protocol; +logic [15:0] udp_rx_ip_header_checksum; +logic [31:0] udp_rx_ip_source_ip; +logic [31:0] udp_rx_ip_dest_ip; +logic [7:0] udp_rx_ip_payload_axis_tdata; +logic udp_rx_ip_payload_axis_tvalid; +logic udp_rx_ip_payload_axis_tready; +logic udp_rx_ip_payload_axis_tlast; +logic udp_rx_ip_payload_axis_tuser; // tx is less because IP adds it automatically. logic udp_tx_ip_hdr_valid; @@ -191,29 +191,29 @@ logic udp_tx_ip_payload_axis_tready; logic udp_tx_ip_payload_axis_tlast; logic udp_tx_ip_payload_axis_tuser; -logic icmp_ip_hdr_valid; -logic icmp_ip_hdr_ready; -logic [47:0] icmp_ip_eth_dest_mac; -logic [47:0] icmp_ip_eth_src_mac; -logic [15:0] icmp_ip_eth_type; -logic [3:0] icmp_ip_version; -logic [3:0] icmp_ip_ihl; -logic [5:0] icmp_ip_dscp; -logic [1:0] icmp_ip_ecn; -logic [15:0] icmp_ip_length; -logic [15:0] icmp_ip_identification; -logic [2:0] icmp_ip_flags; -logic [12:0] icmp_ip_fragment_offset; -logic [7:0] icmp_ip_ttl; -logic [7:0] icmp_ip_protocol; -logic [15:0] icmp_ip_header_checksum; -logic [31:0] icmp_ip_source_ip; -logic [31:0] icmp_ip_dest_ip; -logic [7:0] icmp_ip_payload_axis_tdata; -logic icmp_ip_payload_axis_tvalid; -logic icmp_ip_payload_axis_tready; -logic icmp_ip_payload_axis_tlast; -logic icmp_ip_payload_axis_tuser; +logic icmp_rx_ip_hdr_valid; +logic icmp_rx_ip_hdr_ready; +logic [47:0] icmp_rx_ip_eth_dest_mac; +logic [47:0] icmp_rx_ip_eth_src_mac; +logic [15:0] icmp_rx_ip_eth_type; +logic [3:0] icmp_rx_ip_version; +logic [3:0] icmp_rx_ip_ihl; +logic [5:0] icmp_rx_ip_dscp; +logic [1:0] icmp_rx_ip_ecn; +logic [15:0] icmp_rx_ip_length; +logic [15:0] icmp_rx_ip_identification; +logic [2:0] icmp_rx_ip_flags; +logic [12:0] icmp_rx_ip_fragment_offset; +logic [7:0] icmp_rx_ip_ttl; +logic [7:0] icmp_rx_ip_protocol; +logic [15:0] icmp_rx_ip_header_checksum; +logic [31:0] icmp_rx_ip_source_ip; +logic [31:0] icmp_rx_ip_dest_ip; +logic [7:0] icmp_rx_ip_payload_axis_tdata; +logic icmp_rx_ip_payload_axis_tvalid; +logic icmp_rx_ip_payload_axis_tready; +logic icmp_rx_ip_payload_axis_tlast; +logic icmp_rx_ip_payload_axis_tuser; // tx is less because IP adds it automatically. logic icmp_tx_ip_hdr_valid; @@ -446,6 +446,12 @@ ip_complete #( ); +logic ip_demux_drop; +assign ip_demux_drop = !((rx_ip_protocol == `PROTO_ICMP) || (rx_ip_protocol == `PROTO_UDP) || (rx_ip_protocol == `PROTO_TCP)); + +logic [1:0] ip_demux_sel; +assign ip_demux_sel = (rx_ip_protocol == `PROTO_ICMP) ? 2'h2 : (rx_ip_protocol == `PROTO_UDP) ? 2'h1 : 2'h0; + ip_demux #( .M_COUNT(3), .DATA_WIDTH(MAC_DATA_WIDTH) @@ -477,37 +483,103 @@ ip_demux #( .s_ip_payload_axis_tlast (rx_ip_payload_axis_tlast), .s_ip_payload_axis_tuser (rx_ip_payload_axis_tuser), - .m_ip_hdr_valid ({icmp_ip_hdr_valid, udp_ip_hdr_valid, tcp_tx_ip_hdr_valid}), - .m_ip_hdr_ready ({icmp_ip_hdr_ready, udp_ip_hdr_ready, tcp_tx_ip_hdr_ready}), - .m_eth_dest_mac ({icmp_ip_eth_dest_mac, udp_ip_eth_dest_mac, tcp_tx_ip_eth_dest_mac}), - .m_eth_src_mac ({icmp_ip_eth_src_mac, udp_ip_eth_src_mac, tcp_tx_ip_eth_src_mac}), - .m_eth_type ({icmp_ip_eth_type, udp_ip_eth_type, tcp_tx_ip_eth_type}), - .m_ip_version ({icmp_ip_version, udp_ip_version, tcp_tx_ip_version}), - .m_ip_ihl ({icmp_ip_ihl, udp_ip_ihl, tcp_tx_ip_ihl}), - .m_ip_dscp ({icmp_ip_dscp, udp_ip_dscp, tcp_tx_ip_dscp}), - .m_ip_ecn ({icmp_ip_ecn, udp_ip_ecn, tcp_tx_ip_ecn}), - .m_ip_length ({icmp_ip_length, udp_ip_length, tcp_tx_ip_length}), - .m_ip_identification ({icmp_ip_identification, udp_ip_identification, tcp_tx_ip_identification}), - .m_ip_flags ({icmp_ip_flags, udp_ip_flags, tcp_tx_ip_flags}), - .m_ip_fragment_offset ({icmp_ip_fragment_offset, udp_ip_fragment_offset, tcp_tx_ip_fragment_offset}), - .m_ip_ttl ({icmp_ip_ttl, udp_ip_ttl, tcp_tx_ip_ttl}), - .m_ip_protocol ({icmp_ip_protocol, udp_ip_protocol, tcp_tx_ip_protocol}), - .m_ip_header_checksum ({icmp_ip_header_checksum, udp_ip_header_checksum, tcp_tx_ip_header_checksum}), - .m_ip_source_ip ({icmp_ip_source_ip, udp_ip_source_ip, tcp_tx_ip_source_ip}), - .m_ip_dest_ip ({icmp_ip_dest_ip, udp_ip_dest_ip, tcp_tx_ip_dest_ip}), - .m_ip_payload_axis_tdata ({icmp_ip_payload_axis_tdata, udp_ip_payload_axis_tdata, tcp_tx_ip_payload_axis_tdata}), + .m_ip_hdr_valid ({icmp_rx_ip_hdr_valid, udp_rx_ip_hdr_valid, tcp_rx_ip_hdr_valid}), + .m_ip_hdr_ready ({icmp_rx_ip_hdr_ready, udp_rx_ip_hdr_ready, tcp_rx_ip_hdr_ready}), + .m_eth_dest_mac ({icmp_rx_ip_eth_dest_mac, udp_rx_ip_eth_dest_mac, tcp_rx_ip_eth_dest_mac}), + .m_eth_src_mac ({icmp_rx_ip_eth_src_mac, udp_rx_ip_eth_src_mac, tcp_rx_ip_eth_src_mac}), + .m_eth_type ({icmp_rx_ip_eth_type, udp_rx_ip_eth_type, tcp_rx_ip_eth_type}), + .m_ip_version ({icmp_rx_ip_version, udp_rx_ip_version, tcp_rx_ip_version}), + .m_ip_ihl ({icmp_rx_ip_ihl, udp_rx_ip_ihl, tcp_rx_ip_ihl}), + .m_ip_dscp ({icmp_rx_ip_dscp, udp_rx_ip_dscp, tcp_rx_ip_dscp}), + .m_ip_ecn ({icmp_rx_ip_ecn, udp_rx_ip_ecn, tcp_rx_ip_ecn}), + .m_ip_length ({icmp_rx_ip_length, udp_rx_ip_length, tcp_rx_ip_length}), + .m_ip_identification ({icmp_rx_ip_identification, udp_rx_ip_identification, tcp_rx_ip_identification}), + .m_ip_flags ({icmp_rx_ip_flags, udp_rx_ip_flags, tcp_rx_ip_flags}), + .m_ip_fragment_offset ({icmp_rx_ip_fragment_offset, udp_rx_ip_fragment_offset, tcp_rx_ip_fragment_offset}), + .m_ip_ttl ({icmp_rx_ip_ttl, udp_rx_ip_ttl, tcp_rx_ip_ttl}), + .m_ip_protocol ({icmp_rx_ip_protocol, udp_rx_ip_protocol, tcp_rx_ip_protocol}), + .m_ip_header_checksum ({icmp_rx_ip_header_checksum, udp_rx_ip_header_checksum, tcp_rx_ip_header_checksum}), + .m_ip_source_ip ({icmp_rx_ip_source_ip, udp_rx_ip_source_ip, tcp_rx_ip_source_ip}), + .m_ip_dest_ip ({icmp_rx_ip_dest_ip, udp_rx_ip_dest_ip, tcp_rx_ip_dest_ip}), + .m_ip_payload_axis_tdata ({icmp_rx_ip_payload_axis_tdata, udp_rx_ip_payload_axis_tdata, tcp_rx_ip_payload_axis_tdata}), .m_ip_payload_axis_tkeep (), - .m_ip_payload_axis_tvalid ({icmp_ip_payload_axis_tvalid, udp_ip_payload_axis_tvalid, tcp_tx_ip_payload_axis_tvalid}), - .m_ip_payload_axis_tready ({icmp_ip_payload_axis_tready, udp_ip_payload_axis_tready, tcp_tx_ip_payload_axis_tready}), - .m_ip_payload_axis_tlast ({icmp_ip_payload_axis_tlast, udp_ip_payload_axis_tlast, tcp_tx_ip_payload_axis_tlast}), + .m_ip_payload_axis_tvalid ({icmp_rx_ip_payload_axis_tvalid, udp_rx_ip_payload_axis_tvalid, tcp_rx_ip_payload_axis_tvalid}), + .m_ip_payload_axis_tready ({icmp_rx_ip_payload_axis_tready, udp_rx_ip_payload_axis_tready, tcp_rx_ip_payload_axis_tready}), + .m_ip_payload_axis_tlast ({icmp_rx_ip_payload_axis_tlast, udp_rx_ip_payload_axis_tlast, tcp_rx_ip_payload_axis_tlast}), .m_ip_payload_axis_tid (), .m_ip_payload_axis_tdest (), - .m_ip_payload_axis_tuser ({icmp_ip_payload_axis_tuser, udp_ip_payload_axis_tuser, tcp_tx_ip_payload_axis_tuser}), + .m_ip_payload_axis_tuser ({icmp_rx_ip_payload_axis_tuser, udp_rx_ip_payload_axis_tuser, tcp_rx_ip_payload_axis_tuser}), + .enable ('1), .drop (ip_demux_drop), .select (ip_demux_sel) ); +assign icmp_rx_ip_hdr_ready = '1; +assign icmp_rx_ip_payload_axis_tready = '1; +assign udp_rx_ip_hdr_ready = '1; +assign udp_rx_ip_payload_axis_tready = '1; + + +ip_arb_mux #( + .S_COUNT(3), + .DATA_WIDTH(MAC_DATA_WIDTH) +) u_ip_arb_mux ( + .clk (i_clk), + .rst (i_rst), + + .s_ip_hdr_valid ({icmp_tx_ip_hdr_valid, udp_tx_ip_hdr_valid, tcp_tx_ip_hdr_valid}), + .s_ip_hdr_ready ({icmp_tx_ip_hdr_ready, udp_tx_ip_hdr_ready, tcp_tx_ip_hdr_ready}), + .s_eth_dest_mac ('0), + .s_eth_src_mac ('0), + .s_eth_type ('0), + .s_ip_version ('0), + .s_ip_ihl ('0), + .s_ip_dscp ({icmp_tx_ip_dscp, udp_tx_ip_dscp, tcp_tx_ip_dscp}), + .s_ip_ecn ({icmp_tx_ip_ecn, udp_tx_ip_ecn, tcp_tx_ip_ecn}), + .s_ip_length ({icmp_tx_ip_length, udp_tx_ip_length, tcp_tx_ip_length}), + .s_ip_identification ('0), + .s_ip_flags ('0), + .s_ip_fragment_offset ('0), + .s_ip_ttl ({icmp_tx_ip_ttl, udp_tx_ip_ttl, tcp_tx_ip_ttl}), + .s_ip_protocol ({icmp_tx_ip_protocol, udp_tx_ip_protocol, tcp_tx_ip_protocol}), + .s_ip_header_checksum ('0), + .s_ip_source_ip ({icmp_tx_ip_source_ip, udp_tx_ip_source_ip, tcp_tx_ip_source_ip}), + .s_ip_dest_ip ({icmp_tx_ip_dest_ip, udp_tx_ip_dest_ip, tcp_tx_ip_dest_ip}), + .s_ip_payload_axis_tdata ({icmp_tx_ip_payload_axis_tdata, udp_tx_ip_payload_axis_tdata, tcp_tx_ip_payload_axis_tdata}), + .s_ip_payload_axis_tkeep ('1), + .s_ip_payload_axis_tvalid ({icmp_tx_ip_payload_axis_tvalid, udp_tx_ip_payload_axis_tvalid, tcp_tx_ip_payload_axis_tvalid}), + .s_ip_payload_axis_tready ({icmp_tx_ip_payload_axis_tready, udp_tx_ip_payload_axis_tready, tcp_tx_ip_payload_axis_tready}), + .s_ip_payload_axis_tlast ({icmp_tx_ip_payload_axis_tlast, udp_tx_ip_payload_axis_tlast, tcp_tx_ip_payload_axis_tlast}), + .s_ip_payload_axis_tid ('0), + .s_ip_payload_axis_tdest ('0), + .s_ip_payload_axis_tuser ({icmp_tx_ip_payload_axis_tuser, udp_tx_ip_payload_axis_tuser, tcp_tx_ip_payload_axis_tuser}), + + .m_ip_hdr_valid (tx_ip_hdr_valid), + .m_ip_hdr_ready (tx_ip_hdr_ready), + .m_eth_dest_mac (), + .m_eth_src_mac (), + .m_eth_type (), + .m_ip_version (), + .m_ip_ihl (), + .m_ip_dscp (tx_ip_dscp), + .m_ip_ecn (tx_ip_ecn), + .m_ip_length (), + .m_ip_identification (), + .m_ip_flags (), + .m_ip_fragment_offset (), + .m_ip_ttl (tx_ip_ttl), + .m_ip_protocol (tx_ip_protocol), + .m_ip_header_checksum (), + .m_ip_source_ip (tx_ip_source_ip), + .m_ip_dest_ip (tx_ip_dest_ip), + .m_ip_payload_axis_tdata (tx_ip_payload_axis_tdata), + .m_ip_payload_axis_tvalid (tx_ip_payload_axis_tvalid), + .m_ip_payload_axis_tready (tx_ip_payload_axis_tready), + .m_ip_payload_axis_tlast (tx_ip_payload_axis_tlast), + .m_ip_payload_axis_tuser (tx_ip_payload_axis_tuser) +); + tcp #( .NUM_TCP(NUM_TCP) ) tcp ( diff --git a/hw/super6502_fpga/src/sub/network_processor/src/tcp.sv b/hw/super6502_fpga/src/sub/network_processor/src/tcp.sv index 6353ae2..a07919a 100644 --- a/hw/super6502_fpga/src/sub/network_processor/src/tcp.sv +++ b/hw/super6502_fpga/src/sub/network_processor/src/tcp.sv @@ -61,7 +61,53 @@ module tcp #( output wire m_ip_payload_axis_tvalid, input wire m_ip_payload_axis_tready, output wire m_ip_payload_axis_tlast, - output wire m_ip_payload_axis_tuser + output wire m_ip_payload_axis_tuser, + + /* + * AXI DMA Interface + */ + input wire m_dma_axil_awready, + output wire m_dma_axil_awvalid, + output wire [31:0] m_dma_axil_awaddr, + output wire [2:0] m_dma_axil_awprot, + input wire m_dma_axil_wready, + output wire m_dma_axil_wvalid, + output wire [31:0] m_dma_axil_wdata, + output wire [3:0] m_dma_axil_wstrb, + output wire m_dma_axil_bready, + input wire m_dma_axil_bvalid, + input wire [1:0] m_dma_axil_bresp, + input wire m_dma_axil_arready, + output wire m_dma_axil_arvalid, + output wire [31:0] m_dma_axil_araddr, + output wire [2:0] m_dma_axil_arprot, + output wire m_dma_axil_rready, + input wire m_dma_axil_rvalid, + input wire [31:0] m_dma_axil_rdata, + input wire [1:0] m_dma_axil_rresp, + + /* + * AXI Ring buffer Interface + */ + input wire m_rb_axil_awready, + output wire m_rb_axil_awvalid, + output wire [31:0] m_rb_axil_awaddr, + output wire [2:0] m_rb_axil_awprot, + input wire m_rb_axil_wready, + output wire m_rb_axil_wvalid, + output wire [31:0] m_rb_axil_wdata, + output wire [3:0] m_rb_axil_wstrb, + output wire m_rb_axil_bready, + input wire m_rb_axil_bvalid, + input wire [1:0] m_rb_axil_bresp, + input wire m_rb_axil_arready, + output wire m_rb_axil_arvalid, + output wire [31:0] m_rb_axil_araddr, + output wire [2:0] m_rb_axil_arprot, + output wire m_rb_axil_rready, + input wire m_rb_axil_rvalid, + input wire [31:0] m_rb_axil_rdata, + input wire [1:0] m_rb_axil_rresp ); tcp_top_regfile_pkg::tcp_top_regfile__in_t tcp_hwif_in; @@ -110,6 +156,22 @@ logic s2m_rx_axis_tlast; logic [DEST_WIDTH-1:0] s2m_rx_axis_tdest; logic [USER_WIDTH-1:0] s2m_rx_axis_tuser; +logic [NUM_TCP*DATA_WIDTH-1:0] stream_tx_axis_tdata; +logic [NUM_TCP*KEEP_WIDTH-1:0] stream_tx_axis_tkeep; +logic [NUM_TCP-1:0] stream_tx_axis_tvalid; +logic [NUM_TCP-1:0] stream_tx_axis_tready; +logic [NUM_TCP-1:0] stream_tx_axis_tlast; +logic [NUM_TCP*DEST_WIDTH-1:0] stream_tx_axis_tdest; +logic [NUM_TCP*USER_WIDTH-1:0] stream_tx_axis_tuser; + +logic [NUM_TCP*DATA_WIDTH-1:0] stream_rx_axis_tdata; +logic [NUM_TCP*KEEP_WIDTH-1:0] stream_rx_axis_tkeep; +logic [NUM_TCP-1:0] stream_rx_axis_tvalid; +logic [NUM_TCP-1:0] stream_rx_axis_tready; +logic [NUM_TCP-1:0] stream_rx_axis_tlast; +logic [NUM_TCP*DEST_WIDTH-1:0] stream_rx_axis_tdest; +logic [NUM_TCP*USER_WIDTH-1:0] stream_rx_axis_tuser; + logic [NUM_TCP-1:0] tcp_rx_ip_hdr_valid; logic [NUM_TCP-1:0] tcp_rx_ip_hdr_ready; logic [NUM_TCP*48-1:0] tcp_rx_eth_dest_mac; @@ -153,13 +215,138 @@ logic [NUM_TCP-1:0] tcp_tx_ip_payload_axis_tlast; logic [NUM_TCP*USER_WIDTH-1:0] tcp_tx_ip_payload_axis_tuser; +// ring buffer manager + //m2s dma +// axis demux +axis_demux #( + .M_COUNT(NUM_TCP), + .DATA_WIDTH(DATA_WIDTH), + .DEST_ENABLE(1), + .TDEST_ROUTE(1) +) u_stream_tx_demux ( + .clk (i_clk), + .rst (i_rst), + + .s_axis_tdata (m2s_tx_axis_tdata), + .s_axis_tkeep (m2s_tx_axis_tkeep), + .s_axis_tvalid (m2s_tx_axis_tvalid), + .s_axis_tready (m2s_tx_axis_tready), + .s_axis_tlast (m2s_tx_axis_tlast), + .s_axis_tid ('0), + .s_axis_tdest (m2s_tx_axis_tdest), + .s_axis_tuser (m2s_tx_axis_tuser), + + .m_axis_tdata (stream_tx_axis_tdata), + .m_axis_tkeep (stream_tx_axis_tkeep), + .m_axis_tvalid (stream_tx_axis_tvalid), + .m_axis_tready (stream_tx_axis_tready), + .m_axis_tlast (stream_tx_axis_tlast), + .m_axis_tid (), + .m_axis_tdest (stream_tx_axis_tdest), + .m_axis_tuser (stream_tx_axis_tuser), + + .enable ('1), + .drop ('0), + .select ('0) // route selected by tdest +); + //s2m dma -// tx_stream demux (ip) +// axis mux +axis_arb_mux #( + .S_COUNT(NUM_TCP), + .DATA_WIDTH(DATA_WIDTH), + .DEST_ENABLE(1) +) u_stream_rx_arb_mux ( + .clk (i_clk), + .rst (i_rst), -// rx_stream arb (ip) + .s_axis_tdata (stream_rx_axis_tdata), + .s_axis_tkeep (stream_rx_axis_tkeep), + .s_axis_tvalid (stream_rx_axis_tvalid), + .s_axis_tready (stream_rx_axis_tready), + .s_axis_tlast (stream_rx_axis_tlast), + .s_axis_tid ('0), + .s_axis_tdest (stream_rx_axis_tdest), + .s_axis_tuser (stream_rx_axis_tuser), + + .m_axis_tdata (s2m_rx_axis_tdata), + .m_axis_tkeep (s2m_rx_axis_tkeep), + .m_axis_tvalid (s2m_rx_axis_tvalid), + .m_axis_tready (s2m_rx_axis_tready), + .m_axis_tlast (s2m_rx_axis_tlast), + .m_axis_tid (), + .m_axis_tdest (s2m_rx_axis_tdest), + .m_axis_tuser (s2m_rx_axis_tuser) +); + +// tx_stream arb mux (ip) +ip_arb_mux #( + .S_COUNT(NUM_TCP), + .DATA_WIDTH(DATA_WIDTH) +) u_tx_stream_arb_mux ( + .clk (i_clk), + .rst (i_rst), + + .s_ip_hdr_valid (tcp_tx_ip_hdr_valid), + .s_ip_hdr_ready (tcp_tx_ip_hdr_ready), + .s_eth_dest_mac ('0), + .s_eth_src_mac ('0), + .s_eth_type ('0), + .s_ip_version ('0), + .s_ip_ihl ('0), + .s_ip_dscp (tcp_tx_ip_dscp), + .s_ip_ecn (tcp_tx_ip_ecn), + .s_ip_length (tcp_tx_ip_length), + .s_ip_identification ('0), + .s_ip_flags ('0), + .s_ip_fragment_offset ('0), + .s_ip_ttl (tcp_tx_ip_ttl), + .s_ip_protocol (tcp_tx_ip_protocol), + .s_ip_header_checksum ('0), + .s_ip_source_ip (tcp_tx_ip_source_ip), + .s_ip_dest_ip (tcp_tx_ip_dest_ip), + .s_ip_payload_axis_tdata (tcp_tx_ip_payload_axis_tdata), + .s_ip_payload_axis_tkeep ('1), + .s_ip_payload_axis_tvalid (tcp_tx_ip_payload_axis_tvalid), + .s_ip_payload_axis_tready (tcp_tx_ip_payload_axis_tready), + .s_ip_payload_axis_tlast (tcp_tx_ip_payload_axis_tlast), + .s_ip_payload_axis_tid ('0), + .s_ip_payload_axis_tdest ('0), + .s_ip_payload_axis_tuser (tcp_tx_ip_payload_axis_tuser), + + .m_ip_hdr_valid (m_ip_hdr_valid), + .m_ip_hdr_ready (m_ip_hdr_ready), + .m_eth_dest_mac (), + .m_eth_src_mac (), + .m_eth_type (), + .m_ip_version (), + .m_ip_ihl (), + .m_ip_dscp (m_ip_dscp), + .m_ip_ecn (m_ip_ecn), + .m_ip_length (m_ip_length), + .m_ip_identification (), + .m_ip_flags (), + .m_ip_fragment_offset (), + .m_ip_ttl (m_ip_ttl), + .m_ip_protocol (m_ip_protocol), + .m_ip_header_checksum (), + .m_ip_source_ip (m_ip_source_ip), + .m_ip_dest_ip (m_ip_dest_ip), + .m_ip_payload_axis_tdata (m_ip_payload_axis_tdata), + .m_ip_payload_axis_tkeep (), + .m_ip_payload_axis_tvalid (m_ip_payload_axis_tvalid), + .m_ip_payload_axis_tready (m_ip_payload_axis_tready), + .m_ip_payload_axis_tlast (m_ip_payload_axis_tlast), + .m_ip_payload_axis_tid (), + .m_ip_payload_axis_tdest (), + .m_ip_payload_axis_tuser (m_ip_payload_axis_tuser) +); + + +// rx_stream demux (ip) generate @@ -178,22 +365,61 @@ generate assign wr_biten = tcp_hwif_out.tcp_streams[i].wr_biten; tcp_stream u_tcp_stream ( - .clk (i_clk), - .rst (i_rst), + .clk (i_clk), + .rst (i_rst), // This is the hacky decoder alex was telling me about - .s_cpuif_req (req), - .s_cpuif_req_is_wr (req_is_wr), - .s_cpuif_addr (addr), - .s_cpuif_wr_data (wr_data), - .s_cpuif_wr_biten (wr_biten), - .s_cpuif_req_stall_wr (), - .s_cpuif_req_stall_rd (), - .s_cpuif_rd_ack (tcp_hwif_in.tcp_streams[i].rd_ack), - .s_cpuif_rd_err (), - .s_cpuif_rd_data (tcp_hwif_in.tcp_streams[i].rd_data), - .s_cpuif_wr_ack (tcp_hwif_in.tcp_streams[i].wr_ack), - .s_cpuif_wr_err () + .s_cpuif_req (req), + .s_cpuif_req_is_wr (req_is_wr), + .s_cpuif_addr (addr), + .s_cpuif_wr_data (wr_data), + .s_cpuif_wr_biten (wr_biten), + .s_cpuif_req_stall_wr (), + .s_cpuif_req_stall_rd (), + .s_cpuif_rd_ack (tcp_hwif_in.tcp_streams[i].rd_ack), + .s_cpuif_rd_err (), + .s_cpuif_rd_data (tcp_hwif_in.tcp_streams[i].rd_data), + .s_cpuif_wr_ack (tcp_hwif_in.tcp_streams[i].wr_ack), + .s_cpuif_wr_err (), + + .s_ip_hdr_valid (tcp_rx_ip_hdr_valid[i]), + .s_ip_hdr_ready (tcp_rx_ip_hdr_ready[i]), + .s_ip_eth_dest_mac (tcp_rx_eth_dest_mac[i*48+:48]), + .s_ip_eth_src_mac (tcp_rx_eth_src_mac[i*48+:48]), + .s_ip_eth_type (tcp_rx_eth_type[i*16+:16]), + .s_ip_version (tcp_rx_ip_version[i*4+:4]), + .s_ip_ihl (tcp_rx_ip_ihl[i*4+:4]), + .s_ip_dscp (tcp_rx_ip_dscp[i*6+:6]), + .s_ip_ecn (tcp_rx_ip_ecn), + .s_ip_length (tcp_rx_ip_length), + .s_ip_identification (tcp_rx_ip_identification), + .s_ip_flags (tcp_rx_ip_flags), + .s_ip_fragment_offset (tcp_rx_ip_fragment_offset), + .s_ip_ttl (tcp_rx_ip_ttl), + .s_ip_protocol (tcp_rx_ip_protocol), + .s_ip_header_checksum (tcp_rx_ip_header_checksum), + .s_ip_source_ip (tcp_rx_ip_source_ip), + .s_ip_dest_ip (tcp_rx_ip_dest_ip), + .s_ip_payload_axis_tdata (tcp_rx_ip_payload_axis_tdata), + .s_ip_payload_axis_tvalid (tcp_rx_ip_payload_axis_tvalid), + .s_ip_payload_axis_tready (tcp_rx_ip_payload_axis_tready), + .s_ip_payload_axis_tlast (tcp_rx_ip_payload_axis_tlast), + .s_ip_payload_axis_tuser (tcp_rx_ip_payload_axis_tuser), + + .m_ip_hdr_valid (tcp_tx_ip_hdr_valid), + .m_ip_hdr_ready (tcp_tx_ip_hdr_ready), + .m_ip_dscp (tcp_tx_ip_dscp), + .m_ip_ecn (tcp_tx_ip_ecn), + .m_ip_length (tcp_tx_ip_length), + .m_ip_ttl (tcp_tx_ip_ttl), + .m_ip_protocol (tcp_tx_ip_protocol), + .m_ip_source_ip (tcp_tx_ip_source_ip), + .m_ip_dest_ip (tcp_tx_ip_dest_ip), + .m_ip_payload_axis_tdata (tcp_tx_ip_payload_axis_tdata), + .m_ip_payload_axis_tvalid (tcp_tx_ip_payload_axis_tvalid), + .m_ip_payload_axis_tready (tcp_tx_ip_payload_axis_tready), + .m_ip_payload_axis_tlast (tcp_tx_ip_payload_axis_tlast), + .m_ip_payload_axis_tuser (tcp_tx_ip_payload_axis_tuser) ); end endgenerate