神农鼎 发表于 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倍以上这个要查,放假了,节后查


页: 1 [2] 3
查看完整版本: 如何设置TFPU时钟源为PLL时钟96MHz / 120MHz | 已在完善演示程序的说明