910 likes | 1.46k Views
第 2 章: TMS320LF240x DSP 内部资源介绍. 2.1 TMS320LF240x DSP 的 CPU 内部功能模块介绍 2.2 存储器和 I/O 空间 2.3 系统配置和中断 2.4 程序控制. 2.1 TMS320LF240x DSP 的 CPU 内部功能模块介绍. 中央处理单元 (CPU) 输入定标器 乘法单元 中央算术逻辑单元. 2.1 TMS320LF240x DSP 的 CPU 内部功能模块介绍. 1 、输入定标移位器 是一个 16 位到 32 位的滚动式左向移位器;
E N D
第2章: TMS320LF240x DSP内部资源介绍 • 2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 2.2 存储器和I/O空间 • 2.3 系统配置和中断 • 2.4 程序控制
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 中央处理单元(CPU) • 输入定标器 • 乘法单元 • 中央算术逻辑单元
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 1、输入定标移位器 • 是一个16位到32位的滚动式左向移位器; • 能将输入的16位数据的0~15位在本周期内向左移位以得到32位的输出; • 本操作不需要额外的周期。
移位器的输入来源 数据读总线(DRDB),该输入值来自指令操作数据所引用的数据存储单元; 程序读总线(PRDB),改输入是指令操作数给出的常数。 移位量的来源 嵌在指令字中的常数。把移位量放在指令字中,该程序代码使用特定的数据比例; 临时寄存器TREG的提位。根据TREG的值移位,数据的定标因子是动态确定的,可适应不同的系统要求。 2.1 TMS320LF240x DSP的CPU内部功能模块介绍
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 输入移位器的输出值 • 最低有效位LSBs段填0; • 未使用的最高有效位MSBs填0或者根据状态寄存器ST1的SXM位的值来确定是否需要进行符号扩展
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 2、乘法器 • 16×16位的硬件乘法器,在单个周期内产生一个32位乘积结果的有符号或无符号数; • 除了MPYU指令,所有的乘法指令都执行有符号的乘法操作。
乘法器的输入 16位临时寄存器(TREG),在乘法之前把数据读总线的值加载到TREG; 数据读总线的数据存储器值和程序读总线的程序存储器值。 乘法器的输出 两个输入值相乘后的32位结果保存在乘积寄存器(PREG)中; PREG的输出连接到32位的乘积定标移位器(PSCALE),通过PSCALE将乘积结果送到CALU或数据存储器。 2.1 TMS320LF240x DSP的CPU内部功能模块介绍
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 乘法定标移位器(PSCALE) • 输入:该移位器的32位输入练到PREG的输出。 • 输出:完成移位后,全部32位送到CALU,或将结果的16位存到数据存储器。 • 移位模式:该移位器可用4中移位模式,这些模式由状态寄存器ST1的乘积移位方式(PM)位确定。 • 注:PREG的内容保持不变,其值被复制到PSCALE中,进行移位。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 乘法器相关指令及操作 • 用LT指令将数据从数据总线载入TREG提供1操作数,MPY指令提供第2个操作数或从数据总线上得到。 • 使用MPY指令时,可以对一个13位的立即数进行操作,每两个指令周期得到一个乘积。 • 代码执行多路乘法和乘积求和运算时,CPU支持流水线操作。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 乘法器相关指令及操作 • 乘且累加并带动数据移动指令MAC和MACD充分利用了乘法器的计算宽度,允许两个操作数被同时处理。 • 无符号乘法运算MPYU指令执行大大方便了用于扩展精度的算术运算。 • 平行并累加前次乘积指令SQRA和平方并减去前次乘积指令SQRS传送相同的数到乘法器的两个输入端,以对一个数据存储器单元的值进行平方运算。 • 存储乘积的高字节指令SPH和低字节指令SPL,可将装入PREG的32位乘积结果传送到CALU单元或数据存储器。 • 在执行中断服务程序前必须对PREG的值进行保存。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 3、中央算术逻辑部分 • 中央算术逻辑单元(CALU):实现各种算术、逻辑功能; • 32位累加器(ACC):接收来自CALU的输出,并可以根据进位位(C)的值来实现移位; • 输出移位器:将ACC的高位字和低位字在送入数据存储器之前进行移位。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 中央算术逻辑单元(CALU) • 运算功能:16位加、16位减、布尔逻辑操作、位测试、移动和循环。 • 输入:一个由累加器提供,另一个由乘积定标移位器或输入数据定标移位器提供。 • 输出:其结果送至32位累加器,进行移位。 • 相关状态位:符号扩展模式位SXM(ST1第10位)确定CALU是否进行符号扩展。SXM=0,抑制符号扩展;SXM=1,进行符号扩展。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 累加器(ACC) • 功能:对送到ACC的CALU的运算结果进行单个移位和循环操作。 • 输入:CALU的运算结果。 • 输出:ACC的高16位和低16位中任何一个都可送到输出定标移位器,经定标移位后存入数据存储器。 • 相关状态位
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 输出定标移位器 将累加器输出的内容左移0~7位,移动位数由存储器指令指定,然后用SACH或SACL指令将移位器中的高位字或低位字保存到数据存储器中,ACC的内容不变。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 4、辅助寄存器算术逻辑单元(ARAU) • 在CALU操作的同时执行8个辅助寄存器(AR7~AR0)上的算术运算。 • 8个辅助寄存器提供了灵活而有效的间接寻址。 • 通过把数值0~7写入状态寄存器ST0第3位的辅助寄存器指针(ARP),选择一个辅助寄存器作为当前AR。 • 当前AR存放被访问的数据存储器的地址,根据指令的需要分别向数据读/写地址总线读/写数据,使用完该数据后,当前AR的内容可以被ARAU增减,可实现无符号16位算术运算。
ARAU可执行的操作 将辅助寄存器值增、减1,或者增、减一个变址量(借助任何支持间接寻址的指令)。 使辅助寄存器的值加/减一个常数(ADRK/SBRK指令),该常数是指令字的低8位。 将AR0的内容与当前AR的内容进行比较,并把结果放入状态寄存器ST1的测试/控制位TC(CMPR指令)。结果经数据写总线DWEB传送到TC。 辅助寄存器的用途 数据存储器地址存储器; 通过CMPR指令,使辅助寄存器支持条件分支、调用及返回; 用作暂存单元; 用作软件计数器,按需要对其进行加、减。 2.1 TMS320LF240x DSP的CPU内部功能模块介绍
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • 5、状态寄存器 • 两个状态寄存器ST0和ST1,含有各种状态和控制位; • 可保存在数据存储器,也可从数据存储器加载,可以保存和恢复子程序的机器状态; • 加载状态寄存器LST指令写ST0和ST1,保存状态寄存器SST指令读ST0和ST1; • INTM位不受LST指令的影响; • 寄存器中每一位均可由SETC和CLRC指令单独置位和清0。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • ARB辅助寄存器指针缓冲器:当ARP被加载到ST0,除了使用LST指令外,原有的ARP值被复制到ARB中;当通过LST #1指令加载ARB时,把相同的值复制到ARP。 • ARP辅助寄存器指针:ARP选择间接寻址时使用的当前AR;当ARP被加载时,原有的ARP值被复制到ARB寄存器中;在讲解寻址时,ARP可由存储器相关指令改变,也可由LARP、MAR和LST指令改变;当执行LST #1时,ARP也可加载与ARB相同的值。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • OV溢出标志位:该位锁存的值指出CALU是否发生了溢出;发生溢出,OV=1,直到复位、溢出时条件转移、无溢出时条件转移或LST指令执行时才被清0。 • OVM溢出方式位:该位决定如何管理CALU的溢出。SETC和CLRC指令分别可将该位置1或清0;LST指令也可修改该位;OVM=0,ACC结果正常溢出;OVM=1,根据发生的溢出,把ACC置为最大正值或负值。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • CNF片内DARAM配置位:CNF=0,可配置双口RAM被映射到数据存储空间;CNF=1,可配置双口RAM被映射到程序;该位可通过SETC、CLRC和LST指令修改;RS复位时该位清0。 • TC测试/控制标志位:TC=1,由BIT或BITT指令测试位为1;利用NORM指令测试时,ACC的2个最高有效位“异或”为真;CMRP所测试的当前AR和AR0之间的比较条件成立。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • INTM中断模式位:该位用来允许或禁止所有可屏蔽中断。通过SETC和CLRC指令置1或清0;该位不影响不可屏蔽中断RS和NMI;LST指令不影响该位;发生中断及复位时置1;INTM=0,允许全部没有被屏蔽的中断;INTM=1,禁止全部没有被屏蔽的中断。 • DP数据存储器页指针:当指令使用直接寻址方式时,这个9位的DP寄存器与指令寄存器的低7位一起形成一个完整的数据存储器16位地址。LST和LDP指令可修改该字段。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • SXM符号扩展模式位:SXM=1数据通过定标移位器传送到累加器时产生符号扩展,SXM=0抑制符号扩展;该位不影响某些指令的基本操作,如ADDS指令不管SXM位的状态如何都抑制符号扩展;通过SECT、CLRC和LST指令对该位进行置1、清0和加载;复位时该位置1。 • C进位位:C=1,加法结果产生进位或减法结果未产生借位;C=0,反之;移位16位的ADD指令只能使C位置1,SUB指令只能使C位清0,不会对C位产生其他影响;移1位、循环指令、SETC、CLRC和LST指令均影响该标志位;条件转移、调用和返回指令可根据C的状态执行;复位时该位置1。
2.1 TMS320LF240x DSP的CPU内部功能模块介绍 • XF引脚状态位:该位确定通用输出引脚XF的状态;通过SECT、CLRC和LST指令对该位进行置1、清0和加载;复位时该位置1。 • PM乘积移位模式:该位决定PREG的值是送往CALU或数据存储器时如何移位;SPM和LST指令可以对该位加载;复位时该位清0。 PM=00,乘法器32位乘积不经移位送到CALU或数据存储器; PM=01,送到CALU之前,PREG的输出左移1位(低位填0); PM=10,送到CALU之前,PREG的输出左移4位(低位填0); PM=11,PREG输出进行符号扩展右移6位。 注:PREG的内容保持不变,其值被拷贝到乘积移位器中进行移位。
2.2 存储器和I/O空间 • 增强的哈佛结构,三组并行总线 • 程序地址总线(PAB) • 数据读地址总线(DRAB) • 数据写地址总线(DWAB) • 三个可独立选择的空间 • 程序存储器(64K字) • 数据存储器(64K字) • I/O空间(64K字) • 注意:LF240x DSP的所有片内外设的寄存器均映射在数据存储器空间。
2.2 存储器和I/O空间 • 1、程序存储器 • 保存程序代码及数据表信息和常量 • 寻址范围为64K,包括片内DARAM和片内FLASH • 访问片外程序地址空间时,DSP自动产生一个访问外部程序地址空间的信号PS LF2407的程序存储器空间映射图
2.2 存储器和I/O空间 • 决定程序存储器的配置两个因素 • CNF位。CNF位是状态寄存器ST1的第12位,决定DARAM中的B0块配置在数据存储器空间,还是配置在程序存储器空间。 • CNF=0,256字的B0块被映射到数据存储器空间。 • CNF=1,256字的B0块被映射到程序存储器空间。 复位时,CNF=0,B0块被映射到数据存储器空间。 • MP/MC引脚。该引脚决定是从片内Flash读取指令,还是从外部程序存储器读取指令。 • MP/MC=0:微控制器方式。此时访问的是片内程序存储器(片内Flash)0000h-7FFFh空间。 • MP/MC=1:微处理器方式。此时访问的是片外程序存储器的0000h-7FFFh空间。 注:无论MP/MC引脚为何值,LF240xDSP都是从程序存储器空间的0000h单元开始执行程序。
2.2 存储器和I/O空间 • 2、数据存储器 • 寻址范围64K字:前32K字(0000h-7FFFh)是内部数据存储器空间,包括了DARAM和片内外设的映射寄存器;后32K字(8000h-FFFFh)空间的存储器为外部数据存储器。 • 片内有3个DARAM块:B0、B1和B2块。B0块:即可为数据存储器,也可配置为程序存储器。B1、B2块:只能配置为数据存储器。 LF2407的数据存储器空间映射图
2.2 存储器和I/O空间 • 两种寻址方式:直接寻址和间接寻址。 • 直接寻址时,128字为一页的数据块来对数据存储器进行寻址。右图显示了这些块是如何被寻址的。 • 全部64K的数据存储器分为512个数据页,其标号从0-511。当前页由状态寄存器ST0中的9位数据页指针(DP)值来确定。 • 因此,当使用直接寻址指令时,用户必须事先指定数据页,并在访问数据存储器的指令中指定偏移量,偏移量为7位。 数据存储器页
2.2 存储器和I/O空间 • 编程时要注意,访问下面的数据存储器的地址空间是非法的,并会对NMI置位。除了以下地址,任何对外设寄存器映射中的保留地址的访问也是非法的。 0080h-00FFh701Fh-71FFh (CAN内部的) 0500h-07FFh7230h-73FFh (部分在CAN内部) 1000h-700Fh7440h-74FFh 7030h-703Fh7540h-75FFh 7060h-706Fh7600h-77EFh 77F4h-7FFFh7080h-708Fh
2.2 存储器和I/O空间 第0页数据地址映射 • 第0页数据地址映射 数据存储器中包括存储器映射寄存器,它们位于数据存储器的第0页(地址0000h-007Fh),下表是对第0页数据地址映射的详细说明。应用中必须注意以下几点: • 以零等待状态访问两个映射寄存器:中断屏蔽寄存器(IMR)和中断标志寄存器(IFR) • 测试/仿真保留区被测试和仿真系统用于特定信息发送。因此不能对测试/仿真地址进行操作。
2.2 存储器和I/O空间 • 数据存储器配置 CNF位决定B0块的配置,CNF位是状态寄存器ST1的第12位。 • CNF=0,B0块被映射为数据存储器空间; 复位时,CNF=0; • CNF=1,B0块被映射到程序存储器空间;
2.2 存储器和I/O空间 • 3、I/O空间 • 寻址范围为64K字。 • 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地址时有效。 LF2407 I/O空间地址映射图
2.2 存储器和I/O空间 • 下面是使用汇编语言的直接访问I/O空间的实际例子: • INDAT2,0AFEEh;从端口地址为AFEEh的外设 ;读数据,并存入DAT2寄存器 • OUTDAT2,0CFEFh;输出数据存储器DAT2的内容 ;到端口地址为CFEFh的外设 • 下面是访问等待状态发生器的寄存器的实例: • INDAT2,0FFFFh;从等待状态发生器读取数据到DAT2寄存器 • OUTDAT2,0FFFFh;将DAT2寄存器的数据写入等待状态发生器,使用等待状态发生器
2.3 系统配置和中断 • 本节介绍LF240x DSP的系统配置寄存器和中断模块。 • 系统配置:用来对DSP片内的功能模块进行用户配置,根据具体用途来进行模块定制。 • 中断模块:主要包括-中断优先级和中断向量表、外设中断扩展控制器(PIE)、中断向量、中断响应的流程、中断响应的延时、CPU中断寄存器、外设中断寄存器、复位、无效地址检测、外部中断控制寄存器。
2.3 系统配置和中断 • 1、系统配置寄存器 • (1)、系统控制和状态寄存器1(SCSR1) SCSR1映射到数据存储器空间的7018h,各位如下: • 位15:保留 • 位14:CLKSRC,为CLKOUT引脚输出时钟源的选择位 • 0-CLKOUT引脚输出CPU时钟; • 1-CLKOUT引脚输出WDCLK时钟。 • 位13、12:LPM1,LPM0,低功耗模式选择,指明在执行IDLE指令后进入哪一种低功耗模式。 • 00-进入IDLE1(LPM0)模式; • 01-进入IDLE2(LPM1)模式; • 1x-进入HALT(LPM2)模式。
2.3 系统配置和中断 • 位11-9:CLK PS2-CLK PS0,(PLL)时钟预定标选择位,选择输入时钟频率fin的倍频系数,如下表(P.28)所示。
2.3 系统配置和中断 • 位8:保留 • 位7:ADC CLKEN,ADC模块时钟使能控制位 • 0-禁止ADC模块时钟(节能) • 1-使能ADC模块时钟,且正常运行 • 位6:SCICLKEN,,SCI模块时钟使能控制位 • 0-禁止SCI模块时钟(节能) • 1-使能SCI模块时钟,且正常运行 • 位5:SPICLKEN,,SPI模块时钟使能控制位 • 0-禁止SPI模块时钟(节能) • 1-使能SPI模块时钟,且正常运行
2.3 系统配置和中断 • 位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,即向该位写0即可。复位时该位为0。 • 注意:任何无效的地址会导致不可屏蔽中断(NMI)事件发生。
2.3 系统配置和中断 • (2)、系统控制和状态寄存器2(SCSR2) SCSR2映射到数据存储器空间的7019h,各位如下: • 位15-7:保留 • 位6:I/P QUAL,时钟输入限定,它限定输入到LF240x的CAP1-6、XINT1-2、ADCSOC、PDPINTA/PDPINTB引脚上的最小脉冲宽度。脉冲宽度只有达到这个宽度之后,内部的输入状态才会改变。 • 0-锁存脉冲至少需要5个时钟周期; • 1-锁存脉冲至少需要11个时钟周期。 如这些引脚作I/O使用,则不使用输入时钟限定电路。
2.3 系统配置和中断 • 位5:WD保护位,该位可用来禁止WD工作。该位是—个只能清除的位,复位后=1。通过向该位写1对其清0。 • 0-保护WD,防止WD被软件禁止 • 1-复位时的默认值,禁止WD工作 • 位4:XMIF HI-Z。该位控制外部存储器接口信号(XMIF)。 • 0-所有XMIF信号为正常驱动模式(非高阻态) • 1-所有XMIF信号处于高阻态 注意:该位仅对LF2407/ LF2407A型号有效,对其它型号为保留位
2.3 系统配置和中断 • 位3:使能位。这位反映了BOOTEN引脚在复位时的状态。 • 0-使能引导ROM。地址0000h-00FFh被片内引导ROM块占用。禁止用FLash存储器 • 1-禁止引导ROM。LF2407片内Flash程序存储器映射地址范围为0000h-7FFFh。 • 位2:MP/MC(微处理器/微控制器选择)。 • 0-DSP设置为微控制器方式,片内FLASH映射到程序存储器空间,地址为0000h-7FFFh。 • 1-DSP设置为微处理器方式,程序空间0000h-7FFFh被映射到片外程序存储器空间(必须外扩外部程序存储器) • 位1-0:SARAM的程序/数据空间选择 • 00-地址空间不被映射,该空间被分配到外部存储器 • 0l-SARAM 被映射到片内程序空间 • 10-SARAM 被映射到片内数据空间 • 11-SARAM 被映射到片内程序空间,又被映射到片内数据空间
2.3 系统配置和中断 • 2、中断优先级和中断向量表 • LF2407 DSP具有3个不可屏蔽中断和6个级别的可屏蔽中断(INT1-INT6)。 • 对多个外设的中断需求采用了中断扩展设计来满足。 • 在每级可屏蔽中断(INT1-INT6)中又有多个中断源,有唯一的中断入口地址向量。 不可屏蔽中断源的优先级和中断入口地址向量表
2.3 系统配置和中断 可屏蔽中断源的优先级和中断入口地址向量表 INT1(级别1)
2.3 系统配置和中断 INT2(级别2)
2.3 系统配置和中断 INT3(级别3)
2.3 系统配置和中断 INT4(级别4)
2.3 系统配置和中断 INT5(级别5)
2.3 系统配置和中断 INT6(级别6)
2.3 系统配置和中断 3、外设中断扩展控制器 LF240x CPU内核提供给用户:6级可屏蔽中断INT1-INT6。 每1级别又包含多个外设中断请求,所以用一个外设中断扩展(PIE)控制器专门来管理来自各种外设或外部引脚的数十个中断请求。 外设中断扩展模块图
2.3 系统配置和中断 中断请求层次和结构 外设中断个数很多,用一个两级中断结构来扩展可响应的中断个数。 中断请求/应答硬件逻辑和中断服务程序软件都有两级层次的中断。 在低层次中断,从几个外设来的外设中断请求(PIRQ)在中断控制器处进行或运算,产生一个INTn (n=1-6)中断请求。 在高层次中断,从INTn中断请求产生一个到CPU的中断请求。