找回密码
 立即注册
楼主: LA***

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

[复制链接]
  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 161 天

    [LV.7]常住居民III

    39

    主题

    906

    回帖

    4334

    积分

    荣誉版主

    积分
    4334
     楼主| 发表于 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寄存器尽量不用或少用.

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 189 天

    [LV.7]常住居民III

    67

    主题

    885

    回帖

    3002

    积分

    论坛元老

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

    lib库可以分解吗?

    点评

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

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 161 天

    [LV.7]常住居民III

    39

    主题

    906

    回帖

    4334

    积分

    荣誉版主

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

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 161 天

    [LV.7]常住居民III

    39

    主题

    906

    回帖

    4334

    积分

    荣誉版主

    积分
    4334
     楼主| 发表于 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 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    557

    主题

    9729

    回帖

    1万

    积分

    管理员

    积分
    14220
    发表于 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
    ===原有旧版本继续生产
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 161 天

    [LV.7]常住居民III

    39

    主题

    906

    回帖

    4334

    积分

    荣誉版主

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

    使用道具 举报

    该用户从未签到

    557

    主题

    9729

    回帖

    1万

    积分

    管理员

    积分
    14220
    发表于 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)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    1 小时前
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    0

    主题

    20

    回帖

    72

    积分

    注册会员

    积分
    72
    发表于 5 天前 | 显示全部楼层
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 161 天

    [LV.7]常住居民III

    39

    主题

    906

    回帖

    4334

    积分

    荣誉版主

    积分
    4334
     楼主| 发表于 4 天前 | 显示全部楼层
    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.51 KB, 下载次数: 3)

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




    点评

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

    使用道具 举报

    该用户从未签到

    557

    主题

    9729

    回帖

    1万

    积分

    管理员

    积分
    14220
    发表于 4 天前 | 显示全部楼层
    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)

    截图202405301247306038.jpg
    截图202405301247503205.jpg




    点评

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-3 08:50 , Processed in 0.072735 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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