找回密码
 立即注册
查看: 1159|回复: 30

STCx51虚拟单片机(4):STC32位单片机的内核架构和指令集简介

[复制链接]

该用户从未签到

63

主题

703

回帖

1万

积分

荣誉版主

积分
10904
发表于 2023-12-25 19:51:48 | 显示全部楼层 |阅读模式
本帖最后由 杨为民 于 2024-2-19 12:47 编辑

近十年来STC一直在稳步地实施其自己的32位系列单片机计划。STC32位单片机采用了STC 80351内核架构和STC 80351指令集,本文将简单介绍STC32位单片机内核架构和组成,并通过对L1指令集中的四则运算的指令部分的分析介绍STC 80351指令集的特色。
一、8051和80251内核架构与指令集
(1)Intel 8051内核由一个8位数据处理器、一个8位的直接地址存储控制器和一个16位的扩展存储控制器组成。8051单片机由8051内核、外部端口控制器和片上设备组成,用户使用8051指令集来控制整个单片机的运行。
(2)Intel 8051指令集管理4个存储空间:
8位的直接寻址DATA空间(MOV指令存取)
8位的间接寻址IDATA空间(MOV  @R0/@R1指令存取)
16位的代码CODE空间(MOVC 指令存取)
16位的扩展间接寻址XDATA空间(MOVX @DPTR指令存取)
其中DATA和IDATA的低128字节空间共用,DATA的高128字节空间留给SFR(特殊功能寄存器)使用。
(3)Intel 80251内核由一个准32位数据处理器(乘除法是16位的,其他操作大部分是32位的)、一个16位的直接地址存储控制器和一个24位的扩展存储控制器组成。80251单片机由80251内核、外部端口控制器和片上设备组成,用户使用80251指令集来控制整个单片机的运行。
(4)Intel 80251指令集包括一个全8051指令集作为其子集。Intel 80251指令集的二进制代码分为两种模式:
1)在二进制代码(Binary)模式下,80251指令集的8051子集的二进制代码与8051指令集的完全相同,其他的80251独有的指令的二进制代码均加有“A5”前缀。这样8051编译器生成的二进制代码可以直接在80251单片机上运行。不过这种二进制兼容模式的整体指令执行效率较低,一般单片机均不选择这种模式。
2)在源代码(Source)模式下,80251指令集中的8051指令子集的部分指令的二进制代码加有“A5”前缀。因此这时8051编译器生成的二进制代码不能直接在80251单片机上运行,需要将汇编语言源代码用80251编译器重新进行编译。不过这种源代码兼容模式的整体运行速度较快。
STC32位单片机采用源代码模式。
(5)Intel 80251指令集除了管理8051指令集管理的4个存储空间外,还管理专有的3个存储空间:
16位的直接寻址EDATA空间(MOV指令存取)
16位的间接寻址EDATA空间(MOV  @WRi指令存取)
24位的间接寻址HDATA空间(MOV  @DRi指令存取),HDATA空间以64KB为一页,分为00H~FFH共256个页。
其中EDATA的低256字节空间与DATA和IDATA空间共用,位于00H页。
8051子集的XDATA空间位于HDATA空间的01H页,8051子集的CODE空间位于HDATA空间的FFH页。
二、STC 80351内核架构与指令集
(6)STC 80351内核由一个32位数据处理器“DPU32”(乘除操作是32位的)和一个存储控制器组成。
(7)32位数据处理器“DPU32”根据情况可以再分为整数处理单元MDU32和FPU32浮点数处理单元。
(8)存储控制器分为两类,对于已经推出的STC32G/32F系列的单片机,内核采用80251的“HMC24”存储控制器。对于即将推出的带32位数据处理器MDU32C的STC8H系列单片机,内核采用8051的“XMC16”存储控制器。
(9)STC32位单片机由STC 80351内核、外部端口控制器和片上设备组成,用户使用STC 80351指令集来控制整个单片机的运行。
(10)STC 80351指令集是一个分等级(Level)的指令系统,不同等级的指令集可以组合起来构成一个具体的指令集供某个系列的单片机使用。
(11)STC 80351-L0指令集为8051指令集全集。适用于那些不带DPU32的STC8系列单片机。
(12)STC 80351-L1指令集为使用DPU32位数据处理器扩展指令。
(13)STC 80351-L2指令集为80251指令集全集。适用于已经推出的带MDU32的STC32G/32F系列单片机。
三、STC 80351指令集寄存器
(14)STC 80351-L0指令集使用8051全部寄存器,STC 80351-L2指令集使用80251全部寄存器,他们之间共用R0~R7这8个8位寄存器。
(15)STC 80351-L1指令集将8051和80251的R0~R7这8个8位寄存器改名为BR0~BR7,将8051和80251的R6R7寄存器组合为“AX”16位寄存器,将8051和80251的R2R3寄存器组合为“BX”16位寄存器,将8051和80251的的R4R5R6R7寄存器组合为“EAX”32位寄存器, 将8051和80251的的R0R1R2R3寄存器组合为“EBX”32位寄存器。
四、STC 80351-L1指令集四则运算指令简介
(16)按照内核分工,存储控制器如果是XMC16,DPU32与存储器之间的数据交流指令为STC 80351-L0指令集8051指令,存储控制器如果是HMC24,DPU32与存储器之间的数据交流指令为STC 80351-L2指令集80251指令。因此STC 80351-L1指令集主要是DPU32的运算指令。
(17)STC 80351-L1指令集的四则运算指令
  
汇编语言
  
操作内容
说明
加法


ADDF   EAX, EBX
EAX=EAX + EBX
单精度浮点数加法
ADDS   EAX, EBX
EAX=EAX + EBX
32位加法
ADDS   AX, BX
AX=AX + BX
16位加法
ADDS   BR7, BR6
R7=R7 +R3X
8位加法
减法


SUBF   EAX, EBX
EAX=EAX - EBX
单精度浮点数减法
SUBS   EAX,EBX
EAX=EAX - EBX
32位减法
SUBS   AX,BX
AX=AX - BX
16位减法
SUBS   BR7,BR3
R7=R7 - R3
8位减法
乘法


MULF   EAX,EBX
EAX=EAX * EBX
单精度浮点数乘法,结果在EAX
MULS   EAX,EBX
EAX=EAX * EBX
32位乘法,结果32位在EAX
MULS   AX,BX
EAX=AX * BX
16位乘法,结果32位在EAX,低16位在AX
MULS   BR7,BR3
AX=R7 *R3
8位乘法,结果16位在AX, 8位在R7
除法


DIVF   EAX,EBX
EAX=EAX / EBX
单精度浮点数除法,结果位商在EAX
DIVU   EAX,EBX
EAX=EAX / EBX
32位无符号除法,结果32位商在EAX32位余数在EBX
DIVS   EAX,EBX
EAX=EAX / EBX
32位有符号除法,结果32位商在EAX32位余数在EBX
DIVU   AX,BX
AX=AX / BX
16位无符号除法,结果16位商在AX
DIVS   AX,BX
AX=AX / BX
16位有符号除法,结果16位商在AX
DIVU   BR7,BR3
R7=R7 / R3
8位无符号除法,结果8位商在R7
DIVS   BR7,BR3
R7=R7 / R3
8位有符号除法,结果8位商在R7
求余数


MODU   EAX,EBX
EAX=EAX % EBX
32位无符号求余,余数在EAX
MODS   EAX,EBX
EAX=EAX % EBX
32位有符号求余,余数在EAX
MODU   AX,BX
AX=AX % BX
16位无符号求余,余数在AX
MODS   AX,BX
AX=AX % BX
16位有符号求余,余数在AX
MODU   BR7,BR3
R7=R7 % R3
8位无符号求余,余数在R7
MODS   BR7,BR3
R7=R7 % R3
8位有符号求余,余数在R7
(18)STC 80351-L1指令集还有其他类型的指令。以上给出的是四则运算的全部指令,通过这些指令可以看出STC 80351-L1指令具有以下两个显著的特点:
首先L1指令集不是对称指令。比如只有“ADDS  EAX,EBX”指令,没有“ADDS  EBX,EAX”指令。
其次L1指令集的8位、16位和32位每个数据等级只有一条指令。比如虽然有BR6和BR2这个两个8位寄存器,却只有“ADDSBR7,BR3”指令,没有“ADDS BR6,BR2”指令。
五、总结
(19)STC32位单片机采用的STC80351内核架构分为32位数据处理器“DPU32”和存储控制器两个部分组成,其中存储控制器分为两类,“XMC16”存储控制器适合STC8系列单片机, “HMC24”存储控制器适合STC32系列单片机。
(20)STC32位单片机采用的STC80351指令集目前有三个等级,其中“L0+L1”等级组合适合STC8系列单片机,“L1+L2”等级组合适合STC32系列单片机。
(21)STC 80351-L1指令集是一个比RISC还精简的又与“8051”和“80251”指令集高度兼容的最小指令集“MISC”。这种精简使得实现这些指令的“DPU32”硬件部分可以像RISC内核一样脱离存储控制器以单独的超高内主频工作,大大提高STC32位单片机的性能指标。

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

使用道具 举报

该用户从未签到

551

主题

9459

回帖

1万

积分

管理员

积分
13999
发表于 2023-12-25 20:24:34 | 显示全部楼层
沿着杨老师指引的方向,前进

给 STC8H2K32U-45I-LQFP32,TSSOP28/20, 设计的 MDU32C 已设计完成
在设计DPU32中,会用来增强现全力以赴的 STC32G400K256-180MHz

采用 MDU32C, PWM硬件移相的 STC8H2K32USB-45I-LQFP32/TSSOP28/TSSOP20
===MDU32C 是老许建议的,MDU32C = MDU32 + MDU16的其他功能扩充到32位
===在最后制图阶段,即将流片,春节后供货


回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    昨天 05:34
  • 签到天数: 170 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1355

    积分

    荣誉版主

    积分
    1355
    发表于 2023-12-26 14:11:15 | 显示全部楼层
    希望STC8H2K08U-45I-TSSOP20/SOP16能同步上架零售商城

    点评

    希望STC8H2K08U-45I-TSSOP20/SOP16能同步上架零售商城 ===实际有需求吗,可以先用 STC8H8K64U  详情 回复 发表于 2023-12-26 14:23
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9459

    回帖

    1万

    积分

    管理员

    积分
    13999
    发表于 2023-12-26 14:23:32 | 显示全部楼层
    社区闲人 发表于 2023-12-26 14:11
    希望STC8H2K08U-45I-TSSOP20/SOP16能同步上架零售商城

    希望STC8H2K08U-45I-TSSOP20/SOP16能同步上架零售商城
    ===实际有需求吗,可以先用 STC8H8K64U
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 09:05
  • 签到天数: 173 天

    [LV.7]常住居民III

    12

    主题

    351

    回帖

    1154

    积分

    金牌会员

    积分
    1154
    发表于 2023-12-26 15:48:31 | 显示全部楼层
    隐隐感觉到杨老师是高手中的高手

    点评

    那当然,杨老师是我最推崇的 51大师  发表于 2023-12-26 19:44
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 03:14
  • 签到天数: 145 天

    [LV.7]常住居民III

    39

    主题

    882

    回帖

    4110

    积分

    荣誉版主

    积分
    4110
    发表于 2024-1-17 00:19:10 | 显示全部楼层
    杨老师, 你的 求余指令 明显是错误的, 求余 返回结果(余数), 和 除法返回结果(商), 怎么可能在同一寄存器中 ???



    捕获211.JPG

    点评

    使用微指令技术就可以实现了: (1)如果有一条除法微指令: DIVU EAX, EBX (2)那么可以定义新的一条微指令: MODU { DIVU EAX, EBX ; MOVR EAX, EBX} (3)我利用微指令技术已经实现了  详情 回复 发表于 2024-1-17 10:57
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9459

    回帖

    1万

    积分

    管理员

    积分
    13999
    发表于 2024-1-17 07:49:24 | 显示全部楼层
    采用 MDU32C, PWM硬件移相的 STC8H2K32USB-45I-LQFP32/TSSOP28/TSSOP20
    ===MDU32C 是老许建议的,MDU32C = MDU32 + MDU16的其他功能扩充到32位
    ===在最后制图阶段,即将流片,春节后供货



    在设计DPU32中,会用来增强现全力以赴的 STC32G400K256-180MHz







    点评

    总算 有 TSSOP28 封装了  详情 回复 发表于 2024-1-17 16:34
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    63

    主题

    703

    回帖

    1万

    积分

    荣誉版主

    积分
    10904
     楼主| 发表于 2024-1-17 10:57:09 | 显示全部楼层
    本帖最后由 杨为民 于 2024-1-17 10:58 编辑
    LAOXU 发表于 2024-1-17 00:19
    杨老师, 你的 求余指令 明显是错误的, 求余 返回结果(余数), 和 除法返回结果(商), 怎么可能在同一寄存器中 ...


    使用微指令技术就可以实现了:
    (1)如果有一条除法微指令: DIVU  EAX, EBX
    (2)那么可以定义新的一条微指令:  MODU { DIVU  EAX, EBX ;  MOVR  EAX, EBX}
    (3)我利用微指令技术已经实现了

    点评

    多了一条 数据 搬家 指令, 呵呵~~~  详情 回复 发表于 2024-1-17 16:32
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 03:14
  • 签到天数: 145 天

    [LV.7]常住居民III

    39

    主题

    882

    回帖

    4110

    积分

    荣誉版主

    积分
    4110
    发表于 2024-1-17 16:32:38 | 显示全部楼层
    杨为民 发表于 2024-1-17 10:57
    使用微指令技术就可以实现了:
    (1)如果有一条除法微指令: DIVU  EAX, EBX
    (2)那么可以定义新的一条 ...

    多了一条 数据 搬家 指令, 呵呵~~~

    点评

    如果脑子上没有洞,在脑子上打洞通常会进水。如果脑子上开得窍多了,在脑子上打洞就没有什么影响,还有利于把已经灌进去的水排掉。  详情 回复 发表于 2024-1-17 18:49
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 03:14
  • 签到天数: 145 天

    [LV.7]常住居民III

    39

    主题

    882

    回帖

    4110

    积分

    荣誉版主

    积分
    4110
    发表于 2024-1-17 16:34:09 | 显示全部楼层
    神农鼎 发表于 2024-1-17 07:49
    采用 MDU32C, PWM硬件移相的 STC8H2K32USB-45I-LQFP32/TSSOP28/TSSOP20
    ===MDU32C 是老许建议的,MDU32C =  ...

    总算 有 TSSOP28 封装了
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-17 02:33 , Processed in 0.076501 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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