Changes before work

This commit is contained in:
Byron Lathi
2024-08-20 08:27:17 -07:00
parent 7b5fb1a682
commit 8d5393ca6e
4 changed files with 417 additions and 107 deletions

View File

@@ -1,6 +1,6 @@
<mxfile host="Electron" modified="2024-08-20T04:42:09.934Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="9NoZqOs_DXCG2bzulEHw" version="21.2.8" type="device">
<mxfile host="Electron" modified="2024-08-20T14:56:23.857Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="5c_2cSqm02fkQC83S7Kw" version="21.2.8" type="device">
<diagram name="Page-1" id="8lX2gjxiGhIz8fm0OWgg">
<mxGraphModel dx="2048" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<mxGraphModel dx="1766" dy="629" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
@@ -15,7 +15,7 @@
<mxPoint x="140" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-320" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-317" source="hUmURhrymKCytomf8O3q-339" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-320" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-317" source="hUmURhrymKCytomf8O3q-339" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="140" as="targetPoint" />
<Array as="points">
@@ -114,7 +114,7 @@
<mxPoint x="140" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-296" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-293" source="hUmURhrymKCytomf8O3q-315" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-296" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-293" source="hUmURhrymKCytomf8O3q-315" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="140" as="targetPoint" />
<Array as="points">
@@ -213,7 +213,7 @@
<mxPoint x="140" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-272" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-269" source="hUmURhrymKCytomf8O3q-291" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-272" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-269" source="hUmURhrymKCytomf8O3q-291" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="140" as="targetPoint" />
<Array as="points">
@@ -368,14 +368,12 @@
<mxPoint x="840.0000000000005" y="570.0578688524588" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-359" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;fillColor=#d80073;strokeColor=#A50040;" parent="1" source="hUmURhrymKCytomf8O3q-14" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-359" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;fillColor=#d80073;strokeColor=#A50040;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="280" y="80" as="targetPoint" />
<mxPoint x="280.0256410256411" y="120" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-14" value="AXI4-Lite mux/demux" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;" parent="1" vertex="1">
<mxGeometry x="200" y="120" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-19" value="axis demux" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;" parent="1" vertex="1">
<mxGeometry x="-0.030000000000001137" y="320.03" width="120" height="40.06" as="geometry" />
</mxCell>
@@ -416,12 +414,12 @@
<mxCell id="hUmURhrymKCytomf8O3q-99" value="" style="group;strokeColor=default;fillColor=none;container=0;" parent="hUmURhrymKCytomf8O3q-268" vertex="1" connectable="0">
<mxGeometry width="610" height="400" as="geometry" />
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-268" source="hUmURhrymKCytomf8O3q-13" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-268" source="hUmURhrymKCytomf8O3q-13" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="140" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-268" source="hUmURhrymKCytomf8O3q-16" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="hUmURhrymKCytomf8O3q-268" source="hUmURhrymKCytomf8O3q-16" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="140" as="targetPoint" />
<Array as="points">
@@ -497,34 +495,34 @@
<mxCell id="wy1xcPKCa-p-PBI3JPLa-102" value="REGS" style="rounded=0;whiteSpace=wrap;html=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;container=0;" parent="hUmURhrymKCytomf8O3q-268" vertex="1">
<mxGeometry x="430" y="9.999999999999993" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-16" value="Ring Buffer Manager" style="rounded=0;whiteSpace=wrap;html=1;container=0;" parent="hUmURhrymKCytomf8O3q-268" vertex="1">
<mxCell id="hUmURhrymKCytomf8O3q-16" value="Ring Buffer Client" style="rounded=0;whiteSpace=wrap;html=1;container=0;" parent="hUmURhrymKCytomf8O3q-268" vertex="1">
<mxGeometry x="80" y="310" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-13" value="Ring Buffer Manager" style="rounded=0;whiteSpace=wrap;html=1;container=0;" parent="hUmURhrymKCytomf8O3q-268" vertex="1">
<mxCell id="hUmURhrymKCytomf8O3q-13" value="Ring Buffer Client" style="rounded=0;whiteSpace=wrap;html=1;container=0;" parent="hUmURhrymKCytomf8O3q-268" vertex="1">
<mxGeometry x="80" y="90.07" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-341" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.625;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="1" target="hUmURhrymKCytomf8O3q-14" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-341" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.625;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="230" as="sourcePoint" />
<mxPoint x="330" y="190" as="targetPoint" />
<mxPoint x="300" y="160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-342" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.563;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="1" target="hUmURhrymKCytomf8O3q-14" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-342" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.563;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="290" y="220" as="sourcePoint" />
<mxPoint x="330" y="190" as="targetPoint" />
<mxPoint x="290.0799999999999" y="160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-343" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="1" target="hUmURhrymKCytomf8O3q-14" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-343" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="210" as="sourcePoint" />
<mxPoint x="330" y="190" as="targetPoint" />
<mxPoint x="280" y="160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-344" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.438;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d80073;strokeColor=#A50040;startArrow=classic;startFill=1;" parent="1" target="hUmURhrymKCytomf8O3q-14" edge="1">
<mxCell id="hUmURhrymKCytomf8O3q-344" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.438;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="270" y="200" as="sourcePoint" />
<mxPoint x="270" y="170" as="targetPoint" />
<mxPoint x="270.0799999999999" y="160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hUmURhrymKCytomf8O3q-345" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;endArrow=none;endFill=0;fillColor=#6a00ff;strokeColor=#3700CC;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.625;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="wy1xcPKCa-p-PBI3JPLa-102" target="wy1xcPKCa-p-PBI3JPLa-122" edge="1">
@@ -668,6 +666,20 @@
<mxPoint x="1020" y="520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="DDA_X_hQHvZcJVnLFhaM-10" value="Ring Buffer Manager" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="200" y="120" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="DDA_X_hQHvZcJVnLFhaM-12" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#a0522d;strokeColor=#6D1F00;startArrow=classic;startFill=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="720" as="sourcePoint" />
<mxPoint x="720" y="720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="DDA_X_hQHvZcJVnLFhaM-13" value="ring buffer stream" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="DDA_X_hQHvZcJVnLFhaM-12">
<mxGeometry x="-0.2471" y="-1" relative="1" as="geometry">
<mxPoint x="10" y="-11" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 166 KiB

View File

@@ -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 (

View File

@@ -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