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