• 已绑定课时
  • 工程师可点评

实验报告 · 本节笔记 课程:中级 | FPGA工程师实战精进课程(送板卡+证书) · 第一部分 进阶接口设计篇 发布自课程云笔记 · FPGA 实验证据骨架 【本节要点】 如要使用自行添加按键消抖模块、CRC32校验模块 1、ARP与RGMII交互顶层连线 2、ARP控制模块 【疑问/坑点】 观察输出查看时序、解决时序不同步的问题 使用工具排查数据来源是否本身有问题、开发板的phy芯片是否有问题…

旭晨
5 0

实验报告 · 本节笔记

课程:中级 | FPGA工程师实战精进课程(送板卡+证书) · 第一部分 进阶接口设计篇

发布自课程云笔记 · FPGA 实验证据骨架

如要使用自行添加按键消抖模块、CRC32校验模块

1、ARP与RGMII交互顶层连线

2、ARP控制模块

观察输出查看时序、解决时序不同步的问题

使用工具排查数据来源是否本身有问题、开发板的phy芯片是否有问题

TOP

`timescale 1ns / 1ps

module TOP(
input   wire            key     ,
input   wire            rst_n   ,
input   wire            ETH_RXC ,//PHY芯片
input   wire            ETH_RXV ,//PHY芯片
input   wire    [3:0]   ETH_RXD ,//PHY芯片
output  wire            ETH_TXC ,//PHY芯片
output  wire            ETH_TXV ,//PHY芯片
output  wire    [3:0]   ETH_TXD ,//PHY芯片
output  wire            ETH_rst  //PHY芯片
);
assign ETH_rst = rst_n  ;
//key
wire    key_out ;
//arp_ctrl
wire    arp_tx_en ;
wire    arp_tx_op ;
//RGMII
wire            MAC_TXC     ;
wire            MAC_RXC     ;
wire            MAC_RXV     ;
wire    [7:0]   MAC_RXD     ;
//ARP
wire    [7:0]   arp_txd     ;
wire            arp_txv     ;
wire    [47:0]  pc_mac      ;
wire    [31:0]  pc_ip       ;
wire            arp_rx_op   ;
wire            arp_rx_done ;

key key_u(
.   clk         (MAC_TXC),//i
.   rst_n       (rst_n  ),//i
.   key         (key    ),//i
.   key_out     (key_out)
);

ARP_CTRL ARP_CTRL_u(
.   clk         (MAC_TXC    ),//i
.   rst_n       (rst_n      ),//i
.   key_out     (key_out    ),//i
.   arp_rx_op   (arp_rx_op  ),//i
.   arp_rx_done (arp_rx_done),//i
.   arp_tx_en   (arp_tx_en  ),//0
.   arp_tx_op   (arp_tx_op  ) //0
);

ARP ARP_u(
.   rst_n       (rst_n      ),//i
.   arp_txc     (MAC_TXC    ),//i
.   arp_txd     (arp_txd    ),//o
.   arp_txv     (arp_txv    ),//o
.   arp_rxc     (MAC_RXC    ),//i
.   arp_rxv     (MAC_RXV    ),//i
.   arp_rxd     (MAC_RXD    ),//i
.   arp_tx_en   (arp_tx_en  ),//i
.   arp_tx_op   (arp_tx_op  ),//i
.   pc_mac      (pc_mac     ),//o
.   pc_ip       (pc_ip      ),//o
.   arp_rx_op   (arp_rx_op  ),//o
.   arp_rx_done (arp_rx_done)//o
);

RGMII RGMII_u(
.   ETH_RXC (ETH_RXC),//网卡芯片 I
.   ETH_RXV (ETH_RXV),//网卡芯片 I
.   ETH_RXD (ETH_RXD),//网卡芯片 I
.   ETH_TXC (ETH_TXC),//网卡芯片 O
.   ETH_TXV (ETH_TXV),//网卡芯片 O
.   ETH_TXD (ETH_TXD),//网卡芯片 O
.   MAC_TXC (MAC_TXC),//O 代码
.   MAC_TXV (arp_txv),//I 代码
.   MAC_TXD (arp_txd),//I 代码
.   MAC_RXC (MAC_RXC),//O 代码
.   MAC_RXV (MAC_RXV),//O 代码
.   MAC_RXD (MAC_RXD) //O 代码
);

endmodule
`timescale 1ns / 1ps

module ARP_CTRL(
input   wire    clk         ,
input   wire    rst_n       ,
input   wire    key_out     ,
input   wire    arp_rx_op   ,
input   wire    arp_rx_done ,

output  reg     arp_tx_en   ,
output  reg     arp_tx_op
);

always @(posedge clk)
begin
if(!rst_n)
begin
arp_tx_en <= 0;
arp_tx_op <= 0;
end
else if(key_out)
begin
arp_tx_en <= 1;
arp_tx_op <= 1;
end
else if(arp_rx_done && arp_rx_op == 1)
begin//接收请求包,发送应答包
arp_tx_en <= 1;
arp_tx_op <= 0;
end
else if(arp_rx_done && arp_rx_op == 0)
begin//接收应答包,不发送
arp_tx_en <= 0;
arp_tx_op <= 0;
end
else
begin
arp_tx_en <= 0;
arp_tx_op <= arp_rx_op;
end
end

endmodule

本节要验证什么?预期现象是什么?

用工具栏插入波形图、仿真界面或示波器照片

粘贴关键仿真输出或报错原文

板卡现象、按键/数码管/接口实测结果

结论、坑点与下一步修改

学习上下文

产出状态

工程师已阅5 位工程师