1、设计了一块板卡,板载两片FPGA,FPGA之间分别通过几种不同的数据通信方式进行数据互传,系统测试架构如下:
1.1、FPGA#1通过pcie总线连接linux系统主机#1,FPGA#2通过pcie总线连接Windows系统主机#2;
1.2、linux系统主机#1不间断地发送数据给FPGA1,送到FPGA2的RAM,Windows系统主机#2读取FPGA2中ram中的数据。
1.3、进行连续24小时不间断测试,保证数据传输的正确性。
2、双FPGA之间通过以下方式进行数据通信:
2.1、通过并行数据线传输;
2.2、通过lvds串行数据传输;
2.3、采用aurora8B/10B协议通过GTP高速串行总线传输;
2.4、采用SRIO [Rapid IO]方式;
3、记录数据传输的效率,看看最快能达到bps
3.1、比较测试每一种传输方式单次最大的数据传输量;【主机通过PCIE单次能发送的最大数据包大小】
3.2、计算linux主机发送数据到FPGA#1接收需要的时间;
3.3、计算不同的传输方式,单次数据传输从FPGA#1开始发送到FPGA#2接收完成需要的时间;
3.4、计算windows主机开始读数据直到数据读完需要的时间;
4、时间统计:现在以2K数据包读写做测试:
4.2、计算PC开始写数据到写入FPGA写完,这段的时间间隔T1
pos_pc_wr_complete,用PC写完成信号触发,随机截图1,2, 3,4:发现大部分在10000-16000之间,偶尔20000+,30000+的也会出现,每个时钟周期是8纳秒,那么这个写周期时间大概是80000纳秒--240000纳秒左右,也就是说PC从开始写数据到写完成的时间大概是80us-240us;
4.3、从pc写ram写完到FPGA开始传数据到对方FPGA这一段时间T2,可以忽略不计,是立即开始的,下图:
4.4、测试FGGA1开始将数据传输到FPGA2 中完成的时间:【这里计算方法有误,这个时间应该是固定的,下次重新补图】
4.5、从FPGA发出中断告诉CPU可以读数据了,到CPU读完数据的时间。