十进制小数转二进制并导入DSPTMS320C6678

已成功将现有传感数据导入到DSP端,其导入过程思想如下:
十进制小数转二进制并导入DSPTMS320C6678_第1张图片
A、
首先,通过对传感数据的观察,如上图所示,可以看出,这些数据是绝对值小于1的有符号小数;并且,其小数点的位置是不发生变化的,所以可采用定点小数来表示。且在DSP中,定点小数运算,实际上就是用整数来进行小数运算。

B、
然后,简单介绍定点小数十进制转二进制的规则:
x表示实际的数,q表示它的Qn型定点小数。其中n为小数点之后的二进制位数,
例0 111 . 11111,则n=5。
则转换公式为:

例n=4,则

此时,可得出定点小数的±*/算法:
假设q1,q2,q3表达的值分别为x1,x2,x3

q3 = q1 + q2 若 x3 = x1 + x2

q3 = q1 - q2 若 x3 = x1 - x2

q3 = q1 * q2 / 2^n若 x3 = x1 * x2

q3 = q1 * 2^n / q2若 x3 = x1 / x2

因为/ 2^n和* 2^n可以简单的用移位来计算,所以定点小数的运算比浮点小数要快得多。

例:用Q12来计算2.1 * 2.2,先把2.1,2.2转换为Q12定点小数:

2.1 * 2^12 = 8601.6 = 8602

2.2 * 2^12 = 9011.2 = 9011

(8602 * 9011) >> 12 = 18923

18923的实际值是18923/2^12 = 4.619873046875 和实际的结果 4.62相差0.000126953125,误差很小。
C、具体实现结果:
传感数据在matlab中的处理流程如图所示,最终会将十六进制的传感数据存储到.dat文件中,然后导入DSP。
十进制小数转二进制并导入DSPTMS320C6678_第2张图片
在matlab中将数据转换为二进制时,结果如图(a)所示;将数据导入DSP后,结果如图(b)所示。
十进制小数转二进制并导入DSPTMS320C6678_第3张图片
图(a)
十进制小数转二进制并导入DSPTMS320C6678_第4张图片
图(b)

参考博客:
https://blog.csdn.net/ohhappyday11/article/details/53171341

你可能感兴趣的:(DSP小数运算,十进制小数转二进制,dsp,定点,基础)