找回密码
 立即注册
查看: 8762|回复: 51

STC32G/F系列单片机是32位单片机吗?

[复制链接]

该用户从未签到

61

主题

622

回帖

1万

积分

荣誉版主

积分
10808
发表于 2023-2-12 00:27:09 | 显示全部楼层 |阅读模式
我认为是,因为STC32G/F系列单片机已经扩充 C251指令集,实现了32位整数的四则运算(STC32G/F系列)和32位浮点数的四则运算与常用的浮点数函数(STC32F系列)。
1)判断一个单片机芯片是几位的,可以有各种角度,我认为应该是由CPU一条机器码指令能够实现乘除法的寄存器的最高位数来定义。
比如8051 CPU,其乘除法的机器码指令的操作数是8位的寄存器,只能实现8位的乘除法,所以称之为8位单片机,哪怕乘除法的结果已经是16位的了,哪怕其内部的地址总线也已经是16位的了。
再比如8086 CPU,其乘除法的机器码指令的操作数是16位的寄存器,最多实现16位的乘除法,所以称之为16位单片机,哪怕乘除法的结果已经是32位的了,哪怕其内部的地址总线也已经是20位的了。
而且判断CPU的位数更不应该用外部总线宽度或者一次存取端口的位数来衡量,否则80868088就要成为不同位数的CPU架构了。
2)现在STC32G已经实现单条指令的操作数为DR4DR0这两个32位寄存器的乘除法运算了,未来STC32F还会实现单条指令的操作数为DR4DR0这两个32位寄存器的32位浮点数四则运算和函数运算,所以它们事实是名符其实的32CPU了。
单条指令的意思是不需要像CPU附加设备那样,要依靠附加其他指令来检测设备的状态位以判断操作是否完成,而是操作完成后(可以是多个机器周期)自动执行下一条指令。
3)但是STC32G/F系列单片机属于“32CPU”这个观点现在还不被广泛认可,有可能是由于“没有在其他的32位寄存器如DR8DR12等上实现乘除法运算”的原因。但是我认为这种说法不成立,8051CPU也只在AB两累加寄存器上实现。STC32G/F系列单片机继承了8051的这个传统,只累加器上实现,倒真是“32位的8051单片机”。
4)另一个重要原因可能是STC32G/F系列单片机目前使用的主流编译器C251不支持STC 80251指令的扩展部分。
我觉得这是个“现有鸡还是先有蛋”的问题。一般情况是Intel或者ARM这些硬件公司先在纸上设计出指令集,造出芯片,然后才有软件公司开发根据指令集造出对应的编译器,然后用它编译出机器码在单片机上运行。
目前的状况是STC通过基因改造,先制造出了32CPU,但却没有主流的软件来支持这些32位的扩展指令。

目前STC的官方解决方法是采用设置“DMAIR”(SFR 运算命令寄存器的方法,通过对DMAIR下命令的手段来实现这些扩展指令,我个人认为这是一个等待新编译器出世的两全其美的好方法,既可以用现有的C251编译器来,又留下了3个字节的机器码指令供今后的编译器使用。
5)下面是扩展指令使用C251编译器的A251汇编语言的程序例子:
Fig01_汇编语言.jpg
对于以上程序,很多人认可第7行、第10行和第11行是32位指令,但是不认可第14行和第15行是32位指令。因为它们就是两条80518位指令,根本不具有每个分号后面的想象中的“32位指令形式”。
但现实是现有KeilC251编译器,后有STC32位单片机,所以现版本的C251编译器不支持那两条分号后的指令是正常的,但不影响STC32G/F单片机是32位单片机的事实。

6)不过要是我们换一个写法:
Fig02_机器指令.jpg
这段汇编语言程序能够通过C251的编译,能够生成正确地代码在STC32G/F单片机上运行完成每个分号后的汇编语言所示的32位加减乘除操作。
这时,你觉得分号前面的写入CODE区域的数字是不是分号后面后面的32位指令的二进制机器码?

7)如果你还有疑惑,那么再看下面的C语言程序:
Fig03_C语言.jpg
这是采用内嵌汇编语言的方式写的。KeilC251编译器不但允许在C语言中内嵌A251汇编语言,而且允许程序员用“二进制机器码”的形式将CPU指令的二进制机器码插入程序中执行。查看编译后的LST文件,可以看到第89行程序产生的二进制机器码与第1213产生的一模一样,烧录到STC单片机上都是执行分号后面的32位乘除法操作。
8)结论:STC32G/F系列的单片机确实是32位的单片机,上面程序中的三字节的机器码确实是32位乘除法操作的二进制机器码指令,是对80251指令集的一个扩展。只是目前的KeilC251编译器暂时还不支持这些STC扩展指令的汇编语言,也没有在自带的C语言程序库里把它们包含进去。

因此不是说它们不是32位乘除法的机器指令,只是现在只写在STC的手册上,没有作为80251的扩展指令写在Intel或者Keil的手册上而已。



回复 送花

使用道具 举报

该用户从未签到

550

主题

9203

回帖

1万

积分

管理员

积分
13914
发表于 2023-2-12 09:41:26 | 显示全部楼层
我觉得这是个“现有鸡还是先有蛋”的问题
====STC先有了32位的8051, 借用的这个编译器名称确还没从 KEIL C251===改成===》KEIL C451

总有人认为 251是 51 * 2,16位;没想到 www.STCAI.com 的人工智能时代 STC32G12K128是  51 * 2的平方 是 * 4
1.png
2.png
3.png

该用户从未签到

45

主题

2901

回帖

6520

积分

超级版主

积分
6520
发表于 2023-2-12 11:05:42 | 显示全部楼层
实测,32位有符号整数乘加运算(各种数据分析、FFT、DFT、数字滤波都是),STC32G12K128的运算速度与STM32F051在同频下差不多的。IO操作则STC32G是单周期。

点评

赞一个!!! 测试比较中立, STC32 也就相当于ARM公司的16位机(低挡 32位机当 16位机来推广和使用) , MO的级别  发表于 2023-2-12 13:39
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    37

    主题

    851

    回帖

    3894

    积分

    荣誉版主

    积分
    3894
    发表于 2023-2-12 13:26:14 | 显示全部楼层
    ARM 的低挡 32位机 MO, 下降身段当 16位机推广, 楼主 要把 英特尔 当时设计的 251 16位指令集, 当 32位机使用, 没问题, 现在对 单片机的 位数分类, 比较模糊.

    至于老祖宗的定义, 是以外扩总线的宽度为标准的, 像 8086, 外扩总线 16位, 英特尔 称 16位机, 8098, 内部总线 16位, 外扩总线 8位, 英特尔 称 准16位机,

    但是, 外挂库, 不能作为 主单片机的位数计算, 只能作为扩充功能, 这是世界上默认的规则!!!

    你 STC32 可以挂个 MDU32模块, STC8也可以挂, 挂个 MDU16叫 16位机, 那挂个  MDU32叫 32位机?

    致于样主所说的, 用于Keil C251 内容传输变量定义的 R0-R7, 通过DMA输入/输出 模块运算值, STC32可以搞, 同样 STC8也可以搞, 一个难度都没有.

    早期 飞利浦公司 生产的 DS80C390 DS80C400和DS5240 (8051系列) , 其 ROM(D512K) 和ROM(D16M) , RAM far存储类型使用24位DPTR, 并且 使用32位和16位的算术运算模块来提高大量的算术运算

    按楼主的说法, DS80C390 DS80C400和DS5240  51系列, 如不称为 32位机, 至少称为 16位机吧!!!

    而  飞利浦公司 号称  DS80C390 DS80C400和DS5240系列, 是当时世界上功能最强大的 8位机!!!
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    37

    主题

    851

    回帖

    3894

    积分

    荣誉版主

    积分
    3894
    发表于 2023-2-12 13:31:53 | 显示全部楼层
    像 51  8位机, 有些生产厂家, 为提高指令的读取译码速度, 内部总线 早就从 8位扩展到 16位了. 这也不是新鲜事
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    37

    主题

    851

    回帖

    3894

    积分

    荣誉版主

    积分
    3894
    发表于 2023-2-12 13:44:46 | 显示全部楼层
    未命名.JPG

    该用户从未签到

    550

    主题

    9203

    回帖

    1万

    积分

    管理员

    积分
    13914
    发表于 2023-2-12 13:47:33 | 显示全部楼层
    STC32G12K128, 内部的 edata, xdata, 都是32位设计,只是受限于 KEIL C251,
    ===edata 可以32位
    ===xdata 暂时16位/用户看到的,而 STC 内部是32位的 xdata

    为了兼容STC8H8K64U, 很多 sfr/xfr 还是8位,其实都可以32位 eSFR, KEIL C251 已支持
    ===但这样 从32位和8位8051程序的来回无缝切换的兼容性就差多了,
    ===目前这个状况,是我们评估的最优状态,一切已优先考虑STC8H和STC32G12K128的程序兼容性为最高考量

    另外,在 C语言级,MDU32和指令32位乘除是一样的快,无缝衔接了,后面的硬件浮点FPMU32其实也是

    STC32G12K128是STC-8051世界的承前启后的划时代巨作,不是32位这简单的概念,
    而是近半个世纪的丰富的设计宝藏的继承和发扬,广大的老中青8051爱好者的潜能被我们加持和放大了

    会应用,不懂基本原理的太多,清者自清浊者自浊

    否定 STC32G12K128是32位机的,我们直接当他是普通应用者
    ===还上升不到谈基本理论的高度

    该用户从未签到

    550

    主题

    9203

    回帖

    1万

    积分

    管理员

    积分
    13914
    发表于 2023-2-12 13:54:03 | 显示全部楼层
    另外后续 STC8H/STC32的新产品会加入 QSPI, DMA 的 P2P, 已设计验证通过,
    将会在后续的100Pin/64Pin/48Pin上成为标配
    这些强大的 P2P DMA, 会同步在后续32位8051、8位8051上实现





    STC8H/STC32系列,2023年开发新产品 DMA 新起点
    大家后续多用 DMA, 减轻 CPU 压力,减轻主程序调度的压力
    STC新DMA架构允许2组外设直接DMA到其他外设通道(即4组外设互传),
    更多的其他外设还可以同时 DMA 到 XRAM,  XRAM DMA 到外设

    CPU 如使用 edata, 这时 CPU不用参与DMA总线仲裁
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    37

    主题

    851

    回帖

    3894

    积分

    荣誉版主

    积分
    3894
    发表于 2023-2-12 13:59:59 | 显示全部楼层
    我主要解释一下最后 STC32广告语的最后 3条
    倒数 3: 广告号称 STC32 比 M0 速度快一倍, 而楼上梁工 实测, 速度相当.
           让我说, 就算 STC32 比 M0 速度快一倍, 但实际 MIPS 要 慢一倍!!!
           为什么??? 因为世界上的通用型主流CPU, 都是 4时钟/机器周期 的!!!
           比如, ARM, PIC, STM8 等等, 8086系列 我没查, 早期的 8086不用说, 受工艺限制, 是多时钟机器周期的, 现在的 相当于 686, 主频高达 几G, 单周期在工艺上做不到.
           因此, 当 单指令周期的  STC32, 和 4指令周期的  M0  PK, 就得出如下结论, 就算 STC32 比 M0 速度快一倍, 但实际上 MIPS 要 慢一倍!!!

    该用户从未签到

    550

    主题

    9203

    回帖

    1万

    积分

    管理员

    积分
    13914
    发表于 2023-2-12 14:09:04 | 显示全部楼层
    1.png

    你比较下16位除,32位除,位操作,不就知到,同频 STC32G12K128比M0快了
    ===8051世界,谁才是那个扫地僧,你还不知到 ? 梁工做为护法没比这,是他固有的谦虚
    ===我们长老院,要么不讲,讲了就会实话实讲,不会如梁工那么谦虚
    ===你比较下16位除,32位除,位操作,就知道 M0就是个大忽悠,STC32G12K128对的起STC8051世界


    1.png
    硬件浮点的STC32F12K60-72MHz-LQFP48/32/TSSOP20/PDIP40也会在3月底回来测试,
    总之,32位8051的春天来了,中国高等教育《单片机原理及应用》学完8051,
    就直接就升华到 STC32位8051,STC32G12K128 !
    STC32F12K60-72MHz-LQFP48/PDIP40 带领 STC全球8051爱好者 启航

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

    本版积分规则

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

    GMT+8, 2024-4-25 11:58 , Processed in 0.073860 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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