(注:此文为经典重发,之前在EETOP公众号已推送过,看过的可以略过)
(该文包含了比较多的代码,建议点击阅读原文前往论坛查看原帖)
目前TCP协议年夜多由cpu跑代码实现, 这次用FPGA的纯逻辑实现 , System Verilog编写,下面给年夜家粗略讲一下我的实现体例,下面是工程的示意图.
千兆以太网 TCP,UDP协议,FPGA实现-1.jpg (31.7 KB, 下载次数: 0)
2018-8-26 20:20 上传
这个工程由几部分组成, 外部使用了88e1111千兆以太网phy。FPGA内部有几个年夜的模块,
顶层模块:
//
tcpip_hw
Description
top module
Author(s):
- bin qiu, [email protected] or [email protected]
Copyright (C) 2015
//
`include "tcpip_hw_defines.sv"
module tcpip_hw(
input clk,
input rst_n,
output mdc,
inout mdio,
output phy_rst_n,
output is_link_up,
input [7:0] rx_data,
output logic [7:0] tx_data,
input rx_clk,
input rx_data_valid,
output logic gtx_clk,
input tx_clk,
output logic tx_en,
//user interface
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
);
。。。。
(由于微信字数限制,此处省去200多行代码,可以点击阅读原文查看)
1. 与外部phy芯片通信的模块,simple_mac模块。
主要功能是通过mdio配置phy, 给发送帧打包(加入preamble,padding和crc32),和接收帧解包。 下面是顶层代码:
//
simple_mac_top
Description
top module of simp