DSP6000中断概述
学习DSP遇到的问题

1,什么是分页机制?2,typedef interrupt void(*PINT)(void);这句话完成了一个类型的定义,以后使用PINT 将定义一个函数的地址。
再来看TINT0 的位置,它位于该结构体的第39 个字节处,对照PIE 中断向量表,第39 个字节处正好是CPU 定时器0 的中断向量,因此完成了的定义之后,当CPU 定时器0的中断发生后,CPU 从中断向量表0x00000D4C处取中断向量,0x00000D4C 处正好放的是中断函数interrupt void ISRTimer0(void)的地址,因为interrupt 关键字的定义,执行该中断函数之前先保护寄存器,然后执行函数功能,执行完后弹出保护寄存器,实现了CPU 定时器0 的中断响应。
上面以CPU定时器0 的中断为例进行了详细的介绍,其他的中断可以参考以上的描述。
3,什么是双缓冲结构??4,0欧姆电阻指阻值为零的电阻。
电路板设计中两点不能用印刷电路连接,常在正面用跨线连接,这在普通板中经常看到,为了让自动贴片机和自动插件机正常工作,用零电阻代替跨线5,RPT #10 || NOP是否可以等价为RPT #10NOP;NOP;这样就是12个周期因||为双目运算符,从左至右执行,执行完RPT #10后还要再执行一次NOP不知我的理解是否正确,求指导~~6,在程序的末尾都要加入一段看门狗复位的死循环,这样做的作用是什么?解决:防止程序跑飞,保留当前输出结果7,what are the meanings of the non-BIOS project and BIOS project?解决:BIOS是TI公司专为DSP设计的实时操作系统。
为TI的DSP编程时,可以采用BIOS,也可以不采用BIOS。
non-BIOS project 就是不采用BIOS的工程文件。
8,我看到dsp2812中有这几个cmd文件:F2812.cmd2812_EzDSP_RAM_lnk.cmdF2812_XintfBoot.cmdDSP281x_Headers_nonBIOS.cmdDSP281x_Headers_BIOS.cmd不知道这几个cmd文件有什么别,到底用哪两个?解决:F2812.cmd:F2812 memory linker command file. Include all FLASH,OTP and CSM password protected memory locations, this linker command file is valid for F2811 as well. 2812_EzDSP_RAM_lnk.cmd: memory map that only allocates SARAM locations. NoFlash,OTP,or CSM password protected locations are used.F2812_XintfBoot.cmd: F2812 boot from XINTF Zone 7.DSP281x_Headers_nonBIOS.cmd: Linker .cmd file to assign the header file variables in a non-BIOS project. This file must bu include in an non-BIOS project that use the header files.DSP281x_Headers_BIOS.cmd: Linker .cmd file to assign the header file variables in a BIOS project. This file must bu include in an BIOS project that use the header files.In most cases, we used 2812_EzDSP_RAM_lnk.cmd and DSP281x_Headers_nonBIOS.cmd for debug or F2812.cmd and DSP281x_Headers_nonBIOS.cmd for Flash if in a non-BIOS project. That all.9,什么是强制高和强制低?解决:如果你设置为强制高,那么PWM的输出始终为高电平,同理,如果你设置为强制低,那PWM的输出始终为低电平。
DSP教程2_EV

22
捕获单元的使用
• 捕获控制寄存器CAPCONA – 捕获单元使能 – 通用定时器选择 – 配置跳变检测方式:上升、下降、双沿 • FIFO堆栈 第一次捕获 栈顶寄存器CAPxFIFO
栈底寄存器CAPxFBOT 第二次捕获 第三次捕获
• 捕获单元状态寄存器CAPFIFOA
– CAP1FIFO对应值00,01,10,11 • 捕获中断(用法与前比较单元中断相同)
13
EVA模块中断寄存器
• 中断标志IFR寄存器ABC3组,位按中断名称 – EvaRegs.EVAIFRA – EvaRegs.EVAIFRB – EvaRegs.EVAIFRC • 中断屏蔽IMR寄存器ABC3组,位按中断名称 – EvaRegs.EVAIMRA – EvaRegs.EVAIMRB – EvaRegs.EVAIMRC
10
比较器工作原理图解
• 计数器连续增减计数事件
周期
比较 比较 0xffff上溢
下溢
11
中断表
12
中断应用
• 开中断 – 清中断标志(中断标志寄存器) – 使能中断(中断屏蔽寄存器) – 使能中断组.中断号 – 使能中断组 • 中断程序,程序架子在DSP28_DefaultIsr.c中, – 中断任务 中断程序名称与中断名称近似 – 清除中断标志 – 响应同组中断及开全局中断
7
编程方法
• 通用定时器控制寄存器T1CON – 计数方式 – 分频:高速外设时钟75MHz – 使能定时器 • 比较器控制寄存器COMCONA – 使能比较单元 – 比较值CMPR装载条件 – 比较方式ACTRA装载条件 • 比较方式控制寄存器ACTRA有效电平 • 周期寄存器T1PR • 比较寄存器CMPR1,2,3
TMS320C54x系列DSP概述

第一章TMS320C54x系列DSP概述1.1DSP芯片概述1.什么是DSP芯片2.DSP芯片的基本结构1.2TMS320C54x系列DSP的结构和特点1.2.1TMS320C54x系列DSP的概述1.2.2 TMS320C54x系列DSP的特点.1.2.3 TMS320C54x系列DSP的内部硬件结构1.3 总线结构1.4 CPU状态和控制寄存器1.4.1 状态寄存器ST0和ST11.4.2 处理器工作模式状态(PMST)寄存器1.5 算数逻辑单元(ALU)1.5.1 ALU的输入1.5.2 溢出处理1.5.3 进位位1.5.4 双16位模式1.6 累加器A和B1.6.1 保存累加器的内容1.6.2 累加器移位和循环操作1.6.3 饱和处理累加器内容1.6.4 专用指令1.7 桶式移位器1.8 乘法器/加法器单元1.8.1 乘法器的输入源1.8.2 乘法/加法(MAC)指令1.8.3 MAC和MAS乘法运算的饱和处理1.9 比较、选择和存储单元1.10 指数编码器第二章存储器和I/O空间操作TMS320C54x DSP存储器概述存储器空间程序存储器程序存储器的可配置性片内ROM的组织程序存储器地址映射和片内ROM内容片内ROM的代码内容和映射扩展程序存储器数据存储器数据存储器的可配置性片内RAM的组织存储器映射寄存器I/O空间及其访问第三章寻址方式和程序控制3.1立即寻址3.2绝对寻址3.2.1数据存储器地址(dmad)寻址3.2.2程序存储器地址(pmad)寻址3.2.3端口地址(PA)寻址3.2.4*(lk)寻址3.3累加器寻址3.4直接寻址3.4.1基于DP的直接寻址3.4.2基于SP的直接寻址3.5间接寻址3.5.1单操作数寻址3.5.2ARAU和地址产生操作3.5.3单操作数地址的修改1.增加/减少地址(MOD=0、1、2或3)2.偏移地址修改(MOD=12或13)3.变址地址修改(MOD=5或6)4.循环地址修改(MOD=8、9、10、11或14)5.位反向寻址(MOD=4或7)3.5.4双操作数寻址3.5.5修正(ARP)模式3.6存储器映射寄存器寻址3.7堆栈寻址3.8数据类型3.9产生程序存储器地址3.10程序计数器(PC)3.11程序控制3.11.1分支转移1. 无条件分支转移2. 条件分支转移3. 远分支转移3.11.2 调用1.无条件调用2.条件调用3.远调用3.11.3 返回1.无条件返回2.条件返回3.远返回3.11.4 条件操作1.使用多个条件2.条件执行(XC)指令3.条件存储指令3.11.5 重复单条指令3.11.6 重复一个指令快3.12 复位操作3.13 TMS320C54x DSP的中断系统3.13.1 TMS320C54x DSP中断系统概述1. 中断分类2. 处理中断的步骤3.13.2 中断标志寄存器(IFR)3.13.3 中断屏蔽存储器(IMR)3.13.4 接收中断请求3.13.5 应答中断3.13.6 执行中断服务程序(ISR)3.13.7 保存中断上下文3.13.8 中断等待时间3.13.9 中断操作流程3.13.10 重新映射中断向量地址3.13.11 中断和中断向量表3.14 节电模式3.14.1 IDLE1模式3.14.2 IDLE2模式3.14.3 IDLE3模式3.14.4 保持(Hold)模式3.14.5 其他节电性能第四章流水线4.1流水线操作4.1.1 流水线的分支转移指令1. 分支转移指令B2. 延时分支转移指令BD4.1.2 流水线中的调用指令1. 调用指令CALL和CALLD2. 中断指令INTR4.1.3 流水线中的返回指令4.1.4 流水线中的条件执行4.1.5 流水线中的条件调用和分支转移1. 条件调用2. 条件分支转移4.2 中断和流水线4.3 双访问存储器和流水线4.3.1 解决取指和读操作数之间的冲突4.3.2 解决写操作数和读双操作数之间的冲突4.3.3 解决写操作数、写操作数和读双操作数的冲突4.4 单访问存储器和流水线4.5 流水线等待4.5.1 访问存储器映射寄存器的推荐指令4.5.2 更新ARx、BK或SP-解决冲突第五章汇编程序设计应用软件开发流程和工具COFF文件概述COFF文件的基本单元-段汇编器对段的处理1.未初始化段2.初始化的段3.自定义段4.子段(Subsections)5.段程序计数器6.使用段伪指令的简单实例链接器对段的处理重新定位运行时重新定位加载程序COFF文件中的符号1.外部符号2.符号表汇编语言程序格式汇编程序格式1.标号区2.助记符指令域3.代数指令域4.注释汇编语言的数据格式1.常数2.符号表达式1.算术操作符2.表达式上溢和下溢3.有效定义的表达式4.条件表达式5.可重定位的符号和合法表达式5.3.4 内置函数5.3.5 加载值到扩展程序存储器5.4 汇编伪指令5.4.1 定义段的伪指令5.4.2 初始化常数的伪指令5.4.3 对准段程序计数器的伪指令5.4.4 格式化输出清单文件的伪指令5.4.5 引用其他文件的伪指令5.4.6 条件汇编伪指令5.4.7 汇编时符号伪指令5.4.8 混和伪指令5.4.9 常用伪指令及其语法格式5.5 程序汇编5.5.1 运行汇编程序5.5.2 条件汇编5.5.3 列表文件5.5.4 交叉引用清单5.6 程序链接5.6.1 链接器的调用5.6.2 链接器的选项5.6.3 链接器命令文件(.cmd文件)5.7 编写链接器命令文件(.cmd文件)5.7.1 MEMORY指令5.7.2 SECTIONS指令1. SECTINS指令的使用方法2. 为输出段指定地址5.7.3 MEMORY和SECTIONS指令的默认算法5.7.4 命令文件编写及链接实例1. 命令文件2. 链接文件5.8 宏定义和调用宏5.8.1 宏定义5.8.2 调用宏5.8.3 使用递归和嵌入宏第六章汇编语言指令指令集概述算数操作逻辑操作程序控制加载和存储指令6.2 指令集的符号和缩写第七章C/C++编译器概述7.1C/C++编译器命令解释程序7.2调用编译器解释命令程序7.3改变编译器的选项7.3.1常用的选项7.3.2指定文件名7.3.3修改编译器对文件名的解释7.3.4修改编译器对文件名扩展的解释和命名7.3.5指定目录7.3.6控制汇编器的选项7.4 使用环境变量改变编译器特性7.4.1 制定文件目录(C_DIR和C54X_C_DIR)7.4.2 设置默认编译器选项(C_OPTION 或C54_C_OPTION) 7.5 控制预处理器7.5.1 预定义的宏名7.5.2 #include 文件的搜索路径7.5.3 用-i选项改变#include 文件的搜索路径7.5.4 产生预处理的列表文件(-ppo选项)7.5.5 预处理后继续编译(-ppa选项)7.5.6 产生一个带注释的预处理列表文件(-ppc选项)7.5.7 产生一个具有行控制信息的预处理列表文件(-ppl选项)7.5.8 产生#include伪指令包含的文件列表(-ppi选项)7.6 使用直接插入函数展开7.6.1 直接插入内部操作数7.6.2 无保护的定义控制直接插入7.6.3 使用预处理器符号_INLINE的保护直接插入7.6.4 直接插入限制7.7 使用交互列表工具7.8 编译错误简介7.8.1 控制诊断消息7.8.2 如何使用诊断选项第八章优化C/C++代码8.1使用C编译优化器8.2使用-O3选项8.2.1 控制文件级优化(-O1n选项)8.2.2 创建优化信息文件(-On n选项)8.3 执行程序级优化8.3.1 控制程序级优化(-Op n选项)8.3.2 混和C/C++语言和汇编的优化考虑因素8.4 自动直接插入扩展(-Oi选项)8.5 使用交互列表工具8.6 访问优化代码中的别名变量8.7 调试优化得代码和优化类型8.7.1 调试优化的代码8.7.2 压缩优化的代码(-gp和-O选项)8.7.3 可执行的优化类型1. 基于重要程度的寄存器分配2. 消除别名的歧义3. 分支转移优化和控制流简化4. 数据流优化5. 表达式简化6. 函数的直接插入展开7. 循环归纳变量优化和强度降低8. 循环不变代码的移动9. 循环旋转10. 尾部合并11. 自动增量寻址12. 重复块13. 延迟、转移、调用和返回14. 算数重排、符号简化和常数合并第九章链接C/C++代码9.1调用链接器9.1.1 单步调用链接器9.1.2 作为编译的步骤调用链接器9.2 禁用链接器(-c编译器选项)9.3 控制链接过程9.3.1 链接运行时支持库9.3.2 运行时初始化9.3.3 全局对象构造器9.3.4 指定初始化类型9.3.5 指定段在存储器中的分配9.3.6 链接器命令文件实例第十章TMS320C54x C/C++语言10.1 TMS320C54x C/C++语言的特点10.1.1 TMS320C54x C语言特点1. 标志符和常数2. 数据类型3. 数据转换4. 表达式5. 声明6. 预处理器10.1.2 TMS320C54x C++语言特点10.2 数据类型10.3 关键词10.3.1 const关键词10.3.2 ioport关键词10.3.3 interrupt关键词10.3.4 near 和far关键词10.3.5 volatile关键词10.4 寄存器变量和全局寄存器变量10.4.1 寄存器变量10.4.2 全局寄存器变量1. 何时使用全局变量寄存器2. 避免破坏寄存器的值3. 禁止编译器使用AR1和AR6 10.5 Pragma伪指令1. CODE_SECTION指令2. DA TA_SECTION指令3. FUNC_CANNOT_INLINE指令4. FUNC_EXT_CALLED指令5. FUNC_IS_PURE指令6. FUNC_IS_SYSTEM指令7. FUNC_NEVER_RETURNS指令8. FUNC_NO_ASG指令9. FUNC_NO_IND_ASG指令10. IDENT指令11. INTERRUPT指令12. NO_INTERRUPT指令10.6 初始化静态和全局变量10.7 C/C++和汇编语言混和编程10.7.1 用/C++代码调用汇编语言模块10.7.2 在C语言中插入汇编语句10.7.3 在程序中访问汇编语言变量10.7.4 访问汇编语言的常数第十一章运行时环境和支持库11.1存储器模式11.1.1 段11.1.2 C系统堆栈11.1.3 分配.const到程序存储器11.1.4 动态存储器分配11.1.5 变量初始化11.1.6 为静态和全局变量分配存储器11.1.7 子段/结构体定位11.1.8 字符串常数11.2 寄存器规定11.2.1 状态寄存器的位11.2.2 寄存器变量11.3 函数结构和调用规定11.3.1 函数如何进行调用11.3.2 被调用函数如何响应11.3.3 访问变量和局部变量11.3.4 分配帧和使用32位存储器读指令11.4 中断处理11.4.1 C语言中中断的基本知识11.4.2 使用C/C++中断程序11.4.3保存中断入口点的上下文11.5 系统初始化11.5.1 变量自动初始化11.5.2 全局构造器11.5.3 初始化表11.5.4 运行时变量的自动初始化11.5.5 在加载时变量的初始化11.6 运行时支持库函数11.6.1 库11.6.2 C的I/O函数1. 低级I/O的执行2. 为C的I/O添加一个设备3. 低级函数11.6.3 头文件1. 诊断消息头文件(assert.h/cassert)2. 字符测试和转换(ctype.h cctype)3. 错误报告(error.h/cerrno)4. 扩展寻址函数(extaddr.h)5. 低级输入/输出函数(file.h)6. 限制头文件(float.h/cfloat和limits.h/climits)7. 浮点数学函数(math.h/cmath)8. 非局部转移(set jump.h/cset jump)9. 变量可变头文件(stdarg.h/cstdarg)10. 标准定义头文件(stddef.h/cstddef)11. 输入/输出函数(stdio.h/cstdio)12. 通用工具头文件(stdlib.h/cstdlib)13. 字符串函数头文件(string.h/cstring)14. 时间函数头文件(time.h/ctime)15. 异常事件的处理(exception和stdexcept)16. 动态存储器管理(new)17. 运行时类型信息(typeinfo)第十二章集成开发环境(CCS)12.1CCS2.0系统的安装和配置S2.0系统的安装2.系统配置3.运行CCS2.012.2建立工程文件1.建立一个新的工程项目文件2.向工程项目中添加文件12.3设置工程项目选项12.3.1 编译器环境参数设置1. 设置结果显示2. 具体选项的设置12.3.2 链接器环境参数设置1. 设置结果显示2. 具体选项的设置12.4 编译、链接和运行目标文件12.4.1 编译和链接12.4.2 仿真运行输出目标文件12.5 查看存储器信息12.6 查看寄存器信息1. 查看CPU寄存器2. 查看外设寄存器12.7 修改存储器和寄存器内容1. 修改存储器内容2. 修改寄存器内容3. 修改变量内容12.8 设置断点和探测点1. 设置断点2. 设置探测点12.9 图形显示12.9.1 定义探测点和输入数据12.9.2 将探测点与数据文件链接起来12.9.3 建立幅值-时间图形1. 建立图形2. 链接图形到数据源激活图形12.9.4 建立“眼(Eye)”图形1. 建立图形2. 链接图形到数据源激活图形12.9.5 建立“合成(Constellation)”图形1. 建立图形2. 链接图形到数据源激活图形第十三章应用程序开发实例13.1提高系统性能的几种方法13.1.1 有效存储器分配的建议1. 安排SARAM和DARAM的数据分配2. 对于随即访问的变量,使用直接寻址,并将他们分配到同一个128字的页面3. 为中断而保留专用的CPU资源13.1.2 存储器定位要求13.1.3 堆栈初始化13.1.4 重叠管理13.1.5 存储取之间的移动13.2 算术运算13.2.1 除法和求模运算13.2.2 正弦和余弦运算13.2.3 扩展精度运算13.2.4 浮点运算13.3 快速傅立叶变换(FFT)的DSP实现13.3.1 离散傅立叶变换(DFT)13.3.2 快速傅立叶变换(FFT)13.3.3 快速傅立叶变换的DSP实现1. 实数FFT运算序列的存储分配2. 基2实数FFT运算的算法3. 计算所求信号的功率13.4 FIR滤波器的DSP实现1. FIR滤波器实现方法2. FIR的DSP实现程序代码13.5 IIR滤波器的DSP实现1. 无限脉冲响应(IIR)滤波器结构2. 双二次IIR滤波器的实例程序13.6 自适应滤波的DSP实现13.7 CODEC应用程序的DSP实现1. 编写汇编程序2. 链接命令文件。
DSP常见问题解答

DSP常见问题解答如何选择外部时钟?DSP的内部指令周期较高,外部晶振的主频不够,因此DSP大多数片内均有PLL。
但每个系列不尽相同。
1)TMS320C2000系列:TMS320C20x:PLL可以÷2,×1,×2和×4,因此外部时钟可以为5MHz-40MHz。
TMS320F240:PLL可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5和×9,因此外部时钟可以为2.22MHz-40MHz。
TMS320F241/C242/F243:PLL可以×4,因此外部时钟为5MHz。
TMS320LF24xx:PLL可以由RC调节,因此外部时钟为4MHz-20MHz。
TMS320LF24xxA:PLL可以由RC调节,因此外部时钟为4MHz-20MHz。
2)TMS320C3x系列:TMS320C3x:没有PLL,因此外部主频为工作频率的2倍。
TMS320VC33:PLL可以÷2,×1,×5,因此外部主频可以为12MHz -100MHz。
3)TMS320C5000系列:TMS320VC54xx:PLL可以÷4,÷2,×1-32,因此外部主频可以为0.625MHz-50MHz。
TMS320VC55xx:PLL可以÷4,÷2,×1-32,因此外部主频可以为6.25MHz-300MHz。
4)TMS320C6000系列:TMS320C62xx:PLL可以×1,×4,×6,×7,×8,×9,×10和×11,因此外部主频可以为11.8MHz-300MHz。
TMS320C67xx:PLL可以×1和×4,因此外部主频可以为12.5MHz-230MHz。
DSP简介

DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。
其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。
它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。
根据数字信号处理的要求,DSP芯片一般具有如下主要特点:(1)在一个指令周期内可完成一次乘法和一次加法;(2)程序和数据空间分开,可以同时访问指令和数据;(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;(4)具有低开销或无开销循环及跳转的硬件支持;(5)快速的中断处理和硬件I/O支持;(6)具有在单周期内操作的多个硬件地址产生器;(7)可以并行执行多个操作;(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。
轻松体验DSP第一种商品化的IC 数字信号处理器是英特尔的2920,早在1979 年就在取代全双工、1200bps 数字硬调制解调器中的模拟滤波器组了。
同时,迅速增多的微处理器和外设提高了处理以数字表示信号的可行性。
那时几乎任何商业化信号处理任务都需要模拟计算,伴有复杂的反馈回路和补偿电路来维持稳定性。
各种依赖位片处理器小型电脑和数据采集硬件的技术都极其昂贵,并且通常只适合于研究人员。
能够经济地把信号数字化,并在数字领域进行数学计算,从而减少漂移和其它用模拟技术处理也很昂贵的不精确条件,这种逻辑很有吸引力,它直接导致今天市场上出现多种系列的DSP。
DSP(知识点+思考题)

DSP复习要点第一章绪论1、数的定标:Qn表示。
例如:16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示2、‟C54x小数的表示方法:采用2的补码小数;.word 32768 *707/10003、定点算术运算:乘法:解决冗余符号位的办法是在程序中设定状态寄存器STl中的FRCT位为1,让相乘的结果自动左移1位。
第二章CPU结构和存储器设置一、思考题:1、C54x DSP的总线结构有哪些特点?答:TMS320C54x的结构是围绕8组16bit总线建立的。
(1)、一组程序总线(PB):传送从程序存储器的指令代码和立即数。
(2)、三组数据总线(CB,DB和EB):连接各种元器件,(3)、四组地址总线(PAB,CAB,DAB和EAB)传送执行指令所需要的地址。
2、C54x DSP的CPU包括哪些单元?答:'C54X 芯片的CPU包括:(1)、40bit的算术逻辑单元(2)、累加器A和B(3)、桶形移位寄存器(4)、乘法器/加法器单元(5)、比较选择和存储单元(6)、指数编码器(7)、CPU状态和控制寄存器(8)、寻址单元。
1)、累加器A和B分为三部分:保护位、高位字、地位字。
保护位保存多余高位,防止溢出。
2)、桶形移位寄存器:将输入数据进行0~31bits的左移(正值)和0~15bits的右移(负值)3)、乘法器/加法器单元:能够在一个周期内完成一次17*17bit的乘法和一次40位的加法4)、比较选择和存储单元:用维比特算法设计的进行加法/比较/选择运算。
5)、CPU状态和控制寄存器:状态寄存器ST0和ST1,由置位指令SSBX和复位指令RSBX控制、处理器模式状态寄存器PMST2-3、简述’C54x DSP的ST1,ST0,PMST的主要功能。
答:’C54x DSP的ST1,ST0,PMST的主要功能是用于设置和查看CPU的工作状态。
•ST0主要反映处理器的寻址要求和计算机的运行状态。
DSP工作原理
DSP工作原理标题:DSP工作原理引言概述:数字信号处理(DSP)是一种数字化信号处理技术,广泛应用于通信、音频、视频等领域。
DSP工作原理是指数字信号处理器如何处理输入信号并输出处理后的信号的过程。
本文将详细介绍DSP的工作原理。
一、数字信号处理器的输入和输出1.1 输入信号的采集:DSP通过模数转换器将摹拟信号转换为数字信号,以便进行数字信号处理。
1.2 处理信号的算法:DSP通过内置的算法对输入信号进行处理,如滤波、变换、编码等。
1.3 输出信号的重构:DSP通过数模转换器将数字信号转换为摹拟信号,输出处理后的信号。
二、数字信号处理器的运算方式2.1 固定点运算:DSP采用固定点数表示和运算,可以实现高速运算和低成本。
2.2 浮点运算:某些DSP支持浮点运算,可以提高计算精度和动态范围。
2.3 SIMD并行处理:DSP支持单指令多数据流(SIMD)并行处理,可以同时处理多个数据。
三、数字信号处理器的存储结构3.1 数据存储器:DSP内置数据存储器用于存储输入信号、中间结果和输出信号。
3.2 程序存储器:DSP内置程序存储器用于存储处理信号的算法和指令。
3.3 寄存器:DSP具有多个寄存器用于存储中间结果和控制信息。
四、数字信号处理器的时钟和控制4.1 时钟频率:DSP的时钟频率决定了其处理速度和性能。
4.2 控制单元:DSP内置控制单元用于控制数据流和算法执行顺序。
4.3 中断处理:DSP支持中断处理机制,可以及时响应外部事件和优先处理重要任务。
五、数字信号处理器的应用领域5.1 通信系统:DSP广泛应用于调制解调、信道编解码、自适应滤波等通信系统中。
5.2 音频处理:DSP用于音频滤波、均衡、编解码和音频效果处理。
5.3 视频处理:DSP用于视频编解码、图象处理、运动估计和视频增强。
结论:数字信号处理器是一种高效、灵便的信号处理器件,其工作原理涉及输入输出、运算方式、存储结构、时钟控制和应用领域等方面。
DSP技术概述
冯.诺依曼结构和哈佛结构
程序/数据 存储器
冯.诺依曼结构
CPU
程序 存储器
CPU
哈佛结构
数据 存储器
数据密集型算法
片内存储器
专用寻址单元
DSPs面向的是数据密集型应用,伴随着频繁的 数据访问,数据地址的计算时间也线性增长。 8086作一次加法需要3个周期,但是计算一次 地址却需要5~12个周期。 DSPs通常都有支持地址计算的算术单元——地 址产生器。地址产生器与ALU并行工作,因此 地址的计算不再额外占用CPU时间。 由于有些算法通常需要一次从存储器中取两个 操作数,DSPs内的地址产生器一般也有两个。
实时系统的概念
实时概念的重新定义(续) : In general, a real-time system is one in which a substantial fraction of the design effort goes into making sure that deadlines are met.
流水线
流水线并行提高程序执行效率
DSPs的指标
IO数据率 处理能力:MIPS,MFLOPS 片内存储容量,cache 其它片上资源: 中断,DMA,timer,串口 IO接口:memory接口,总线接口
DSPs 的综合评价指标
BDTI (Berkeley Design Technology Inc.) 提出一种使用核心算法和应用测试的方 法.
典型的数字信号处理算法 --乘法累加
The Sum of Products (SOP) is the key element in most DSP algorithms:
DSP
12.供电
(1)采用3.3单电源供电(2)采用可调电压的单电源供电(3)采用双电源供电
3.3v为I/O电源,主要供I/O接口使用。1.8v为内核电源,主要为芯片的内部内部逻辑提供电压,包括CPU、时钟电路和所有的外设逻辑。
13.锁相环(PLL)作用
锁相环具有频率放大和时钟信号提纯的作用,利用PLL的锁定特性可以对时钟频率进行锁定,为芯片提供高稳定频率的时钟信号。除此之外,锁相环还可以对外部时钟频率进行倍频,是外部时钟源的频率低于CPU的机器周期,以降低因高速开关时所引起的高频噪声。
LD @den,16,A ;将分母移到累加器A(31-16)
MPYA @num;(num)*A(32-16)->B,获取商的符号
;(在累加器B中)
ABS A ;分母取绝对值
STH A,@den;分母绝对值存回原处
LD @num,A;分子——>A(32~16)
ABS A ;分子取绝对值
RPT #15;16次减法重复操作,完成除法
-1乘以32768,再取反加1 8000h
汇编语言:.word 32768*……
5、CCS(Code Composer Studio)是一种针对TMS320系列DSP的集成开发环境,再windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在一个软件环境下完成编辑、编译、连接、调试和数据分析等工作。
注释是任选项,注释可以由ASICC码和空格组成,注释要显示但不影响汇编。如果注释从某一行的任意一列开始,注释必须以分好开头,如果注释从第一列开始,可以用分毫或冒号开头
目标文件:.bbs→目标存储器RAM .data→EPROM .text→ROM
关于28377D_DSP中的中断配置流程过程的总结
Notebook:Meine_Arbeiten Created:2016/12/9 9:56Updated :2016/12/9 13:21Author :havihouston@ 2016/12/92016/12/9DSP系统v118 调试过程中出现了添加天线配置函数后,系统定时器无法使用的现象,猜测是因为天线配置模块影响了定时器的开启DSP的中断过程流程 :外设产生中断的流程:1、中断锁存至PIE的中断标志及存器的第x组第y通道 : PIEIFRx.y2、如果PIEIERx.y设置为有效,那么终端将被传递至后一级3、如果PIEACK.x标志位被清除,那么中断传递至下一级,并将PIEACK.x置位14、中断锁存至IFR.X中5、如果IER.x有效,中断传输至下一级6、如果INTM清零,那么CPU收到中断。
7、后端的中断则开始继续传递8、cpu保存当前状态至stack9、IFR.X 和 IER.X 被清除,INTM置位,EALLOW被清除10、cpu从PIE获取中断地址,并且PIE.PIEIFRX.Y清除11、cpu执行中断配置和是能中断过程 :1、静止全局中断(禁止cpu中断接受)2、是能PIE通过设置ENPIE位在PIECTRL寄存器中3、配置和定位中断向量表;并使能PIE如下表所示4、设置合适的PIEIERX,给PIE组和通道赋值5、使能CPU IER是能cpu接受中断6、在外设中是能中断7、是能全局中断EINT OR CLRC INTM实例 : 1、使用TI dsp 28377d 的定时器列程第一步 : 关闭全局中断使能 DINT:第二步 : 禁止PIE使能,并且清除PIE中所有的中断标志以及中断表设置第三步 :关闭CPU 的中断使能第四步 : 初始化PIE VECTOR并且使能PIE第五步 :外设的中断配置第六步 : 使能CPU的第x组中断接受使能第七步 : 打开PIE对应的x组y通道接受使能第八步 : 打开全局中断使能2、使用v118版程序中断配置过程(修改之后的)第一步 初始化piectr;其中已经包括语句DINT(关闭全局中断过程)第二步 关闭PIE中断功能;通过设置PIRCTR.BIT.ENPIE = 0来实现,第三步 清空中断设置(即PIEIER.X PIEIFR.X中原来的配置值);第四步 清空中断列表,并且使能PIE功能(通过设置PIRCTR.BIT.ENPIE = 1来实现 )第五步 清空CPU中断接受组第六步 配置定时器的中断选项第26 - 30行为配置中断入口地址 第42 - 44行为配置CPU响应中断组(其中TIMER0是通过第PIEIER1 . 7来链接到PIE上的,所以CPU按照分组响应中断,顾此处的IER |= M_INT1就是这个意思);第52行表示了 我需要使能PIEIER1.7通道;是因为TIMER0的中断响应链路是通过PIE的第一组,第7个通过来连通的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TMS320C6000系列DSP中断简介
―― 涛 涛 2008-10-28
一 中断选择器
DSP6000外部有32个中断源,CPU有12个可以使用。中断选择器可以允许将
32个中断源中的12个使用在你的系统中。中断选择器还允许改变外部输入中断的极
性,通过中断选择器可以设置中断的优先级。下面为DSP中断源列表。
外部专用中断源:INT4-INT7和NMI
中断选择器的配置:中断选择器应该在复位后中断使能前对其进行配置。
注:设置中断选择器后,要将中断标志寄存器清零。
中断选择器共有三个寄存器:
1.MUXH Interrupt multiplexer high register 中断多路器高寄存器
2.MUXL Interrupt multiplexer low register 中断多路器低寄存器
3.EXTPOL External interrupt polarity register 外部中断极性寄存器
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
中断多路器高寄存器各位详细定义如上,具体定义了中断10到15的映射关系。
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
中断多路器低寄存器各位详细定义如上,具体定义了中断4到9的映射关系。
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
中断极性寄存器用来设置外部中断INT4-INT7触发DSP中断的时钟沿,当相应
位设置为“0”时,为上升沿触发;当设为“1”时,为下即沿触发。
二.中断的类型
C6000的中断可以分为3类:
1.RESET
2.非屏蔽中断
3.可屏蔽中断
RESET是优先级最高的中断,它连接到外部的RESET/管脚,非屏蔽中断
NMI为第二优先级的中断,它对应外部的NMI管脚。INT4-INT15为较低优先
级的中断(INT15为最低)。
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
1.RESET
复位是最高优先级的中断,用来将CPU返回到固定的状态
复位是一个低有效信号,所有别的中断信号是高有效。
为了使CPU正确的初始化,复位低电平必须保持10个时钟周期。
正在执行的指令停止,寄存器回到默认状态
复位的ISFP必须在地址“0”
2.NMI非屏蔽中断
要使能NMI中断,需将IER中的NMIE位置“1”,跳转的延迟等待会阻止
NMI中断的进程。复位时NMIE被清“0”,当NMI产生时,NMIE被清“0”,
手动无法清除NMIE,但可以设置NMIE来允许中断嵌套。
3.可屏蔽中断(INT4-INT15)
可屏蔽中断产生的条件:
控制状态寄存器CSR中的全局中断使能位GIE设为“1”
中断使能寄存器IER中的NMIE位设为“1”
IER中对应的中断使能位置为“1”
三.中断响应和中断号
中断响应IACK表明CPU开始执行一个中断,中断号INUMn表明所执行的是几
号中断。
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
如上表明CPU执行的是INT7。
四.中断服务表IST
当CPU执行一个中断时,它参考中断服务表,中断服务表里包含中断服务程序
的指令包。每个中断服务取指包(ISFP)包含8条指令。
中断服务表指针(ISTP):
复位后需要从地址0开始取指,剩下的IST可以位于任何256字对界的程序存储
区。IST的地址可以通过修改ISTP中的ISTB的值来定义。
上例中将IST从地址0搬移到地址800开始,这几句话应写在Main函数的开始。
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
五.中断控制寄存器列表:
1.控制状态寄存器:
GIE为可屏蔽中断使能:
GIE=0,所有的可屏蔽中断禁止;
GIE=1,所有的可屏蔽中断使能;
2.中断清除寄存器:
向相应的位写1可手动清除IFR寄存器中的相应位,使可屏蔽中断清除。
3.中断使能寄存器:
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
NMIE位为所有的非复位中断(NMI和INT4-INT15)使能位
NMIE=0,禁止所有非复位中断;
NMIE=1,使能所有非复位中断。
IE4-IE15对应INT4-INT15,该为置1时使能相应的中断,置0时禁止相应中断。
4.中断标志寄存器:
相应位为1表明有相应的中断产生。
5.中断设置寄存器ISR:
手动设置向相应的位置1可使IFR中相应位为1。
六.中断的检测和执行
下图说明了中断产生的过程,CPU时钟周期1在外部中断管脚产生了一个上升
沿,两个时钟周期后到达CPU的边界,中断信号进入CPU后在时钟周期4被检测,
检测后两个周期(时钟周期6)置中断标志寄存器。
执行一个非复位中断的条件:
1.IFm在CPU时钟6被设置位“1”(处理器的中断逻辑自己设置);
2.IFR中没有更高优先级的中断被置“1” ;
3.IER中相应的位应被设为“1”(用户在程序中设置);
4.CSR中的GIE被设为“1”(用户在程序中设置);
5.IER中的NMIE位被设为“1”(用户在程序中设置);
6.前5个(N到N+4)执行包中不包含跳转和不在跳转的Delay slots中。
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
执行非复位中断的过程:
1.其他非复位中断的进程被禁止
2.对所有的可屏蔽中断,GIE中的值被拷贝到PGIE中,然后GIE被清零;
3.对于NMI,NMIE被清零;
4.下一个(从N+5)执行包被取消,如果一个执行包在流水线的特定阶段被取消,
它不会改变CPU的任何状态,这个取消操作也迫使该指令在将来的流水线阶段
被取消。
5.在时钟周期7,IACK被产生,特定的INUM值用来表明那个中断正在被执行;
6.IFm在时钟周期8被清除;
7.时钟周期9跳转到ISTP中所指的地址,即中断向量表所放的位置。
七.中断嵌套
通常情况下,执行一个可屏蔽中断服务子程序时,其他可屏蔽中断是被禁止的。
而这时,NMI是可以被响应的。即通常情况下可屏蔽中断之间是不能互相嵌套的。
如果要实现中断的嵌套,需要在软件里进行操作:
1.保存IRP
2.保存PGIE
3.GIE位被设为“1”
举例如下:
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
参考文献:
1.TMS320C6000 CPU and Instruction Set Reference Guide SPRU189F
2.TMS320C6000 DSP Interrupt Selector Reference Guide SPRU646A
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.