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

32位加减乘除,STC8位机上的MDU32C 实测!库函数,STC8H2K32U-45MHz

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-5-17 05:18:43 | 显示全部楼层
对老姚提点建议, 请考虑一下:
    STC51 经历了几代升级, 反观过去, 最大的创新就是把 SFR寄存器移到外面 XFR,
但由于 51指令集设计的早,片外RAM(XFR)的指令支持, 比较单调功能有局限.
    这次有客户网上反映, CAN模块的读写速度慢的问题, 一开始我也不相信, 后来跟踪讨论,
客户结论是对的, 这个客户所用 波特率并不高, 经程序优化后, 能用, 但几乎就用到了
STC32G 的极限(天花板)了, 要是客户再提高点通讯波特率, 就彻底不能用了(用汇编优化也达不到).
    这次 STC 的 CAN模块 设计, 地址采用 间接寻址, 对外寄存器只有 2个, 极大地节省
专用寄存器资源,但由于 251 没有片外RAM(XFR) 加/减1 指令, 造成了指令效率低下.
但 51/251 对片内RAM(SFR) 有 加/减1 指令, 效率高, 前段时间 USB模块, 已抢占了部分
已用 SFR 寄存器, 这次 CAN模块 没有继续抢占 SFR 寄存器, 就反映出一系列问题.
今后 STC 还要继续增加 网络 等摸块, SFR 专用寄存器资源问题, 会越来越严重(影响读写速度).
    因此, 建议老姚长痛不如短痛, 好好考虑一下, 把不常用的一些 SFR寄存器(比如 I/O端囗
模式的设置寄存器), 一次性全部回收, 按照目前 CAN模块 的间接寻址方式, 重新排列一下,
这样, 所有专用寄存器 都可以放在 SFR中, 空出不少 SFR寄存器, 供今后发展增加模块使用,
XFR寄存器尽量不用或少用.

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-5-17 10:28:40 | 显示全部楼层
xxkj*** 发表于 2024-5-16 13:21
有没有纯代码的,不要用lib库的?毕竟寄存器又不多。

lib库可以分解吗?

点评

代码库内部包含了 16个源代码, 可单独挂在项目中使用, 也可单独编译成库文件挂在项目中使用。 不使用的就不要挂在项目中, 即可。  详情 回复 发表于 2024-5-17 13:15
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-5-17 13:15:13 | 显示全部楼层
xxkj*** 发表于 2024-5-17 10:28
lib库可以分解吗?

代码库内部包含了 16个源代码,  

可单独挂在项目中使用, 也可单独编译成库文件挂在项目中使用。

不使用的就不要挂在项目中, 即可。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-5-22 06:26:15 | 显示全部楼层
对 MDU32/DPU32 类运算模块之构架,提点建议, 请考虑:
    MDU 系列 的发展,从MDU16 发展到 MDU32,参数输入/输出从占用 SFR 到 R0-R7,再加上关闭
主系统 CPU 的运行,其根本目的在于不关闭总中断就能可靠执行 MDU类指令
    例如在 输入/输出参数极为简单的 TFPU32 模块中,就成功的应用,达到了比较理想的效果
(除了个别超越函数执行周期过长影响中断响应频率)。
    MDU32/DPU32 对极简的运算(参数输入/输出仅占用 R0-R7,命令触发仅占用 MDU32CR/DPUOP),
没任何问题,但对略为复杂一点的运算(参数输入/输出占用超出 R0-R7范围,或者参数增加了专用
寄存器作为输入/输出),由于是非原子操作,对系统程序运行都有影响(需增加 开/关总中断进行
保护,否则程序会出现意想不到的错误)
    因此,建议在 MDU32/DPU32 类运算模块中,增加几级堆栈寄存器。
1、增加 R0-R3、R4-R7 压栈/出栈指令(对 MDU32/DPU32 模块内堆栈操作)。
2、参数输入,超出 R0-R7 范围的,全部压入 MDU32/DPU32 堆栈中。
3、触发 MDU32CR/DPUOP 命令,凡复杂一点的,除了读入 R0-R7 中内容,其他参数从 栈顶弹出。
4、运算结果,返回到 R0-R7,凡超出此范围的,全部 压栈,供 CPU 读取(出栈)。
    如此更改之好处:
1、由于没有使用不受 C51、C251 中断保护的寄存器,所以 MDU32/DPU32 指令的运行,完全不受
   中断或 OS任务切换的干扰,任何时候,全程都不用关闭总中断
2、51类资源缺乏,专用寄存器非常紧张,整个可重入函数(程序),只有 R0-R7、ACC、B、PSW、
   DPTR 可使用。
       因此,经常需要 对 R0-R7 进行保护,以便出让寄存器供程序中使用,而 51对 R0-R7 的
   保护特别费代码,有此专用 压栈/出栈指令,可令 51 如虎添翼,节省好多时钟周期,整体提
   升 MDU32/DPU32 指令的执行速度。
3、MDU32 模块,增加2级堆栈寄存器(32位),就足够使用了,成本增加不多。
   DPU32 模块,增加8级堆栈寄存器(32位),就可令整个 DPU32 模块,在中断多级嵌套 和 OS系
   统中的应用,其性能和通用性适应性都得到大幅提升,全程都不用关闭总中断
   个人认为:
   比之前的方案1(占用 RAM太多)和方案2(太复杂化了),优秀!

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-5-22 07:45:10 | 显示全部楼层
MDU32D已设计完成,
已批量生产的STC8H2K32U的MDU32C基础上小前进 !
并已按排在STC8H2K32U-45I-LQFP32,TSSOP28/20的基础上,
改版已大量供货的 STC8H2K08U-45I-TSSOP20/SOP16系列

===原有旧版本继续生产
截图202405220745077471.jpg

最后用【STC8051U/TFPU + DSP/DPU32】 来改版 STC8H8K64U
===原有旧版本继续生产
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-5-22 10:02:55 | 显示全部楼层
不知 STC8051U 何时能  出样品,特别期待 双核(51核+251核)中的 251核,在 C51下的出色表现。
回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-5-22 11:43:43 | 显示全部楼层
追风剑-II@STC8051USB 实验箱 讨论稿

追风剑-II@STC8051U, 6/17 晶圆出来===刚晶圆厂答复
6/25, LQFP48/LQFP44 封装回来===用最快的速度去封装
===7/1 开始送样供货,
庆贺 51 新生
TFPU:【硬件三角函数/反三角函数,硬件浮点运算器】
产品 丝印
PDIP40
TFPU@108M   STC8051U
                         34K64-PDIP40
                         yywwxxxx.A

商品名称:STC8051U-34K64-PDIP40
LQFP44
TFPU@108M
STC8051U
34K64-QFP44
yywwxxxx.A

商品名称:STC8051U-34K64-QFP44
LQFP48
TFPU@108M
STC8051U
34K64-QFP48
yywwxxxx.A

商品名称:STC8051U-34K64-QFP48

追风剑@STC8051U 核心功能实验板,讨论稿
追风剑@STC8051U 大学计划实验箱方案,征求意见中

STC8051U-108MHz-LQFP48, LQFP44, PDIP40
管脚兼容天王级别的: STC89C52RC, STC12C5A60S2

双核心设计:
你用 SDCC/IAR C++/KEIL C51 他就是 8位机
你用 KEIL C251 他就是 32位机
烧录时选择: STC8051U-32bitSTC8051U-8bit

QSPI, I2S, DMA支持外设到外设,硬件三角函数/浮点运算器
音乐人生@STC8051U-108MHz-LQFP48 核心功能实验板
PWM支持硬件移相,16位PWM; 真12位ADC
DMA支持PWM, DMA支持外设直接到外设, P2P
32位8051 管脚兼容 STC89C52RC / STC12C5A60S2

32K SRAM(2K edata, 32K xdata), 64K Flash
DMA 的缓冲区是32K, 并且DMA支持外设到外设, P2P

TFPU32@STC32
以【硬件三角函数/反三角函数运算器,硬件浮点运算器】为主的
【新型控制器,处理器】的命名 思考

T: 硬件三角函数/反三角函数运算器
F: 硬件浮点运算器


追风剑-II@STC8051USB实验箱讨论稿,8位/32位8051兼容,三角函数/浮点, USB - 老梁亲测 STC33-ARM 内部平台系列讲座 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-5-30 06:00:47 | 显示全部楼层
本帖最后由 LAOXU 于 2024-11-29 08:17 编辑

2024/5/30
更新版 STC8_MDU32C_V2.lib 来了~~~~~
STC8H_MDU32C_V2 LIB 库使用说明:
        STC8H系列单片机 C51定点库 自动调用专用运算库函数,插入使用了 STC8H2K32U系列的特色

    ----MDU32C硬件乘除移位指令。
    并且针对 STC8H系列集成了32位x32位硬件乘法器32位/32位硬件除法器32位硬件移位单元作了特别优化。
        增加了对所有关联到的无符号、有符号int型,无符号、有符号long型float型变量的算术运算,移位操作,
    均作了运算速度大幅度提升,为方便使用,以外挂库形式加入,实行对C51内库自动替换,无缝嵌入。
    其中最具有特色的是使用了 STC8H系列的 MDU32C硬件 乘除移位指令,代替原Keil C51的浮点加减乘除法程序,

    大幅度地提升了浮点数运算速度,解决了原51 浮点数运算特慢的通病。
   
    STC8H_MDU32C_V2版 和 STC8H_MDU32C_V1版 区别:
    1. 全面改写单精度浮点数内部数据存储格式, 使之完全无缝匹配 STC MDU32C标准,

        为核心内核 移植到 SDCC, IAR 开绿灯。
    2. 全面优化内部变量, 进一步减少指令提升运算速度。

特别提醒:  仿真时一定要连接硬件实时仿真, 否则死机!!!
单独 LIB 文件:
STC8_MDU32C_V2.LIB (12.45 KB, 下载次数: 299)

LIB源代码:
STC8_MDU32C_LIB_V2.rar (77.06 KB, 下载次数: 319)





点评

帮看下 MDU32D MDU32D 技术细节, 32位加减乘除 STC8 位机上的32位数学协处理器, STC8 新设计即将全面采用 MDU32D 【新提醒】MDU32D技术细节, 32位加减乘除,STC8位机上的新利器,STC8 新设计即将升级 - 软件库函数  详情 回复 发表于 2024-5-30 12:48
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 反对

使用道具 举报 送花

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

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-5-30 12:48:09 | 显示全部楼层
LAO*** 发表于 2024-5-30 06:00
2024/5/30
更新版 STC8_MDU32C_V2.lib 库来了~~~~~

帮看下 MDU32D

MDU32D 技术细节, 32位加减乘除
STC8 机上的32位数学协处理器

STC8 新设计即将全面采用 MDU32D
【新提醒】MDU32D技术细节, 32位加减乘除,STC8位机上的新利器,STC8 新设计即将升级 - 软件库函数/原理图库/PCB库/最小包装 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

截图202405301247306038.jpg
截图202405301247503205.jpg




点评

上次提了, 你回复说已定型, 走生产程序了, 那再多说就没必要了! 我是想再增加一些辅助指令(可更进一步优化 51, 提升整体运算速度).  详情 回复 发表于 2024-5-30 15:26
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-5-30 15:26:05 | 显示全部楼层
神*** 发表于 2024-5-30 12:48
帮看下 MDU32D

MDU32D 技术细节, 32位加减乘除

上次提了, 你回复说已定型, 走生产程序了, 那再多说就没必要了!

我是想再增加一些辅助指令(可更进一步优化 51, 提升整体运算速度).
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:25 , Processed in 0.484604 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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