杨为民 发表于 2024-8-2 05:09:34

Ai8051U单片机,从入门到精通(1):继往开来的新一代51单片机

一、简介Ai8051U-34K64(以下简称Ai8051U或Ai8U)是最新推出的一款单片机。AI8051U不仅具有丰富的片上设备,还采用了许多新技术,虽然每个技术可能不起眼,但是组合在一起就产生了质的飞跃,笔者认为这是一款继往开来的新一代 AISTC 单片机。二、继承性(1)Ai8051U最大的特色它的继承性。它完整地继承了最早期的89系列单片机的特点,首先是它的PDIP-40封装款外部特点与89系列的管脚完全兼容,也支持同样5V的电气标准。其次是内部片上设备也包含89系列同样P0-P3端口、两个定时器和1个连接在P30/P31的串口。最后要特别指出的是Ai8051U单片机的8BIT模式,直接使用8051指令集的二进制机器码,这样许多传统的基于8051的程序甚至是已经编译好的HEX二进制文件,可以直接使用和直接烧录进Ai8051U单片机运行。(2)笔者认为这种继承性极大地保护了用户的软硬件资源,支持了用户已经掌握的8051单片机知识,尊重了用户已有的8051单片机项目开发经验和编程习惯。(3)Ai8051U单片机的继承是跨越式的继承,意思是即使软硬件都不变,用Ai8051U单片机代替89系列单片机,其运行速度也将大大提高。为了说明这个特点,笔者搭建了下面一款开发板:
其中已经在板上的是89C52RC单片机,旁边的是新的Ai8051U-34K64-PDIP40单片机。板上方引出的串口烧录线,板下方引出的是8通道逻辑分析仪连线。
(4)下图是验证程序(完整程序在附件中)的主函数部分:
这是一个跑马灯程序,用Keil的C51编译器生成HEX烧录文件。同一个HEX文件烧录到 89C52RC单片机中的效果是这样的:attach://52792.mp4
同一个HEX文件烧录到 AI8051U 单片机中的效果是这样的:attach://52793.mp4
(5)对延迟函数的延迟时间进行测量的结果见上面第46和47行程序。由于1646/50≈3x12,也就是说,采用1T指令周期和提高3倍主频的AI8051U比采用12T周期的89系列单片机速度快36倍。结论:经过测试,对于同样的二进制码,1T指令周期的AI8051U速度是12T指令周期的 89系列单片机的12倍。 三、开辟新时代(6)AI8051U,跑8位单片机指令最高性能是STC8H系列单片机,AI8051U在其基础上增加了采用独立时钟的MDU32和TFPU硬件单元,这些新技术大大加快了它对32位数据处理能力。
(7)好马还要配金鞍才能发挥出潜能,目前Keil的C51编译器并不能直接支持AI8051U的这些新技术,为此笔者将这些新技术以汇编指令和库函数的方式加入到过去的长缨系列编译器中,正式形成“长缨 I号 C351编译器”。
采用长缨 I号编译器,可以充分发挥STC8U的特点,整体提高STC8U单片机的运行速度和编程效率。(8)计算机的性能通常用一些通用的综合的指标来衡量,笔者认为可以用以下5个综合指标来衡量单片机的运算能力:
1)整数运算综合速度指标。
将在C语言中的32位整数进行加减乘除的时间之和作为整数运算的综合时间。其中第56行和第62行是给逻辑分析仪的第1通道的测量信号。
2)浮点数运算综合速度指标。
将在C语言中的32位的浮点数进行加减乘除的时间之和作为浮点数运算的综合时间。其中第98行和第103行是给逻辑分析仪的第2通道的测量信号。
3)三角函数运算综合速度指标。
根据C51的MATH函数库的划分,将在C语言中的32位的浮点数开平方和进行三角函数运算时间之和作为三角函数运算的综合时间。其中第130行和第135行是给逻辑分析仪的第3通道的测量信号。
4)反三角函数运算综合速度指标。
根据C51的MATH函数库的内容,将在C语言中的进行反三角函数运算时间之和作为反三角函数运算的综合时间。其中第160行和第165行是给逻辑分析仪的第4通道的测量信号。
5)指数函数运算综合速度指标。
根据C51的MATH函数库的划分,将在C语言中的32位的浮点数求余数和进行指数函数运算时间之和作为指数函数运算的综合时间。其中第194行和第200行是给逻辑分析仪的第5通道的测量信号。
(9)本文末附件中有测量STC8U的综合指标的程序:其中如果只是运行Keil的C51编译器,编译出来的结果是不采用DPU指令,只采用8051指令的HEX结果。只有双击“长缨_I_MakeFile.bat”批处理文件执行长缨-I C351编译器程序,才能编译出采用AI8051U的DPU指令的结果。双击执行“长缨_I_DEL.bat”批处理文件可以删除前面进行编译的结果文件,确保下次编译出来的是你想要的最新结果。(10)实际测量表明,对于同样的C语言程序,使用C351编译器的AI8051U速度比使用C51编译器的AI8051U速度要快很多,具体的测量结果为:1)整数运算综合速度指标:C51为54.17us,C351为13.75us。2)浮点数运算综合速度指标。C51为49.08us,C351为13.17us。3)三角函数运算综合速度指标。C51为360.08us,C351为25.58。4)反三角函数运算综合速度指标。C51为507.9us,C351为48.83us。5)指数函数运算综合速度指标。C51为646.67us,C351为244.50us。 结论:对于整数和浮点数的算术运算以及仅依赖它们的指数函数运算,AI8051U-8BIT模式的综合速度是相同架构的 8H系列单片机的3倍左右。对于三角函数,有了TFPU的加持,AI8051U-8BIT模式的综合速度比相同架构的 8H系列单片机的快10倍以上。
附件:

lezjin 发表于 2024-8-2 08:10:59

学习了,请教下这个goto和while(1)对比的话有哪些优势

WHX 发表于 2024-8-2 08:14:46

牛,学习了,感谢!{:4_250:}

soma 发表于 2024-8-2 09:41:38

长缨什么时候能支持C251就有更多选择了

杨为民 发表于 2024-8-2 11:43:33

soma 发表于 2024-8-2 09:41
长缨什么时候能支持C251就有更多选择了

长缨-II号已在路上了

杨为民 发表于 2024-8-5 00:20:54

lezjin 发表于 2024-8-2 08:10
学习了,请教下这个goto和while(1)对比的话有哪些优势

这两者编译为汇编语言后都是一样的。

谢谢你的提问,我想还有其他人也有同样的疑问,就在我的新文章:
STC8U单片机,从入门到精通(2):单片机C语言main函数的基本程序结构与编程方法
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9937
(出处: 国芯技术交流网站)
中专门做了说明,希望能够解答你的问题

lezjin 发表于 2024-8-5 08:33:28

杨为民 发表于 2024-8-5 00:20
这两者编译为汇编语言后都是一样的。

谢谢你的提问,我想还有其他人也有同样的疑问,就在我的新文章:


非常感谢

qizhiguang 发表于 2024-8-9 08:26:13

咱们这个编译器更好的支持中断了吗?

杨为民 发表于 2024-8-9 11:38:33

qizhiguang 发表于 2024-8-9 08:26
咱们这个编译器更好的支持中断了吗?

预留空间,直接支持0到94号中断

qizhiguang 发表于 2024-8-9 17:02:03

杨为民 发表于 2024-8-9 11:38
预留空间,直接支持0到94号中断

{:4_250:}{:4_250:}
页: [1] 2 3 4 5
查看完整版本: Ai8051U单片机,从入门到精通(1):继往开来的新一代51单片机