图4 CRC并行算法仿真结果
2.4 使用Nios II的自定义指令提高系统性能
CRC校验算法需要大量的逻辑运算,如果用软件实现要占很多个时钟周期,系统的效率降低,而用硬件完成则仅需几个时钟周期。
定制指令逻辑和Nios II的连接在 SOPC Builder 中完成。Nios II CPU配置向导提供了一个可添加256条定制指令的图形用户界面,在该界面中导入设计文件,设置定制指令名,并分配定制指令所需的CPU时钟周期数目。系统生成时,Nios II IDE为每条用户指令产生一个在系统头文件中定义的宏,可以在C(或C++)应用程序代码中直接调用这个宏。表1为 Nios II软件实现CRC算法和自定义指令实现性能对比。
表1 Nios II软件实现CRC算法和自定义指令实现性能对比
可见,对于2字节数据,自定义指令的运算速度是软件法的2~10倍,且使用的资源大大降低。表1中的自定义指令是对16位数据而言的。我们所采用的帧结构,数据段有2字节,控制段1字节,地址段1字节,因此CRC计算时采用32位。从仿真图4中可以看到,从输入数据到计算完成用了7~8ns,而工作频率50MHz的Nios II系统一个时钟周期为20ns。这样,完全可以在一个周期内完成计算,加上装载及返回时所需的额外周期,根据表1的数据进行近似的线性分析,可知最终一次CRC校验需要16~20个周期,比软件法提高了4~40倍,大大提高了系统处理的速度。
3 结语
CRC校验由于检错能力强,被广泛应用在各种数据校验中。本文研究了CRC并行算法,并且通过增加自定义指令的方法,把用软件处理耗时多的CRC校验算法在Nios II系统中用硬件逻辑电路来实现,极大提高了系统的效率。实验结果也表明了该方法的优势。
本文作者创新点:
1、技术手段的创新:使用新型的SOPC技术实现了自定义指令,大大提高了系统的效率。
2、CRC算法的创新:采用CRC并行计算法来实现适用于各种数据宽度的CRC 校验。
本文关键字:暂无联系方式DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术