第 2 章 f240x 系列 dsp 内部资源介绍

Post on 18-Mar-2016

212 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

第 2 章 F240X 系列 DSP 内部资源介绍. 2.1 F240x 系列 DSP CPU (Central Processing Unit) 内部功能模块介绍. CPU 功能模块 : 总线:程序总线和数据总线 运算部分:中央算术逻辑单元,乘法器,输入定标器 辅助寄存器部分:辅助寄存器, ARAU 存储器: FLASH, DARAM 控制部分:程序控制,器件状态配置,堆栈等. 2407A CPU 功能模块图. 注: Data Bus 和 Program Bus 包括地址和数据位。. CPU 地址和数据总线结构. - PowerPoint PPT Presentation

TRANSCRIPT

第 2 章 F240X 系列 DSP内部资源介绍

CPU 功能模块 : 总线:程序总线和数据总线 运算部分:中央算术逻辑单元,乘法器,输入定标器 辅助寄存器部分:辅助寄存器, ARAU 存储器: FLASH, DARAM 控制部分:程序控制,器件状态配置,堆栈等

2.1 F240x 系列 DSP

CPU (Central Processing Unit) 内部功能模块介绍

2407A CPU

功能模块图

注:Data Bus 和 Program Bus 包括地址和数据位。

CPU 地址和数据总线结构

data-read address bus (DRAB): A 16-bit internal bus that carries the address for each read from data memory.data read bus (DRDB): A 16-bit internal bus that carries data from data memory to the CALU and the ARAU. data-write address bus (DWAB): A 16-bit internal bus that carries the address for each write to data memory. data write bus (DWEB): A 16-bit internal bus that carries data to both program memory and data memory.program address bus (PAB): A 16-bit internal bus that provides the addresses for program-memory reads and writes.program read bus (PRDB): A 16-bit internal bus that carries instruction code and immediate operands, as well as table information, from program memory to the CPU.

中央处理单元 CPU (Central Processing Unit)

1. 32 位中央算术逻辑部分( Central Arithmetic Logic Unit CALU )

2. 16×16 位的并行乘法器 (Multiplier)

3. 16 位输入定标移位器 (Input shifter)

4. 辅助寄存器算术单元( ARAU ) 5. 状态寄存器

关于运算部分输入定标器、中央算术逻辑部分和乘法器

一、中央算术逻辑部分 1. 32 位中央算术逻辑单元( Central Arithmet

ic Logic Unit CALU )2. 32 位累加器 (Accumulator ACC)

3. 32 位数据输出移位器 (Output shifter)

能实现许多算术和逻辑运算功能,且大多数的运算只需一个时钟周期。运算功能包括:• 16 位加• 16 位减• 布尔运算• 位测试• 移位功能

1. 中央算术逻辑单元 (CALU)

累加器的高位字和低位字都可进行单独移位和存储 输出数据移位过程中 ACC中的内容保持不变

CLAU 有两个输入一个:总是由累加器 (ACC)提供;另一个:由乘法器的乘积寄存器 (PSCALE) 或输入数据定标移位器( ISCALE )提供 。

CALU 的运算结果一旦 CALU 完成算术运算或逻辑运算操作,其结果总是送到 32 位累加器;

由累加器对结果进行附加运算(如移位);I. 累加器的输出连接到 32 位输出数据定标移位器( OSCALE );II. 经过 OSCALE 移位,数据的高 16 位和低 16 位分别移位或存入数据寄存器。

2. 32 位累加器 ACC

CALU 中的 32 位运算结果送至累加器中执行单一的移位或循环操作。32 位累加器是 CLAU 的寄存器输出。

通过进位位实现累加器内容的移位和旋转。累加器的高位字和低位字分别送至输出数据定标移位器,在此定标移位后,再存至数据存储器。

SFL 和 SFR (左移、右移)指令ROL 和 ROR (左、右旋转)指令

SFL:溢出最高位到进位位,最低位填 0 。ROL :溢出最高位到进位位,进位位移至最低位。SFR:当为逻辑右移,最低位到进位位,最高位填 0;当为算术右移,最低位到进位位,最高位 31 复制 30 位,进位位不变。ROR :最低位到进位位,进位位移至最高位。

SXM 位影响 SFR (累加器右移)指令的定义当 SXM = 1 , SFR 完成一个算术右移且累加器中数据的符号保留;当 SXM = 0 , SFR 实现一个逻辑右移,最低位溢出,最高位填 0 。但, SXM 不影响 SFL (累加器左移)指令。

ACC 的位操作功能 由于 CALU 的位移动和旋转在累加器中完成,因此 CALU 可以执行布尔运算,使得 DSP 具有位操作功能。。 • 进位位 C :状态寄存器 ST1 第 9 位;• 溢出方式位 OVM :状态寄存器 ST0 第 11 位;• 溢出标志位 OV :状态寄存器 ST0 第 12 位;• 测试 / 控制标志位 TC :状态寄存器 ST1 第 11位。位测试指令:允许测试数据存储器中一个字的特定位,测试操作不影响累加器。

进位位 C影响进位位 C 的操作:• 加至 ACC 或从 ACC 减;• 将 ACC 的数据进行移位或循环移位。进位位的状态提供两个条件算子 C 、 NC ,它们影响分支、调用、返回和条件执行。硬件复位进位位置 1 。 但,装载累加器、逻辑操作或非算术运算以及控制指令不影响进位位。

溢出方式位 OVM CLAU 的溢出方式可以由 ST0 的 OVM 位使能。

OVM=0 ,累加器发生溢出时装载正常溢出值;OVM=1,溢出方式使能,累加器发生溢出时装载以下两个特定值之一:若为正溢出,累加器装载最大正数 7FFF FFFFh ;若为负溢出,累加器装载最大负数 8000 0000h 。

注意:逻辑运算的结果不发生溢出。

溢出标志位 OV

• 当溢出发生时,置 OV = 1 (锁存);• 当未检测到 ACC 输出时, OV = 0 (不锁存)。

测试 / 控制标志位 TC根据被测试位的值,对该位置 0 或 1 。

CLAU 可以根据 CLAU 和累加器的状态执行分支类指令。分支类指令有:• 基于状态位 OV( 溢出标志 ) ;• EQ (累加器等于 0 )的值执行条件分支指令;• 由累加器提供分支地址执行分支指令。

3. 32 位数据输出移位器(Output shifter)

OSCALE 将 32 位累加器输出左移 0 到 7 位,然后用 SACH 或 SACL 指令将移位器的高位字(高 16 位)或低位字(低 16 位)输出到数据写总线( DWEB ) 。

数据输出移位器:为 1 个 16 到 32 位的桶型左向移位寄存器。 寄存器符号: OSCALE

当数据传送到数据总线上移位就完成,此时累加器中的内容仍保持不变。

输出定标器用于累加器的高字位段时( 16 ~ 31 位),最高有效位丢失,最低有效位用移入的低字位段( 0 ~ 15位)填写;当输出定标器用于累加器的低字位段时,最低有效位填 0 。

二、 16 位输入定标移位器( Input shifter )输入定标移位器:是 1 个 16 到 32 位的桶型左向移位器。移位器符号: ISCALE

ISCALE CALU16bit

32bit

16 位 输 入和数据总线相连;32 位 输 出和 CALU单元相连。

输入定标移位器•ISCALE 能将输入的 16 位数据的 0 到 16 位在本周期内向左移位,以得到 32 位的输出。因此,输入定标移位操作不需要额外的周期。

•左移范围: 0~15

•左移时的符号扩展方式由 ST1 中的 SXM决定

数据调整时,输入定标移位器将输入的数据左移0 ~ 16 位,移位后输出数据的最低有效位段填 0 ,而最高有效位段要根据状态寄存器 ST1 的符号扩展方式位( SXM )的值来决定。当 SXM = 1 时,高位进行符号扩展;当 SXM = 0 时,高位填 0 。 输入数据的移位量由指令字所包含的常量或临时寄存器( TREG )指定。 基于 TREG 的移位允许动态调整定标因子,从而使数据适应不同的系统性能。

三、 16×16 位的并行乘法器(Multiplier)

乘法器:是 1 个 16X16 位的硬件乘法器,它可以在单个机器周期内产生 1 个 32 位结果的有符号或无符号数。 乘法器的输入:一个来自 16 位的暂存器( TREG ),另一个通过数据读总线( DRDB )来自数据存储器,或者通过程序读总线( PRDB )来自程序存储器。

两个输入值相乘后, 32 位的乘积结果存放在 32 位的乘积寄存器( PREG )中。

PREG 的输出:连接到乘积定标移位器,通过乘积定标移位器( PSCALE ),乘积结果可以从 PREG 送到 CALU 或数据存储器。

乘数和被乘数都视为 2 的补码,其 32 位乘积数也是2 的补码。

乘积定标移位器 PSCALE :对乘积结果采用 4种乘积移位方式。

移位方式:由状态寄存器 ST1 的乘积移位方式位( PM )指定。

PM SHIFT 说明00 没有移位 乘积结果不移位,直接送到 CALU 单元或数据总线。01 左移 1 位 移去在作 2 的补码乘积运算中所产生的附加符号位 ,得到一个 Q31 的乘积。10 左移 4 位 当与一个 13 位常数相乘时,移去在作 16

×13 位 2 的补码乘积运算中所产生的 4 个附加符号位,生成一个 Q31 的乘积。11 右移 6 位 定标乘积结果,以使 128次乘加的运算结果不会使累加器溢出。

注: Q31格式是一种二进制小数格式,该格式在二进制小数点的后面有 31 个数字。

四、辅助寄存器算术单元 ( ARAU ) ARAU 的主要功能:是在 CALU 操作的同时执行 8 个辅助寄存器( AR7 ~ AR0 )上的算术运算。

ARAU :对当前辅助寄存器 AR 的内容增加、减少或作无符号 16 位算术运算。 由辅助寄存器指针 ARP所指定的寄存器( AR7 ~ AR0 )被当做当前辅助寄存器 AR 。

1. 数据装载可以从数据存储器、 ACC 、乘积寄存器或指令的立即操作数装载。辅助寄存器

ARP

当 ARP 装载了新的值后,原来 ARP 的值就装载到辅助寄存器指针缓冲器 ARB 中。寄存器中的内容可存贮在数据存储器中或作为 ARAU 的输入。

2. 说明1. 辅助寄存器算术单元( ARAU )完全独立于中央算术逻辑单元( CALU )。2. 利用包含在辅助寄存器中的 16 位地址可以访问 64K 数据空间中的任意单元。这 8 个辅助寄存器提供了强大而灵活的间接寻址能力。

在一条指令的执行过程中,当前辅助寄存器存放被访问数据存储区的地址。若指令为读数据存储区数据, ARAU 就将该地址送至 DRAB (数据读地址总线);若指令为向数据存储区写数据, ARAU 就将该地址送至 DWAB (数据写地址总线)。

3. ARAU 执行的操作• 通过执行任何一条支持间接寻址的指令将辅助寄存器值增 1 或减 1 ,或者增一个或减一个变址值。• 将一个常数加至辅助寄存器值或从辅助寄存器值减去一个常数。该常数取自指令字的 8 位最低有效位。 • 比较 AR0 和当前 AR 的内容,然后将比较结果放至状态寄存器 ST1 中的测试 / 控制位 TC 。结果经数据写总线 DWEB 传送至 TC 。

4. ARAU 执行其算术运算 在流水线的译码阶段(即当指令所指明的操作正被译码时), ARAU 执行算术运算。使得在下一条指令的译码阶段之前能够产生本条指令的地址。

但有一种情况例外:在处理 NORM异或指令时,是在流水线的执行过程中完成对辅助寄存器的修改。

5. 辅助寄存器的其他用途辅助寄存器除用作数据存储器的地址存储器外,还可用作其他用途 。• 通过 CMPR比较指令,利用辅助寄存器支持条件转移、调用和返回。CMPR 指令将 AR0 的内容和当前 AR 的内容进行比较,并将比较结果存至状态寄存器 ST1 中的测试/ 控制位 TC 。

• 将辅助寄存器作为暂存单元。例如,使用 LAR 指令向辅助寄存器装入数值,以及使用 SAR 指令将辅助寄存器值存至数据存储器。

• 将辅助寄存器用作软件计数器,根据需要将其增1 或减 1 。

五、状态寄存器F240X 系列 DSP 有两个状态寄存器 ST0 和 ST1 ,是应用中特别重要的两个寄存器。它们含有各种状态和控制位

ST0 和 ST1 的内容可以保存到数据存储器或从数据存储器读出加载到 ST0 、 ST1 ,从而在子程序调用或进入中断时实现 CPU各种状态的保存。

15 13 12 11 10 9 8 0ST0 ARP OV OVM 1 INTM DP

  15 13 12 11 10 9 8 7 6 5 4 3 2 1 0ST1 ARB CNF TC SXM C 1 1 1 1 XF 1 1 PM 

1. 状态寄存器 ST0 、 ST1每位字符的含义

2. 状态寄存器 ST0 和 ST1 的字段定义 符号 功能ARB

辅助寄存器指针缓冲器。当 ARP 加载到 ST0 ,原有的 ARP 值复制到 ARB 中。当通过 LST# 1 指令加载 ARB 时,也把相同的 ARB 值复制到 ARP 。

ARP

辅助寄存器指针。 ARP选择间接寻址时, ARP所指的寄存器为当前辅助寄存器 AR 。当装载 ARP 时,复制 ARP原有的值到 ARB 寄存器中。在间接寻址时, ARP 可由存储器相关指令改变,也可由指令改变。当执行 LST #1 指令时, ARP也加载与 ARB相同的值。

C

进位位。加法结果产生进位时, C 置为 1 ;或在减法结果产生借位时, C 被清 0 。否则,除了执行带有 16 位移位的 ADD 或 SUB指令外, C 在加法后被清除或在减法后被设置。在 ADD 或 SUB指令时, ADD仅可对进位位进行置位而 SUB仅可对进位位进行清除,而不会对进位位产生其它影响。移 1 位和循环指令也可影响进位位 C ,以及 SETC 、 CLRC 和 LST 指令也可影响 C 。条件转移、调用和返回指令可以根据 C 的状态进行执行。复位时C 置 1 。

符号 功能CNF

片内 DARAM 配置位。若 CNF=0 ,可配置的双口 RAM区映射到数据存储空间;若 CNF=1 ,可配置的双口 RAM 单元区映射到程序存储空间。 CNF 位可通过指令修改。复位时 CNF 置为 0 。

DP数据存储器页指针。 9 位的 DP 寄存器与一个指令字的低七位一起形成一个 16 位的直接寻址地址。可通过指令对其修改。

INTM

中断模式位。当 INTM 置为 0 时,所有的未屏蔽中断使能。当它置 1 ,所有可屏蔽中断禁止。可通过指令将 INTM 位置 1 或清 0 。中断也可对 INTM 进行设置。 INTM 位对不可屏蔽中断和 NMI 中断没有影响。注意 INTM 位不受 LST 指令的影响。复位时该位置1 。在处理可屏蔽中断时,该位置为 1 。

符号 功能OV

溢出标志位。该位保存一个被锁存的值,用以指示 CALU 中是否有溢出发生。一旦发生溢出, OV 位保持为 1直到下列条件中的一个发生时才能被清除:复位、溢出时条件转移、无溢出时条件转移指令或 LST 指令。

OVM

溢出方式位。当 OVM=0 时,累加器中结果正常溢出;当 OVM=1 时,根据遇到溢出的情况,累加器设置成它的最大正值或负值。 SETC 指令和 CLRC 指令分别对该位进行置位和复位。也可用 LST 指令对 OVM 进行修改。

PM

乘积移位方式。若 PM=00 ,乘法器的 32 位乘积结果不移位直接装入 CALU ;若 PM=01 , PREG 输出左移一位后装入 CALU ,最低位 LSB 以 0 填充;若 PM=10 ,PREG 输出左移 4 位后装入 CALU ,最低位 LSB 以 0 填充。 PM=11 时 PREG 输出进行符号扩展右移六位。注意, PREG 中的内容是一直保持不变。当把 PREG 中的内容传送到 CALU 单元中,发生移位操作。 PM 可由 SPM 指令和 LST #1 指令加载。复位时 PM 位清零。

符号 功能

SXM

符号扩展方式位。当 SXM=1 时,数据通过定标移位器传送到累加器时将产生符号扩展。 SXM=0 将抑制符号扩展。 SXM 位对某些指令没有影响;例如, ADDS 指令将抑制符号扩展,而不管 SXM 位的状态。 SXM 可通过指令对其置位或复位, LST #1 指令将对 SXM 位进行加载。复位时 SXM 置为 1 。

TC

测试 /控制标志位。在下述情况之一, TC 位置 1 :1 )由 BIT 或 BITT 指令测试的位为 1 ; 2 )当利用 NORM 指令测试时,累加器的两个最高有效位“异或”功能为真。条件转移、调用和返回指令可根据 TC 位的条件来执行。 BIT 、 BITT 、 CMPR 、 LST 和 NORM 指令影响 TC 位。

XFXF引脚状态位。该位决定 XF引脚的状态。 SETC XF 指令可对位 XF 进行置位,而 CLRC XF 指令可对其进行清零。复位时 XF 置 1 。

2.2 存储器和 I/O空间F240X 系列 DSP 的地址映象被组织为 3 个可独立选择的空间:程序存储器( 64K 字); 数据存储器( 64K 字); 输入 / 输出( I/O )空间( 64K 字)。这些空间提供了共 192K 字的地址范围。

2407A存储器映射图

F240X 有 3组并行总线程序地址总线( PAB );数据读地址总线( DRAB );数据写地址总线( DWAB )。

F240X 可以通过 3组并行总线访问多个存储空间。 由于总线工作是分离的,所以可以同时访问程序和数据空间。在一个给定的机器周期内, CALU 可以执行多达 3次的并行存储器操作。

1. 存储模式TMS320LF240xA 控制器配置了如下存储模式:• 双口 RAM ( DARAM )• 单口 RAM ( SARAM )• Flash EEPROM • ROM• Boot ROM

( 1 )双口 RAM ( DARAM )

所有 Lx240xA 控制器中有 544 字 ×16 位的片内 DARAM 。在流水线操作方式下, CPU 一般在第三个周期读数据,第四个周期写数据。而 DARAM 允许在同一个机器周期读、写 DARAM ,即 CPU 在一个周期的主段向 DARAM 写数据;在从段读取 DARAM 的数据。当用作片内 RAM 时, 240xA全速运行无等待状态。

DARAM 被配置成 3 块:

块 0 ( B0 );块 1 ( B1 );块 2 ( B2 )。

1 ) B0 包含 256 个字,它即可以配置在数据存储器空间也可以配置在程序存储器空间; 指令 SETC CNF , B0 配置为程序存储器; 指令 CLRC CNF , B0 配置为数据存储器。2 ) B1 包含 256 个字;3 ) B2 包含 32 个字,它们位于数据存储器空间。指令通过软件动态配置存储器映射图。

( 2 )单口 RAM ( SARAM )

某些 240xA 控制器有 2k 字 ×16 位单口 RAM ( SARAM )。 由系统控制和状态寄存器 SCSR2 的 PAN 、 DON 位来选择 SARAM ( 2k )是映射成程序空间还是数据空间,或者两者都是。 如果片内 SARAM 不使能, SARAM (程序存储器的起始地址为 8000h )可作为外部存储空间访问(仅用于 2407A )。

SARAM 程序 / 数据空间选择位DON PON SARAM状态

0 0 地址空间不被映射,该空间被分配到外部存储器。0 1 SARAM被映射到片内程序空间。1 0 SARAM被映射到片内数据空间。1 1 SARAM即被映射到片内程序空间,又被映射到片内数据空间。

片内存储器与外部存储器相比具有:更高的执行效率、更低廉的价格、更低的功耗,而外部存储器的优点就是能够具有更大的寻址空间。

( 3 ) Flash EEPROM

LF2407A 有 32k×16 位 Flash EEPROM 的程序存储空间。

Flash 不仅用于永久性地保存程序,由于可多次电擦除以进行代码的改进。

Flash 模块为多扇区,通过 CPU 进行编程,在擦除和编程时每个扇区具有独立的保护功能。 每个扇区的大小不一样,分为 4k 、 12k 、 12k 、 4k 。

( 4 ) ROM

LC240xA 控制器包含了带屏蔽位的可编程的 ROM ,它位于程序存储空间。

( 4 ) Boot ROM

仅 LF240xA 有一个 256 字的存储映射区,位于程序空间的 0000 ~ 00FFh 。在复位期间,若 脚为低电平,则 Boot ROM使能。Boot ROM还可以通过向 SCSR2.3 位写 0来使能,向SCSR2.3 位写 1则不使能。

ENBoot _

2. 程序存储器程序存储器空间用于保存程序代码以及数据表信息和常量。程序存储器空间的寻址范围为 64K ,包括片内 DARAM 和片内 FLASH EEPROM 、 ROM 。当访问片外程序地址空间时, DSP自动产生一个访问外部程序地址空间的信号 PS 。

LF2407 的程序存储器映射图

程序存储器的配置 · CNF 位: CNF = 0 时, B0 块映射为片外程序空间;CNF = 1 时, B0 块映射为片内程序空间。 · MP/MC 引脚。MP/MC引脚为 0 时,器件配置为微控制器方式,可以访问片内 ROM 或 FLASH ,器件从片内程序存储器中读取复位向量;MP/MC 为 1 时,器件被配置为微处理器方式,器件从外部程序存储器中读取复位向量。

注意• 无论 MP/MC 为何值, F240X 系列 DSP 都从程序存储器的 0000h 单元读取复位向量。• 只是具有外部程序存储器接口的器件才有 MP/MC引脚。

3. 数据存储器 数据存储器空间的寻址范围高达 64K 字。每个器件都有 3 个片内 DARAM 块:B0 、 B1 和 B2 块。B0 块既可配置为数据存储器,也可配置为程序存储器。B1 和 B2 块只能配置为数据存储器。64K 的数据存储器包含 512 个数据页。其标号从 0 至511 。

LF2407数据存储器映射图

寻址方式存储器可以采用两种寻址方式:• 直接寻址;• 间接寻址。

当使用直接寻址时,按 128 字(称作数据页)的数据块对数据存储器进行寻址。用户必须事先指定数据页,并在访问数据存储器的指令中指定偏移量。当前页由状态寄存器 ST0 中的 9 位数据页指针( DP )的值来确定。

数据存储器页

第 0页数据页地址映射数据存储器中包括寄存器映射,它们位于数据存储器的第 0页(地址 0000-007Fh )。 ( 1 ) 可以以零等待状态访问两个映射寄存器:• 中断屏蔽寄存器( IMR );• 中断标志寄存器( IFR )。( 2 ) 测试 /仿真保留区:测试和仿真系统用于特定信息发送。不能对测试 /仿真地址进行写操作,否则可能使器件改变其工作方式,从而影响正常工作。

( 3 ) 32 个字的 B2 块用于变量的存储,同时又不会弄碎较大的内部和外部 RAM块。此处的 RAM 支持双口访问操作,且可用任何数据存储器寻址方式寻址。

第 0页数据页地址映射 地址 名称 描 述0000h-0003h - 保留0004h IMR 中断屏蔽寄存器0005h - 保留0006h IFR 中断标志寄存器0023h-0027h - 保留002Bh-002Fh - 保留用作测试和仿真0060h-007Fh B2 双口 RAM ( DARAM B2 )

数据存储器配置CNF 位决定数据存储器的配置:CNF = 0 时, B0 块被映射为片外程序空间;CNF = 1 时, B0 块被映射为片内程序空间。复位时 B0 块被配置为数据存储空间。

4. I/O空间 I/O空间存储器共可寻址64K 字。

LF2407I/O空间地址映射图

2.3 系统配置和中断 一、系统配置

DSP 用两个系统控制和状态寄存器对系统的运行状态进行设置。 系统控制和状态寄存器 1 ( SCSR1 )――地址 7018h

系统控制和状态寄存器 2 ( SCSR2 )――地址 7019h

系统控制和状态寄存器 1 ( SCSR1 )――地址 7018h

15 14 13 12 11 10 9 8

保留位 CLKSRC LPM1 LPM0 CLKPS2 CLKPS1 CLKPS0 保留位R-0 RW-0 RW-0 RW-0 RW-1 RW-1 RW-1 R-0

7 6 5 4 3 2 1 0

ADC CLKEN

SCI CLKEN

SPI CLKEN

CAN CLKEN

EVB CLKEN

EVA C LKEN 保留位 ILLADR

RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 R-0 RC-0

注: R = 可读 , W = 可写 , C = 清除 , -0 = 复位值

位 15 保留位位 14 CLKSRC , CLKOUT 引脚源选择位。

0 CLKOUT引脚输出 CPU 时钟1 CLKOUT引脚输出 WDCLK 时钟

位 13-12 LPM ( 1 : 0 ),低功耗模式选择位。这两位声明了 CPU 在执行 IDLE 指令时进入那一种低功耗方式。00 CPU 进 入 IDLE1 ( LMP0 ) 模式01 CPU 进 入 IDLE2 ( LPM1 ) 模式1x CPU 进入 HALT ( LPM2 )模式

位 11-9 PLL 时钟预定标选择位。这 3 位对输入时钟选择 PLL倍频系数。 CLKPS2 CLKPS1 CLKPS0 系统时钟频率

0 0 0 4 X Fin

0 0 1 2 X Fin0 1 0 1.33 X Fin0 1 1 1 X Fin1 0 0 0.8 X Fin

1 0 1 0.66 X Fin

11

11

01

0.57 X Fin 0.5 X Fin

注: Fin 为输入时钟频率

位 8 保留位位 7 ADC CLKEN , ADC 模块时钟使能控制位。

0 禁止 ADC 模块的时钟(即:关断 ADC 模块以节约能量)1 使能 ADC 模块的时钟,正常运行

位 6 SCI CLKEN , SCI 模块时钟使能控制位。0 禁止 SCI 模块的时钟(即:关断 SCI 模块以节约能量)1 使能 SCI 模块的时钟,正常运行

位 5 SPI CLKEN , PI 模块时钟使能控制位。0 禁止 SPI 模块的时钟(即:关断 SPI 模块以节约能量)1 使能 SPI 模块的时钟,正常运行

位 4 CAN CLKEN , CAN 模块时钟使能控制位。0 禁止 CAN 模块的时钟(即:关断 CAN 模块以节约能量)1 使能 CAN 模块的时钟,正常运行

位 3 EVB CLKEN , EVB 模块时钟使能控制位。0 禁止 EVB 模块的时钟(即:关断 EVB 模块以节约能量)1 使能 EVB 模块的时钟,正常运行

位 2 EVA CLKEN , EVA 模块时钟使能控制位。0 禁止 EVA 模块的时钟(即:关断 EVA 模块以节约能量)1 使能 EVA 模块的时钟,正常运行注意:要修改或读取任何外设寄存器的内容时,必须通过向相应的位写 1来使能到外设的时钟。

位 1 保留位。位 0 ILLADR 位,无效地址检测位。检测到一个无效的地址时,该位置 1 。置 1 后该位需要用户软件清 0 。向该位写 1 将其清 0 。注:在初始化程序中应将该位清 0 。无效的地址将会导致非屏蔽中断 NMI 发生。

系统控制和状态寄存器 2 ( SCSR2 )――地址 7019h

15-8

保留位RW-0

7 6 5 4 3 2 1 0

保留位I/P

QUALWD

OVERRIDEXMIF HI-Z MP/ DON PON

RW-0 RC-1 RW-0 RW- 引脚 RW-MP/ 引脚 RW-1 RW-1MC

BOOT EN MC

BOOT EN

位 15- 8 保留位,这些位的读出值不确定,而写入则无影响。位 6 I/P QUAL ,输入时钟限定器。输入时钟限定器:限定输入到 LF240X 器件的 CAP1-6 , XINT1-2 , ADCSOC 以及 PDPINTA/B引脚上的信号。当这些引脚作 I/O 功能使用时则不会使用输入时钟限定电路;当这些引脚使用特殊功能时,该位规定了输入到这些引脚上的信号正确锁存时需要的最少脉冲宽度。即脉冲只有达到这个宽度之后内部的输入状态才会改变。

0 输入时钟限定器锁存脉冲至少 5 个时钟周期长1 输入时钟限定器锁存脉冲至少 11 个时钟周期长

位 5 WD OVERRIDE , WD 保护位。复位后的缺省值为 1 ,用户可以通过用软件将 WDCR 寄存器中的 WDDIS 位置 1来禁止WD工作。此位只能清零,通过向这一位写入 1来对其清 0 。位 4 XMIF HI-Z , XMIF 高阻控制位。 该位控制外部存储器接口信号( XMIF )。

0 所有 XMIF信号处于正常驱动模式(即非高阻态)1 所有 XMIF信号处于高阻态

位 3 , BOOT 使能位。 反映了 /XF引脚在复位时的状态,可被软件改变。0 使能引导 ROM ,地址空间 0000-00FFh 被片内引导 R

OM 块占用。这种方式下,禁止用 FLASH 存储器。注意:在 ROM 器件中没有片内引导 ROM1 禁止引导 ROM ,对 LF2407A 和 LF2406A片内 FAL

SH 程序存储器映射地址范围为: 0000-7FFFh ,对 LF2402A 地址范围为: 0000-1FFFh

BOOT ENBOOT EN

位 2 MP/ ,微处理器 /微控制器选择位。 反映了器件复位时 MP/ 引脚上的状态。复位之后,可通过软件来改变此位。0 器件设置为微控制器方式,程序地址范围从 0000-7FFFh映射到片内1 器件设置为微处理器方式,程序地址范围从 0000-7FFFh映射到片外(即用户必须自己提供外部存储器器件)

位 1-0 SARAM 程序 / 数据空间选择位。 DON PON SARAM 状态

0 0 地址空间不被映射,该空间分配到外部存储器0 1 SARAM映射到片内程序空间1 0 SARAM映射到片内数据空间1 1 SARAM即映射到片内程序空间又映射到片内数据空间

MC

MC

二、中断

LF240A 器件 可编程中断结构支持片内和片外中断。有 3 类中断源:• Reset (硬件或软件初始化);• 硬件中断;• 软件中断 。

1. 中断源

中断源:• 复位( RESET )优先级最高。复位源有两个:外部复位引脚和看门狗定时器溢出复位。不可屏蔽不被 CPU 总裁且具有最高优先中断级,在执行复位操作期间所有可屏蔽中断都不使能。• 硬件中断 根据中断源不同可分为两种类型: 片外引脚: XINT1,XINT2,PDPINTA,PADINTB 可屏蔽 外设中断: EVA, EVB, SPI, SCI, CAN, ADC 可屏蔽• 软件中断(通过指令实现) INTR , NMI 屏蔽所有可屏蔽中断(即 INTM=1 ) ; TRAP 不可屏蔽

• LF240xA 的软件中断 NMI 指令:不可屏蔽中断,当访问任何一个无效地址时,一个不可屏蔽中断 NMI 就会发出请求,当请求被接受,程序转到 0024h 。无效地址:系统和外设模块控制寄存器地址映射中包含不可实现单元。一旦检测到对无效地址的访问,就将系统控制和状态寄存器 1 ( SCSR1 )中的无效地址标志位( ILLADR )置 1 (并保持直到软件将其清除),从而产生一个不可屏蔽中断( NMI )。

F24x 器件内核提供了 6 个中断( INT1 ~ INT6 ) 6

个中断又被外设中断扩展器(PIE

)扩展。

PIE 管理所有的来自 240xA的外设中断,将它们分组并共享 6 个内核级的中断。

2. 外设中断扩展控制器 PIE

240xA CPU 在内核级支持一个非屏蔽中断( NMI )和 6 个具有优先级的可屏蔽中断。 240xA 器件有许多外设而每个外设都能够产生一个或多个中断以响应外设级的多种事件。由于 C240xA CPU没有足够的能力提供所有内核级的外设中断要求,所以器件使用一个外设中断扩展控制器( PIE )来仲裁来自各种中断源如外设和其它外部引脚的中断请求。外设中断扩展 PIE 不包括象复位和 NMI这样的不可屏蔽中断。

中断请求的结构:

外设中断发生内核级中断请求PIE 中断允许

PIE 中断请求 CPU 中断允许中断请求 :

底层中断级:来自几个外设的外设中断请求( PIRQ )。高层中断级:多个外设请求 PIRQ 在中断控制器( PIE )处相 “或” ( OR ),产生一个到 CPU的内核级的中断请求( INTn )。到 LF240X 的中断请求信号是一个为 2 个 CPU 时钟脉冲宽的低电平脉冲。

中断响应 : SISRCPU 的向量表 GISR 外设向量表

底层中断级和中断标志如果一个引起中断的外设事件发生且相应的中断使能位被置 1 ,则会产生一个从外设到中断控制器的中断请求。 这个中断请求仅影响外设中断标志的状态,然后用中断使能位来打开中断。如果中断标志被清除,则中断请求也被清除。某些能够设置中断优先级的外设事件发生时,其中断优先级的值也会送入中断控制器,而它们的中断请求一直会保存到中断应答自动清除或由软件清除中断标志。

高层中断级和中断标志 当任何一个控制 INTn 的外设中断请求 PIRQ 有效时,PIE 都会产生一个 INTn脉冲。如果任一外设中断请求 PIRQ 在 CPU 对 INTn应答后一个周期内仍有效,此时就会产生另一个 INTn脉冲。CPU 总是响应最高优先级的 PIRQ 。注意,只有内核级的中断请求会自动清除,而外设中断请求不会被自动清除。

240xA 中断源优先级

中断名称 优先级 能否被屏蔽?外 围 中断 源 模块 描述Reset 1 N pin看门狗 来自引脚的复位信号,看门狗溢出

保留位 2 N CPU 用于仿真NMI 3 N 不可屏蔽中断 不可屏蔽中断,只能是软件中断。

中断名称 优先级 能否被屏蔽?外 围 中断 源 模块 描述PDPINTA 4 Y EVA 功率驱动 保护中断引脚PDPINTB 5 Y EVB

ADCINT 6 Y ADC 高优先级模式的ADC 中断

XINT1 7 Y 外部中断逻辑 高优先级模 式 的外部引脚中断XINT2 8 Y 外部中断逻辑

中断名称 优先级能 否被 屏蔽?

外 围 中断源 模块 描述SPIINT 9 Y SPI 高优先级模式的 SPI 中断RXINT 10 Y SCI 高优先级模式的 SCI 接收中断TXINT 11 Y SCI 高优先级模式的 SCI 发送中断

CANMBINT 12 Y CAN 高优先级模式的 CAN邮箱中断CANERINT 13 Y CAN 高优先级模式的 CAN错误中断

中断名称 优先级 能否被屏蔽? 外围中断源模块 描述CMP1INT 14 Y EVA Compare1 中断CMP2INT 15 Y EVA Compare2 中断CMP3INT 16 Y EVA Compare3 中断T1PINT 17 Y EVA Timer1 周期中断T1CINT 18 Y EVA Timer1比较中断T1UFINT 19 Y EVA Timer1 下溢中断T1OFINT 20 Y EVA Timer1 上溢中断CMP4INT 21 Y EVB Compare4 中断CMP5INT 22 Y EVB Compare5 中断CMP6INT 23 Y EVB Compare6 中断T3PINT 24 Y EVB Timer3 周期中断T3CINT 25 Y EVB Timer3比较中断T3UFINT 26 Y EVB Timer3 下溢中断T3OFINT 27 Y EVB Timer3 上溢中断

中断名称 优先级 能否被屏蔽? 外 围 中断源模块 描述T2PINT 28 Y EVA Timer 2 周期中断T2CINT 29 Y EVA Timer 2 比较中断T2UFINT 30 Y EVA Timer 2 下溢中断T2OFINT 31 Y EVA Timer 2 上溢中断T4PINT 32 Y EVB Timer 4 周期中断T4CINT 33 Y EVB Timer 4 比较中断T4UFINT 34 y EVB Timer 4 下溢中断T4OFINT 35 Y EVB Timer 4 上溢中断

中断名称 优先级 能否被屏蔽? 外 围 中断 源 模块 描述CAP1INT 36 Y EVA Capture 1 中断CAP2INT 37 Y EVA Capture 2 中断CAP3INT 38 Y EVA Capture 3 中断CAP4INT 39 Y EVB Capture 4 中断CAP5INT 40 Y EVB Capture 5 中断CAP6INT 41 Y EVB Capture 6 中断SPIINT 42 Y SPI 低优先级模式的 SPI 中断RXINT 43 Y SCI 低优先级模式的 SCI 接收中断TXINT 44 Y SCI 低优先级模式的 SCI 发送中断CANMBINT 45 Y CAN 低优先级模式的 CAN 邮箱中断CANERINT 46 Y CAN 低优先级模式的 CAN 错误中断ADCINT 47 Y ADC 低优先级模式的 ADC 中断

中断名称 优先级 能否被屏蔽? 外 围 中断源模块 描述XINT1 48 Y 外 部 中断逻辑 低优先级模式的外部引脚中断XINT2 49 Y 外 部 中断逻辑保留位 Y CPU 分析中断TRAP N/A N/A CPU TRAP 指令假中断向量 N/A N/A CPU 假中断向量INT8-INT16 N/A N/A CPU 软件中断向量INT20-INT31 N/A N/A CPU

3. 中断向量 为了让 CPU 能够区别这些引起中断的外设事件,在每个外设中断请求有效时都会产生一个唯一的外设中断向量。外设中断向量装载到外设中断向量寄存器( PIVR )里面。CPU应答外设中断时,从 PIVR 寄存器中读取相应中断的向量,并产生一个转到该中断服务程序入口的向量。

中断向量表

中断名称 优先级CPU 中断和向量地址

在 PIRQRx和 PIACKRx 中的数位位置

外围中断向量( PIV )

能否被屏蔽?外围中断源模块 描述

Reset 1 RSN0000h N/A N pin看门狗 来自引脚的复位信号,看门狗溢出

保留位 2 -0026h N/A N CPU 用于仿真

NMI 3 NMI0024h N/A N 不可屏蔽中断 不可屏蔽中断,只能是软件中断。

中断名称 优先级CPU 中断和向量地址

在 PIRQRx和 PIACKRx 中的数位位置

外围中断向量( PIV )

能否被屏蔽?外围中断源模块 描述

PDPINTA 4

INT10002h

0.0 0020h Y EVA 功率驱动保护中断引脚PDPINTB 5 2.0 0019h Y EVB

ADCINT 6 0.1 0004h Y ADC 高优先级模式的 ADC中断XINT1 7 0.2 0001h Y 外部中断逻辑 高优先级模式的外部引脚中断XINT2 8 0.3 0011h Y 外部中断逻辑SPIINT 9 0.4 0005h Y SPI 高优先级模式的 SPI中断RXINT 10 0.5 0006h Y SCI 高优先级模式的 SCI接收中断TXINT 11 0.6 0007h Y SCI 高优先级模式的 SCI发送中断

CANMBINT 12 0.7 0040h Y CAN 高优先级模式的 CAN邮箱中断CANERINT 13 0.8 0041h Y CAN 高优先级模式的 CAN错误中断

中断名称 优先级CPU 中断和向量地址

在 PIRQRx和 PIACKRx 中的数位位置

外围中断向量( PIV )

能否被屏蔽?外围中断源模块 描述

CMP1INT 14

INT20004h

0.9 0021h Y EVA Compare1 中断CMP2INT 15 0.10 0022h Y EVA Compare2 中断CMP3INT 16 0.11 0023h Y EVA Compare3 中断T1PINT 17 0.12 0027h Y EVA Timer1 周期中断T1CINT 18 0.13 0028h Y EVA Timer1比较中断

T1UFINT 19 0.14 0029h Y EVA Timer1 下溢中断T1OFINT 20 0.15 002Ah Y EVA Timer1 上溢中断

中断名称 优先级CPU 中断和向量地址

在 PIRQRx和 PIACKRx 中的数位位置

外围中断向量( PIV )

能否被屏蔽?外围中断源模块 描述

CMP4INT 21 2.1 0024h Y EVB Compare4 中断CMP5INT 22 2.2 0025h Y EVB Compare5 中断CMP6INT 23 2.3 0026h Y EVB Compare6 中断T3PINT 24 2.4 002Fh Y EVB Timer3 周期中断T3CINT 25 2.5 0030h Y EVB Timer3比较中断

T3UFINT 26 2.6 0031h Y EVB Timer3 下溢中断T3OFINT 27 2.7 0032h Y EVB Timer3 上溢中断

中断名称 优先级CPU 中断和 向量地址

在 PIRQRx 和 PIACKRx中的数位位置

外 围 中断向量( PIV)能 否被 屏蔽?

外 围中 断源 模块描述

T2PINT 28

INT30006h

1.0 002Bh Y EVA Timer 2 周期中断T2CINT 29 1.1 002Ch Y EVA Timer 2 比较中断T2UFINT 30 1.2 002Dh Y EVA Timer 2 下溢中断T2OFINT 31 1.3 002Eh Y EVA Timer 2 上溢中断T4PINT 32 2.8 0039h Y EVB Timer 4 周期中断T4CINT 33 2.9 003Ah Y EVB Timer 4 比较中断T4UFINT 34 2.10 003Bh y EVB Timer 4 下溢中断T4OFINT 35 2.11 003Ch Y EVB Timer 4 上溢中断

中断名称 优先级CPU 中断和向量地址

在 PIRQRx 和 PIACKRx 中的数位位置

外围中断向量( PIV )能否被屏蔽?

外围中断源模块描述

CAP1INT 36

INT40008h

1.4 0033h Y EVA Capture 1 中断CAP2INT 37 1.5 0034h Y EVA Capture 2 中断CAP3INT 38 1.6 0035h Y EVA Capture 3 中断CAP4INT 39 2.12 0036h Y EVB Capture 4 中断CAP5INT 40 2.13 0037h Y EVB Capture 5 中断CAP6INT 41 2.14 0038h Y EVB Capture 6 中断

中断名称 优先级CPU 中断和向量地址

在 PIRQRx 和 PIACKRx 中的数位位置

外围中断向量( PIV )能否被屏蔽?

外围中断源模块描述

SPIINT 42

INT5000Ah

1.7 0005h Y SPI 低优先级模式的 SPI 中断

RXINT 43 1.8 0006h Y SCI 低优先级模式的 SCI 接收 中断

TXINT 44 1.9 0007h Y SCI 低优先级模式的 SCI 发送中断

CANMBINT 45 1.10 0040h Y CAN 低优先级模式的CAN邮箱中断

CANERINT 46 1.11 0041h Y CAN 低优先级模式的CAN错误中断

中断名称 优先级CPU 中断和向量地址

在 PIRQRx 和 PIACKRx 中的数位位置

外围中断向量( PIV )能否被屏蔽?

外围中断源模块 描述

ADCINT 47

INT6000Ch

1.12 0004h Y ADC 低优先级模式的 ADC 中断

XINT1 48 1.13 0001h Y 外部中断逻辑 低优先级模式的外部引脚中断XINT2 49 1.14 0011h Y 外部中断逻辑

中断名称 优先级 CPU 中断和向量地址

在 PIRQRx 和PIACKRx 中的数位位置

外围中断向量( PIV)能否被屏蔽?

外围中断源模块 描述

保留位 000Eh N/A Y CPU 分析中断TRAP N/A 0022h N/A N/A CPU TRAP 指令假中断向量 N/A N/A 0000h N/A CPU 假中断向量INT8-INT16 N/A 0010h-0020h N/A N/A CPU 软件中断向量INT20-INT31 N/A 00028h-0003Fh N/A N/A CPU

两个向量表 CPU 的向量表用来得到响应 CPU 中断请求的一级通用中断服务程序( GISR )。 外设向量表用来得到响应某一特定外设事件的特定中断服务程序( SISR )。

( 1 )两个中断向量

( 2 )两级中断服务程序通用中断服务程序 (GISR) :在 GISR 中保存必要的上下文,从外设中断向量寄存器 PIVR 中读取外设中断向量,这个向量用来产生转移到 SISR 的地址入口。 特定中断服务程序( SISR ):每一个从外设来的中断都有一个特定的 SISR ,在 SISR 中执行对该外设事件的响应。

注意• 程序一旦进入中断服务程序后,所有的可屏蔽中断都被屏蔽。• GISR必须在中断被重新使能之前读取 PIVR 中的值,否则在另一个中断发生请求之后, PIVR 中将装入另一个中断请求的向量,这将导致原外设中断向量永久丢失。

( 3 )假( phantom )中断向量 如果 CPU 的中断应答已发出,但却没有与之相关的外设中断请求,这时应用假中断向量就可保证系统按照可控的方式运行。 需要假中断向量的情况有:

•当外设发出一个中断请求,但它的 INTn 中断标志却在 CPU应答中断请求之前被软件清除。

当上述之一的一个中断被响应,此时却无外设将中断向量地址偏移量装入外设中断向量寄存器 PIVR 时, CPU 就将假中断向量 0000h 装入 PIVR 。

这种缺省保证了系统按照可控的方式进行处理。

4. 中断响应的流程在外设事件发生时,

( 2 )如果外设事件的中断使能位被使能,就向 PIE 发出外设中断请求 ;( 3 )将外设中断请求位置 1 ,从而引起 CPU 内核的 INT1 至 INT6 中的一个产生中断;( 4) CPU 接受中断,将中断寄存器的相应标志位被 1 ;

( 1 )将其在外设中断控制器中的标志位置 1 ;

( 6 ) CPU应答 INT1 ~ INT6 ,则中断入口(中断向量 0000h ~ 000Ch )转入通用中断服务子程序 GISR ;( 7 )在通用中断服务子程序 GISR 中保存必要的上下文,并从外设中断向量寄存器 PIVR 中读取外设中断向量 ;( 8 )转入特定中断服务子程序( SISR ),在 SISR 中执行对应的外设事件响应。

( 5 )若与 INT1 ~ INT6 对应的中断屏蔽寄存器( IMR )屏蔽位为 1 ,则使能相应的中断;

注意: SISR 中断服务子程序返回前必须清中断标志。

6. CPU 中断寄存器( 1 )高层中断寄存器包括:

中断标志寄存器( IFR );中断屏蔽寄存器( IMR )。

( 2 )外设中断寄存器包括:外设中断向量寄存器( PIVR )地址 701Eh ;外设中断请求寄存器 0 ( PIRQ0 )地址 7010h ;外设中断请求寄存器 1 ( PIRQ1 )地址 7011h ;外设中断请求寄存器 2 ( PIRQ2 )地址 7012h ;外设中断应答寄存器 0 ( PIACKR0 )地址 7014h ;外设中断应答寄存器 1 ( PIACKR1 )地址 7015h ;外设中断应答寄存器 2 ( PIACKR2 )地址 7016h 。

( 1 )高层中断寄存器16 位的中断标志寄存器( IFR )位于数据存储器空间中的 0006h 处。它用于识别和清除挂起的中断, IFR 包含用于所有可屏蔽的中断的标志位。

1 ) CPU 中断标志寄存器( IFR )――地址 0006h

15-6 5 4 3 2 1 0

保留位 INT6flag INT5flag INT4 flag INT3flag INT2 flag INT1 flag

0 RW1C-0 RW1C-0 RW1C-0 RW1C-0 RW1C-0 RW1C-0

注 : 0 = 读出为 0 , R = 可读 , W1C = 写 1清除该位 , -0 = 复位值

位 15-6 保留位,读出时始终为 0 。位 5 INT6 flag 中断 6 标志位,用作连至第 6级中断 INT6 的所有中断标志。0 无 INT6级的中断挂起;1 至少一个 INT6级的中断挂起,向该位写 1 可将该位清除为 0 ,即清除中断请求。位 4 INT5 flag 中断 5 标志位,用作连至第 5级中断 INT5 的所有中断标志。0 无 INT5级的中断挂起;1 至少一个 INT5级的中断挂起,向该位写 1 可将该位清除为 0 ,即清除中断请求。位 3 INT4 flag 中断 4 标志位,用作连至第 4级中断 INT4 的所有中断标志。0 无 INT4级的中断挂起;1 至少一个 INT4级的中断挂起,向该位写 1 可将该位清除为 0 ,即清除中断请求。

CPU 响应中断或者器件复位都能将 IFR 标志清除。

位 2 INT3 flag 中断 3 标志位,用作连至第 3级中断 INT3 的所有中断标志。0 无 INT3级的中断挂起;1 至少一个 INT3级的中断挂起,向该位写 1 可将该位清除为 0 ,即清除中断请求。位 1 INT2 flag 中断 2 标志位,用作连至第 2级中断 INT2 的所有中断标志。0 无 INT2级的中断挂起;1 至少一个 INT2级的中断挂起,向该位写 1 可将该位清除为 0 ,即清除中断请求。位 0 INT1 flag 中断 1 标志位,用作连至第 1级中断 INT1 的所有中断标志。0 无 INT1级的中断挂起;1 至少一个 INT1级的中断挂起,向该位写 1 可将该位清除为 0 ,即清除中断请求。

2 ) CPU 中断屏蔽寄存器( IMR )地址 0004h IMR 中包含所有中断级( INT1 ~ INT6 )的屏蔽位。为了使能中断,应设置相应的 IMR 位为 1 ,而屏蔽中断时只需将相应的 IMR 位设为 0 。

15-6 5 4 3 2 1 0

保留位 INT6mask INT5mask INT4mask INT3mask INT2mask INT1mask

0 RW RW RW RW RW RW

注 : 0 = 读出为 0 , R = 可读 , W = 可写 , 该位的值不受器件复位的影响

位 15-6 保留位位 5 INT6 mask 中断 6 的屏蔽位0 中断级 INT6 被屏蔽1 中断级 INT6 被使能位 4 INT5 mask 中断 5 的屏蔽位0 中断级 INT5 被屏蔽1 中断级 INT5 被使能位 3 INT4 mask 中断 4 的屏蔽位0 中断级 INT4 被屏蔽1 中断级 INT4 被使能位 2 INT3 mask 中断 3 的屏蔽位0 中断级 INT3 被屏蔽1 中断级 INT3 被使能

位 1 INT2 mask 中断 2 的屏蔽位0 中断级 INT2 被屏蔽1 中断级 INT2 被使能位 0 INT1 mask 中断 1 的屏蔽位0 中断级 INT1 被屏蔽1 中断级 INT1 被使能

注:器件复位时 IMR 位不受影响

注意:

1 )为清除一个 IFR 位,必须向其写 1 ,而非是 0 ;2 )当响应一个可屏蔽中断时, CPU 只清除 IFR 位,不会清除外设控制寄存器中相应的标志位,如果需要清除这些外设控制寄存器中的标志位,可由应有用户软件来清除;3 ) IMR 中不包含 NMI 和 RS ,因此 IMR 对这两个引脚无影响。4 )读 IMR 寄存器可以识别出已屏蔽或使能的中断级,而向 IMR 中写则可屏蔽中断或使能所有中断级。5 ) IMR 和 IFR 寄存器控制内核级的中断,所有的外设在它们各自的配置 / 控制寄存器中都有相应的中断屏蔽和标志位 。

( 2 )外设中断寄存器1 )外设中断向量寄存器( PIVR )――地址 701Eh

15 14 13 12 11 10 9 8

V15 V14 V13 V12 V11 V10 V9 V8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

7 6 5 4 3 2 1 0

V7 V6 V5 V4 V3 V2 V1 V0

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

注: R = 可读 ; -0 = 复位值位 15-0 V15-V0 ,中断向量 V15-V0 位。该寄存器包含了最近一次应答的外设中断的地址向量。

注意:• 写 1引起相应的外设中断应答被插入,从而将相应的外设中断请求位清 0 。• 通过向该寄存器写 1来插入的中断应答并不更新 PIVR 寄存器的内容,读这个寄存器得到的结果通常是 0 。

6. 复位LF240A 器件有两个复位源:• 一个外部复位引脚;• 一个程序监视定时器复位。

复位引脚为一个 I/O脚,如果有内部复位事件(程序监视定时器复位)发生,则该引脚被设置为输出方式,并且被驱动为低,向外部电路表明 LF240X 器件正在自己复位。 外部复位引脚和程序监视定时器复位相或后一起驱动CPU 的复位信号。

2.4 程序控制TMS320LF2407A 是基于 C2xx 的 CPU 内核。 C2xx DSP 的内核有一个内部数据和程序总线结构,此总线结构分为 6 个 16 位总线。这 6 条总线是:

PAB 程序地址总线:提供从程序存储器读数据和向程序存储器写数据的地址;DRAB 数据读地址总线:提供从数据存储器读数据的地址;DWAB 数据写地址总线:提供向数据存储器写数据的地址;PRDB 程序读总线:将指令代码和立即操作数、表信息从程序存储器传送到 CPU ;DRDB 数据读总线:将数据从数据存储器传送到中央算术逻辑单元( CALU )和辅助寄存器算术单元( ARAU );DWER 数据写总线:将数据传送到程序存储器和数据存储器。

一、程序地址的产生 程序流要求处理器在执行当前指令的同时产生下一个程序地址(顺序或非顺序)。 程序地址产生逻辑使用 16 位 PC (程序计数器)对内部或外部程序存储器寻址。通过程序地址寄存器 PAR 驱动 PAB (程序地址总线)从程序存储器中取出该地址所指的一个指令,并将该指令装载到指令寄存器中。当装载指令寄存器时, PC 保存将要执行的下一条指令的地址。

程序地址产生方框图

TMS320LF240x采用多种方法装载 PC ,以适应顺序和非顺序的程序流。程序地址产生小结

操作 程序源顺序操作 PC(程序地址+ 1)空周期 PAR(包含程序地址)从子程序返回 栈顶( TOS)从表移动或块移动返回 微堆栈(MSTACK)转移或调用至指令规定的地址 使用程序读总线( PRDB)的转移或调用指令转移或调用至累加器低位字规定的地址 使用数据读总线( DRDB)的累加器低位字转移至中断服务程序 使用程序读总线( PRDB)的中断向量存储单元

F240X 器件程序地址产生逻辑使用的硬件:( 1 ) 程序计数器( PC ): LF240X 具有 16 位的程序计数器( PC ),在取指时,它对内部或外部程序存储器进行寻址。( 2 ) 程序地址寄存器( PAR ): PAR 驱动程序地址总线( PAB )。 PAR 是 16 位总线,它同时为读和写程序提供地址。( 3 ) 堆栈:程序堆栈产生逻辑包含用于存储最多 8 个返回堆栈的 16 位宽度、 8级硬件逻辑堆栈。此外,用户还可将堆栈用于临时存储器。( 4 ) 微堆栈( MSTACK ):程序地址产生逻辑使用 16 位宽度、 1级微堆栈 MSTACK来存储一个返回地址。( 5 ) 重复计数器( RPTC ): 16 位 RPTC与重复( RPT )指令一起使用,以决定 RPT 之后的指令重复多少次。

1. 程序计数器( PC ) 代码操作 装入 PC 地址顺序执行 如果当前指令只有一个字,那么 PC装入 PC+1;如果当前指令具有两个字,那么 PC 将装入 PC+

2转移 PC装入直接跟随在转移指令之后的长立即数的值子程序调用和返回

对于调用,下一条指令的地址从 PC中压入堆栈,然后直接跟随在调用指令之后的长立即数被装入 PC。返回指令把返回地址弹回到 PC 内,从而返回到调用处的代码。

软件和硬件中断PC装入适当的中断向量单元地址。在此单元中存放一条转移指令,该指令将把相应的中断服务程序的地址装入 PC

计算转移累加器低 16位内容装入 PC。利用 BACC(转移到累加器中的地址)或 CALA(调用累加器所规定的地址单元中的子程序)指令可实现计算转移操作。

2. 堆栈LF240x 具有 16 位宽、 8级深度的硬件堆栈。当程序调用或中断发生时,程序地址产生逻辑将返回地址存放在堆栈中。返回地址是被自动装入堆栈顶部( TOS 栈顶)的,该事件不需要附加的周期。当执行完子程序或中断服务子程序时,返回指令把返回地址从堆栈顶部传送到 PC 。

压栈时从栈顶向栈底压入,每一级的内容向下推一级,而堆栈底部(第 8 个)单元的内容将丢失。弹栈时,弹栈操作把每一级的内容复制到相邻的较高一级,在连续 7次弹栈操作后,栈底的内容已被复制到栈顶。因此堆栈的内容是先入后出。堆栈除用于保存地址外,还可用于保存程序调用或中断时的上下文数据保护以及其他存储用途。

用户可以使用两组指令访问堆栈: ( 1 ) PUSH (压入)和 POP (弹出):PUSH 指令――把累加器的低位字复制到堆栈顶部。POP 指令――把堆栈顶部的数值复制到累加器的低位字。( 2 ) PSHD 和 POPD :这两条指令允许用户在数据存储器中为超过 8级的子程序或中断嵌套建立软件堆栈。PSHD 指令――把数据存储器的值压入软件堆栈的顶部。POPD 指令――把数值从软件堆栈顶部弹出至数据存储器。

压栈操作

弹栈操作

3. 微堆栈( MSTACK )在执行某些指令之前,程序地址产生逻辑使用 16 位宽度, 1级深度的 MSTACK 存储返回地址。这些指令使用程序地址产生逻辑提供双操作数指令的第 2 地址。这些指令是: BLDD 、 BLPD 、 MAC 、 MACD 、TBLR 以及 TBLW 。

在重复执行时,这些指令利用 PC 使第一操作数地址增 1 ,并使用辅助寄存器算术单元( ARAU )产生第 2 个操作数地址。在使用这些指令时,返回地址(将被取出的下一条指令的地址)被压入 MSTACK 。重复指令执行完后, MSTACK 的值被弹出并送至程序地址产生逻辑。MSTACK 操作对用户是不可见的。与堆栈不同, MSATCK 只能被程序地址产生逻辑使用,不允许用户把MSATCK 用于存储指令。

三、转移、调用和返回 转移仅把控制器送到新的地址;调用要把返回地址(跟随在调用指令后的指令地址)保存到堆栈的顶部。每一个调用或中断服务子程序以返回指令结束,返回指令把返回地址弹出堆栈并送入 PC 。LF240x 器件有两种类型的转移、调用和返回:无条件和有条件。

1. 无条件转移 当遇到无条件转移时,它总是被执行。在执行期间, PC 装入指定的程序地址且程序从该地址处开始执行。装入 PC 的地址来自调用指令的第 2 个字或累加器的低 16 位。

2. 无条件调用当遇到无条件调用时,它总是被执行。在执行期间, PC 装入指定的程序地址且程序从该地址处开始执行。装入 PC 的地址来自调用指令的第 2 个字或累加器的低 16 位。在 PC 被装载之前,返回地址已被保存在堆栈内。在子程序或函数执行后,返回指令把来自堆栈的返回地址装入 PC ,并从跟在调用之后的那条指令处恢复执行。

3. 无条件返回 当遇到无条件返回( RET )指令时,它总是被执行。在无条件返回被执行时, PC 装入堆栈栈顶的值,且从该地址处恢复执行。

4. 条件转移、调用和返回 LF240X 提供仅在满足一个或多个条件时才执行的转移、调用和返回指令。用户把条件规定为条件指令的操作数。

用于条件调用和返回的条件操作数符号 条件 说明EQ ACC=0 累加器值等于零NEQ ACC≠0 累加器不值等于零LT ACC<0 累加器值小于零LEQ ACC≤0 累加器值小于或等于零GT ACC>0 累加器值大于零GEQ ACC≥0 累加器值大于或等于零C C=1 进位位被设置为 1NC C=0 进位位被清除为 0OV OV=1 检测到累加器溢出NOV OV=0 未检测到累加器溢出BIO BIO为低 BIO引脚为低电平TC TC=1 测试 /控制标志位被设置为 1NTC TC=0 测试 /控制标志位被清除为 0

( 1 )使用多个条件 可以把多个条件列为条件指令的操作数。如果列出为多个条件,那么为了执行这些指令,所有条件都必须满足。注意,只有某些条件组合才有意义。

条件分组 组 1 组 2

A类 B类 A类 B类 C类EQ OV TC C BIO

NEQ NOV NTC NC

LT

LEQ

GT

GEQ

对于每一种组合,必须从组 1 和组 2选择条件

组 1 : 用户可以选择多达两个条件。这些条件的每一个条件必须来自不同的类( A 或B ),用户不能使用来自同一类的两个条件。例如,用户可同时测试 EQ 和 OV ,但不能同时测试 GT和 NEQ 。组 2 : 用户可以选择多达 3 个条件。这些条件的每一个必须来自不同的类( A 、 B 或C ),用户不能使用来自同一类的两个以上的条件。例如,用户可以同时测试 TC 、 C 和 BIO 但是不能同时测试 C 和 NC 。

( 2 )条件状态 条件指令必须能测试状态位的最近值。因此,直到流水线的第 4阶段,即前一条指令已被执行之后的一个周期,才认为条件是稳定的。在条件稳定之前,流水线控制器停止条件指令之后任何指令的译码。

( 3 ) 条件转移转移指令:把程序控制转移到程序存储器中的任何单元地址。条件转移指令仅当满足用户 1 个或多个规定的条件时才被执行。如果满足所有的条件,那么 PC 将装入转移指令的第 2 个字,它包含了将要转移值的地址,且从该处继续执行。条件转移指令: BCND (条件转移)和 BANZ(若当前辅助寄存器的内容不为 0 ,则转移)。

( 4 )条件调用 条件调用( CC )指令:仅在满足规定的 1 个或多个条件满足时才被执行。允许用户程序根据被处理的结果在多个子程序之间做出选择。如果满足所有的条件,那么调用指令的第 2 个字将被装入 PC ,它包含了子程序的起始地址。在转移到子程序之前,处理器把调用指令后的那条指令的地址(即返回地址)存入堆栈。函数必须以返回指令作为结束,它将使返回地址弹出堆栈并使处理器恢复到调用前程序断点处执行。

( 5 ) 条件返回返回和调用与中断一起使用。调用或中断把返回地址存储到堆栈,然后把程序控制转移到程序存储器中新的单元地址。被调用的子程序或中断服务程序用返回指令结束,该指令把返回地址从堆栈顶弹出并送入程序计数器PC 。

四、重复单条指令 LF240x 的重复指令( RPT )可重复执行单条指令N+1次。其中 N 为 RPT 指令的操作数。当执行 RPT 时,重复次数 N 装入重复计数器( RPTC )中,每重复执行一次指令 RPTC 就减 1 ,直至RPTC 减为 0 。当计数值从数据存储器读取时, RPTC 作为 16 位计数器;如果计数值由常量操作数指定, RPTC 就为 8位计数器。

作业1 . 简述 2407A 的总线系统.2 . 画出 2407A 的流水线结构图.3 . 简述 2407A 可屏蔽中断的中断请求和中断响应的过程.4 . 简述 2407A 程序堆栈的特点.

top related