找回密码
 立即注册
楼主: zhp

uS级【硬件三角函数/浮点运算器,TFPU】@Ai8051U, @120MHz, 计算sin函数@1.2uS

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-9-15 11:24:22 | 显示全部楼层
AI8051U@40MHz
TFPU@120MHz-异步PLL高速时钟
的应用案例
异步时钟间的数据传输用的是CPU时钟,40MHz
CPU送数据到TFPU, 我印象要2个CPU时钟
TFPU送回数据到CPU,我印象2个CPU时钟

虽然浪费了 4个 CPU时钟,
TFPU@120MHz, Ai8051U的CPU@40MHz

===已量产
TFPU@250MHz, Ai8052U的CPU/DSP@80MHz

===2024年底送样

TFPU@500MHz, Ai32G400K1M的CPU/DSP@120MHz
===2025年底送样

TFPU数学加速器中的
正弦/余弦 计算尤其需要 高速异步时钟的支持
截图202409151132216400.jpg

回复 支持 反对

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-9-15 11:46:47 | 显示全部楼层
社区*** 发表于 2024-9-15 11:09
回复杨老师:
(1)当你的程序运行起来后,你用什么方法测试证明这时TFPU工作在120MHz了?
  是通过反推发 ...

非常好!专家与爱好者的重要差别就是专家会用正确的测量方法来支持自己的结论。
所以发帖不但要介绍结果,最好还要介绍测量的和证明的方法。
所谓授人以鱼不如授人以渔就是此道也





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-9-15 12:07:30 | 显示全部楼层
截图202409151207278358.jpg


截图202409151208335389.jpg


截图202409151209179989.jpg

截图202409151209445142.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-01 04:31:49

24

主题

515

回帖

986

积分

荣誉版主

积分
986
发表于 2024-9-15 20:18:53 | 显示全部楼层
测量PLL时钟的代码:



#include "ai8051u.H"  //包含此头文件后,不需要再包含"reg51.h"头文件
//#include "intrins.h"

#define FOSC 30000000UL



       
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时钟作为高速外设时钟源
}




char ReadPWMA(char addr)
{
        char dat;
        while (HSPWMA_ADR & 0x80); //等待前一个异步读写完成
        HSPWMA_ADR = addr | 0x80; //设置间接访问地址,只需要设置原 XFR 地址的低 7 位
        //HSPWMA_ADDR 寄存器的最高位写 1,表示读数据
        while (HSPWMA_ADR & 0x80); //等待当前异步读取完成
        dat = HSPWMA_DAT; //读取异步数据
        return dat;
}
void WritePWMA(char addr, char dat)
{
        while (HSPWMA_ADR & 0x80); //等待前一个异步读写完成
        HSPWMA_DAT = dat; //准备需要写入的数据
        HSPWMA_ADR = addr & 0x7f; //设置间接访问地址,只需要设置原 XFR 地址的低 7 位
        //HSPWMA_ADDR 寄存器的最高位写 0,表示写数据
}

int main()
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度
       
    P0M0 = 0; P0M1 = 0;
    P1M0 = 0; P1M1 = 0;
    P2M0 = 0; P2M1 = 0;
    P3M0 = 0; P3M1 = 0;
    P4M0 = 0; P4M1 = 0;
    P5M0 = 0; P5M1 = 0;
       
    PLL_Init();

    //DMAIR = 0x3e;   //选择 系统时钟 为TFPU时钟源
    //DMAIR = 0x3f;   //选择 PLL时钟 为TFPU时钟源
       
       
        HSCLKDIV = 0; //HSPWM/HSSPI 时钟源不分频
        HSPWMA_CFG = 0x03; //使能 PWMA 相关寄存器异步访问功能
        PWMA_PS = 0x00; //PWMA_CC1/CC1N 高速 PWM 输出到 CC1/CC1N 口
                        //注意:PWMA_PS 不能使用异步方式进行读写
       
        //通过异步方式设置 PWMA 的相关寄存器
        WritePWMA((char)&PWMA_CCER1, 0x00);
        WritePWMA((char)&PWMA_CCMR1, 0x00); //CC1 为输出模式
        WritePWMA((char)&PWMA_CCMR1, 0x60); //OC1REF 输出 PWM1(CNT<CCR 时输出有效电平 1)
        WritePWMA((char)&PWMA_CCER1, 0x05); //使能 CC1/CC1N 上的输出功能
        WritePWMA((char)&PWMA_ENO, 0x03); //使能 PWM 信号输出到端口 P1.0/P1.1
        WritePWMA((char)&PWMA_BKR, 0x80); //使能主输出
        WritePWMA((char)&PWMA_CCR1H, 500>>8); //设置 PWM 占空比为 500 个 PWM 时钟
        WritePWMA((char)&PWMA_CCR1L, 500);
        WritePWMA((char)&PWMA_ARRH, 999>>8); //设置输出 PWM 的周期为 1000 个 PWM 时钟
        WritePWMA((char)&PWMA_ARRL, 999);
        WritePWMA((char)&PWMA_DTR, 10); //设置互补对称输出 PWM 的死区
        WritePWMA((char)&PWMA_CR1, 0x01); //开始 PWM 计数

        while (1);
}



烧录时设置频率为30MHZ。

有: (30MHZ / 4 ) * 12----> PLL时钟--->90MHZ,

用逻辑分析仪抓取P10/P11端口,输出的PWM波形的周期值为11.08us。

计算值为:
(1 / 90MHZ) * 1000 === 11.1us

计算值 和 测量值 基本一致。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-9-18 16:34:12 | 显示全部楼层
AI8051U空间代码效率, 在32位模式时是268条强大的指令,
空间代码效率比111条指令的51高,
相当于 8H8K64U的 1.15倍,64K * 1.15 = 73.6K 的51程序;

AI8052U256K Flash, 144K SRAM
===DSP, TFPU, LQFP100/64...

AI8058U如果做 1M字节的Flash ?
大家考虑下能干啥,字库 图片
===SRAM做多大 ? 300K/400K/500K ?

AI8051U, AI8052U 参考资料下载
深圳国芯人工智能有限公司-产品_AI8051U系列 (stcai.com)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:265
  • 最近打卡:2025-05-01 07:25:06

0

主题

206

回帖

1522

积分

金牌会员

积分
1522
发表于 2024-9-25 12:10:07 | 显示全部楼层
好知识,善传播
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:63
  • 最近打卡:2025-04-30 17:57:40

0

主题

11

回帖

312

积分

中级会员

积分
312
发表于 2024-9-29 18:45:09 | 显示全部楼层
学习了!!!!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:397
  • 最近打卡:2025-05-01 00:27:10

0

主题

15

回帖

311

积分

中级会员

积分
311
发表于 2024-10-3 23:15:56 | 显示全部楼层
stc81k08可以计算1/3=0.3333333吗;定义float不行,只能小数点后6位准的,定义double和float结果一样的,u32这样的大整数也不能计算,有老师知道的吗
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:386
  • 最近打卡:2025-04-30 22:13:28
已绑定手机

8

主题

137

回帖

1045

积分

金牌会员

积分
1045
发表于 2024-10-11 00:34:49 | 显示全部楼层
哇,那什么时候把乘加也做了,做卷积啊。要不出个硬件卷积单元啊,或者硬件FFT单元
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-10-13 13:10:22 | 显示全部楼层
Ai8052U 有 DSP 功能


USB 2.0,Full-Speed,16个双向端点,支持4种端点传输模式
2组 CAN-FD !!!  3组 Lin
DSP, 32位8051,浮点,三角函数,DMA-P2P 支持外设直接到外设
144K SRAM, 256K Flash,支持 32位8051指令/8位8051指令
AI8052U-144K256-LQFP100, LQFP64, LQFP48/44
===管脚 兼容 32G12K128, 8H8K64U
TFPU@250MHz,硬件三角函数/浮点;PWM
@250MHz; DSP@80MHz

6组高级16位PWM定时器, 24-通道
    3 组 4 对互补PWM(PWMA/PWMC/PWME),方便控制 3组3相电机
    3 组 4 个单独PWM(PWMB/PWMD/PWMF)
2组独立 真12位ADC, 2组独立 12位DAC,
4组独立运放, 4组独立比较器
T0/T1/T2/T3/T4/T5/T6, T7/T8/T9/T10,
RTC-年月日星期时分秒时钟,T11系统定时器
串口1/串口2/串口3/串口4/串口5/串口6
/串口7/串口8
===都可以共享T2做波特率发生器
备战 2025年 全国大学生智能汽车竞赛, 全国大学生电子设计竞赛
大家先看下管脚图合不合理,12月流片,春节回来,新年送样
帮设计强大的 AI8052U-144K256-LQFP100 实验箱
=== 辛苦费,RMB2000
DSP, AI8052U-支持32位/8位8051指令,144K SRAM, LQFP100/64/48, PWM+TFPU@250MHz - 视频教学,《单片机原理及应用》教学改革及实战技术交流会,本版限制发帖 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:50 , Processed in 0.135437 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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