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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章