打印
[技术文档]

航顺MCU的 DVSQ单元的除法和开方操作

[复制链接]
880|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jf101|  楼主 | 2023-5-21 14:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 除法操作
结果寄存器(RES)和余数寄存器(REMAINDER)中保持的值始终为补码格式。
• 如果执行无符号除法运算,则 RES 寄存器和 REMAINDER 寄存器中的值都为正数。
• 如果执行带符号数除法,则 RES 寄存器和 REMAINDER 寄存器的符号位由输入的操作数决定。
◦ 如果被除数和除数的符号位不同,则商为负数;否则商为正数。
◦ 余数的符号位始终和除数的符号位相同。
可以通过快速启动和非快速启动方式启动除法运算。除法运算的操作流程示意图为:

注意:
● 在除法运算执行期间,通过硬件无法改变 DIVIDEND 寄存器和 DIVISOR 寄存器的值,而通过软件
可以改变其值。因此,软件以字节或半字方式写这两个寄存器需小心。例如:软件以字节方式
写 DIVIDEND[7:0] ,则 DIVIDEND 寄存器的 [31:8] 仍保留上一次除法运算的值,而低 8 位为新写入
的值。
● 无论是以字节、半字还是字方式写 DIVISOR 寄存器,都会启动除法运算操作。


使用特权

评论回复

相关帖子

沙发
jf101|  楼主 | 2023-5-21 14:01 | 只看该作者
2 开方操作
DVSQ 计算单元仅能进行无符号数开方。因此执行开方运算时,RADICAND 和 RES 中的值都是无符号
数。

3 中断
DVSQ 计算单元内部的两个中断源共用芯片的同一个中断号。当系统检测到中断请求后,需要通过读
CSR 寄存器来判断中断类型(除零中断还是溢出中断)。在同一时刻,仅允许产生除零中断或者溢出中断。
除零中断:
• 通过配置 CSR.DZ_INT_EN 使能或关闭该中断。
• 当除数为 0 时,中断请求会被硬件置位。
• 通过软件或硬件可清除该中断:
◦ 软件配置 CSR.DZ_FLAG 为 0。
◦ 开始下一次除法或开方运算。
带符号数除法溢出中断:
• 通过配置 CSR.OV_INT_EN 使能或关闭该中断。
• 当带符号数除法操作的被除数为 0x8000_0000 且除数为 0xFFFF_FFFF 时,中断请求会被硬件置
位。
• 通过软件或硬件可清除该中断:
◦ 软件配置 CSR.OV_FLAG 为 0。
注意:
如果在 DVSQ 还未完成运算时,访问 RES/REMAINDER/DIVIDEND/DIVISOR/RADICAND 寄存器将会使总
线处于等待状态。处于等待状态时, MCU 不能产生相应中断。软件可以通过轮询 CSR.BUSY 的状态来
判断 RES 和 REMAINDER 的值是否已经就绪。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

231

主题

1538

帖子

2

粉丝