信息工程毕业论文-dtmf信号编解码器设计及仿真内容摘要:

VkxHLkk 1 6 0 0 0 0 01 6 0 0 0 0]8002c o s)([]8002s i n)([222799027990 据此可解码出 I,J. Xx学院 2020届本科生毕业设计 11 5 C64xx DSP 性能特点 C64xx DSP 硬件结构 C64xx CPU 由 8个 处理单元 ,两个 寄存器组 ,以及两个数据 通道组成。 两个通用 寄 存器 组 ( A组 和 B组 )每 组 包含 32个 32位 的 寄存器,共 64个寄存器。 通 用 寄存器可用于 保存 数据或数据 指针。 支持的数据类型包括 8位 封装的 数据, 16位 封装的 数据, 32位数据, 40位数据, 64位数据。 值大于 32位,如 40位长或 64位长的数据 都储存在 寄存器对中 ,数据 的 32 位最小有效位存 放 在 一个偶数编号的寄存器 中 ,其余的 8或 32位最大 有效位存放 在 下一个 更高编号的寄存器中 ( 这总 是一个奇数 编号的寄存器 )。 C64xx CPU 的 8个 处理 单元 (.M1, .L1, .D1, .S1, .M2, .L2, .D2, and .S2) 每个都能 在 一 个时钟周期内执行一 条 指令 ,一 个时钟周期内 CPU最多可执行八条指令。 M单元 的功能 是执行所有乘法 指令。 S和 L单元 进行 一般的算术,逻辑,和分支 运算。 D单元 主要 功能是从存储器 读取数据 载入寄存器和将寄存器的数据存储 到 存 储器 中 ,还具有部分 算术逻辑 运算能力。 每个 M单 元 每个 指令 周期 可以执一个 32 32 位乘法,一个 16 32 位乘法,两个 16 16 位的乘法, 两个 16 16位的乘法 再 加 /减功能, 四个 8 8 位乘与 加运算 ,和 4个 16 16 乘法与加 /减功能(包括复 数的运算 )。 此外,还支持伽罗华域乘法的 8位和 32位数据。 许多通讯算法 , 如 FFTs和调制解调器需要复杂的乘法。 复杂的多( CMPY) 指令将 16位 输入的 32位 实部 和一个 32位 虚部 输出。 也有复 数 的 增加 与 舍去的能力使 一个 32位输出包含 16位实 部 和 16位虚 部。 32 32 位乘法指令扩展精度提供必要的音频和其他高精度算法对各种签署和未签署的 32位数据类型。 L单元 或(算术逻辑单元 )在 共同的 输入同时去进行 添加 /减去 运算。 这一指 令的版本 工作在 32位数据上 ,或对 16位数据 并列进行 双 16位地址和减去。 也 可以从 这些指示 中饱和。 多数通用处理器采用冯 诺依曼总线结构,由于程序和数据空间统一,取指和取数据必须分别进行。 C64xx DSP采取了程序总线和数据总线独立的哈佛总线结构,这样取指和取数据可同时进行从而节省了时间。 DSP算法通常需要频繁地进行数据存取,因此计算地址要占用相当的时间。 C64xx DSP具有专用的计算地址的单元 (D1|D2)--地址产生器,它与 ALU并行工作, 不再额外占用 CPU时间。 Xx学院 2020届本科生毕业设计 12 C64xx DSP 指令系统 C62xx,C64xx DSP指令系统是向后兼容的 ,如下是 C64xx DSP指令系统 的基本指令表 . 表 51 C64xx DSP指令系统 的基本指令表 . 指令名 语法 举例 功能 ABS ABS ( .unit) src1, dst .unit = L1,.L2 ABS .L1 A1, A5 求绝对值 ADD(U) ADD (.unit) src1,src2, dst ADDU(.L1 ) src1,src2, dst ADD(.D1 )src2,src1, dst .unit=.L1, .L2, .S1, .S2 A1,B1,B2 A1,A2A5,A4 26,A1,A6 符号 加法 、无符号加法 ADDAB/ ADDAH/ ADDAW ADDAB(.Unit)Src2,Src2,Src1,dst ADDAH(.Unit)Src2,Src1,dst ASSAW(.Unit)Src2,Src1,dst .Unit=.D1 或 .D2 A4,A2,A4 A4,A2,A4 A4,A2,A4 使用寻址模式的整数加法 ADDK ADDK(.Unit)cst, dst .Unit=.S1 或 .S2 1540,A1 使用 16 位有符号常数的整数加法 ADD2 ADD2(.Unit)Src1,Src2,dst .Unit=.S1 或 .S2 A1,B1,A2 高 低 两 半16 位寄存器加法 AND AND(.Unit)Src1,Src2,dst .Unit=.L1 或 .L2,.S1 或 .S2 A1,B1,A2 15,A1,A3 逻辑与 B B(.Unit)label .Unit=. S2 LOOP A1,A2,A3 || B1,B2,B3 LOOP。 MPY,MJX ,A4 || A5,A6,A6 跳转(使用标号 ) B B(.Unit)Src2 .Unit=.S2 B10 A1,A2,A3 || B1,B2,B3 A3,A3,A4 跳转(使用寄存器) Xx学院 2020届本科生毕业设计 13 表 51 C64xx DSP 指令系统 的基本指令表 (续) 指令名 语法 举例 功能 BIRP B(.Unit)IRP .Unit=.S2 假设中断发生在 PC=00001000 IRP=00000000 IRP A0,A2,A1 A1,A2,A1 NOP A1,I5,A1 A1,A2,A1 B1,B2,B3 中断跳转 B NRP B(.Unit)NRP .Unit=.S2 假设中断发生在 PC=0000100 NRP=00001000 NRP A01, A2, A1 A1,A0, A1 NOP A1 I5,A1 A1,A2,A1 B1,B2,B3 跳转 (使用NMI 返回指针 ) CLR CLR(.Unit)Src2,csto,cstb,dst CLR(Unit)Src2,Src1,dst .Unit=.S1 或 S2 A1,A2 CLR,S2 B1,B3,B2 清除原操作数的某一段位 CMPEQ CMPEQ(.Unit)Src1,Src2,dst .Unit=.L1 或 .L2 A1,B1,A2 Ch,A1,A2 A1,B5, 判断 Src1和 Src2 是否相等 CMPGT (U) CMPGT(.Unit)Src1,Src2,dst CMPGT(U)(.Unit)Src1,Src2,dst .Unit=.L1 A1,A2,A3 A1,B1,A2 0EH,A3,A2,A4 判断 Src1是否大于Src2 CMPLT (U) CMPLT(.Unit)Src1,Src2,dst CMPLT(.Unit)Src1,Src2,dst .Unit=.L1 or .L2 A1,B1,B2 A19,A1,A2 A1,A5,A4,A2 判断 Src1是否小于Src2 EXT EXT(.unit)src2,csta,cstb,dst EXT(.unit)src2,src1,dst .unit=.S1 A1,10,19,A2 A1,A2,A3 符号扩展 EXTU EXTU(.unit)src2,csta,cstb,dst EXTU(.unit)src2,src1,dst .unit=.S1 A1,10,19,A2 A1,A2,A3 零扩展 IDLE IDLE IDLE 停止直到中断发生 Xx学院 2020届本科生毕业设计 14 表 51 C64xx DSP 指令系统 的基本指令表 (续) 指令名 语法 举例 功能 LDB(U)/ LDH(U)/ LDW 寄存器偏置 LDB(.unit)*+baser[offsetR],dst LDH(.unit)*+baser[offsetR],dst LDW(.unit)*+baser[offsetR],dst LDBU(.unit)*+baser[offsetR],dst LDHU(.unit)*+baser[offsetR],dst 无符号常数偏置 LDB(.unit)*+baser[ucstS],dst LDH(.unit)*+baser[ucstS],dst LDW(.unit)*+baser[ucstS],dst LDBU(.unit)*+baser[ucstS],dst LDHU(.unit)*+baser[ucstS],dst .unit=.D1 *A10,B1 *A5[1].A7 *++A4[A1].A8 *++[1],A6 *++A4[1],A6 从存储器装载 LDB(U)/ LDH(U)/ LDW LDB(.unit)*+B14/B15[ucst15],dst LDH(.unit)*+B14/B15[ucst15],dst LDW(.unit)*+B14/B15[ucst15],dst LDBU(.unit)*+B14/B15[ucst15],dst LDHU(.unit)*+B14/B15[ucst15],dst .unit=.D2 *+B14[36],B1 从存储器装载 LMBD LMBD(.unit)src1,src2,dst .unit=.L1 A1,A2,A3 最左位检查 MPY(U/ US/SU) MPY(.unit)src1,src2,dst MPYU(.unit)src1,src2,dst MPYUS(.unit)src1,src2,dst MPYSU(.unit)src1,src2,dst .unit=.M1 A1,A2,A3 A1,A2 A3 A1,A2,A3 13,A1,A2 13,A1,A2 16lsb 16lsb 整数乘 MPYH(U/ US/SU MPYH(.unit)src1,src2,dst or MPYHU(.unit)src1,src2,dst or MPYHUS(.unit)src1,src2,dst or MPYHSU(.unit)src1,src2,dst .unit=.M1 A1,A2,A3 A1,A2,A3 A1,A2,A3 16msb 16msb 整数乘 MPYLH (U)/ MPYLUH S/ MPYLSH U MPYLH(.unit)src1,src2,dst MPYLHU(.unit)src1,src2,dst MPYLUHS(.unit)src1,src2,dst MPYLSHU(.unit)src1,src2,dst .unit=.M1 A1,A2,A3 16lsb 16msb 整数乘 Xx学院 2020届本科生毕业设计 15 DSP 集成开发工具 CCS Ti CCS 集成开发环境( IDE)具有编辑、编译和调试 DSP 目标程序的能力。 ( 1) 编辑源程序 CCS允许编辑 C源程序和汇编语言源程序,还可以在 C语句后面显示汇编指令的方式来查看 C源程序。 图 51 混合显示源程序窗口 集成编辑环境支持下述功能:  用彩色加亮关键字、注释和字符串。  以圆括弧或大括弧标记 C程序块,查找匹配块或下一个圆括弧或大括弧。  在一个或多个文件中查找和替代字符串,能够实现快速搜索。  取消和重复多个动作。  获得“上下文相关”的帮助。  用户定制的键盘命令分配。 ( 2) 创建应用程序 应用程序通过工程文件来创建。 工程文件中包括 C源程序、汇编源程序、目标文件、库文件、连接命令文件和包含文件。 编译、汇编和连接文件时,可以分别指定它们的选项。 在 CCS中,可以选择完全编译或增量编译,可以编译单个文 Xx学院 2020届本科生毕业设计 16 件,也可以扫描出工程文件的全部包含文件从属树,也可以利用传统的 makefiles文件编译。 图 52 工程目录结构 ( 3) 调试 应用程序 CCS提供下列调试功能:  设置可选择步数的断点  在断点处自动更新窗口  查看变量  观察和编辑存储器和寄存器  观察调用堆栈  对流向目标系统或从目标系统流出的数据采用探针工具观察,并收集存储器映象  绘制选定。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。