LAOXU 发表于 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寄存器尽量不用或少用.

xxkj2010 发表于 2024-5-17 10:28:40

xxkj2010 发表于 2024-5-16 13:21
有没有纯代码的,不要用lib库的?毕竟寄存器又不多。

lib库可以分解吗?

LAOXU 发表于 2024-5-17 13:15:13

xxkj2010 发表于 2024-5-17 10:28
lib库可以分解吗?

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

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

不使用的就不要挂在项目中, 即可。

LAOXU 发表于 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(太复杂化了),优秀!

神农鼎 发表于 2024-5-22 07:45:10

MDU32D已设计完成,
在已批量生产的STC8H2K32U的MDU32C基础上小前进 !
并已按排在STC8H2K32U-45I-LQFP32,TSSOP28/20的基础上,
改版已大量供货的 STC8H2K08U-45I-TSSOP20/SOP16系列
===原有旧版本继续生产


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

LAOXU 发表于 2024-5-22 10:02:55

不知 STC8051U 何时能出样品,特别期待 双核(51核+251核)中的 251核,在 C51下的出色表现。

神农鼎 发表于 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-32bit 或 STC8051U-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)

LAOXU 发表于 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 文件:


LIB源代码:






神农鼎 发表于 2024-5-30 12:48:09

LAOXU 发表于 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)







LAOXU 发表于 2024-5-30 15:26:05

神农鼎 发表于 2024-5-30 12:48
帮看下 MDU32D

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


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

我是想再增加一些辅助指令(可更进一步优化 51, 提升整体运算速度).
页: 1 2 [3] 4 5
查看完整版本: 32位加减乘除,STC8位机上的MDU32C 实测!库函数,STC8H2K32U-45MHz