查看: 1129|回复: 0
打印 上一主题 下一主题

FPGA TCP/UDP千兆以太网高速传输方案, 开源UDP版工程

[复制链接]
跳转到指定楼层
沙发
发表于 2016-3-23 14:01:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
介绍一下我的FPGA TCP传输方案。
我的方案虽然是支持1000M以太网的,但是由于只是实现了部分TCP协议(包括Listen功能, 重传功能,窗口管理等), 没有实现慢启动,拥塞避免算法,所以速度只能达到300多兆, 不过对于一般的需求应该是足够了,比如工业摄像头图像传输,AD采集上传等。
为达到近1000M, 目前正在改进。
UDP版的速度能接近线速,但是有几率丢包。
TCP/UDP协议是全部用SystemVerilog写的,不带cpu,包括独立的MAC模块。TCP版已经在altera和xilinx的开发板上经过几天的满载传输拷机测试。 支持外部phy的配置,支持GMII和RGMII模式。
另外支持arp,icmp协议。
下面是接口,可以看出是fifo接口:

        input clk50,
        input rst_n,
        
///////////////////////
//interface to user module
    input [7:0] wr_data,  
    input wr_clk,  
    input wr_en,  
    output wr_full,  
  
    output [7:0] rd_data,  
    input rd_clk,  
    input rd_en,  
    output rd_empty,

        input [31:0] local_ipaddr,            //FPGA ip address
        input [31:0] remote_ipaddr,     //PC ip address
        input [15:0] local_port,         //FPGA port number

//interface to ethernet phy
        output mdc,
        inout  mdio,
        output phy_rst_n,
        output is_link_up,

`ifdef RGMII_IF
        input [3:0] rx_data,
        output logic [3:0] tx_data,
`else
        input [7:0] rx_data,
        output logic [7:0] tx_data,
`endif

        input rx_clk,
        input rx_data_valid,
        input gtx_clk,
        output logic tx_en

使用介绍:
http://www.amobbs.com/forum.php?mod=attachment&aid=MzEyMDMwfDIwNTc5MzFmOWU2ZDJlMTQ2ZDQ0ZGQzYjUwZDE0NzIyfDE0NTg3MTI3MzU%3D&request=yes&_f=.pdf








资料供同学学习使用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表