本帖最后由 ahhhhh 于 2018-9-4 22:35 编辑
自己做了一个板子,用altera的fpga芯片模拟了mii接口,连接rtl8201(以太网phy芯片),网络接口用的rj45。这样的板子有好几块做了一下几个测试:
1.向电脑发送arp请求,没有问题。
2.发送udp数据包,可以抓取到。
3.将两个板子互连,一个发送,一个接收。按键按下发送一次信息或者定时发送都可以,测试也是成功的。
4.将两个板子互连,通过软件关掉了自动协商功能,将rtl8201置于强制100M全双工的工作状态下,测试是否能保持100M的速率持续发送信息,应该是并联的4位txd[3:0]以25M的速率持续根据程序变化,接收的rxd[3:0]能持续接收到信息。
测试的软件部分很简单,将tx_en一直置1(发送数据有效),主要部分我贴一下:
always@(posedge mii_tx_clk or negedge Rst_n)
begin
if(!Rst_n)
cnt <= 2'd0;
else
cnt <= cnt + 1'b1;
end
always@(posedge mii_tx_clk or negedge Rst_n)
begin
if(!Rst_n)
mii_tx_data <= 4'b0000;
else begin case(cnt)
0: begin mii_tx_data <= 4'b1111; end
1: begin mii_tx_data <= 4'b0000; end
2: begin mii_tx_data <= 4'b0000; end
3: begin mii_tx_data <= 4'b0000; end
endcase
end
end
这种情况下,发送时钟一直是25M,并且mii_tx_data[3],mii_tx_data[2],mii_tx_data[1],mii_tx_data[0]都是一个时钟的1,3个时钟周期的0:
这是tx_clk,25M:
发送应该是正常的,同时网线和硬件也没有问题,因为向电脑发送是可以的。但是接收板上的mii_rx_data[3:0],一直没有信号,而且rx_dv一直是低电平。也就是接收不到数据。
如果mii_rx_data[3:0]可以正确的接受的话,我可以根据自己的需要来定协议在两个板子之间实现定向通信,这样带宽利用率会比较高。
所以不知道问题在哪,难道RTL8201也要有一定的数据格式才能接收到吗?还是什么原因呢,求解答。
|