微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 如何对比两个相同目的程序的效率

如何对比两个相同目的程序的效率

时间:10-02 整理:3721RD 点击:
就是我和我同学都针对一个例子写了程序 实现相同的功能。
但是在quartus里面编译以后 生成的.sof和.pof文件是一样大的。
看不出来谁的代码效率高。
请问各位高手 该怎么办?

好冷清啊。

"生成的.sof和.pof文件是一样大的",FPGA最后的烧写文件和FPGA的型号有关系,而和你写的程序没一点关系都没有。只要FPGA型号是一样的,最后生成的文件都是一样大的。
你要比较程序的效率,最好通过仿真,定量的分析。比如耗费多少个时钟周期,综合最快可以跑到多少时钟频率啊。这些作为指标。

1.看综合布线后的log:资源大小、频率
2.仿真看时序参数:输入输出延迟
3.测试看算法性能:输入数据上下限、输出和理论值偏差、异常输入的处理方式、模块强壮性。

LS讲得不错,代码写得如何,是测出来的,通过上板或仿真,还可以通过nlint等工具进行代码检视,看是否符合相关规范。



    我是个菜鸟 请问这些东西哪里能查得出来?谢谢



    程序比较简单 仿真和上板看不出什么区别 。怎么办?

大哥,你为什么一定要比出个高下来呢?大家的程序都能用,都OK,不更好吗?很多东西并不是一定能够比的,如果你想比,那参照下招标吧,列出几个项来,各自打分,然后加起来,你71,他69,就能证明你们之间谁更好吗?



    呵呵 你误解我的意思了。 我的目的是为了对同样为实现同一目的的两种方法(比如滤波等)进行效率的对比,看看哪种更节省资源 效率更高
是为了做分析,而不是要比一个高下。见谅见谅。


那就看你的应用场合了,就拿滤波器来说,从那个公式上去看,有很多打拍的操作,如果你的RAM资源充足,可以用RAM然后读地址不断增加的方式来实现打拍;如果你的寄存器资源很充足,可以直接把输入的数据打N拍,使用d1, d2, d3...这种方法。
如果你的乘法器资源很充足,可以大量使用你的乘法器资源,随便用;如果乘法器紧张,那得考虑下复用的问题。

如果你的数据位宽很大而时序很高造成时序不满足,那做加法运算时得考虑流水线,或者在计算中途就去中间的低位进行四舍五入掉,;或者使用假周期约束等。
所以一切都看你的应用场景,什么资源短缺,那这个的优先级就最高,一切都为了这个转;如果什么都充足,架构简单点,以后要修改参数或复用方便,写代码的和维护代码的都方便省心。



    受教了 一定好好思考你的解答~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top