AC620FPGA学习笔记——RTL8201+MAC+ARP

AC620FPGA学习笔记——RTL8201+MAC+ARP

RTL8201+MAC+ARP

工程地址:https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/FPGA/class12_RTL8201_MII_MAC
使用RTL8201 PHY芯片的MII接口方式在FPGA上实现MAC底层驱动,并构建ARP模块向指定IP发送ARP包

整体框架

在这里插入图片描述
这个图是test顶层,左边是一个定时器,定时去发送arp包
在这里插入图片描述
PHY芯片的底层驱动,包括了crc32的检验与ram缓存

Wireshark

在这里插入图片描述

代码部分

逻辑复杂更多详细内容在github

顶层代码

module arp_test(
	clk,
	rst,
	
	ETH_TX_EN,
	ETH_TX_CLK,
	ETH_TX_DATA,
	ETH_RST_N
);

input clk,rst,ETH_TX_CLK;
output [3:0]ETH_TX_DATA;
output ETH_TX_EN,ETH_RST_N;

wire [7:0]SEND_DATA;
wire SENT_BUSY,CLK,RST;
wire busy,SEND_EN;
reg start;
ARP ARP1(
	.mac_addr(48'h12_34_56_78_90_ab),
	.src_ip(32'hc0_a8_00_09),
	.dst_ip(32'hc0_a8_00_03),
	.start(start),
	.busy(busy),
	.clk(clk),
	.rst(rst),
	
	.SEND_DATA(SEND_DATA),
	.SENT_BUSY(SENT_BUSY),
	.SEND_EN(SEND_EN),
	.CLK(CLK),
	.RST(RST)
);



RTL8201_MII_MAC RTL8201_MII_MAC1(
	//ETH_TX_ER,
	.ETH_TX_EN(ETH_TX_EN),
	.ETH_TX_CLK(ETH_TX_CLK),
	.ETH_TX_DATA(ETH_TX_DATA),
	//ETH_MDC,
	//ETH_MDIO,
	
	.ETH_RST_N(ETH_RST_N),
	
	.ETH_RX_DV(),
	.ETH_RX_ER(),
	.ETH_RX_CLK(),
	.ETH_RX_DATA(),
	//ETH_COL,
	.ETH_CRS(),
	
	
	
	.SEND_DATA(SEND_DATA),
	.SENT_BUSY(SENT_BUSY),
	.SEND_EN(SEND_EN),
	.CLK(CLK),
	.RST(RST)
);

reg [31:0]cnt;
always@(posedge clk,negedge rst) begin
if(!rst) begin
	cnt <= 0;
	start <= 0;
end
else if(cnt == 32'd80_000_000) begin
	start <= 1;
	cnt <= 0;
end
else begin
	start <= 0;
	
	cnt <= cnt + 1;
end
end

endmodule

猜你喜欢

转载自blog.csdn.net/weixin_41738734/article/details/84954391