我用CLOCK()函数去测试FFT时间,但是测试的结果不对。
CLOCK() 是要使能吗? 那在我的代码里面我需要怎么做呢?
CLOCK()函数返回的是DSP运行的时钟周期数吗?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用CLOCK()函数去测试FFT时间,但是测试的结果不对。
CLOCK() 是要使能吗? 那在我的代码里面我需要怎么做呢?
CLOCK()函数返回的是DSP运行的时钟周期数吗?
yang cao1:
Clock 不是BIOS中的,没有关系。使用CCS 的CLOCK工具:在Debug界面下Run菜单下,Clock->Enable,这样在CCS下标栏左侧会出现一个“手表”的圆,双击它可以对数值清0,同时还可以设定Clock数值代表的意义:时钟周期等。根据我的经验,有时候clock数值具有欺骗性,还跟PC机CPU性能等有关,毕竟他是通过JTAG对DSP仿真通信,并不能保证计算时间的准确性。
因此我建议使用TSCL寄存器来精确计数,这里的单位是时钟周期。你可以在你需要计数的程序代码前初始化TSCL,结束后再记录一个TSCL值,通过相减就可得出运行时间。这样你就可以通过直接printf输出到console或者使用fprintf打印到文本文件中,直观方便。简例如下:
TSCL=0;//先初始化为零,避免数值过大计算费事。
unsigned int a=TSCL;
//你的测试代码
unsigned int b=TSCL;
unsigned int time= b-a;
printf("The running time=%f second.\n ",(float)time/(1000000000));