数字信号处理器DSP补充讲义

阅读: 评论:0

数字信号处理器DSP补充讲义
一、Q数的定义与四则运算
1. Q数的定义
对于16位的DSP而言,Q数定义共有16种,其简化写法分别是Q15、Q14、Q13、Q12、Q11、Q10、Q9、Q8、Q7、Q6、Q5、Q4、Q3、Q2、Q1、Q0,其数学含义可以在其标准定义中更加明确,分别应当是:Q1.15、Q2.14、Q3.13、Q4.12、Q5.11、Q6.10、Q7.9、Q8.8、Q9.7、Q10.6、Q11.5、Q12.4、Q13.3、Q14.2、Q15.1、Q16.0,即标准形式为Qn:m其数学意义是Q数的最大整数的绝对值≤2n-1;例如Q15其整数位小于等于1;Q14的整数位小于等于2;Q13的整数位小于等于4;…Q1的整数位小于等于16384;Q0的整数位小于等于32768。其最大整数位数是n位。小数位的最小刻度为=2-m,由m位二进制数表示。 例如:Q15小数位的最小刻度为=2-m=2-15=3.0518×10-5,Q14小数位的最小刻度为=2-m=2-14=6.1035×10-5, …Q1小数位的最小刻度为=2-m=2-1=0.5。
2. Q数圆
对于16位的DSP,如果是有符号数,则,可以表示为图1所描绘的Q数圆,Q数圆在整个圆周上分布有216=65,536个数据点,每一个数据点,都具有唯一性。Q数圆的起始点为0000,其在该圆的垂直轴线的正上方;Q数圆的右半圆为正数,其最大值顺时针旋转,在该圆的垂直轴线的正下方右边第一个点,其16进制的数值为7FFF,但是,其对于不同的Q数,其真值是不同的,例如:7FFF对于Q15格式,其代表的数值是0.9999695,但是,其对于Q13格式,其代表的数值是3.9999。
图1 Q数圆的定义与数据的分布
Q数圆的左半圆为负数,其起始点为FFFF为补码格式, 在该圆的垂直轴线的正上方左边第一个点,其真值在Q15格式时为-3.0518×10-5,其原码是8001,与正数0001呈现垂直轴Y轴对称。其最小值为逆时针旋转,在该圆的垂直轴线的正下方的点,其16进制的数值为8000为补码格式,但是,其对于不同的Q数,其真值是不同的,例如:8000对于Q15格式,其代表的数值是-1,但是,其对于Q13格式,其代表的数值是-4。
宝石饰品
3.实数的真值与Q数的转换方法:
在DSP的实际运算中,实数需要根据其大小和位数转化为相应的Q数,方可以作为常数,写入到程序中,其转换的办法需要遵循下列公式:
假定实数的真值为R,其需要转换的Q数值为Qm,m=0,1,2…15。
Qm=R×2m                              (1)
例1:R=0.5,需要转换成为Q15格式,
则,Q15= R×2m=0.5×215=16384=4000h
例2:车辆检测系统R=-0.5,需要转换成为Q15格式,
则,Q15= -R×2m=-0.5×215=-16384=-4000h(原码)
需要转换为补码(取反加1):
-4000h=BFFF(反码)=C000(补码)
在DSP的实际运算中,Q数也需要根据其大小和位数转化为相应的实数真值,其转换的办法需要遵循下列公式:
假定Q数值为Qm,m=0,1,2…15,其需要转换的实数的真值为R。
R=Qm×2-m                            (2)
例3:Q15数的3FFF转换为实数真值
3FFFh=16383×2-15=0.499969
例4:Q15数的C001转换为实数真值
C001补码(取反加1)=3FFFh
C001=-16383×2-15=-0.499969
例5:R=1.999756,需要转换成为Q13格式,
则,Q15= R×2m=1.999756×213=16382=3FFEh
例6:Q13格式的数C002, 需要转换成为实数真值,C002补码(取反加1)=3FFEh
C002=-16382×2-13=-1.999756
R=-1.999756
显然,Q数圆的16位数在几何空间上是确定和唯一的,但是,在16位数相同的情况下,Q数值不同,则实数的真值不同。
4. Q数的加减法:
Q数的加减法的规则必须遵循相同阶数的Q数可以相加减的原则,不同阶数的Q数相加减,必须转换成为阶数相同的Q数,即必须遵循小数点对齐的原则。
Q1m±Q2m=Qm                          (3)
例7:假定有两个正实数,其值分别为:0.125,与0.375,其和为0.5,现在采用分别转换为Q15格式,然后相加。
0.125=0.125×215=1000h(Q15格式);
0.375=0.375×215=3000h(Q15格式);
1000h+3000h=4000h=16384×2-15=0.5
例8:假定有两个实数,其值分别为:-0.125,与0.5,其和为0.375,现在采用分别转换为Q15格式,然后相加。
-0.125=-0.125×215=F000h(Q15格式);
0.5=0.5×215=4000h(Q15格式);
F000h+4000h=3000h=12288×2-15=0.375;
例9:假定有两个实数,其值分别为:-0.125,与-0.5,其差为0.375,现在采用分别转换为Q15格式,然后相加。
-0.125=-0.125×215=F000h(Q15格式);
-0.5=-0.5×215=C000h(Q15格式);
F000h-C000h=3000h=12288×2-15=0.375;
5. Q数的乘法:
Q数的乘法允许不同阶数的Q数相乘,但是,乘法运算后,其阶数发生变化,新阶数为两个Q数阶数之和,为了得到原来格式的Q数,一般需要右移合适的位。其公式如下:
Qm1×Qm2=Qm1+m2                            (4)
一般右移m1、m2或需要的数位
Qm1+m2 >>m1或m2                        (5)
例10:假定有两个实数,其值分别为:0.5,与0.75,其乘积为0.375,现在采用分别转换为Q15格式,然后相乘。
0.75=0.75×215=6000h(Q15格式);
0.5=0.5×215=4000h(Q15格式);
6000h×4000h=1800 0000h(Q30格式)
1800 0000h>>右移15位=3000h
3000h=12288×2-15=0.375;
例11:假定有两个实数,其值分别为:2.5,与0.2,其乘积为0.5,现在采用分别转换为Q13与Q15格式,然后相乘,再移位成为Q15格式数。
2.5=2.5×213=20480=5000h(Q13格式);钢铁清洗剂
0.2=0.2×215=199Ah(Q15格式);
5000h(Q13格式)×199Ah(Q15格式)
=800 2000h(Q28格式)
800 2000h>>右移13位=4001h≈4000h
4000h=16384×2-15=0.5;
6. Q数的除法:
DSP没有专门的除法指令,Q数的除法由于本质上,是采用减法运算,因此必须采用相同的Q格式。减法一般采用下列算法实现:
    lacc    小型干扰芯片被除数,12
    rpt        #15  (减法进行15+1=16次)
    subc    除数
采用正数相除,其具体过程如下:程序指针+1,然后执行下列步骤;
(ACC) – [(数据空间地址)⋅215]ALU output(算术逻辑)
If ALU output0
Then (ALU output) ⋅2 + 1ACC
Else (ACC) ⋅2 ACC
废液处理共执行条件减法指令16次,则累加器的低16位存储的是除法的商,累加器的高16位存储的是除法的余数
假定两个正的Q0数,分别为41(被除数),7(除数),执行除法后,其结果如下:
商为9存放在累加器的低位,余数为2存放在累加器的高位。
例12:假定有两个正实数,其值分别为:0.375,与0.125,除法后,其商为3,现在采用分别转换为Q15格式,然后相加。
0.375=0.375×215=3000h(Q15格式);
0.125=0.125×215=1000h(Q15格式);
3000h/1000h=0003h
除数1000h左移15位后,为800 0000h,3000h重复15次SUBC指令后,即左移E后,ACC值为C00 0000,与800 0000h相减后大于零,则减法结果×2+1=新值800 0001重新放入累加器ACC中,重复16次,ACC值与800 0000h相减后大于零,则新的减法结果×2+1=新值0003重新放入累加器ACC中,则商为0003h。
思考题:
1)请将两个实数±0.33333转换成为Q15格式;
2)请制作一个256 点0-360度正弦表,数据格式为Q15,SIN数值范围 -1 < N < +1。
点的编号为:  0,1,2…256,
角度的数值为:0,1.41,2.81,4.22, …358.59,0
步距为1.41度。
注意SIN数值的负数表示方法。
3)请制作一个90点90-180度余弦表,数据格式为Q15,COS数值范围 -1 < N <0。
点的编号为:  0,1,2…90,
角度的数值为:
90,90+1.41,90+2.81,90+4.22, …180
步距为1.41度。
二、旋转编码器与捕获单元
1.旋转编码器的背景知识:
自动钎焊设备旋转编码器是一种测量角度和速度的光栅和光电转换传感器。图2是一种旋转一圈发1000个脉冲
图2 1000线旋转编码器
的旋转编码器,其具有三根输出线QEP_A、QEP_B、Z(零位指示QEP_index),其输出波形参见图3,
图3 旋转编码器波形输出
在该图中,前半周中,QEP_A超前QEP_B 90度,电机正转,在后半周中,QEP_A滞后 QEP_B 90度,电机反转。
文件名:    qep_drv.asm
; 模块名:    QEP_THETA_DRV
; 初始化程序名: QEP_THETA_DRV_INIT
;; 同步程序: QEP_INDEX_ISR_DRV
; 功能:    通过编码器脉冲信号测算转子位置和旋转向。
; QEP_THETA_DRV: 通过编码器脉冲信号计算转子位置
; QEP_INDEX_ISR_DRV: 利用编码器零标记信号同步T2计数器
;------------------------------------------
; 全局变量声明
;------------------------------------------
;(要调用模块,就将下面声明语句复制到主程序代码中相应位置)
;.ref    QEP_THETA_DRV,QEP_THETA_DRV_INIT; 子程序调用

本文发布于:2023-07-31 02:45:11,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/199258.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:转换   编码器   格式   需要   实数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图