【发布时间】:2019-07-08 13:46:04
【问题描述】:
我正在为 Digilent Nexys4 板 (Artix7 FPGA) 开发以太网驱动程序。我已经编写了一个 VHDL 组件来与 MDIO 协议中的 LAN8720A PHY 进行通信。它运作良好,当我发送一个要求写入寄存器的帧时,我可以读取我写入的值。但是当我要求读取基本状态寄存器时,它会返回链接断开状态。
这意味着以太网链路已断开,我无法发送以太网帧。我完全不知道为什么我有链接断开状态。即使我启用了自动协商,在自动协商结束后,当我尝试发送帧时,我也会出现链接断开状态。
有没有人知道为什么会发生这种情况以及我该如何解决这个问题?
谢谢。
编辑:似乎是因为 LAN8720A 的 DATA_VALID 信号。有谁知道如何将信号设置为“1”?
EDIT2:为了更精确,DATA_VALID 是 LAN8720A 的内部信号。用于上拉或下拉状态寄存器的链接状态位。
【问题讨论】:
-
另一边是什么?它不会与 PC 等已知工作设备建立链接吗?
-
另一边是PC。当 PHY 进行自动协商时,我可以用 PC ping 板子,但板子没有任何结果。
-
连接PC时,状态寄存器的值是多少?根据reference.digilentinc.com/_media/nexys:nexys4:nexys4_rm.pdf 的第 4 章,您确定时钟是正确的吗?
-
连接到 PC 时,状态寄存器的值为 782Dh。链路状态位已启动。我多次验证了我的时钟,我发现它没有问题。我会再次验证。感谢您的 cmets。
-
0x782D 表示自动协商已完成(第 5 位)并且链接已启动(第 2 位)。当数据包从 PC 传入时,您应该会看到 CRS_DV 变高。