470 likes | 703 Views
DSP 实验讲稿. 上海理工大学光电学院. 实验目的及意义 实验任务分析 程序结构说明 实验工具介绍 帮助获取方法 实验进程安排 考核办法. 实验目的及意义. 掌握 DSP 芯片汇编语言开发过程 熟悉 TMS320C240x 的指令集 熟悉 CCS 仿真环境 培养综合编程能力. 实验任务分析. 六个实验选项 其中前五个实验属于每位同学必须完成的基本实验; 实验内容 5 属于一般难度的实验,评分在 0~80 分; 实验内容 6~9 是有较高难度的实验,评分范围在 0~100 分。 同学可在内容 6 ~9 之中自行选择一个来完成。. 四选一.
E N D
DSP 实验讲稿 上海理工大学光电学院
实验目的及意义 • 实验任务分析 • 程序结构说明 • 实验工具介绍 • 帮助获取方法 • 实验进程安排 • 考核办法
实验目的及意义 • 掌握DSP芯片汇编语言开发过程 • 熟悉TMS320C240x的指令集 • 熟悉CCS仿真环境 • 培养综合编程能力
实验任务分析 • 六个实验选项 • 其中前五个实验属于每位同学必须完成的基本实验; • 实验内容5 属于一般难度的实验,评分在0~80分; • 实验内容6~9是有较高难度的实验,评分范围在0~100分。 • 同学可在内容6~9之中自行选择一个来完成。
四选一 实验内容 • 集成开发环境CCS基础 • 软件延时程序编程及调试 • 定点数除法编程及调试 • 可屏蔽中断的编程及调试 • 浮点数的定点表示 • 交通灯控制 • 步进电机控制 • 信号发生器设计 • 滤波器设计
集成开发环境CCS基础 • 通过创建一个简单的应用工程,初步熟悉CCS的使用和基本的程序调试运行过程。 • 了解TMS320C240X系列汇编语言程序的基本格式,以及编译、连接的基本过程。 • 一个完整的DSP程序至少包含三个部分:程序代码、头文件、链接配置文件(*.cmd)。
软件延时程序编程及调试 • 编写一个软件延时程序。延时时间为4秒钟。在所给的实验代码中加入部分语句实现该功能。该实验箱所用的输入时钟为10MHz,由外部时钟芯片提供。可以对通过对系统控制和状态寄存器SCSR1的设置改变系统的时钟频率。
定点数除法编程及调试 • 除法运算的原理 1.除法运算的过程 TMS320系列的指令集中没有提供除法指令,为了实现除法运算,需要编写除法子程序。二进制除法是乘法的逆运算。乘法包括一系列的移位和加法,而除法可以分解为一系列的减法和移位。
开始 求被除数和除数的乘积并保存该乘积 保存被除数,求被除数和除数的绝对值 用SUBC指令和RPT指令求16位正数除法并保存商和余数 否 乘积为正? 求“0-商”并保存结果 是 否 被除数为正? 求“0-余数”并保存结果 是 返回 定点数除法编程及调试 2.除法运算的流程 有符号数除法运算的流程图如下:
可屏蔽中断的编程和调试 • 本实验要求用通用定时器1产生4s的延时。产生4s的延时功能用定时器1的周期中断来实现,该周期中断由2级中断INT2来控制。 • DSP的中断为两级中断管理方式,故而需要清除的中断标志位除了下级中断源(此实验中为T1PR)自身的中断标志位(在寄存器EVAIFRA中)外,还需要清它对应的上级中断(DSP共有六个上级中断INT1~INT6,T1PR挂在INT2下面)的标志位(上级中断的标志位在寄存器IFR中)。
定点小数算术运算程序设计 • 数的定标即指人为确定小数位置,以便实现定点运算。 • 方法 • Q表示法 • S表示法 • 定点数xq与浮点数x的换算方法 • 公式 • 例题
例1:将浮点数0.5表示为Q=15的定点数。 • 解: • 例2:求定标Q=8表示的定点二进制数0000,0010,1010,0000对应的浮点数。 • 解:先求Q8格式二进制数对应的定点数xq; • 再求对应的浮点数x。
bit15 bit14~bit13 bit12~bit0 bit15 bit14~bit13 bit12~bit0 0 1 01 10 1,0000,0000,0000 1,0000,0000,0000 • 例1:将浮点数1.5表示为Q=13的定点数。 • 解: • 转化为16进制表示为:3000H • 例2:将浮点数-1.5表示为Q=13的定点数。 • 解:先求1.5对应的定点数xq =12288; • 1.5对应的十六进制表示为3000H; • 求其 补码:D000H
bit15 bit14~biti bit(i-1)~bit0 S (int) (float) • TMS320C24X系列DSP芯片的小数表示 • 定点乘法 • 纯小数×纯小数(Q15×Q15) • 纯整数×纯整数(Q0×Q0) • 混合乘法 • 定点加法 • 定点除法
纯小数乘纯小数 • 分析 • Q15×Q15=Q30 • 乘积中有两个符号位,30位小数。故需左移去除多余的符号位,并且只需保留15位小数即可满足精度要求。 • 例题:假设当前数据页的DP1和DP2两单元中分别存放两个乘数,乘积结果存入ANS单元。 LT DP1 MPY DP2 PAC SACH ANS,1
纯整数×纯整数 • Q0×Q0= Q0 • 乘积有两位符号位,30个整数位和0个小数位。 • Si.j×Sm.n=S(i+m),(j+n) • 此类乘法中,既要满足数值的表示范围要求又要保证乘积结果的精度足够,故需编程者预先估计运算结果的大致范围。 混合乘法
Q13×Q13 • S2.13×S2.13=S(2+2),(13+13)= S4,26 • 取S4,11即可,对乘积左移一位去除多余的符号位,然后保留高16位即可 LT DP1 MPY DP2 PAC SACH ANS,1
定点加法 • 相加的两数必须采用相同的Q点表示。 • 加法结果保存位数的确定需根据和的范围和精度的要求来定 • 保留32位结果 LACC DP1 ADD DP2 SACH ANSH SACL ANSL • 保留16位结果 LACC DP1,15 ADD DP2,15 SACH ANS
定点除法 • 设计一个子程序求解有符号定点数的除法(分子小于分母)。设:被除数放在MUNERA中,除数放在DENOM中,商放在QUOT中。 DIV: LT NUMERA SACL QUOT MPY DENOM LACC TEMSGN PAC BCND B1,GEQ SACH TEMSGN LACC QUOT LACC DENOM NEG ABS SACL QUOT SACL DENOM B1: RET LACC NUMERA ABS RPT #15 SUBC DENOM
设计一个子程序求解指定商精度为Q FRAC 的有符号定点数的除法。设:被除数放在MUNERA中,除数放在DENOM中,商放在QUOT中。 DIV: LT NUMERA RPT FRAC MPY DENOM SUBC DENOM PAC SACL QUOT SACH TEMSGNLACC TEMSGN LACC DENOM BCND B1,GEQ ABS LACC QUOT SACL DENOM NEG LACC #15 SACL QUOT ADD FRACB1: RET SACL FRAC LACC NUMERA ABS
交通灯控制 • 要求: 初始状态为南北向红灯,东西向绿灯; 4秒以后, 南北向黄灯,东西向绿灯闪动; 1秒以后,南北向绿灯,东西向红灯; 4秒以后,南北向绿灯闪动;东西向黄灯; 1秒以后,南北向红灯,东西向绿灯。 如前循环20秒之后,进入夜间模式,两向均为黄灯闪动。
分析 • 时间控制(4秒通行、1秒过渡、闪动频率控制) • 软件延时 该实验箱用10MHZ外部时钟芯片给LF2407提供时钟,且使能LF2407片上 PLL电路。 PLL倍频系数由系统控制和状态寄存器SCSR1的bit11~9控制。上电复位时,该三位为111,即2分频。 • 定时器延时 • 交通灯控制 • 交通灯控制口地址:0x8000(扩展总线存储空间映射的数据空间) • 该控制口所属数据页地址确定:4M×16-位的扩展总线存储空间分为128个32K×16-位的存储空间页, 7位页地址由扩展总线存储器空间页地址寄存器(映射在IO空间的0x0020,只写),页地址取1110,0000
步进电机控制 • 要求: 步进电机以每分钟30转的转速,先以四相四拍的方式正转两圈,然后停转1秒,再以四相八拍方式反转两圈后停止。
分析 • 电机转动控制 • 转速:写入控制口的数据间的时间间隔,每写入一个数据,电机转动一个步距角(全步)或1/2个步距角(半步) • 转动方向:写入控制口的数据顺序 • 转动圈数:写入控制口的数据的总个数(次数) • 电机转动控制口 • 步进电机的控制口地址: 0x8001(为扩展总线存储空间映射的数据空间) • 扩展总线存储器空间页地址寄存器:映射在IO空间的0x0020(只写),页地址取1110,0000
波形发生器设计 • 要求:编写程序段,通过实验箱上的DAC7724产生方波、三角波及正弦波。 • 方波:根据方波周期值软件延时 • 三角波:逐次加一再逐次减一 • 正弦波:查表法 • 利用串口连接PC上设置界面 • 利用DAC7724输出波形 • 使用示波器观察波形
寄存器及指令 • 中断设置 • EVA中的定时器T1设置 • 串行口SCI设置 • 动态显示指令DMOV • cmd文件理解 • 表格查找方法及TBLR使用
使用滤波器进行信号分析 • 使用CCS的GRAPH观察输入信号x (n) 波形时域图及频域图 • 使用MATLAB或其它高级语言产生滤波器系数h(n) • 使用DSP完成滤波操作,提取需要信号y(n)
使用CCS的GRAPH观察输入信号x(n) 波形时域图及频域图 • 打开CCS2000并按照指导书步骤装载数据; • View-graph Time/Frequency… • 设置相关参数
使用MATLAB或其它高级语言产生滤波器系数h(n) • 根据观察结果,确定提取信号不同频率分量所需要的截至频率; • 按照指导书所给的方法产生滤波器系数h(n)并保存为.dat文档; • 注意:由于DSP不能直接接受小数,所以必须人为将小数转换为定点小数。转换的主要依据为定浮点转换公式:
使用DSP完成滤波操作,提取需要信号y(n) • 根据指导书,合理安排存储空间,确定h(n)和x(n)及y(n)的存储空间; • 按照下式求输出序列: • 注意乘累加指令对操作数的存储空间要求 MACD pma, ind[,ARn]
编译调试程序,成功后运行程序。 • 观察结果信号波形。
注意: • 本设计要求能够随意提取输入信号的任意频率分量,因此,需准备多种滤波器系数。 • 设计难点在于: • 滤波器系数生成; • 存储空间的合理安排; • 通过GRAPH读图。
程序结构说明 • 三种格式的文件 • 头文件(F2407REGS.h)提供 用如下命令在汇编语言文件中直接调用 .include “F2407REGS.h” ;引用头部文件 • 命令文件(.cmd) 提供参考(附录Ⅰ) • 汇编语言文件(.asm)自编 • 头文件 • 定义DSP系统的寄存器映射地址或常用变量 • 本实验可能用到的相关寄存器
实验工具介绍 • SEED-DTK APD 实验箱
菜单条 存储 器窗 口 工 程 文 件 断 点 当前 程序 执行 点 命令窗口 输出窗口 CCS调试界面
帮 助 获 取 方 法 • 关于LF2407的帮助 • 查找文件 TMS320LF/LC240xA DSP Controllers System and Peripherals Ref • 关于CCS 的帮助 • 查找文件:Code Composer Studio Getting Started Guide (Rev. D)
考核办法 • 平时成绩 30% • 程序设计 20% • 答辩 30% • 系列实验设计说明书 20%