神农鼎
发表于 2024-9-14 16:05:40
已安排在写如下演示程序:
AI8051U@40MHz
TFPU@120MHz
的应用案例
异步时钟间的数据传输用的是CPU时钟,40MHz
CPU送数据到TFPU,要2个CPU时钟
TFPU送回数据到CPU, 2个CPU时钟
无他
一般是 < 1uS, 长的也就 < 3个uS
神农鼎
发表于 2024-9-14 17:39:01
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=10791
社区闲人
发表于 2024-9-15 11:21:41
新的测试结果:
不使用PLL时钟,选择 系统时钟 为TFPU时钟源,
烧录时设置频率为40MHZ。 耗时12.7us。
void delay()
{
int i;
for (i=0; i<100; i++);
}
void PLL_Init()
{
//CLKSEL &= ~0x80; //选择PLL的96M(*8)作为PLL的输出时钟
CLKSEL |= 0x80; //选择PLL的144M(*12)作为PLL的输出时钟
USBCLK &= ~0x60;
//USBCLK |= 0x00; //PLL输入时钟为12M则选择1分频
//USBCLK |= 0x20; //PLL输入时钟为24M则选择2分频
USBCLK |= 0x40; //PLL输入时钟为48M则选择4分频
//USBCLK |= 0x60; //PLL输入时钟为96M则选择8分频
USBCLK |= 0x80; //启动PLL
delay(); //等待PLL锁频,建议50us以上
HSCLKDIV = 0; //高速外设时钟源不分频
TFPU_CLKDIV = 0; //TFPU时钟源不分频
//CLKSEL &= ~0x40; //选择系统时钟作为高速外设时钟源
CLKSEL |= 0x40; //选择PLL时钟作为高速外设时钟源
}
使用上面的代码,选择 PLL时钟 为TFPU时钟源
烧录时设置频率为40MHZ。TFPU时钟源--->120MHZ, 耗时9.08us。
使用上面的代码,
烧录时设置频率为30MHZ。TFPU时钟源--->90MHZ, 耗时12.08us。
社区闲人
发表于 2024-9-15 11:24:02
测试用的代码如下
神农鼎
发表于 2024-9-15 12:02:52
怀疑你的程序
跑的是 Keil的软件浮点库
没有跑我们的硬件浮点库
深圳国芯人工智能有限公司-库函数 (stcai.com)
杨为民
发表于 2024-9-15 12:04:33
社区闲人 发表于 2024-9-15 11:24
测试用的代码如下
这段代码中有许多非浮点数运算和非32位整数运算以及变量的存取操作,可以作为综合运算速度指标,所以只是提高MDU32和TFPU的工作频率的效果不显著,需要像MDU32C一样全面采用DPU提高各种运算的速度,才能使得单片机的综合运算速度指标得到大幅度地提高
神农鼎
发表于 2024-9-15 12:05:39
你用我们完整的项目测试下
uS级【硬件三角函数/浮点运算器,TFPU】@Ai8051U, @120MHz - AI8051U体系结构,高峰论坛,芯起点,芯高度 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)
神农鼎
发表于 2024-9-15 12:11:35
神农鼎
发表于 2024-9-15 12:16:30
怀疑你的程序
跑的是 Keil的软件浮点库
没有跑我们的硬件浮点库
没其他理由了,
我们不会设计个快的,然后又设计个慢的放里面
===搞2套 TFPU, 那要增加成本
只可能是你犯错了
神农鼎
发表于 2024-9-15 12:19:51
40MHz
你跑 KEIL 软件浮点12.7uS = 12700nS
40MHz
你跑 AI8051U 的硬件浮点@40MHz, 600nS,快了 21倍,正常
你跑 AI8051U 的硬件浮点@120MHz,350nS,快了 36倍,
===为何不是40倍以上这个要查,放假了,节后查