完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
你好
我在 cmsis dsp 源中发现了一些奇怪的东西。 我正在使用 STM32f429 和 LITTLE ENDIAN 以及 cmsis dsp 库 V.1.5.1。 在 cmsis dsp 库(arm_mult_q31.c)中: void arm_mult_q31( q31_t * pSrcA, q31_t * pSrcB, q31_t * pDst, uint32_t blockSize) { ... 而 (blkCnt > 0U) { /* C = A * B */ /* 将输入相乘,然后将结果存储在目标缓冲区中。*/ inA1 = *pSrcA++; inA2 = *pSrcA++; inA3 = *pSrcA++; inA4 = *pSrcA++; inB1 = *pSrcB++; inB2 = *pSrcB++; inB3 = *pSrcB++; inB4 = *pSrcB++; out1 = ((q63_t)inA1 * inB1) >> 32; out2 = ((q63_t)inA2 * inB2) >> 32; out3 = ((q63_t)inA3 * inB3) >> 32; out4 = ((q63_t)inA4 * inB4) >> 32; out1 = __SSAT(out1, 31); out2 = __SSAT(out2, 31); out3 = __SSAT(out3, 31); out4 = __SSAT(out4, 31); *pDst++ = out1 << 1U; *pDst++ = 输出 2 << 1U; *pDst++ = 输出 3 << 1U; *pDst++ = out4 << 1U; /* 递减 blockSize 循环计数器 */ blkCnt--; } ... } 如果是Little Endian,应该修改如下。我的想法错了吗? 小端案例: //out1 = ((q63_t)inA1 * inB1) >> 32; //out2 = ((q63_t)inA2 * inB2) >> 32; //out3 = ((q63_t)inA3 * inB3) >> 32; //out4 = ((q63_t)inA4 * inB4) >> 32; out1 = ((q63_t)inA1 * inB1); out2 = ((q63_t)inA2 * inB2); out3 = ((q63_t)inA3 * inB3); out4 = ((q63_t)inA4 * inB4); out1 = __SSAT(out1, 31); out2 = __SSAT(out2, 31); out3 = __SSAT(out3, 31); out4 = __SSAT(out4, 31); //*pDst++ = out1 << 1U; //*pDst++ = out2 << 1U; //*pDst++ = out3 << 1U; //*pDst++ = out4 << 1U; |
|
相关推荐
1个回答
|
|
你仍然没有考虑分数。 让我们举一个小数的简单例子,小数分隔符后的精度为一位小数:A=0,2; B=0,3。乘法结果为 C=0,06。如果我们再次将分辨率降低到分隔符后的一位小数,我们将得到 C=0,0。请注意,因为它是分数,所以正确的数字是我们需要删除的数字。同样在这种情况下,我们忽略了正确的舍入,只是删除了额外的数字。而且,顺便说一句,原始代码也没有进行舍入。 现在,让我们以您的示例为例,但将其简化为(以 ARM 的表示法)Q7/Q15 数据类型。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2632 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3607 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:19 , Processed in 1.080793 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号