编辑: huangshuowei01 2016-08-19
TB3178 如何利用 Cortex?-M0+ 单片机实现更快的数学计算 简介 工业和家用电器市场中的各种应用要求使用数学运算来实现不同的算法和计算.

基于 Cortex?-M0+的单片 机包含加法、减法和乘法指令.Cortex-M0+架构没有用于除法运算的汇编指令,除法逻辑可以根据不同的 编译器而变化.基于 Arm? Cortex-M0+的单片机(MCU)具有一个可配置选项,可通过该选项使用快速乘 法器进行乘法运算.基于该可配置选项,乘法运算可以为单个周期指令到最多

32 个周期指令不等. SAMC21(一款 Cortex-M0+ MCU)非常适合需要数学计算的应用.SAMC21 MCU 具有可进行乘法运算 的快速单周期乘法器选项,还具有一个新的外设,称为除法和平方根加速器(Division and Square Root Accelerator,DIVAS),可用于执行快速除法和平方根运算. ?

2018 Microchip Technology Inc. DS90003178A_CN-page

1 目录 简介.1 1. 概念.3 2. 解决方案/实现.4 3. 相关资源.8 Microchip 网站.9 变更通知客户服务.9 客户支持.9 Microchip 器件代码保护功能.9 法律声明.10 商标.10 DNV 认证的质量管理体系.11 全球销售及服务网点.12 TB3178 ?

2018 Microchip Technology Inc. DS90003178A_CN-page

2 1. 概念 适用于 Arm 架构的应用程序二进制接口(Application Binary Interface,ABI)包含一系列标准,其中有些 是开放的标准,还有一些是 Arm 架构专用标准.ABI 可管控各种基于 Arm 的执行环境中二进制文件和开发 工具的互操作.支持 Arm MCU 的编译器需符合这些标准.这些标准的其中一项是适用于 Arm 架构的运行 时ABI.此标准为 ABI 指定辅助函数,使之能够支持 C、C++和算术运算.对于除法,编译器会用各自的 库代码替换除法和模运算符(即,使用重复减法来实现除法).该库代码将数百个字节添加到代码存储 器,MCU 消耗

50 到400 之间任意数量的时钟周期,具体取决于操作数的大小.编译器可通过过载运行时 ABI 辅助方法来使用 DIVAS 功能.DIVAS 展现出的性能优于编译器除法(即,比除法 65535/3 少50 个时 钟周期).DIVAS 支持整数平方根运算,而不需要任何额外的库依赖关系. 注: 模运算符使用除法来取得余数,因此需要过载.DIVAS 的性能表现可能会随着被除数和除数的值而变 化. TB3178 概念 ?

2018 Microchip Technology Inc. DS90003178A_CN-page

3 2. 解决方案/实现 DIVAS 只支持

32 位整数除法.用于除法运算的运行时 ABI 辅助方法过载,以便编译器了解除法应使用 DIVAS 功能进行除法.根据运行时 ABI 标准,32 位整数除法函数在 r0 中返回商,或在{r0, r1}中返回 商和余数. 在下面的示例中,使用 Arm 专用原型表示法描述二值返回函数. 注: 有些编译器可以使用

64 位有符号/无符号整数作为返回类型,而不是 idiv 或uidiv 结构. int __aeabi_idiv(int numerator, int denominator);

unsigned __aeabi_uidiv(unsigned numerator, unsigned denominator);

typedef struct { int quot;

int rem;

} idiv_return;

typedef struct { unsigned quot;

unsigned rem;

} uidiv_return;

__value_in_regs idiv_return __aeabi_idivmod(int numerator, int denominator);

__value_in_regs uidiv_return __aeabi_uidivmod(unsigned numerator, unsigned denominator);

注: ASFv3 框架为 DIVAS 驱动程序提供支持.DIVAS ASF API 包含整数除法、模和平方根的 API.将符号定 义DIVAS_OVERLOAD_MODE 设置为 true,即可帮助 DIVAS 的ASF 驱动程序中过载的 ABI 辅助方法来执 行内部除法运算.包含运行时 ABI 辅助方法的驱动程序使用 DIVAS ASF 驱动程序 API 进行过载. TB3178 解决方案/实现 ?

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题