
前段时间设计了一块STM32F429ZGT6+DP83848+FPGA+AD的板卡,功能都调通了,但发现网络速度较慢,无法实际应用。FPGA控制多路A/D芯片连续采集外部模拟信号,并缓存在FPGA内部的RAM中,积攒到一定量的采样点后通知ARM读到ARM内部的SRAM,然后使用UDP方式立即通过MAC发送出去,初步评估连续传输的有效数据的流量大约只有1.28MBit(纯A/D有效数据,不算网络开销的数据);用示波器检测一些时间状态:在有效数据包长1442字节的情况下,FPGA间隔大约9ms通知依次ARM读取数据,ARM从FPGA读取数据的时间大约42us,然后执行UdpClientSend(pUdpPcb, (char *)adata[0], 1442)子程序大约用时不到40us;监视ARM传输到DP83848(txen高电平)时间约120us,之后ARM等待下一次数据读取和传送;监视ARM与DP83848的TXCLK是25MHz,说明网络工作于100MHz。板卡的网口直接和电脑的网口相连,在电脑上运行UDP接收程序并将有效数据保存在电脑硬盘中,时候分析存储的数据,在前述速度下基本不丢包(数据包中有包计数标志),但适当提高点A/D速度,就能明显发现出现丢包现象,请教各位大拿,上述过程影响速率的主要因素会是什么,有什么好的办法可以进一步提高速度呢? |