下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字信号处理器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。图1Q数圆的定义与数据的分布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)=3FFFhC001=-16383×2-15=-0.499969例5:R=1.999756,需要转换成为Q13格式,则,Q15=R×2m=1.999756×213=16382=3FFEh例6:Q13格式的数C002,需要转换成为实数真值,C002补码(取反加1)=3FFEhC002=-16382×2-13=-1.999756R=-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=18000000h(Q30格式)18000000h>>右移15位=3000h3000h=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格式)=8002000h(Q28格式)8002000h>>右移13位=4001h≈4000h4000h=16384×2-15=0.5;6.Q数的除法:DSP没有专门的除法指令,Q数的除法由于本质上,是采用减法运算,因此必须采用相同的Q格式。减法一般采用下列算法实现: lacc 被除数,12 rpt #15(减法进行15+1=16次) subc 除数采用正数相除,其具体过程如下:程序指针+1,然后执行下列步骤;(ACC)–[(数据空间地址)215]→ALUoutput(算术逻辑)IfALUoutput≥0Then(ALUoutput)2+1→ACCElse(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位后,为8000000h,3000h重复15次SUBC指令后,即左移E后,ACC值为C000000,与8000000h相减后大于零,则减法结果×2+1=新值8000001重新放入累加器ACC中,重复16次,ACC值与8000000h相减后大于零,则新的减法结果×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个脉冲图21000线旋转编码器的旋转编码器,其具有三根输出线QEP_A、QEP_B、Z(零位指示QEP_index),其输出波形参见图3,图3旋转编码器波形输出在该图中,前半周中,QEP_A超前QEP_B90度,电机正转,在后半周中,QEP_A滞后QEP_B90度,电机反转。文件名: 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;子程序调用;.ref polepairs,cal_angle,mech_scale ;输入值;.ref theta_elec,theta_mech,dir_QEP ;输出值;;.ref QEP_INDEX_ISR_DRV ;子程序调用;.ref index_sync_flg,QEP_cnt_idx ;输出值;---------------------------------------------------;标号定义;---------------------------------------------------.def QEP_THETA_DRV,QEP_THETA_DRV_INIT;子程序调用.def polepairs,cal_angle,mech_scale ;输入.deftheta_elec,theta_mech,dir_QEP ;输出.def QEP_INDEX_ISR_DRV;子程序调用.def index_sync_flg,QEP_cnt_idx;输出;-------------------------------------------;相关外围变量定义;-------------------------------------------.include "x24x_app.h";---------------------------------------;变量定义;---------------------------------------theta_elec .usect"qep_drv",1给未初始化的变量开辟空间theta_mech .usect"qep_drv",1dir_QEP .usect"qep_drv",1polepairs .usect"qep_drv",1QEP_cnt_idx .usect"qep_drv",1cal_angle .usect"qep_drv",1index_sync_flg .usect"qep_drv",1mech_scale .usect"qep_drv",1theta_raw .usect"qep_drv",1;---------------------------------------------------;参数设置;---------------------------------------------------POLEPAIRS_ .set 2 ;极对数CAL_ANGLE_ .set 0 ;编码器偏角MECH_SCALE_ .set 16776 ;转换系数0.9999/Total_count(Q26)1/4000*226=16776;(total_count=4*编码器线数);---------------------------------------------;初始化程序(角度计算);---------------------------------------------------QEP_THETA_DRV_INIT:ldp #polepairsSPLK #POLEPAIRS_,polepairssplk #CAL_ANGLE_,cal_angleSPLK #MECH_SCALE_,mech_scaleldp #OCRA>>7加载页面,右移7位去掉直接寻址的偏移量,仅保留9位数据页指针lacl OCRA;OCRA=MCRAor #00111000bsacl OCRA;配置I/O口为QEP方式ldp #T2PER>>7;加载页面,右移7位去掉直接寻址的偏移量,仅保留9位数据页指针SPLK #0FFFFh,T2PER ;兼容'240/24x/240x'SPLK #1001100001110000b,T2CON ;定向增减计数,不分频,src=QEPSPLK #1111000000000100b,CAPCON ;Tmr2,CAP3使能计算0度起始位posedge,enbl ;|||||||||||||||| ;5432109876543210RET;--------------;角位置计算程序;----------------QEP_THETA_DRVldp #GPTCON>>7;加载页面,右移7位去掉直接寻址的偏移量,仅保留9位数据页指针lacc GPTCON,2第14位是编码器计数方向,只读信号,1为增加计数,0为减计数;and #1,16 ;获取计数方向信号ldp #dir_QEP ;sach dir_QEP ;保存方向信号ldp #T2CNT>>7 ;读取脉冲计数值lacc T2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁合金转炉冶炼工岗位环保责任制考核试卷含答案
- 轮轴装修工岗前知识评估考核试卷含答案
- 高尔夫球童岗前创新意识考核试卷含答案
- 焊材配拌粉工常识评优考核试卷含答案
- 罐头杀菌工岗位安全知识考核试卷含答案
- 普通研磨工班组安全水平考核试卷含答案
- 工业车辆维修工岗前工作实操考核试卷含答案
- 人教版二年级上学期数学第一次月考预测卷以及答案
- e化阶段试题及答案
- 河南三门峡市2025-2026学年八年级下学期期末考试生物试题(含答案)
- 性病论文开题报告
- 电力系统分析 第2版 习题答案 1-4章
- 沙漠光伏项目-施工组织设计方案
- DL-T+5196-2016火力发电厂石灰石-石膏湿法烟气脱硫系统设计规程
- 建筑物外墙清洗维护投标方案
- 数学绘本汪汪的生日派对
- substance painter2.1.0基本使用方法
- 正式赛题-生活-为老年人摆放轮椅坐位并协助进餐评分标准-2023年全国职业院校技能大赛赛项正式赛卷
- 真空皮带过滤机技术协议
- 铁道概论PPT全套完整教学课件
- 卫风·氓专业知识讲座
评论
0/150
提交评论