介绍一下我的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 
 
 
 
 
 
 
 
资料供同学学习使用 
 |