




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSP编程基础 厦门大学通信工程系 主要内容 汇编指令集 软件开发工具 定点算法设计 DSP汇编程序优化 小结 简单DSP程序设计 汇编指令集 指令系统概述 指令集的符号和缩写 指令系统的操作符 指令系统的汇编语法 语法 操作数 机器码 执行结果 状态位的影响 指令字长 指令执行的周期数 单指令重复执行情况 流水线冲突情况 汇编指令集 指令的分类 算术运算指令 逻辑运算指令 程序控制操作指令 加载和存贮操作指令 算术运算指令 加法指令 ADDSmem srcsrc src Smem 减法指令 乘法指令 SUBSmem TS srcsrc src Smem TS MPYXmem Ymem dstdst Xmem Ymem T Xmem 乘加和乘减指令 MACSmem srcsrc src T Smem 算术运算指令 续 双字指令 特殊应用指令 ABSsrc dst dst src 逻辑运算指令 逻辑与指令 ANDSmem srcSrc src Smem 逻辑或指令 异或指令 ORSmem srcsrc src Smem XORSmem srcSrc src Smem 移位指令 ROLsrc累加器带进位位循环左移 测试指令 BITXmem BITCTC Xmem 15 BITC 程序控制操作指令 跳转指令 BACC D srcPC src 15 0 调用指令 中断指令 返回指令 RET D PC SP 程序控制操作指令 续 重复指令 RPTSmem重复执行单条指令 RC Smem 堆栈操作指令 其它程序控制指令 加载和存贮操作指令 加载指令 DLDLmem dstdst Lmem 存储指令 条件存储指令 并行加载和存储指令 STsrc Ymem LDXmem dst 加载和存贮操作指令 续 并行加载和乘法指令 LDXmem dst MACYmem dst 并行存储和加 减指令 并行存储和乘法指令 其它存储和加载指令 MVDDXmem YmemYmem Xmem STsrc Ymem ADDXmem dst STsrc Ymem MACXmem dst 加载和存贮操作指令 续 存储器 寄存器mvdkldsmem Tltd mvmd 寄存器 存储器mvkdstsmem Tmvdm条件存储 存储器 累加器ld ldureada 累加器 存储器sth stlwritea 寄存器 累加器ldm 累加器 寄存器stlm 加载和存贮操作指令 续 存储器 存储器mvddmvpdmvdpreadawritea 寄存器 寄存器mvmm IO读写portrportw 指令的重复执行 在重复执行时可以变成单周期指令的多周期指令 FIRS对称FIR滤波MACD带延时乘并送结果到累加器MVDK把数据存储器中的数据送到另一个数据存储器READA从程序存储器中读数并送到数据存储器 不能重复执行的指令 ADDM加长常数到数据存储器B D 无条件跳转CALA D 调用累加器所指向的地址 子程序 软件开发工具 DSP代码的组织结构 段的概念 三个默认的段 初始化段 这些段内的数据都需要初始化 使之内容确定 一般用作程序代码段和数据表格段 如 text和 data段未初始化段 不需要初始化的数据段 如 bss text段 通常包含程序代码 data段 通常包含需要初始化的数据 bss段 通常包含不需要初始化的数据 段的两种基本类型 DSP代码的组织结构 续 编译器对段的处理 创建初始化段 bsssymbol sizeinwords blockingflag alignmentflag symbol usect sectionname sizeinwords blockingflag alignmentflag text value data value sect sectionname value 创建未初始化段 DSP代码的组织结构 续 连接器对段的处理 把目标文件的段作为输入 将它们连结起来成为可执行的输出段 为输出段选择存储器地址 命令 MEMORY和SECTIONSMEMORY 定义一段可用的物理存储区SECTIONS 定义逻辑段与存储器物理分配的对应关系 DSP代码的组织结构 续 MEMORY PAGE0 name1 attr origin cnst length cnst fill cnst PAGE1 namen attr origin cnst length cnst fill cnst 连接器对段的处理 续 attr 定义存储区的属性 包括 R W X I SECTIONS name property property name property property DSP代码的组织结构 续 连接器对段的处理 续 property 指定段的内容和分配位置 包括 加载存储区分配 load 存储区 存储区 存储区运行存储区分配 run 存储区 run 存储区输入段 输入段 DSP代码的组织结构 续 MEMORY和SECTIONS用法示例 MEMORY PAGE0 VEC origin 0080h length 0080h PAGE0 ROM origin 0100h length 0F00h PAGE1 RAM origin 1000h length 1000h SECTIONS text load ROM const load ROM bss load RAM vectors load VEC file1 obj intvec1 file2 obj intvec2 DSP代码的组织结构 续 程序的重新定位 经过逻辑段和存储器物理实现映射后 给定段适当的起始地址 调整符号值 相对地址 与新的段地址相适应 调整重新定位后符号的参考值以反映调整后的符号值 运行的重定位 代码加载到存储器的一个区域而在另一个区域运行 DSP代码的组织结构 续 外部符号 def在当前段中定义而在另一个段中引用 ref在当前段中引用而在另一个段中定义 global可以是包括前述两种情况 汇编器 处理汇编语言源文件中的源语句 产生一个可重新定位的目标文件 根据要求 产生源程序列表文件 并提供对源程序列表文件的控制 将代码分为段 section 并为每个目标代码段设置一个SPC 定义和引用全局符号 根据要求 将交叉引用列表加到源程序列表中 汇编条件块 支持宏调用 允许在程序中或在库中定义宏 汇编器 续 汇编器的命令行格式 asm500 inputfile objectfile listingfile option i指定路径 q不输出工作过程中的进度信息 g使能符号调试功能 s把所有定义的符号放在目标文件的符号表格中 l产生列表文件 v确定芯片型号 常用汇编器选项 C编译器 C编译器命令行格式 cl500 options filenames z link options objectfiles o0优化寄存器的使用 o1局部优化 o0 o2 o全局优化 o1 o3文档优化 o2 常用C编译器选项 z表示连接使能 连接器 按照目标系统需要给存储器分段 对符号和段重新定位 确定最后的地址 确定输入文件之间未定义的外部参考 连接器的任务 连接器 续 连接器的命令行格式 lnk500 options filename1 filenamen a产生绝对的可执行代码 ar产生可重新定位的可执行代码 eglobal symbol定义一个全局符号用以指定输出模段的入口 idir指定库文件的搜索路径 mfilename产生存储器映像文件 ofilename命名可执行输出模段 r产生可重新定位的输出代码 s从输出模块中去除符号表信息和行号入口 stacksize为C系统设置堆栈大小 常用连接器选项 归档器 归档器的命令行格式 ar500 command option libname filename1 filenamen a将指定的文件加到库中 d从库中删除指定的成员 r替换库中指定的成员 t打印库内容的表格 x提取指定的文件 常用归档器命令 代码转换器 公用目标文件格式COFF 二进制目标文件格式 hex转换器将COFF文件转换成几种标准ASCII十六进制的格式 ASCII Hex 支持16位地址 扩展的Tektronix Tektronix IntelMCS 86 Intel MotorolaExorciser Motorola S 支持16位 24位和32位地址 TexasInstumentsSDSMAC TI Tagged 支持16位地址 代码转换器 续 hex转换器的命令格式 hex500 options filename a选择ASCII Hex格式 memwidthvalue定义系统存储器字长宽度 romwidthvalue说明ROM设备宽度 boot将所有段转换成可自举格式 bootorgvalue说明自举加载表的源地址 转换器常用选项 定点算法设计 数据的表示形式 DSP的数据表示法 数据浮点表示形式c的数值有变化 需存储xm和c 数据定点表示形式c的数值固定 只需存储xm 定点算法设计 定点数据形式 Qxx或x yxx和y表示小数位数 x y表示为字长信息 例 0 2345的16位整数表示 Q15 Q17 定点算法设计 两种表示下的数学运算 定点表示 加减时 要求两个操作数是同一种Qxx格式乘法时 x1 y1格式乘以x2 y2格式结果为 x1 x2 y1 y2 浮点表示 加减时 首先要进行小数点对齐 即c相同乘法时 各自的xm相乘 c相加 数据的定标步骤 用高级语言仿真整个数据处理过程 确保原理和使用方法算过程的正确 一般采用很高精度的浮点表示 确定数据输入格式和能正确表示结果的最终数据格式 并从后向前逐步选择模块接口所应当采用的数据格式 仍然使用浮点程序 伪定点 细化每个模块中数据格式 以确保结果能达到接口要求 浮点到定点的转换 测试并调整 完成定标 获得定点程序 定点算法设计 定点基本函数示例 shortmpy ss shortopa shortopb shortresult intL product L product int opa int opb 1 15 1 15 2 30 L product L product 15 2 30 15 17 15 result short L product 定点算法设计示例 例 设计以10为底的对数多项式逼近算法 多项式为 其中1 x 2 要求输入输出都为16位表示 步骤1 确定多项式计算方法 迭代计算法 系数表示为 flt a 5 0 0126261 0 0577850 0 1240692 0 2127839 0 4339142 设计相应的浮点算法flt log10 Name flt log10 Description lg x f x 1 where1 x 2 定点算法设计示例 续 doubleflt log10 o doubleflt xm1 i x doubleflt sum inti flt sum 0 0 for i 0 i 5 i flt sum flt sum flt a i flt sum flt sum flt xm1 return flt sum 定点算法设计示例 续 步骤2 分析输入和输出的数据格式 输入定为x 1且使用Q15格式 结果数值位于 0 0 31 中 所以最好使用Q16格式 定点函数原型如下 Name fix log10 Description lg x f x 1 where1 x 2 shortfix log10 o Q16 shortxm1 i x 1 Q15 步骤3 观察多项式的系数 最大为0 4339142 所以数据可统一采用Q16格式 定义系数数组定点形式a 如下 shorta 5 0 x033b 0 xf136 0 x1fc2 0 xc987 0 x6f15 步骤4 将算法定点化 定点算法设计示例 续 intsum i sum 0 for i 0 i 16 xm1 return short sum 16 简单DSP程序设计 例 当前我们需要设计一个程序 它对McBSP中接收进来的信号进行傅立叶频谱分析 并将结果写到某处 而且向后一级设备发送数据准备好的消息 例如将消息写入I O空间的某个地址 第一步 分析任务需求并用高级语言写出软件流程的伪代码 在伪代码的编写中 可以清楚地定义信号的处理机制 并为今后程序的调试和扩展预先留好接口 伪代码中 可以将每一个关键的处理环节用函数 或直接用语言描述 来表示 确定软件的框架 简单DSP程序设计 续 软件流程图 voidmain void DSPInit InitializeDSPchipSystemInit Initializesystemsoftware EnableCorrespondingperipheralsEnable McBSPEnable Interruptdo waitingforenoughdataacquisitionif enoughdata doFouriertransformandSpectrumAnaysisSpectrumAnalysis Send Signal Signaldeviceconnected while 1 return 简单DSP程序设计 续 第二步 根据高级语言伪代码编写主流程的汇编程序 mmregs enablememorymappedregisters defineglobalsymbols globalmain globalSpectrumAnalysis globalSystemInit globalDSPInit text sectionofcodemain ssbxINTM maskingallinterruptsstm STACK ADDR SP setthestackpointcallDSPInit InitializeDSPchipcallSystemInit Initializesystemsoftware EnableCorrespondingperipheralsstm SPSA0 AR3 Enable McBSPst 0 AR3 orm 0 x0001 AR3 rsbxINTM Enable Interrupt waitingforenoughdataacquisitionwait loop bitf DSP state SM ENOUGH DATA testthestatebitnopnopnopbcwait loop NTCxorm SM ENOUGH DATA DSP state clearflag doFouriertransformandSpectrumAnaysiscallSpectrumAnalysis Send Signalld PROCESS READY SIGNAL Aportw AL MESSAGE PORTbwait loopdead loop nopnopnopbdead loop end 简单DSP程序设计 续 第三步 细化主流程程序 按功能编写每一个函数 mmregs globalSpectrumAnalysis textSpectrumAnalysis bitreversere order doFFTcore butter flyalgorithm Spectrmanalysis ret 简单DSP程序设计 续 第四步 完成中断服务程序的编写 sect vectors int reset isrforsoftwareresetbmain Mainprogramnopnop space76 16int brint0 bdBRINT0 ISR jumptoADCreceiveroutinepshmST0pshmST1 space44 16 textBRINT0 ISR pshmAR2addm 1 buf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卸货平台安全培训课件
- 2025年度韩城矿业公司高校毕业生招聘86人笔试参考题库附带答案详解
- 2025年国网宁夏电力有限公司第二批招聘高校毕业生调剂笔试参考题库附带答案详解
- 2025山东威海市乳山鑫蜜客人力资源有限公司招聘书记员7人笔试参考题库附带答案详解
- 2025天津东疆综合保税区管理委员会招聘10人笔试参考题库附带答案详解
- 2025四川长虹新网科技有限责任公司招聘装调工等岗位31人笔试参考题库附带答案详解
- 2025人保财险嘉兴市分公司社会招聘3人(浙江)笔试参考题库附带答案详解
- 2025中国机械工业集团有限公司国机集团总部社会招聘19人笔试参考题库附带答案详解
- 地铁岗前安全培训课件
- 地铁基坑汛期安全培训课件
- 《构成设计基础》全套教学课件
- 项目初步验收汇报
- 2025年山东省济宁市电工等级低压电工作业(应急管理厅)真题(含答案)
- otc药品管理办法
- 康复医学科病历书写规范与质量控制
- 商用厨房设计汇报
- 战术搜索教学课件
- 教科版五年级科学上册第一单元《光》测试卷及答案(含四题)
- Linux操作系统基础任务式教程(慕课版)课件 任务4 使用Linux操作系统中的硬盘
- 自控系统报警管理制度
- 口腔服务5S管理
评论
0/150
提交评论