找回密码
 立即注册
查看: 10698|回复: 32

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

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2024-9-14 17:21:19 | 显示全部楼层 |阅读模式
截图202409151108581229.jpg
uS级【硬件三角函数/浮点运算器】@Ai8051U
===TFPU/PWM@120MHz, CPU@40MHz
         计算 sin函数@1.2uS
         SRAM, 34K; Flash, 64k

         管脚兼容 89C52 / 12C5A60S2, LQFP48@RMB2.3
===后续的
Ai8052U,TFPU/PWM@230MHz, CPU/DSP@80MHz

         计算 sin函数@0.7uS         
         SRAM, 144K; Flash, 256k; LQFP100/64/48, QFN100/64
         管脚兼容 8H8K64U / 32G12K128 / 32G8K64
Ai8051U-32系列单片机内部有集成 TFPU三角函数/浮点运算单元)
===TFPU使用高速PLL时钟示例程序及测试结果
为提高MCU工作效率,TFPU可选择系统时钟或PLL高速时钟为时钟源

下面是参考范例程序

  1. #include "ai8051u.h"
  2. #include "math.h"
  3. #define FOSC        40000000UL
  4. void PLL_Init();
  5. void delay();
  6. void main()
  7. {
  8.     float x, y, z;
  9.     int i;
  10.    
  11.     WTST = 0x00;
  12.     CKCON = 0x00;
  13.     P_SW2 = 0x80;
  14.    
  15.     P0M0 = 0x00; P0M1 = 0x00;
  16.     P1M0 = 0x00; P1M1 = 0x00;
  17.     P2M0 = 0xff; P2M1 = 0x00;
  18.     P3M0 = 0x00; P3M1 = 0x00;
  19.     P4M0 = 0x00; P4M1 = 0x00;
  20.     P5M0 = 0x00; P5M1 = 0x00;
  21.     PLL_Init();
  22.    
  23. //  DMAIR = 0x3e;           //TFPU使用系统时钟作为时钟源
  24.     DMAIR = 0x3f;           //TFPU使用高速外设时钟作为时钟源
  25.                             //*** 必须设置此句,TFPU才能使用高速时钟作为时钟源 ***
  26.    
  27.     x = 123.4f;
  28.     y = 4.56f;
  29.     z = 0.456f;
  30.     while (1)
  31.     {
  32.         for (i = 0; i < 360; i++)
  33.         {
  34.             z = x * y;      //调用浮点乘法库
  35.             
  36.             z = 3.141592654 * 20 / 180;
  37.             z = sin(z);     //调用三角函数库
  38.         }
  39.     }
  40. }
  41. void delay()
  42. {
  43.     int i;
  44.     for (i=0; i<100; i++);
  45. }
  46. void PLL_Init()
  47. {
  48. //  CLKSEL &= ~0x80;        //选择PLL的96M(*8)作为PLL的输出时钟
  49.     CLKSEL |= 0x80;         //选择PLL的144M(*12)作为PLL的输出时钟
  50.     USBCLK &= ~0x60;
  51. //  USBCLK |= 0x00;         //PLL输入时钟为12M则选择1分频
  52. //  USBCLK |= 0x20;         //PLL输入时钟为24M则选择2分频
  53.     USBCLK |= 0x40;         //PLL输入时钟为48M则选择4分频
  54. //  USBCLK |= 0x60;         //PLL输入时钟为96M则选择8分频
  55.     USBCLK |= 0x80;         //启动PLL
  56.     delay();                //等待PLL锁频,建议50us以上
  57.         HSCLKDIV = 0;                    //高速外设时钟源不分频
  58.     TFPU_CLKDIV = 0;        //TFPU时钟源不分频
  59. //  CLKSEL &= ~0x40;        //选择系统时钟作为高速外设时钟源
  60.     CLKSEL |= 0x40;         //选择PLL时钟作为高速外设时钟源
  61. }
复制代码
实际测试数据如下:

截图202505010924088844.jpg

Ai8051U的TFPU选择PLL时钟作为时钟源.zip

45.5 KB, 下载次数: 160

TFPU速度测试.xls

15.5 KB, 下载次数: 146

2 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-9-14 17:37:35 | 显示全部楼层
Ai8051UUSB 型 1T 8051,支持32位和8位指令集, RMB2.3
管脚兼容天王级别的:  89C52RC,  12C5A60S2
要兼容 8位8051指令集,  可以用 Keil C51/IAR/SDCC 编译器
===就相当于更强大的 8H8K64U
兼容 32位8051指令集可以用 Keil C251 编译器,双核兼容设计
===就相当于更强大的 32G12K128, 32G8K64
34K SRAM(2K edata, 32K xdata), 64K Flash
TFPU@120MHz, 硬件浮点/硬件三角函数 运算器
DMA支持PWM, DMA支持外设直接到外设, P2P
120MHz-PWM支持硬件移相,16位PWM; 真12位ADC
USB, 4组串口,12位ADC, 轨到轨比较器
QSPI, SPI, I2S, I2C,  TFT-i8080/M6800 接口
PDIP40,LQFP44,LQFP48
CPU32@42MHz


==================================
AI8051U数据手册下载, AI8052U提前介绍

https://www.stcai.com/cp_ai8051uxl

超级强大的演示程序,从入门到精通
截图202409161654384112.jpg
www.stcai.com/syx


现在 51 刷屏是外设直接到外设,视频级刷屏 !
跟CPU核无关了,51只负责控制 !
要算力-后面是 【TFPU+DSP+其他算力加速器】,
不靠 CPU了,MCU的 C是控制,不是计算

回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 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)

回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-12-18 21:26:59 | 显示全部楼层
AI8051U:
CPU <=42MHz; 建议 40MHz
40MHz/4 = 10MHz; 10MHz*12 = 120MHz
TFPU@120MHz;
PWM@120MHz;
这样快而稳定
回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-9-14 17:30:53 | 显示全部楼层
截图202409141730083124.jpg


截图202409141730495692.jpg

MCU的核心性能还有稳定,我们 www.STCAI.com
内部时钟,内部复位,内部电源,内部抗干扰/抗静电,
都是具有核心领导优势的


回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-9-14 17:32:47 | 显示全部楼层
截图202409141732009861.jpg


截图202409141732445591.jpg

回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-9-14 17:33:50 | 显示全部楼层
截图202409141733449459.jpg
回复 支持 反对

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-9-15 10:22:50 | 显示全部楼层
主频40MHz,TFPU工作在120MHz是一个很好的时钟方案。

我仔细看了你的程序和文章,看不出你是如何测量的,因此请你介绍下面两个问题:
(1)当你的程序运行起来后,你用什么方法测试证明这时TFPU工作在120MHz了?
(2)你是如何测量出单个浮点乘法和SIN函数的时间的?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:172
  • 最近打卡:2025-03-18 07:54:03

0

主题

51

回帖

793

积分

高级会员

积分
793
发表于 2024-9-15 11:06:56 | 显示全部楼层
学习了!!!!{:5_300:}
回复

使用道具 举报 送花

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

24

主题

515

回帖

986

积分

荣誉版主

积分
986
发表于 2024-9-15 11:09:40 | 显示全部楼层
回复杨老师:
(1)当你的程序运行起来后,你用什么方法测试证明这时TFPU工作在120MHz了?
  是通过反推发求证的。---通过计算PLL频率得到的。
    PLL锁频到120MHz输出作为高速PWM的时钟源,再设置高速PWM的参数,产生pwm波,用示波器测量……
(2)你是如何测量出单个浮点乘法和SIN函数的时间的?
是测量P1.0口脉冲宽度得到的。

点评

非常好!专家与爱好者的重要差别就是专家会用正确的测量方法来支持自己的结论。 所以发帖不但要介绍结果,最好还要介绍测量的和证明的方法。 所谓授人以鱼不如授人以渔就是此道也  详情 回复 发表于 2024-9-15 11:46
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 反对

使用道具 举报 送花

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

24

主题

515

回帖

986

积分

荣誉版主

积分
986
发表于 2024-9-15 11:12:00 | 显示全部楼层
; SIN function replacement
;-----------------------------------------------------------------------------
?PR?sin?TFPU SEGMENT CODE
  PUBLIC  sin?_    ; sin
  RSEG    ?PR?sin?TFPU
sin?_:
  SETB 0A0H.1
  MOV     DMAIR,#DMA_FPSIN
  CLR  0A0H.1
  RET
回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-9-15 11:12:41 | 显示全部楼层
用什么方法测试证明这时TFPU工作在120MHz了
===可以用 TFPU工作在CPU时钟40MHz, 某个I/O对外输出取反
       用 PWM测脉冲频率来算,或示波器看
===可以用 TFPU工作在异步PLL时钟-120MHz, 某个I/O对外输出取反

       用 PWM测脉冲频率来算,或示波器看


PLL-120MHz是否达到120MHz, 可以让 PWM使用这个120MHz,
对外输出信号,示波器测量,反推PLL-120MHz
截图202409151116332434.jpg

截图202409151117414815.jpg



回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 22:05 , Processed in 0.132984 second(s), 127 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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