首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM的CRC算法和基于FPGA的算法性能比较(2)

基于ARM的CRC算法和基于FPGA的算法性能比较(2)

另外,为确保以太网数据包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!**************”


Ø随后输出本次PSPL进行CRC校验的数据:


“---------Packet is :-----------”


数据包内容32bit为一组)


“---------------------------------”


Ø首先输出PSCRC校验结果以及计算时间:


“PS_CRC = 0x......;   PS_CRC_TIME = ……”


Ø之后输出PLCRC校验结果以及计算时间:


“PL_CRC = 0x......;   PL_CRC_TIME = ……”


连续按下按键,则超级终端返回内容如下:










以上就是本题目的CRC算法比较流程以及PS端的实现方案,接下来介绍PL端的实现方法。

继承事业,薪火相传
返回列表