第二章 DSP入门教程TMS320LF240 x教程之内部资源介绍.ppt_第1页
第二章 DSP入门教程TMS320LF240 x教程之内部资源介绍.ppt_第2页
第二章 DSP入门教程TMS320LF240 x教程之内部资源介绍.ppt_第3页
第二章 DSP入门教程TMS320LF240 x教程之内部资源介绍.ppt_第4页
第二章 DSP入门教程TMS320LF240 x教程之内部资源介绍.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章 tms320lf240 xdsp内部资源介绍 2 1tms320lf240 xdsp的cpu内部功能模块介绍2 2存储器和i o空间2 3系统配置2 4程序控制 2 1tms320lf240 xdsp的cpu内部功能模块介绍 中央处理单元 cpu 输入定标器乘法单元中央算术逻辑单元 2 1tms320lf240 xdsp的cpu内部功能模块介绍 1 输入定标移位器是一个16位到32位的滚动式左向移位器 能将输入的16位数据的0 15位在本周期内向左移位以得到32位的输出 本操作不需要额外的周期 2 1tms320lf240 xdsp的cpu内部功能模块介绍 移位器的输入来源数据读总线 drdb 该输入值来自指令操作数据所引用的数据存储单元 程序读总线 prdb 该输入是指令操作数给出的常数 移位量的来源嵌在指令字中的常数 把移位量放在指令字中 该程序代码使用特定的数据比例 临时寄存器treg的低4位 根据treg的值移位 数据的定标因子是动态确定的 可适应不同的系统要求 2 1tms320lf240 xdsp的cpu内部功能模块介绍 输入移位器的输出值最低有效位lsbs段填0 未使用的最高有效位msbs填0或者根据状态寄存器st1的sxm位的值来确定是否需要进行符号扩展 2 1tms320lf240 xdsp的cpu内部功能模块介绍 2 乘法器16 16位的硬件乘法器 在单个周期内产生一个32位乘积结果的有符号或无符号数 除了mpyu指令 所有的乘法指令都执行有符号的乘法操作 2 1tms320lf240 xdsp的cpu内部功能模块介绍 乘法器的输入16位临时寄存器 treg 在乘法之前把数据读总线的值加载到treg 数据读总线的数据存储器值和程序读总线的程序存储器值 乘法器的输出两个输入值相乘后的32位结果保存在乘积寄存器 preg 中 preg的输出连接到32位的乘积定标移位器 通过移位器将乘积结果送到calu或数据存储器 2 1tms320lf240 xdsp的cpu内部功能模块介绍 乘法定标移位器 pscale 输入 该移位器的32位输入连到preg的输出 输出 完成移位后 全部32位送到calu 或将结果的16位存到数据存储器 移位模式 该移位器可用4种移位模式 这些模式由状态寄存器st1的乘积移位方式 pm 位确定 注 preg的内容保持不变 其值被复制到pscale中 进行移位 2 1tms320lf240 xdsp的cpu内部功能模块介绍 乘法器相关指令及操作用lt指令将数据从数据总线载入treg提供1操作数 mpy指令提供第2个操作数或从数据总线上得到 使用mpy指令时 可以对一个13位的立即数进行操作 每两个指令周期得到一个乘积 代码执行多路乘法和乘积求和运算时 cpu支持流水线操作 2 1tms320lf240 xdsp的cpu内部功能模块介绍 乘法器相关指令及操作乘且累加并带动数据移动指令mac和macd充分利用了乘法器的计算宽度 允许两个操作数被同时处理 p146无符号乘法运算mpyu指令执行大大方便了用于扩展精度的算术运算 平行并累加前次乘积指令sqra和平方并减去前次乘积指令sqrs传送相同的数到乘法器的两个输入端 以对一个数据存储器单元的值进行平方运算 p150存储乘积的高字节指令sph和低字节指令spl 可将装入preg的32位乘积结果传送到calu单元或数据存储器 在执行中断服务程序前必须对preg的值进行保存 2 1tms320lf240 xdsp的cpu内部功能模块介绍 3 中央算术逻辑部分中央算术逻辑单元 calu 实现各种算术 逻辑功能 32位累加器 acc 接收来自calu的输出 并可以根据进位位 c 的值来实现移位 输出移位器 将acc的高位字和低位字在送入数据存储器之前进行移位 2 1tms320lf240 xdsp的cpu内部功能模块介绍 中央算术逻辑单元 calu 运算功能 16位加 16位减 布尔逻辑操作 位测试 移动和循环 输入 一个由累加器提供 另一个由乘积定标移位器或输入数据定标移位器提供 输出 其结果送至32位累加器 进行移位 相关状态位 符号扩展模式位sxm st1第10位 确定calu是否进行符号扩展 sxm 0 抑制符号扩展 sxm 1 进行符号扩展 2 1tms320lf240 xdsp的cpu内部功能模块介绍 累加器 acc 功能 对送到acc的calu的运算结果进行单个移位和循环操作 输入 calu的运算结果 输出 acc的高16位和低16位中任何一个都可送到输出定标移位器 经定标移位后存入数据存储器 相关状态位 2 1tms320lf240 xdsp的cpu内部功能模块介绍 输出定标移位器将累加器输出的内容左移0 7位 移动位数由存储器指令指定 然后用sach或sacl指令将移位器中的高位字或低位字保存到数据存储器中 acc的内容不变 2 1tms320lf240 xdsp的cpu内部功能模块介绍 4 辅助寄存器算术逻辑单元 arau 在calu操作的同时执行8个辅助寄存器 ar7 ar0 上的算术运算 8个辅助寄存器提供了灵活而有效的间接寻址 通过把数值0 7写入状态寄存器st0高3位的辅助寄存器指针 arp 选择一个辅助寄存器作为当前ar 当前ar存放被访问的数据存储器的地址 根据指令的需要分别向数据读 写地址总线读 写数据 使用完该数据后 当前ar的内容可以被arau增减 可实现无符号16位算术运算 2 1tms320lf240 xdsp的cpu内部功能模块介绍 arau可执行的操作将辅助寄存器值增 减1 或者增 减一个变址量 借助任何支持间接寻址的指令 使辅助寄存器的值加 减一个常数 adrk sbrk指令 该常数是指令字的低8位 将ar0的内容与当前ar的内容进行比较 并把结果放入状态寄存器st1的测试 控制位tc cmpr指令 结果经数据写总线dweb传送到tc 辅助寄存器的用途数据存储器地址存储器 通过cmpr指令 使辅助寄存器支持条件分支 调用及返回 用作暂存单元 用作软件计数器 按需要对其进行加 减 2 1tms320lf240 xdsp的cpu内部功能模块介绍 5 状态寄存器两个状态寄存器st0和st1 含有各种状态和控制位 可保存在数据存储器 也可从数据存储器加载 可以保存和恢复子程序的机器状态 加载状态寄存器lst指令写st0和st1 保存状态寄存器sst指令读st0和st1 intm位不受lst指令的影响 寄存器中每一位均可由setc和clrc指令单独置位和清0 2 1tms320lf240 xdsp的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 1tms320lf240 xdsp的cpu内部功能模块介绍 ov溢出标志位 该位锁存的值指出calu是否发生了溢出 发生溢出 ov 1 直到复位 溢出时条件转移 无溢出时条件转移或lst指令执行时才被清0 ovm溢出方式位 该位决定如何管理calu的溢出 setc和clrc指令分别可将该位置1或清0 lst指令也可修改该位 ovm 0 acc结果正常溢出 ovm 1 根据发生的溢出 把acc置为最大正值或负值 2 1tms320lf240 xdsp的cpu内部功能模块介绍 cnf片内daram配置位 cnf 0 可配置双口ram被映射到数据存储空间 cnf 1 可配置双口ram被映射到程序 该位可通过setc clrc和lst指令修改 rs复位时该位清0 tc测试 控制标志位 tc 1 由bit或bitt指令测试位为1 利用norm指令测试时 acc的2个最高有效位 异或 为真 cmpr所测试的当前ar和ar0之间的比较条件成立 2 1tms320lf240 xdsp的cpu内部功能模块介绍 intm中断模式位 该位用来允许或禁止所有可屏蔽中断 通过setc和clrc指令置1或清0 该位不影响不可屏蔽中断rs和nmi lst指令不影响该位 发生中断及复位时置1 intm 0 允许全部没有被屏蔽的中断 intm 1 禁止全部没有被屏蔽的中断 dp数据存储器页指针 当指令使用直接寻址方式时 这个9位的dp寄存器与指令寄存器的低7位一起形成一个完整的数据存储器16位地址 lst和ldp指令可修改该字段 2 1tms320lf240 xdsp的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 1tms320lf240 xdsp的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字 全局数据存储器 32k字 i o空间 64k字 注意 lf240 xdsp的所有片内外设的寄存器均映射在数据存储器空间 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引脚为何值 lf240 xdsp都是从程序存储器空间的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 74ffh7030h 703fh7540h 75ffh7060h 706fh7600h 77efh77f4h 7fffh7080h 708fh 2 2存储器和i o空间 第0页数据地址映射数据存储器中包括存储器映射寄存器 它们位于数据存储器的第0页 地址0000h 007fh 下表是对第0页数据地址映射的详细说明 应用中必须注意以下几点 以零等待状态访问两个映射寄存器 中断屏蔽寄存器 imr 和中断标志寄存器 ifr 测试 仿真保留区被测试和仿真系统用于特定信息发送 因此不能对测试 仿真地址进行操作 第0页数据地址映射 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地址时有效 lf2407i o空间地址映射图 2 2存储器和i o空间 下面是使用汇编语言的直接访问i o空间的实际例子 indat2 0afeeh 从端口地址为afeeh的外设 读数据 并存入dat2寄存器outdat2 0cfefh 输出数据存储器dat2的内容 到端口地址为cfefh的外设下面是访问等待状态发生器的寄存器的实例 indat2 0ffffh 从等待状态发生器读取数据到dat2寄存器outdat2 0ffffh 将dat2寄存器的数据写入等待状态发生器 使用等待状态发生器 2 3程序控制 程序控制执行一个或多个指令块的次序调动通常 程序是顺序执行的 器件执行这些连续程序存储器地址处的指令有时 程序必须转移到非顺序的地址并在新地址处开始顺序执行指令lf240 xdsp支持调用 返回和中断 2 4程序控制 1 程序地址的产生程序流要求处理器在执行当前指令的同时产生下一个程序地址 顺序或非顺序 lf240 x器件程序地址产生逻辑使用下列硬件 程序计数器 pc 16位pc取址时对内部或外部程序存储器进行寻址 程序地址寄存器 par 驱动程序地址总线 pab 是16位总线 同时为读 写程序提供地址 堆栈 程序地址产生逻辑包括一个16位宽 最多可保存8个返回地址的硬件堆栈 也可用于暂存数据 微堆栈 mstack 有时程序地址产生逻辑使用这个16位宽 1级深的堆栈保存一返回地址 重复计数器 rptc 16位的rptc与重复指令rpt一起 用来确定rpt后面的一条指令重复执行的次数 2 4程序控制 程序计数器 pc 程序地址产生逻辑利用16位的pc寻址内部和外部程序存储器 pc含有要执行的下一条指令的地址 经程序地址总线 pab 从程序存储器中取出该地址中的指令 并将其装入指令寄存器 指令寄存器装入后 pc内容为下一地址 lf240 x可以采用多种方法装载pc 从而适应顺序和非顺序的程序流 2 4程序控制 堆栈lf240 x具有16位宽度 8级深度的硬件堆栈 在调用子程序或发生中断时 程序地址产生逻辑利用该堆栈保存返回地址 当指令使cpu进入子程序或中断使其进入中断服务程序时 返回地址自动装入堆栈的栈顶 该操作不需附加周期 当子程序或中断服务程序完成时 则返回地址从栈顶送到程序计数器 当8级堆栈不用于保存地址时 在子程序或中断服务程序内 堆栈可用于保存上下文数据或其他存储用途 2 4程序控制 用户可使用的两组指令访问堆栈push 压入 和pop 弹出 push指令把累加器的低半部分copy到栈顶 pop指令将栈顶的数据copy到累加器低半部分 pshd和popd 当子程序或中断嵌套超过8级时 可利用这些指令在数据存储区构建堆栈 pshd将数据存储器中的值压入栈顶 popd将栈顶的值弹到数据存储器 每当一个数压入栈顶 堆栈中每级的内容都下移一级 栈底内容则丢失 因此 如果没有弹出而又连续压入多于8次 或压入的次数比弹出的次数多于8次时 就会丢失数据 堆栈溢出 弹出操作于压入操作相反 把堆栈中每一级的值都copy到较高的一级 连续7次弹出后的任何弹出操作产生的值都是初始栈底的值 2 4程序控制 微堆栈 mstack 程序地址产生逻辑在执行某些指令前利用16位宽 1级深的mstack保存返回地址 这些指令利用程序地址产生逻辑提供双操作数指令中的第2个地址 它们是 bldd blpd mac macd tblr和tblw 重复执行时 利用pc使第一个操作数地址增1 并使用辅助寄存器算术单元产生第二个操作数地址 使用时 返回地址被压入mstack 重复指令执行完后 mstack的值被弹出并送至程序地址产生逻辑 mstack不可用于存储指令 不同于stack 2 4程序控制 2 流水线操作指令流水线包括执行指令时发生的一系列总操作 lf240 x流水线具有4个独立阶段 取指令 指令译码 取操作数和执行指令 这4个独立阶段在任意给定周期里 可能有1 4条不同的指令处于激活状态 2 4程序控制 对用户来说 除下列情况外 流水线基本上是不可见的紧跟在修改全局存储器分配寄存器 gbeg 后的单字 单周期指令使用先前的全局映射数据存储器 norm指令修改辅助寄存器指针 abp 而且在流水线的执行阶段使用当前辅助寄存器 如果后面的两个指令字改变当前辅助寄存器或arp的值 那么这些操作是在流水线的译码阶段进行的 使得norm指令使用了错误的辅助寄存器 并使后续指令使用错误的arp值 2 4程序控制 3 无条件转移 调用和返回无条件转移总是被执行 pc装入指定的程序地址且程序从该地址处开始执行 装入的地址来自于指令的第2个字或累加器的低16位 在转移指令到达流水线的执行阶段时 下2条指令已被取回 且从流水线中清除不被执行 而从转移至的地址处继续执行 无条件转移指令 b 转移 和bacc 转移到acc指定的存储单元 2 4程序控制 无条件调用必定要执行 将指定的程序存储器的地址加载到pc 并从该地址开始执行 装入的地址来自于指令的第2个字或累加器的低16位 加载pc之前将返回地址保存到堆栈里 子程序执行后 返回指令将返回地址从堆栈加载到pc 程序从调用指令后面的指令开始执行 无条件调用指令 call和cala 调用acc指定的存储单元处的子程序 2 4程序控制 无条件返回必定要执行 将栈顶的值加载到pc 并从该地址继续执行程序 在返回指令到达流水线的执行阶段时 下两条指令已被取回 且从流水线中清除不被执行 pc从堆栈中取出返回地址 程序继续执行 2 4程序控制 4 有条件转移 调用和返回使用多个条件条件指令操作数中可以有多个条件 必须满足多个条件 指令才可执行 合法条件组合应满足的规则 组1 最多可选2个条件 其中每个条件必须来自不同的类 2个条件不能来自同一类 组2 最多可选3个条件 其中每个条件必须来自不同的类 不能有2个条件来自同一类 2 4程序控制 条件状态条件指令必须能测试状态位的最近值 直到流水线的第4个阶段 前一条指令已被执行后的一个周期 才认为条件是稳定的 流水线控制在条件稳定之前 停止对条件指令后面任何指令的译码 2 4程序控制 条件转移转移指令可把程序控制转移到程序存储器中的任何地址 条件转移指令仅当用户指定的一个或多个条件满足时才执行 如果满足所有条件 将转移指令的第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论