另外,为确保以太网数据包CRC校验的真实性,在本题目中使用了Wireshark从网络中随意抓取的一个ARP广播包,如下图:
下面向大家说明本题目进行性能比较时采用的流程:
首先,在进行性能比较时,统一时间标准是必要的。由于PS端进行时间计算采用的是TTC三重定时器,将其工作频率设为系统内部ARM_PLL产生的CPU_1X,约为133MHz。同时将其通过FCLK_CLK0信号输出到PL端用作CRC校验模块的工作时钟,能够确保PS端与PL端的计时标准一致性,如下图:
另外,为体现CRC循环冗余校验中的“循环”特点,本人将ARP数据包的完整校验过程分步呈现了出来。使用了开发板上唯一的GPIO按键进行过程控制,每次按键产生一次中断,执行一次中断比较程序。每次中断比较程序进行对比的数据包都会比上一次多一组(32bit),直到完整的ARP数据包完成CRC校验,则继续重复初始的校验过程。
按键中断程序中,首先进行PS端的CRC校验和计时,之后将数据包通过GP总线传送到PL端,PL端接收到完整数据包后进行自动校验和计时,完成后将结果返回PS端,流程如下:Reset Timer—>Start Timer—>Start CRC Calculate Function—>StopTimer—>Get Counter Value—>Output PS Result—>.Packet Transmit—>StartPL CRC FSM—>Read Back Result—> Output PL Result—>Reset Control Reg—>Return.
按键中断比较程序输出内容如下:
Ø每次按键触发后,首先输出提示:
“**********CRC Calculate Begin!**************”
Ø随后输出本次PS与PL进行CRC校验的数据:
“---------Packet is :-----------”
“数据包内容”(32bit为一组)
“---------------------------------”
Ø首先输出PS端CRC校验结果以及计算时间:
“PS_CRC = 0x......; PS_CRC_TIME = ……”
Ø之后输出PL端CRC校验结果以及计算时间:
“PL_CRC = 0x......; PL_CRC_TIME = ……”
连续按下按键,则超级终端返回内容如下:
以上就是本题目的CRC算法比较流程以及PS端的实现方案,接下来介绍PL端的实现方法。 |