uS级【硬件三角函数/浮点运算器,TFPU】@Ai8051U, @120MHz, 计算sin函数@1.2uS
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高速时钟为时钟源
下面是参考范例程序
#include "ai8051u.h"
#include "math.h"
#define FOSC 40000000UL
void PLL_Init();
void delay();
void main()
{
float x, y, z;
int i;
WTST = 0x00;
CKCON = 0x00;
P_SW2 = 0x80;
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0xff; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
PLL_Init();
//DMAIR = 0x3e; //TFPU使用系统时钟作为时钟源
DMAIR = 0x3f; //TFPU使用高速外设时钟作为时钟源
//*** 必须设置此句,TFPU才能使用高速时钟作为时钟源 ***
x = 123.4f;
y = 4.56f;
z = 0.456f;
while (1)
{
for (i = 0; i < 360; i++)
{
z = x * y; //调用浮点乘法库
z = 3.141592654 * 20 / 180;
z = sin(z); //调用三角函数库
}
}
}
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时钟作为高速外设时钟源
}
实际测试数据如下:
Ai8051U,USB 型 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,LQFP48CPU32@42MHz
==================================
AI8051U数据手册下载, AI8052U提前介绍
https://www.stcai.com/cp_ai8051uxl
超级强大的演示程序,从入门到精通
www.stcai.com/syx
现在 51 刷屏是外设直接到外设,视频级刷屏 !
跟CPU核无关了,51只负责控制 !
要算力-后面是 【TFPU+DSP+其他算力加速器】,
不靠 CPU了,MCU的 C是控制,不是计算
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)
AI8051U:
CPU <=42MHz; 建议 40MHz
40MHz/4 = 10MHz; 10MHz*12 = 120MHz
TFPU@120MHz;
PWM@120MHz;
这样快而稳定
MCU的核心性能还有稳定,我们 www.STCAI.com,
内部时钟,内部复位,内部电源,内部抗干扰/抗静电,
都是具有核心领导优势的
主频40MHz,TFPU工作在120MHz是一个很好的时钟方案。
我仔细看了你的程序和文章,看不出你是如何测量的,因此请你介绍下面两个问题:
(1)当你的程序运行起来后,你用什么方法测试证明这时TFPU工作在120MHz了?
(2)你是如何测量出单个浮点乘法和SIN函数的时间的?
学习了!!!!{:5_300:} 回复杨老师:
(1)当你的程序运行起来后,你用什么方法测试证明这时TFPU工作在120MHz了?
是通过反推发求证的。---通过计算PLL频率得到的。
PLL锁频到120MHz输出作为高速PWM的时钟源,再设置高速PWM的参数,产生pwm波,用示波器测量……
(2)你是如何测量出单个浮点乘法和SIN函数的时间的?
是测量P1.0口脉冲宽度得到的。
; SIN function replacement
;-----------------------------------------------------------------------------
?PR?sin?TFPU SEGMENT CODE
PUBLICsin?_ ; sin
RSEG ?PR?sin?TFPU
sin?_:
SETB 0A0H.1
MOV DMAIR,#DMA_FPSIN
CLR0A0H.1
RET
用什么方法测试证明这时TFPU工作在120MHz了
===可以用 TFPU工作在CPU时钟40MHz, 某个I/O对外输出取反
用 PWM测脉冲频率来算,或示波器看
===可以用 TFPU工作在异步PLL时钟-120MHz, 某个I/O对外输出取反
用 PWM测脉冲频率来算,或示波器看
PLL-120MHz是否达到120MHz, 可以让 PWM使用这个120MHz,
对外输出信号,示波器测量,反推PLL-120MHz