




已阅读5页,还剩155页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章TMS320LF240 xDSP内部资源介绍 教学内容 1 TMS320LF240 xDSP的CPU内部功能2 存储器和I O空间3 系统配置和中断4 程序控制 教学目的 1 理解TMS320LF240X系列DSP的内部各功能模块功能以及其工作机理2 掌握TMS320LF240 xDSP中断概念 与中断有关的寄存器以及中断处理流程3 了解TMS320LF240 xDSP程序地址产生的有关硬件4 掌握TMS320LF240 xDSP程序转移 调用和返回机制及过程 教学重点 1 CPU内部功能模块的工作原理2 中断概念和中断处理流程3 TMS320LF240 xDSP程序转移 调用和返回机制及过程教学难点 中断概念和中断处理流程 2 1内部总线结构 TMS320LF240 x系列的DSP内部采用多总线结构 共有六条16位的内部总线 分别为 PAB 程序地址总线 提供对程序存储器进行读 写操作的地址 DRAB 数据读地址总线 提供读数据存储器的地址 DWAB 数据写地址总线 提供写数据存储器的地址 DRDB 数据读总线 通过该总线将数据从数据存储器送到中央算术逻辑单元 CALU 和辅助寄存器算术单元 ARAU DWEB 数据写总线 通过该总线将数据写到程序存储器和数据存储器 PRDB 程序读数据总线 通过该总线将指令代码 立即数以及表信息通过程序存储器送给CPU 2 2CPU功能模块 CPU模块包括 输入定标移位器 中央算术逻辑单元 CALU 和乘法器等 CPU模块的功能结构如图2 2 图2 2CPU模块功能框图 2 2 1输入定标移位器该单元将来自程序 数据存储器的16位数据调整为32位数据送到中央算术逻辑单元 CALU 因此 输入定标移位器的16位输入与数据总线相连 32位输出与CALU单元相连 输入定标移位器在算术定标及逻辑操作设置时非常有用 功能 将来自存储器的16位数据左移0 15位变成32位送往CALU 移位方法 均进行左移左移后 没有使用的低位LSB填0没有使用的高位MSB填0或用符号扩展 取决于状态寄存器ST1的符号扩展模式位SXM SXM 0填0SXM 1符号扩展 2 2 2乘法器 16 16位的硬件乘法器 单个机器周期内产生一个32位的有符号或无符号乘积 除了执行无符号乘法指令 MPYU 外 所有的乘法指令均执行有符号的乘法操作 即相乘的两个数都作为二进制的补码数 而运算结果为一个32位的二进制的补码数 乘法器接收的两个乘数 一个来自16位的临时寄存器 TREG 另一个通过数据读总线 DRDB 取自数据存储器 或通过程序读总线 PRDB 取自程序存储器 两个输入值相乘后 32位的乘积结果保存在32位的乘积寄存器 PREG 中 PREG的输出连接到乘积定标移位器 通过乘积定标移位器 乘积结果可以从PREG传到CALU或数据存储器 乘积定标移位器对乘积采用4种乘积移位方式 如表3 1所示 移位方式由状态寄存器ST1的乘积移位方式位 PM 指定 对于执行乘法 累加操作 进行小数运算或者进行小数乘积的调整都很有用 表2 1乘积定标移位器的乘积移位方式 2 2 3中央算术逻辑单元 中央算术逻辑单元 CALU 实现大部分算术和逻辑运算功能 大多数功能只需一个时钟周期 这些运算功能包括 16位加 16位减 布尔运算 位测试以及移位和循环功能 由于CALU可以执行布尔运算 因此使得控制器具有位操作功能 CALU的移位和循环在累加器中完成 CALU是一个独立的算术单元 它和后面介绍的辅助寄存器算术单元 ARAU 在程序执行时 是完全不同的两个模块 一旦操作在CALU中被执行 运算结果会被传送到累加器中 在累加器中再实现如移位等附加操作 CALU有两个输入 一个由累加器提供 另一个由乘积寄存器 PREG 或数据定标移位器的输出提供 当CALU执行完一次操作后将结果送至32位累加器 由累加器对其结果进行移位 累加器的输出送到32位输出数据定标移位器 经过输出数据定标移位器 累加器的高 低16位字可分别被移位或存入数据寄存器 CALU的溢出饱和方式可以由状态寄存器ST0的溢出模式 OVM 位来使能或禁止 根据CALU和累加器的状态 CALU可执行各种分支指令 这些指令可以根据这些状态位有意义的结合 有条件地执行 对绝大多数的指令 状态寄存器ST1的第10位符号扩展位 SXM 决定了在CALU计算时是否使用符号扩展 SXM 0 符号扩展无效 SXM 1 符号扩展有效 当CALU中的运算完成后 其结果就被送至累加器 并在累加器中执行单一的移位或循环操作 累加器的高位和低位字中的任意一个可以被送至输出数据定标移位器 在此定标移位后 再保存于数据存储器 与累加器有关的状态位和转移指令 2 2 4累加器 ACC 1 进位标志位CST1的第9位 下述情况之一将影响进位标志位C 1 加到累加器或从累加器减 当C 0 减结果产生借位时或加结果未产生进位时 当C 1 加结果产生进位时或减结果未产生借位时 2 将累加器数值移1位或循环移1位 在左环移或循环左移的过程中 累加器的最高有效位被送至C位 在右环移或循环右移的过程中 累加器的最低有效位被送至C位 2 溢出方式标志位OVM ST0的第11位 OVM位决定ACC如何反映算术运算的溢出 OVM 1 ACC运算溢出 累加器被设定为下列两个特定值之一 若正溢出 ACC中填最大正数 7FFFFFFFh 若负溢出 ACC中填最大负数 80000000hOVM 0 ACC中的结果正常溢出 3 溢出标志位OV ST0的第12位 OV 0 累加器未溢出 OV 1 累加器溢出 且被锁存 4 测试 控制标志位TC ST1的第11位 根据被测位的值置1或清0 与累加器有关的转移指令大都取决于C OV TC的状态和累加器的值 2 2 5输出数据定标移位器 它存储指令中指定的位数 将累加器输出的内容左移0 7位 然后将移位器的高位字或低位字存到数据存储器中 用SACH或SACL指令 在此过程中 累加器的内容保持不变 2 2 6辅助寄存器算术单元 ARAU 主要功能 是在CALU操作的同时执行8个辅助寄存器AR7 AR0中的算术运算 AR7 AR0提供了强大而灵活的间接寻址能力 ARAU完全独立于中央算术逻辑单元 图2ARAU和相关逻辑 利用ARAU中的16位地址可访问数据存储器64K字空间的任一单元 如何来选择某一辅助寄存器 可通过指令向ST0的ARP指针装入3位 0 7 数据 ARAU的8个辅助寄存器提供了强大而灵活的间接寻址能力 除辅助寄存器可对数据存储器的寻址外 还可用作它用 1 通过CMPR指令 利用辅助寄存器支持条件转移 调用和返回 2 利用辅助寄存器作为暂存单元 3 利用辅助寄存器进行软件计数 根据需要将其加1或减1 2 2 7状态寄存器ST0和ST1 ST0 ST1均为16位 含有状态和控制位 可通过数据存储器对其进行写和读 LST 装载状态寄存器 指令写ST0和ST1SST 保存状态寄存器 指令读ST0和ST1用SETC或CLRC指令可对ST0 ST1中的某些位单独置1或清0 ST0各位的含义如下 ARP 位15 13 辅助寄存器 AR 间接寻址的指针 选择当前的8个辅助寄存器AR中的一个 AR被装载时 原ARP的值被复制到ARB中 OV 位12 溢出标志位 用以指示CALU中是否发生溢出 如溢出则该位为1 OVM 位11 溢出方式标志位 0 累加器中结果正常溢出 1 根据溢出的情况 累加器被设定为它的最大正值或负值 INTM 位9 中断总开关位 1 所有可屏蔽中断被禁止 0 所有可屏蔽中断有效 DP 位8 0 数据存储器页面指针 9位的DP与指令中的低7位形成16位的数据存储器的直接地址 ST1各位的含义如下 ARB 位15 13 辅助寄存器指针缓冲器 当ARP被加载到ST1时 原来的ARP被复制到ARB中 也可将ARB复制到ARP中 CNF 位12 片内DARAM配置位 0 片内DARAM映射到数据存储器区 1 片内DARAM映射到程序存储器区 TC 位11 测试 控制标志位 根据被测试位的值 该位被置1或清0 SXM 位10 符号扩展方式位 决定在计算时是否使用符号扩展 1 数据通过定标移位器传送到累加器时将产生符号扩展 0 不产生符号扩展 C 位9 进位标志位 XF 位4 XF引脚状态位可用指令置1或清0 PM 位1 0 乘积移位方式 00 乘法器的32位乘积不移位 直接入CALU 01 PREG左移1位后装入CALU 最低位填0 10 PREG左移4位后装入CALU 低4位填0 11 PREG输出进行符号位扩展 右移6位 2 3存储器和I O空间 TMSLF240 xDSP具有16位地址线 可分别访问这三个独立的地址空间 每个空间的容量均为64K字 1 程序存储器空间 64K字 2 数据存储器空间 64K字 3 I O空间 64K字 注意 LF240 xDSP的所有片内外设的寄存器均映射在数据存储器空间 2K字的单访问RAM SARAM 544字的双访问RAM DARAM B0块 256字 B1块 256字 B2块 32字 LF 片内有Flash存储器 LC 片内有CMOS工艺的程序存储器 LF2407 LF2407A片内 2 3 1片内存储器 2 3 1 1双访问RAM DARAM 一个机器周期内可被访问2次 主相写数据到DARAM 而从相从DARAM读出数据 从而大大提高运行速度 544字DARAM分为三块 B0 B1和B2该存储器空间主要用来保存数据 但是B0块也可以用来保存程序 B0块配置成数据存储器空间还是程序存储器空间 要由状态寄存器ST1的CNF位来决定 1 CNF 1 B0映射到程序存储器空间 2 CNF 0 B0映射到数据存储器空间 3 3 1 2单访问RAM SARAM 片内有2K字的单访问RAM SARAM 在一个机器周期内只能被访问1次 例如 如果要将累加器的值保存 且装载一个新值到累加器 在SARAM中 完成这个任务需要两个时钟周期 而在DARAM中只需要一个时钟周期 利用软件可将SARAM配置成外部存储器或内部SARAM 片内的Flash存储器映射到程序存储器空间 MP MC 引脚决定是访问片内的程序存储器 Flash 还是访问片外的程序存储器 2 3 1 3Flash程序存储器 2 3 2程序存储器 程序存储器空间寻址范围为64K 包括了片内DARAM和片内Flash 下图所示为LF2407A的程序存储器空间的映射 有两个因素决定程序存储器的配置 1 CNF位 CNF位是状态寄存器ST1的第12位 决定DARAM中的B0块配置在数据存储器空间 还是配置在程序存储器空间 0 256字的B0块被映射到数据存储器空间 1 256字的B0块被映射到程序存储器空间 复位时 CNF 0 B0块被映射到数据存储器空间 2 MP MC 引脚 该引脚决定是从片内Flash读取指令 还是从外部程序存储器读取指令 0 微控制器方式 此时访问的是片内程序存储器 片内Flash 0000h 7FFFh空间 1 微处理器方式 此时访问的是片外程序存储器的0000h 7FFFh空间 无论MP MC 引脚为何值 LF240 xDSP都是从程序存储器空间的0000h单元开始执行程序 2 3 3数据存储器 寻址范围高达64K字 前32K字 0000h 7FFFh 是内部数据存储器空间 包括了DARAM和片内外设的映射寄存器 后32K字 8000h FFFFh 空间的存储器为外部数据存储器 1 数据存储器映射片内有3个DARAM块 B0 B1和B2块 B0块 即可为数据存储器 也可配置为程序存储器 B1 B2块 只能配置为数据存储器 下图为2407A数据存储器空间的映射 两种寻址方式 直接寻址和间接寻址 直接寻址时 128字为一页的数据块来对数据存储器进行寻址 图3显示了这些块是如何被寻址的 全部64K的数据存储器分为512个数据页 其标号从0 511 当前页由状态寄存器ST0中的9位数据页指针 DP 值来确定 因此 当使用直接寻址指令时 用户必须事先指定数据页 并在访问数据存储器的指令中指定偏移量 偏移量为7位 2 数据存储器页面 编程时要注意 访问下面的数据存储器的地址空间是非法的 并会对NMI置位 除了以下地址 任何对外设寄存器映射中的保留地址的访问也是非法的 0080h 00FFh701Fh 71FFh CAN内部的 0500h 07FFh7230h 73FFh 部分在CAN内部 1000h 700Fh7440h 74FFh7030h 703Fh7540h 75FFh7060h 706Fh7600h 77EFh77F4h 7FFFh7080h 708Fh 3 第0页数据地址映射 数据存储器中包括存储器映射寄存器 它们位于数据存储器的第0页 地址0000h 007Fh 表3 2对第0页数据地址映射进行详细说明 应用中必须注意以下几点 1 以零等待状态访问两个映射寄存器 中断屏蔽寄存器 IMR 和中断标志寄存器 IFR 2 测试 仿真保留区被测试和仿真系统用于特定信息发送 因此不能对测试 仿真地址进行操作 表2 2第0页数据地址映射 4 配置数据存储器 CNF位决定B0块的配置 CNF位是状态寄存器ST1的第12位 CNF 0 B0块被映射为数据存储器空间 复位时 CNF 0CNF 1 B0块被映射到程序存储器空间 3 3 4I O空间 I O空间的寻址可达64K字 下图为LF2407A的I O空间映射 图3 4TMS32LF2407A的I O空间地址映射 I O空间访问的控制信号为IS 所有64K的I O空间均可以用IN和OUT指令来访问 当执行IN或OUT指令时 信号IS 变为有效 可作为外部I O设备的片选信号 访问外部I O端口与访问程序存储器 数据存储器复用相同的的地址总线和数据总线 数据总线的宽度为16位 若使用8位的外设 即可使用高8位数据总线 也可使用低8位数据总线 以适应特定应用的需要 当访问片内的I O空间时 信号IS 和STRB 变成无效 外部地址和数据总线仅仅当访问外部I O地址时有效 下面是使用汇编语言的直接访问I O空间的实际例子 INDAT2 0AFEEh 从端口地址为AFEEh的外设 读数据 并存入DAT2寄存器 OUTDAT2 0CFEFh 输出数据存储器DAT2的内容 到端口地址为CFEFh的外设 下面是访问等待状态发生器的寄存器的实例 INDAT2 0FFFFh 从等待状态发生器读取 数据到DAT2寄存器 OUTDAT2 0FFFFh 将DATA2的数据写入等待状态 发生器 使用等待状态寄存器 3 3 5外部存储器接口选通信号说明 LF240 xDSP外扩存储器和I O时 需要将选通信号与外部存储器和I O的使能引脚相连 如表3 3所示 表3 3外部存储器空间访问及片选信号 3 3 6等待状态发生器 当访问速度较慢的外部存储器或外设时 CPU需要产生等待状态 等待状态是以机器周期为单位 CPU通过READY引脚可产生任意数目的等待状态 延长访问时间 等待状态发生器作用 可使快速的CPU访问慢速的外部存储器或外设 1 用READY信号产生等待状态信号 若CPU所访问的外设没有准备好 则外设应保持READY引脚为低 此时LF240 x等待一个CLKOUT周期 并再次检查READY脚 READY引脚可用来产生任意数目的等待状态 若READY信号没有被使用 LF240 x将在外部访问时把READY信号拉高 但是 当LF240 x全速运行时 它不能对第一个周期作出快速响应来产生一个基于READY的等待状态 为立即得到等待状态 应先使用片内等待状态发生器 然后用READY信号产生其余的等待状态 2 用等待状态发生器产生等待状态 等待状态发生器可编程为指定的片外空间 数据 程序或I O 产生第一个等待状态 而与READY信号的状态无关 为了控制等待状态发生器 就必须对映射到I O空间的等待状态控制寄存器 WSGR 地址为FFFFh 访问 等待状态控制寄存器的格式如下 位15 11 保留 读出的值永远为0 位10 9 BVIS 总线可视模式 提供了一种跟踪内部总线活动的方式 当运行片内的程序或数据存储器时 位10 9允许各种总线的可视模式 00 总线可视模式关 降低功耗和噪声 01 总线可视模式开 降低功耗和噪声 10 数据到地址总线输出到外部地址总线 11 程序到地址总线输出到外部地址总线 位8 6 ISWS I O空间等待状态位 这三位决定了片外I O空间等待状态 0 7 的数目 复位时 这三位置为111 为片外I O空间的读写设定了7个等待状态 位5 3 DSWS 数据空间等待状态位 这三位决定了片外数据空间等待状态 0 7 的数目 复位时 这三位置为111 为片外数据空间的读写设定了7个等待状态 位2 0 PSWS 程序空间等待状态位 这三位决定了片外程序空间等待状态 0 7 的数目 复位时 这三位置为111 为片外程序空间的读写设定了7个等待状态 总之 不管READY信号的状态如何 等待状态发生器都将向给定的空间 数据 程序或I O 插入0 7个等待状态 等待状态的数目由软件来确定 然后READY信号可以变为低电平 产生附加的等待状态 如果m是一个特定的读写操作的所要求的时钟周期 CLKOUT 的数目 w是附加的等待状态数目 那么操作将会花费 m w 个周期 复位时 WSGR各位均置1 且默认每个外部空间 数据 程序或I O 均产生7个等待状态 2 3系统配置和中断模块 系统配置 用来对DSP片内的功能模块进行用户配置 根据具体用途来进行模块定制 中断模块 主要包括 中断优先级和中断向量表 外设中断扩展控制器 PIE 中断向量 中断响应的流程 中断响应的时间 CPU中断寄存器 外设中断寄存器 复位 无效地址检测 外部中断控制寄存器 2 3 1系统配置寄存器 2 3 1 1系统控制和状态寄存器 1 系统控制和状态寄存器1 SCSR1 SCSR1映射到数据存储器空间的7018h 位15 保留 位14 CLKSRC 为CLKOUT引脚输出时钟源的选择位 位13 12 LPM1 LPM0 低功耗模式选择 指明在执行IDLE指令后进入哪一种低功耗模式 00 进入IDLE1 LPM0 模式 01 进入IDLE2 LPM1 模式 1x 进入HALT LPM2 模式 240 x器件有3种低功耗模式 由系统配置寄存器SCSR1 D13 D12 LPM指定 IDLE1模式 CPU时钟停止工作而系统时钟继续工作 IDLE2模式 CPU时钟和系统时钟都将停止工作 HALT模式 CPU时钟和系统时钟都将停止工作 且振荡器 WDCLK PLL的时钟输入均被关断 这是一种最深的低功耗模式 能节省更多的功耗 脱离低功耗模式 任何硬件中断 内部的或外部的 复位 都可以使处理器脱离IDLE状态 NMI CPU将立即执行相应的中断服务程序 RS 复位操作未被屏蔽的可屏蔽中断 处理器将退出IDLE状态 且INTM 0 中断被允许 CPU执行相应的中断服务程序 INTM 1 中断被禁止 CPU继续执行IDLE指令之后的程序 位11 9 CLKPS2 CLKPS0 PLL 时钟预定标选择位 选择输入时钟频率fin的倍频系数 如表4 1所示 位8 保留 位7 ADCCLKEN ADC模块时钟使能控制位0 禁止ADC模块时钟 节能 1 使能ADC模块时钟 且正常运行 位6 SCICLKEN SCI模块时钟使能控制位0 禁止SCI模块时钟 节能 1 使能SCI模块时钟 且正常运行 位5 SPICLKEN SPI模块时钟使能控制位0 禁止SPI模块时钟 节能 1 使能SPI模块时钟 且正常运行 位4 CANCLKEN CAN模块时钟使能控制位0 禁止CAN模块时钟 节能 1 使能CAN模块时钟 且正常运行 位3 EVBCLKEN EVB模块时钟使能控制位0 禁止EVB模块时钟 节能 1 使能EVB模块时钟 且正常运行 位2 EVACLKEN EVA模块时钟使能控制位0 禁止EVA模块时钟 节能 1 使能EVA模块时钟 且正常运行 位1 保留 位0 ILLADR 无效地址检测位 检测到无效地址时 该位置1 置1后需软件来清0 向该位写1可将其清零 复位时该位为0 注意 任何无效的地址会导致不可屏蔽中断 NMI 事件发生 2 系统控制和状态寄存器2 SCSR2 SCSR2被映射到数据存储器空间7019h 位15 7 保留位 位6 I PQUAL 时钟输入 呔 楆敬丠瑯 畯摮 潃瑮湥 祔数 整瑸漯瑣瑥 獕牥刭瑥牵 摯 湯整瑮 湥瑧 飍 軿 最小脉冲宽度 脉冲宽度只有达到这个宽度之后 内部的输入状态才会改变 0 锁存脉冲至少需要5个时钟周期 1 锁存脉冲至少需要11个时钟周期 如这些引脚作I O使用 则不使用输入时钟限定电路 位5 WD保护位 该位可用来禁止WD工作 该位是 个只能清除的位 复位后 1 通过向该位写1对其清0 0 保护WD 防止WD被软件禁止 1 复位时的默认值 能够通过软件禁止WD工作 位4 XMIFHI Z 该位控制外部存储器接口信号 XMIF 0 所有XMIF信号为正常驱动模式 非高阻态 1 所有XMIF信号处于高阻态 位3 BOOT使能位 这位反映了BOOTEN 引脚在复位时的状态 0 使能引导ROM 地址0000h 00FFhROM块占用 禁止用FLash存储器 1 禁止引导ROM LF2407片内Flash程序存储器映射地址范围为0000h 7FFFh 位2 MP MC 微处理器 微控制器选择 0 DSP设置为微控制器方式 片内FLASH映射到程序存储器空间 地址为0000h 7FFFh 1 DSP设置为微处理器方式 程序空间0000h 7FFFh被映射到片外程序存储器空间 必须外扩外部程序存储器 位1 0 SARAM的程序 数据空间选择 2 3 2中断优先级和中断向量表 LF2407ADSP具有3个不可屏蔽中断和6个级别的可屏蔽中断 INT1 INT6 采用了中断扩展设计来满足LF2407ADSP对多个外设的中断需求 以下各图为2407A中断源优先级和中断向量表 2 3 3外设中断扩展控制器 LF240 xCPU内核提供给用户 6级可屏蔽中断INT1 INT6 每1级别又包含多个外设中断请求 所以用一个外设中断扩展 PIE 控制器专门来管理来自各种外设或外部引脚的数十个中断请求 下图为外设中断扩展模块图 2 3 3 1中断请求层次和结构 外设中断个数很多 用一个两级中断结构来扩展可响应的中断个数 DSP的中断请求 应答硬件逻辑和中断服务程序软件都有两级层次的中断 在低层次中断 从几个外设来的外设中断请求 PIRQ 在中断控制器处进行或运算 产生一个INTn n 1 6 中断请求 在高层次中断 从INTn中断请求产生一个到CPU的中断请求 如果一个引起中断的外设事件发生且相应的中断使能位被置1 则会产生一个外设到中断控制器的中断请求 如果一个外设既可产生高级的中断请求 又可产生低级中断请求 如SCI SPI ADC等 对应的中断优先级位的值也被送到PIE来进行判断 中断请求 PIRQ 标志位一直保持到中断应答自动清除或用软件将其清除 在高层次中断 或逻辑运算的多个外设中断请求INTn产生一个到CPU的中断请求 它是2个CPU时钟脉冲宽的低电平脉冲 当多个外设同时发出中断请求时 CPU总是响应优先级高的中断请求 注意 外设中断请求标志位是在CPU响应中断时自动清除 即在高层次中断时清0 而不是在低层次中断时清0 4 3 2中断向量 当CPU接受中断请求时 它并不知道是哪一外设事件引起的中断请求 为了使CPU能够区别不同外设引起的中断事件 需经PIE译码 决定哪个中断请求被响应 某个外设的中断请求有效时 都会产生唯一的外设中断向量 被装载到外设中断向量寄存器 PIVR CPU应答外设中断请求时 从PIVR中读取相应的中断向量 并产生一个转到该中断服务子程序 GISR 入口的向量 LF240 x有两个中断向量表 CPU向量表和外设向量表 CPU向量表用来得到响应中断请求的一级通用中断服务子程序 GISR 外设向量表用来获取响应某外设事件的特定中断服务子程序 SISR CPU向量表 CPU中断的中断矢量表安排在程序存储器地址为0000h 003Fh的64个单元 每个CPU中断分配了两个地址单元 用以存放一条两个字的转移指令 在一级通用中断服务子程序GISR中可读出PIVR中的值 保护现场后 用PIVR中的值来产生一个转到SISR的向量 例如 可屏蔽中断XINT1 高级模式级别为INT1 优先级为7 产生一个中断请求 CPU对其响应 这时 0001h XINT1的外设中断向量 被装载到PIVR中 CPU获取被装载到PIVR中的值之后 用这个值来判断是哪一个外设引起的中断 接着转移到相应的SISR 1 假中断向量 如果一个中断应答被响应 但没有获得相应的外设的中断请求 那么就使用假中断 假中断向量特性可以保证中断系统的完整性 从而使中断系统一直可靠安全地运行 而不会进入无法预料的中断死循环中 以下两种情况会产生假中断 1 CPU执行一个软件中断指令INTR 使用参数1 6 用于请求服务6个可屏蔽中断 INT1 INT6 之一 2 当外设发出中断请求 但是其INTn标志位却在CPU应答请求之前已经被清0 在上述两种情况下 并没有外设中断请求送到中断控制器 因此中断控制器不知道哪个外设中断向量装入到PIVR 此时向PIVR中装入假中断向量0000h 从而避免程序进入中断死循环中 2 软件结构 中断服务子程序有两级 通用中断服务子程序 GISR 和特定中断服务子程序 SISR 在GISR中保存必要的上下文 从外设中断向量寄存器 PIVR 中读取外设外设中断向量 这个向量用来产生转移到SISR的地址入口 程序一旦进入特定中断服务子程序后 所有的可屏蔽中断都被屏蔽 外设中断扩展 PIE 不包括象复位和NMI这样的不可屏蔽中断 2 4 4中断中断是由软件或硬件产生一个信号 该信号引起CPU挂起主程序 并转而执行一个子程序 即中断服务子程序 一 概述1 中断信号的产生 C2000支持软件和硬件两种中断 软件中断 由中断指令INTR NMI或TRAP请求 硬件中断 外部中断 由外部中断引脚上的信号触发 如 RS NMI内部中断 由片内外设的信号触发 2 中断优先级硬件中断可能同时产生 CPU依据中断源的优先级顺序而执行相应的中断服务子程序 C240X的硬件中断分为两级 CPU中断 8个 核心级 外设中断 46个 分别挂在CPU中断中6个可屏蔽中断之下 CPU中断优先级为1 RESET 复位中断2 保留3 NMI 不可屏蔽中断4 INT1 可屏蔽中断5 INT2 可屏蔽中断6 INT3 可屏蔽中断7 INT4 可屏蔽中断8 INT5 可屏蔽中断9 INT6 可屏蔽中断 3 可屏蔽中断与不可屏蔽中断 可屏蔽中断 指可以用软件设置使它们禁止 屏蔽 或允许 不屏蔽 的中断 可屏蔽中断均为硬件中断 C240X的可屏蔽中断为INT1 INT6 这些中断源下面挂着外设和外部引脚 如 ADC SPI SCI 事件管理器等 不可屏蔽中断 包括 所有的软件中断两种外部硬件中断 RS NMI 对于不可屏蔽中断 CPU总是要响应 并从主程序转移到相应中断服务程序 3 1 可屏蔽中断的响应流程 1 响应可屏蔽中断 条件 1 INTM 0 使能所有末屏蔽的中断 2 中断屏蔽寄存器 IMR 中相应位为1 使能相应的中断 3 若有多个中断请求 优先级高的中断源先相应 2 将PC压入堆栈 用相应的CPU中断矢量单元地址装载到PC 3 CPU从相应中断矢量单元中取出一条用户设定的转移指令 然后转入执行这一CPU中断的通用中断服务程序 GISRx 例 INT2上有一外设中断请求被响应 其中断矢量单元地址为0004h 则在0004h单元放置一条转移指令 0004hBGISR2 3 1 可屏蔽中断的响应流程 4 在GISRx中完成必要的现场保护后 从外设中断矢量寄存器 PIVR 中读取相应外设中断矢量 通常并将其左移一个预定的值 再加上偏移量 所得到的值就是这个外设中断事件的中断服务程序 SISR 的入口地址 在SISR中执行对该外设中断事件的服务 5 执行SISR 直到一条返回指令 结束该中断服务程序 6 从栈顶弹出返回地址到PC 例 典型中断服务程序代码假设 挂在INT2之下的EVA通用定时器1的周期中断INT2的中断矢量为0004hEVA通用定时器1周期中断的中断矢量 PIV 为0027h 存放在PIVR 地址汇编语言代码 CPU中断矢量表0000hRSVECT BSTART 复位矢量0002hINT1 BGISR1 转移到INT1的通用中断服务子程序GISR10004hINT2 BGISR2 转移到INT2的通用中断服务子程序GISR2 CPU其他中断矢量 地址汇编语言代码GISR1 其他中断的通用中断服务子程序 GISR2 保存必要的上 下文LACCPIVR 1 将中断矢量寄存器 PIVR 的值移位 2 后装 入累加器ADDoffset 累加器的值加一个偏移量后 即为特定的中断 服务子程序SISRx的地址BACC 转移到累加器指示的地址中 2 PIV offset 外设中断矢量表2 PIV offsetBSISR1 转移到中断事件的特定中断服务子程序SISR中2 PIV offset 2BSISR2 BSISRx SISRx 外部事件中断服务程序 RET 返回 3 2 不可屏蔽中断 LF240 xDSP无NMI引脚 在访问无效的地址时 不可屏蔽中断 NMI 就会发出请求 当NMI被响应后 程序将转到不可屏蔽中断向量入口地址0024h处 3 2 不可屏蔽中断 1 硬件非屏蔽中断两个引脚产生硬件非屏蔽中断 RS 复位 CPU停止程序流程 使处理器回到一个初始状态 然后从地址0000h开始执行 NMI 当该信号被激活时 NMI引脚变低或NMI指令 CPU使程序控制转向0024h矢量地址 同时可屏蔽中断被禁止 NTM 1 NMI也可用做软件复位 与硬件复位不同 其不影响器件任何模式 也不终止当前有效指令或存储器的操作 LF240 x芯片没有NMI引脚 当器件访问一个无效地址时 将产生非屏蔽中断请求 2 软件非屏蔽中断 3条指令可引起软件非屏版中断 INTRKNMITRAP 该指令允许启动中断 指令操作数K表示CPU将转移到哪个中断矢量单元 例INTR10当响应INTR中断时 INTM 1禁止可屏蔽中断 注意 INTR指令不影响IFR标志 2 软件非屏蔽中断 3条指令可引起软件非屏版中断 INTRKNMITRAP 该指令使程序转移到中断矢量地址24h 与不可屏蔽硬件中断NMI使用同一单元 2 软件非屏蔽中断 3条指令可引起软件非屏版中断 INTRKNMITRAP 该指令使CPU转移到中断矢量单元22h 该指令不禁止任何可屏蔽中断 即INTM不被置1 非屏蔽中断流程图 2 3 3 3全局中断使能 状态寄存器ST0中有一个全局中断使能位INTM 在初始化程序和主程序中 常常需要使用该位对DSP的全局中断进行打开和关闭操作 特别是初始化过程中 需要关全局中断 而在主程序开始执行时 需要开全局中断 关全局中断和开全局中断的汇编语言指令如下 SETCINTM CLRCINTM 把INTM位置1 关全局中断 把INTM位清0 开全局中断 执行完中断服务子程序后 一定要打开全局中断 因为进入中断服务程序时 系统自动关中断 所以从中断返回时需要重新打开全局中断 2 3 4CPU的中断寄存器 CPU中断寄存器包括 1 中断标志寄存器 IFR 2 中断屏蔽寄存器 IMR 用于管理CPU中断INT1 INT6 2 3 4 1CPU中断标志寄存器 IFR IFR映射到数据存储器空间为0006h 各位意义 位15 6 保留位 位5 0 分别为INT6 INT1的中断标志位 0 无INTn n 1 6 的中断挂起 1 表示有INTn n 1 6 的中断挂起 中断标志寄存器包含了所有可屏蔽中断INT6 INT1的标志位 当一个外设发出可屏蔽中断请求时 中断标志寄存器的相应标志位被置1 如果该外设对应中断屏蔽寄存器中的中断使能位也为1 则该中断请求被送到CPU 此时该中断正被挂起或等待响应 读取IFR可以识别挂起的中断 向相应的IFR位写1将清除已挂起的中断 CPU响应中断或复位都能将IFR标志清除 在对IFR操作时应注意以下几点 1 要想清除某一IFR位 必须向该位写1 而不是0 2 当一个可屏蔽中断被响应时 只有IFR位被清除 而相应的外设控制寄存器中的中断请求标志位不会被清除 如果需要清除这些标志位 应该使用软件来清除 3 当通过INTR指令来请求中断 且相应的IFR位被置1时 CPU不会自动清除该位 该位必须由软件来清除 4 IFR和IMR控制的是核心级的中断 所有外设在它们各自的配置 控制寄存器都有相应的中断屏蔽和标志位 2 3 4 2CPU中断屏蔽寄存器 IMR IMR映射在数据存储器空间中的地址为0004h 位15 6 保留位 位5 0 分别为INT6 INT1中断的屏蔽位 0 中断INTn被屏蔽 1 中断INTn被使能 用于管理挂在内核级中断INT1 INT6下的46个外设中断 包括 一个外设中断矢量寄存器 PIVR 三个外设中断请求寄存器 PIRQR0 1 2 三个外设中断应答寄存器 PIACKR0 1 2 外设中断矢量寄存器 PIVR 地址701Eh用于存放最近一次被响应的外设中断的矢量地址 二级中断矢量地址 2 3 4 3外设中断寄存器 2 外设中断寄存器 用于管理挂在内核级中断INT1 INT6下的46个外设中断 包括 一个外设中断矢量寄存器 PIVR 三个外设中断请求寄存器 PIRQR0 1 2 三个外设中断应答寄存器 PIACKR0 1 2 外设中断请求寄存器0 1 2 PIRQR0 1 2 地址7010h 7012h用于存放外设中断请求标志 1 表明相应的中断请求被挂起0 表明相应的中断请求未被挂起 只能对其测试 可读 不能对其编程 不可写 向某位写入1将发出 个中断请求到器件CPU 写入0没影响 2 外设中断寄存器 用于管理挂在内核级中断INT1 INT6下的46个外设中断 包括 一个外设中断矢量寄存器 PIVR 三个外设中断请求寄存器 PIRQR0 1 2 三个外设中断应答寄存器 PIACKR0 1 2 外设中断应答寄存器0 1 2 PIACKR0 1 2 地址 7014h 7016h用于存放外设中断应答信号只能对其测试 可读 不能对其编程 不可写 向某位写1 将引起相应的外设中断应答被插入 从而将相应的外设中断请求位清0 但不改变外设矢量寄存器 PIVR 的内容 3 外设中断控制寄存器 2个 用来控制和监视两个外部引脚XINTl和XINT2的状态 在LF240 x中 XINT1和XINT2引脚必须被拉为低电平至少6个 或12个 CLKOUT周期才能被CPU内核识别 外设中断l控制寄存器 XINTlCR 一地址7070h外设中断2控制寄存器 XINT2CR 一地址7071h D15XINT1flag XINTl标志位 该位指示在XINTl引脚上是否检测到 个眺变0未检测到引脚跳变1检测到引脚跳变 3 外设中断控制寄存器 2个 用来控制和监视两个外部引脚XINTl和XINT2的状态 外设中断l控制寄存器 XINTlCR 一地址7070h控制和监视外部引脚XINT1的状态 外设中断2控制寄存器 XINT2CR 一地址7071h控制和监视外部引脚XINT2的状态 D2XINT1polarity XINT1极性 选择在XINT1引脚产生中断的信号极性 0在下降沿 由高到低跳变 产生中断1在上升沿 由低到高跳变 产生中断 3 外设中断控制寄存器 2个 用来控制和监视两个外部引脚XINTl和XINT2的状态 外设中断l控制寄存器 XINTlCR 一地址7070h控制和监视外部引脚XINT1的状态 外设中断2控制寄存器 XINT2CR 一地址7071h控制和监视外部引脚XINT2的状态 D1XINTlpriority XINT1优先级 该位决定XINT1引脚中断的优化级 0 高优先级 1 低优先级注意 优先级不同 所挂的CPU中断不同高优先级 INT1中断向量0002h低优先级 INT6中断向量000Ch但外设中断向量相同 XINTl 0001hXINT2 0011h 3 外设中断控制寄存器 2个 用来控制和监视两个外部引脚XINTl和XINT2的状态 外设中断l控制寄存器 XINTlCR 一地址7070h控制和监视外部引脚XINT1的状态 外设中断2控制寄存器 XINT2CR 一地址7071h控制和监视外部引脚XINT2的状态 D0XINTlenable XINTl使能位 该位使能或屏蔽外部中断XINT10屏蔽中断1使能中断 3 外设中断控制寄存器 2个 用来控制和监视两个外部引脚XINTl和XINT2的状态 外设中断l控制寄存器 XINTlCR 一地址7070h控制和监视外部引脚XINT1的状态 外设中断2控制寄存器 XINT2CR 一地址7071h控制和监视外部引脚XINT2的状态 外设中断2控制寄存器 XINT2CR 用于控制和监视外部引脚XINT2的状态 各位的定义同 XINT1CR 2 3 5复位和无效地址检测 2 3 5 1复位 LF2407DSP器件有两个复位来源 1 外部复位引脚的电平变化引起的复位 2 看门狗定时器溢出引起的复位 复位时 复位引脚被设置为输出方式 且被驱动为低 向外部电路表明LF240 x器件正在自己复位 2 3 5 2无效地址检测 无效地址是不可执行的地址 例如 外设存储器映射中的保留寄存器 LF240 x一旦检测到对无效地址的访问 就将系统控制和状态寄存器1 SCSRl 中的无效地址标志位 ILLADR 置1 从而产生一个不可屏蔽中断 NMI 无论何时检测到对无效地址的访问 都会产生插入一个无效地址条件 无效地址标志位 ILLADR 在无效地址条件发生之后被置1 并一直保持 直到软件将其清除 2 3 7中断响应的过程 下面介绍某一外设中断请求的响应过程 1 某一外设发出中断请求 2 如该外设的中断请求标志位 IF 为1 且该外设的中断使能位 IE 为1 则产生一个到PIE控制器的中断请求 如果中断没有被使能 则中断请求标志位 IF 为1的状态保持到被软件清0 3 如果不存在相同优先级 INTn 的中断请求 那么PIRQ会使PIE控制器产生一个到CPU的中断请求 INTn 为2个CPU时钟宽度的低电平脉冲 4 CPU的中断请求设定CPU的中断标志寄存器 IFR 如果CPU中断已被使能 中断屏蔽寄存器 IMR CPU会中止当前的任务 将INTM置1 以屏蔽所有可屏蔽的中断 保存上下文 并且开始为高优先级的中断 INTn 执行通用中断服务子程序 GISR CPU自动产生一个中断应答 并向与被响应的高优先级中断的相应程序地址总线 PAB 送一个中断向量值 例如 如果INT2被响应了 它的中断向量0004h被装入PAB 5 外设中断扩展 PIE 控制器会对PAB的值进行译码 并产生一个外设响应应答 清除与被应答的CPU中断相关的PIRQ位 外设中断扩展控制器然后将相应的中断向量 或假中断向量 载入外设中断向量寄存器 PIVR 当GISR已经完成了现场保护 然后就可读入PIVR 并使用中断向量 使程序转入到特定中断服务子程序 SISR 的入口处去执行 下图为CPU响应外设中断的流程图 2 3 8中断响应的等待时间 中断响应的等待时间包括 外设同步接口时间 CPU响应时间 ISR转移时间 中断等待时间是指提出中断请求到响应请求之间的时间 1 外设同步接口时间是指PIE识别出外设发来的中断请求 经判断优先级 转换后将中断请求发送至CPU的时间 2 CPU的响应时间指的是CPU识别出已经被使能的中断请求 响应中断 清除流水线 并且开始捕获来自CPU中断向量的第一条指令所花费的时间 最小的CPU的响应时间是4个CPU指令周期 3 ISR转移时间是指为了转移ISR中特定部分而必须执行一些转移所花费的时间 该时间长短根据用户所实现的ISR的不同而有所变化 补充 1 不可屏蔽中断最小等待时间为4个周期2 一个外部可屏蔽硬件中断 其最小等待时间为8个周期 2 4程序控制 程序控制是指CPU对程序运行的控制通常程序是顺序执行的 即在连续的程序存储器地址上取指并执行 但有时程序需要转移到不连续的地址 然后再连续执行新地址处的指令 TMS320C2000中影响程序控制操作的指令有 分支转移调用与返回重复指令中断复位 2 4 1程序地址的产生 在执行当前指令的同时 程序流要求处理器生成下一条指令的程序地址 它是顺序或非顺序的 程序地址产生逻辑使用以下硬件 1 程序计数器 PC C2000为16位PC 2 程序地址寄存器 PAR 驱动程序地址总线 PAB 提供程序的读 写地址 3 堆栈 16位宽 8级硬件堆栈 最多可保存8个返回地址 4 微堆栈 MSTACK 16位 1级深的堆栈 用于保存一个返回地址 5 重复计数器 RPTC 16位 与重复指令 RPT 一起 用来确定RPT后面的一条指令重复执行次数 一 程序计数器 PC 程序计数器 PC 存放将被执行的下一条指令的地址 影响PC加载方式的程序控制操作 1 复位 2 顺序执行 3 分支转移 4 由累加器转移 5 子程序调用与返回 6 从累加器调用与返回 7 软件或硬件中断 加载到PC的地址 PC 0000h 复位向量地址 一 程序计数器 PC 程序计数器 PC 存放将被执行的下一条指令的地址 PC的加载方式 1 复位 2 顺序执行 3 分支转移 4 由累加器转移 5 子程序调用与返回 6 从累加器调用与返回 7 软件或硬件中断 加载到PC的地址 PC PC 1例 PC目标代码指令0108be42CLRCOVM0109bd00LDP 0010a 一 程序计数器 PC 程序计数器 PC 存放将被执行的下一条指令的地址 PC的加载方式 1 复位 2 顺序执行 3 分支转移 4 由累加器转移 5 子程序调用与返回 6 从累加器调用与返回 7 软件或硬件中断 加载到PC的地址 PC 转移指令之后16位立即数例 Bpma 一 程序计数器 PC 程序计数器 PC 存放将被执行的下一条指令的地址 PC的加载方式 1 复位 2 顺序执行 3 分支转移 4 由累加器转移 5 子程序调用与返回 6 从累加器调用与返回 7 软件或硬件中断 加载到PC的地址 PC 累加器的低16位值例 BACC 一 程序计数器 PC 程序计数器 PC 存放将被执行的下一条指令的地址 PC的加载方式 1 复位 2 顺序执行 3 分支转移 4 由累加器转移 5 子程序调用与返回 6 从累加器调用与返回 7 软件或硬件中断 调用 将PC中下一条指令的地址压入堆栈 将调用指令后的16位立即数装入PC 返回 将返回地址从堆栈中弹回PC 例 PC指令0100CALL01e0h0102 一 程序计数器 PC 程序计数器 PC 存放将被执行的下一条指令的地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 下城区营销方案设计公司
- 电池及电池系统维修保养师适应性考核试卷及答案
- 聚甲基丙烯酸甲酯(PMMA)装置操作工岗位操作技能考核试卷及答案
- 刨花板工技术考核试卷及答案
- 果蔬汁无菌包装市场需求预测分析报告
- 鸿基岸芷汀兰营销方案
- 村级事务管理汇报
- 企业培训咨询加盟方案
- 施工方案是哪个单位出具
- 活动现场咨询答疑方案
- DG-TJ08-2461-2024 旧住房更新改造查勘标准
- 耳鸣的健康教育
- 小学食堂从业培训
- 2025届云南中考道德与法治真题试卷【含答案】
- 尿毒症并发心衰的护理
- 财务给研发培训课件
- 2025年中国底部填充胶粘剂市场调查研究报告
- 个人防护与手卫生规范
- 平面设计专业介绍
- 2025-2030年中国汽车半轴行业市场现状供需分析及投资评估规划分析研究报告
- 校园校车消防管理制度
评论
0/150
提交评论