找回密码
 立即注册
查看: 1159|回复: 24

如何设置TFPU时钟源为PLL时钟96MHz / 120MHz | 已在完善演示程序的说明

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-05-02 10:18:47

24

主题

515

回帖

990

积分

荣誉版主

积分
990
发表于 2024-9-13 14:21:27 | 显示全部楼层 |阅读模式
最近写了一个包含浮点运算的函数void calc_ccr2(void),在AI8051U上跑,目标运算时间不大于15US。
通过        P02 = ~P02;
            calc_ccr2();   
            P02 = ~P02;
用逻辑分析仪抓取运算时间。

使用30MHZ的系统时钟:
1,用C251的软件库,耗时61us
2,用论坛里老许的STC32G_MDU32.LIB库函数,耗时53.4us
3,使用AI8051U_32_TFPU_V1.0.LIB硬件库函数,耗时17us。

想着设置TFPU时钟源为96MHZ,烧录时设置频率为24MHZ。代码为:

#define CKMS            0x80
#define PCKI_MSK        0x60
#define PCKI_D1         0x00
#define PCKI_D2         0x20
#define PCKI_D4         0x40
#define PCKI_D8         0x60

void main(void)
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    //选择PLL输出时钟
    CLKSEL &= ~CKMS;                        //默认选择PLL的96M作为PLL的输出时钟
   
#define FOSC            24000000UL


    //选择PLL输入时钟分频,保证输入时钟为12M
    USBCLK &= ~PCKI_MSK;
#if (FOSC == 12000000UL)
    USBCLK |= PCKI_D1;                      //PLL输入时钟1分频
#elif (FOSC == 24000000UL)
    USBCLK |= PCKI_D2;                      //PLL输入时钟2分频
#elif (FOSC == 48000000UL)
    USBCLK |= PCKI_D4;                      //PLL输入时钟4分频
#elif (FOSC == 96000000UL)
    USBCLK |= PCKI_D8;                      //PLL输入时钟8分频
#else
    USBCLK |= PCKI_D1;                      //默认PLL输入时钟1分频
#endif   
   
    //启动PLL
    USBCLK |= 0x80;  //ENCKM;               //使能PLL倍频
    delay();                                //等待PLL锁频
   
    //DMAIR = 0x3e;   //选择 系统时钟 为TFPU时钟源
    DMAIR = 0x3f;   //选择 PLL时钟 为TFPU时钟源
   
    InitGpio();                                //初始化GPIO工作模式
   
    while(1)
    {
        ...
        ...
        ...
    }
}

烧录时设置频率为24MHZ,结果抓取运算时间为37us.

问:该如何设置 系统时钟 为30MHZ, TFPU时钟 为96MHZ ?

点评

结论都是错的,等我们正确的程序发布  发表于 2024-9-14 16:44
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-9-14 17:39:01 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-9-13 15:01:56 | 显示全部楼层
截图202409131458476520.jpg


CPU 跑 36.864MHz
36.864MHz / 4 给 PLL时钟输入 = 9.216MHz
9.216MHz * 12 = 110.592MHz


截图202409131501537428.jpg



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-9-13 15:02:09 | 显示全部楼层
本帖最后由 DebugLab 于 2024-9-13 23:35 编辑

系统时钟24MHz,PCKI 2分频   或   系统时钟48MHz,PCKI 4分频,PLL*8,12MHz*8=96MHz

系统时钟16MHz,PCKI 2分频   或   系统时钟32MHz,PCKI 4分频,PLL*12,8MHz*12=96MHz

截图202409131500551017.jpg





点评

这个方案比较好,可怎么实现?  详情 回复 发表于 2024-9-13 20:52
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-9-13 15:06:57 | 显示全部楼层
截图202409131505314270.jpg



截图202409131506143891.jpg



截图202409131506537679.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-05-02 10:18:47

24

主题

515

回帖

990

积分

荣誉版主

积分
990
发表于 2024-9-13 17:09:28 | 显示全部楼层
我一楼的代码就是按照上面的代码写的,可惜不成功。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-9-13 20:52:35 | 显示全部楼层
Debu*** 发表于 2024-9-13 15:02
系统时钟40MHz,PCKI 4分频,PLL * 12
10MHz * 12 = 120MHz
10MHz *   8 =  96MHz

这个方案比较好,可怎么实现?

点评

[attachimg]56866[/attachimg]  详情 回复 发表于 2024-9-13 23:06
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3190

回帖

4870

积分

论坛元老

积分
4870
发表于 2024-9-13 22:16:14 | 显示全部楼层
Debu*** 发表于 2024-9-13 15:02
系统时钟40MHz,PCKI 4分频,PLL * 12
10MHz * 12 = 120MHz
10MHz *   8 =  96MHz

不是12*8=96吗?

点评

搞错了  发表于 2024-9-13 23:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-9-13 23:06:06 | 显示全部楼层
杨*** 发表于 2024-9-13 20:52
这个方案比较好,可怎么实现?

截图202409132305506234.jpg

点评

谢谢  详情 回复 发表于 2024-9-14 06:42
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-05-02 10:18:47

24

主题

515

回帖

990

积分

荣誉版主

积分
990
发表于 2024-9-14 06:32:57 | 显示全部楼层
经过反复确认,1楼的代码能够实现96Mhz的PLL时钟,。
问题是: 代码的运行时间反而变慢 。......... 好无语呀!

可能 异步时钟切换需要消耗一定时间,而不是无缝快速切换。

将主频改为35Mhz, 取消PLL时钟。TFPU使用系统时钟,抓取的运行时间为14us。

结帖。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-9-14 06:42:13 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 13:23 , Processed in 0.132086 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表