微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 在FPGA中如何计算CPU执行程序的时间

在FPGA中如何计算CPU执行程序的时间

时间:10-02 整理:3721RD 点击:

花大价买了一个内核(VHDL),烧入FPGA后,内核能正常工作。现在需要计算一下,某个程序从读入内核到执行完毕,并将结果存入存储器,所花费的时间(周期数),不知道哪位高手,有什么好点子,能给点指导?最好具体点。

补充:知道通过仿真可以得到准确的时间,但是要求用硬件来实现测量,也就是自己写个外围电路,来测试程序从读入,到执行,再到存储,所需要的时间。

如果知道从什么时候开始和什么时候结束程序,那么很容易得知运行时间,现在就是无法确定这个起始点和结束点,希望大家帮帮忙,出出点子。

直接拿来RTL仿真。
准确无误。

1。买的时候没问吗。
2。既然有VHDL,跑跑仿真就可以了。

仿真是正解,没错的。
如果非要在FPGA里面做,要做在线调试。
Xilinx的话ChipScope咯,程序读入的时候做一个flag,执行完后再一个flag,抓出来看看中间间隔多少。比仿真麻烦多了

写个timer。
程序开始运行时启动timer,程序结束时停止timer
最后读出这个timer的值
就像跑表一样
我们原来用这种方法测程序的中断响应时间。



    谢谢,您的回答。不过要求是必须用硬件实现测量,也就是自己要设计一个外围电路,来测试程序运行时间。不知道有什么高见?



    谢谢您的回答。不过要求用硬件实现。不知道您有什么高见?



    谢谢您的回答。要求用硬件实现,因为最后结果要通过ARM读出并显示。不知道您有什么高见?



    timer怎么写?能不能具体告知?谢谢!

方针杭纺

一定有方法得知程序开始执行的时间,如果是CPU内部的话,其代码段堆栈执行到程序的时候应该可以在代码上判断出来,除非任意程序,但是应该有规律的。如果能够得到开始点,那么结束点对应于开始点之间的clock周期数就是执行时间了。这样就简单了,难点不在于怎么计算时间,而在于怎么寻找程序的开始点和结束点。我觉得找找CPU对于测试程序执行的规律吧,解决了这个问题就不难了。



这个不难,程序第一行就是对一个指示寄存器进行赋值,定时器发现寄存器被赋值后开始计数
程序最后一行是对该指示寄存器进行清空,定时器发现指示寄存器被清空时则停止计数。
最后用CPU读出定时器的数值就可以得到相应的时间。

顶起!



    没有仔细思考,但是这个方法貌似可行。小编可以参考。

顶起!

一起学习学习

自对准多晶硅化物



    简单实用 很好!

要不再找个timer模块的代码?自己写好像有点难吧。



    这个简单. 当程序开始执行和结束时通过IO口输出给定一个变化的状态就可以测量出你程序实际执行时间了。比如该io上电复位 初值为1,那么在第一条程序处把该IO清0 ,在最后一条程序处再 把该IO置1 即可。那么通过外围设备(ARM或者示波器)抓该IO的低电平波形 即可。

添加一个计数器,并引出一根信号,在程序运行时都是有效的,计数器只有在该信号有效时计数,等到程序结束时把计数值赋给一个寄存器并且计数器清零,而ARM就读取寄存器值就行了,读到的值是程序运行的周期数呀!
这个逻辑应该挺容易做的吧!

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

网站地图

Top