DSP TMS320C28x CPU 和指令设置参考【CPU】

一、CPU结构

二、CPU寄存器

1、累加器 Accumulator (ACC, AH, AL)

累加器(ACC)是 CPU 的主要工作寄存器。 除了那些对存储器和寄存器的直接操作外,所有的 ALU 操作结果最终都要送入 ACC。ACC 支持单周期的数据传送操作、 加法运算、减法运算以及来自数据存储器的宽度为 32 位的比较运算, 它也可以接受 32 位乘法操作的运算结果。

ACC 有一个非常重要的特点就是它既可以被作为一个 32 位的寄存器使用,也可以被拆解成两个 16 位的寄存器 AH(高 16 位)和 AL(低 16 位), 它们可以被单独访问,甚至 AH 和 AL 的高 8 位和低 8 位也可以通过专用字节传送指令进行独立访问,这使得有效字节捆绑和解捆绑操作成为可能。

累加器还影响以下一些相关状态位:

  1.  溢出模式位(OVM)
  2. 符号扩展模式位(SXM)
  3. 测试/控制标志位(TC)
  4. 进位标志位(C)
  5. 零标志位(Z)
  6. 负标志位(N)
  7.  溢出标志位(V)
  8. 溢出计数位(OVC)

下表显示了移位 AH,AL 或 ACC 内容的方法。

累加器中值的可用操作

2、乘数寄存器 Multiplicand Register (XT,T,TL)

C28x CPU的硬件乘法器可以进行一个 16 位×16 位或者 32 位×32位的定点乘法运算。在进行 32 位×32 位乘法操作之前, XT 寄存器存放 32 位乘数。

XT 可被分为两个独立的16 位寄存器 T 和 TL, 在进行一个 16 位 × 16 位的乘法运算时, T 寄存器存放 16 位的乘数。 TL 寄存器可以被装载一个 16 位的有符号数, 这个数会被自动进行符号扩展以填充 32 位的 XT 寄存器。 

3、乘积寄存器 Product Register (P, PH, PL)

乘积寄存器(P寄存器)通常用于存放乘法运算的 32 位结果。 它也可以直接被装入一个 16 位常数, 或者从一个 16 位/32 位的数据存储器、 16 位/32 位的可寻址 CPU 寄存器以及 32 位累加器中读取数据。 

当某些指令访问 P,PH 或 PL 时,乘积寄存器 32 位都将被复制到 ALU 移位器块,其中桶形移位器可以执行左移,右移或不执行任何移位。 这些指令的移位器动作由状态寄存器 ST0 中的乘积移位模式(PM)位决定

下表显示了可能的 PM 值和相应的乘积模式。 当执行左移时,低位用 0 填充。 当执行右移时,P 寄存器的值将被符号扩展。 使用 PH 或 PL 作为操作数的指令将忽略乘积移位模式。

4、数据页指针寄存器 Data Page Pointer (DP)

在直接寻址模式,数据存储器以 64 个字的块(称为数据页)进行寻址,每 64 个字构成一个数据页,数据存储器的低 4M 字包含 65536 个数据页,标记为 0 至 65535 。

数据存储器的数据页

在直接寻址方式下,16位数据页指针寄存器(DP)保存的是当前数据页的页编号。可以通过向 DP 加载新编号来更改数据页面。

使用DP不能访问4M字以上的数据存储器。

在 C2xLP 源兼容模式下工作时,将使用 7 位偏移,并且 DP 寄存器的最低有效位将被忽略。

5、堆栈指针 Stack Pointer (SP)

堆栈指针(SP)允许在数据存储器中使用软件堆栈。 堆栈指针为 16 位, 可以对数据空间的低 64K 字(数据存储器 0000H~FFFFH)进行寻址。使用 SP 时,将 32 位地址的高 6 位强制为 0。复位后,SP指向地址 0x00000400。

 堆栈操作说明如下:

  • 堆栈从低地址向高地址增长。
  • SP 总是指向堆栈中的下一个空单元。
  • 复位时, SP 被初始化指向地址 0400H
  • 将 32 位数值存入堆栈时, 先存入低 16 位, 然后将高 16 位存入下一个高地址中【小端格式
  • 当进行 32 位的操作读写 32 位的数值时, C28x CPU 期望存储器或外设接口逻辑把读写排成偶数地址。 例如, 如果 SP 包含一个奇数地址 0083H, 那么进行一个 32 位的读操作时, 将从地址 0082H 和 0083H 中读取数值。
  • 如果增加 SP 的值, 使它超过 FFFFH, 或者减少 SP 的值, 使它低于 0000H, 则表明 SP 已经溢出。 如果增加 SP 的值使它超过了 FFFFH, 它就会从 0000H 开始计数。 例如,如果 SP=FFFEH 而一个指令又使得 SP 加 2, 则结果就是 0000H。 当减少 SP 的值使它到达 0000H, 它就会重新从 FFFFH 计数。 例如, 如果 SP=0002H, 而一个指令又使 SP 减 4,则结果就是 FFFEH。
  • 当数值存入堆栈时, SP 并不要求排成奇数或偶数地址, 排列由存储器或外设接口逻辑完成。

6、通用/辅助寄存器 Auxiliary Registers (XAR0-XAR7, AR0-AR7)

CPU 提供了 8 个 32 位寄存器,可用作内存的指针或通用寄存器。 在间接寻址方式中, 它们存放指向数据存储器的指令操作数的地址指针, XAR0~XAR7 也可以作为通用目的寄存器来使用。

AR0 - AR7 可用作通用寄存器,用于循环控制和高效的 16 位比较。

当访问 AR0~AR7 时, 寄存器的高 16 位(AR0H~AR7H) 可能改变或不改变,这主要取决于所应用的指令。 

 AR0H~AR7H 只能作为 XAR0~XAR7 的一部分来读取, 不能单独进行访问。为了进行累加器操作,所有的 32 位都是有效的(@XARn)。 为了进行 16 位操作,可以使用低 16 位, 而高 16 位则被忽略(@ARn)。 也可以根据指令使 XAR0~XAR7 指向
程序存储器的任何值。

 许多指令允许用户访问 XAR0-XAR7 的 16 个最低有效位(LSB)。 如图所示,XAR0-XAR7 的16个LSB 被称为 AR0-AR7 的一个辅助寄存器。

7、程序计数器 Program Counter (PC)

PC 是 22 位的寄存器,其存放 CPU 正在操作指令的地址

当流水线已满时,22位程序计数器(PC)始终指向当前正在处理的指令–刚到达流水线的解码2阶段的指令。 指令到达流水线的一旦指令到达了流水线的这一阶段,就无法通过中断将其从流水线中清除,而是会一直执行完才会响应中断。

8、返回 PC 指针寄存器 Return Program Counter (RPC)

当使用 LCR 指令执行调用操作时,返回地址将保存在 RPC 寄存器中,而 RPC 中的旧值将保存在堆栈中(以16位方式分两次操作) ,22 位的函数入口地址将被装载到 PC 计数器, 从而使流程转入函数体中运行。当使用 LRETR 指令执行返回操作时,将从 RPC 寄存器中读取返回地址装载到 PC 计数器中,并将堆栈上的值写入 RPC 寄存器中(以16位方式分两次操作)。其他调用指令不使用RPC寄存器。 

C28x CPU 有两对用于子程序长调用的指令: LC 和 LRET, LCR 和 LRETR。 所谓长调用即调用指令直接使用 22 位的函数入口地址, 即可以在 0x00 0000~0x3F FFFF 的程序空间内进行操作。 这两对长调用指令中,LCR 和 LRETR 比 LC 和 LRET 的执行效率更高,而 LCR 和 LRETR 指令将使用 RPC 寄存器, 其他调用指令不使用 RPC 寄存器。

9、状态寄存器 Status Registers (ST0, ST1)

10、中断控制寄存器 Interrupt-Control Registers (IFR, IER, DBGIER)

 IFR 的每个位代表一个中断源的中断请求, 当该位被置位时, 将向 CPU 申请中断, 而 IER 的各位则用于屏蔽或使能对应的中断请求, DBGIER 与 IER 功能类似, 但它只在 DSP 工作于实时仿真模式时被使用。 如果用户正在通过仿真器对应用程序进行调试并且 CPU 被暂停,此时那些在 DBGIER 中被使能的中断请求仍然能够被 CPU 响应, 这些在 DBGIER 中被使能的中断称为时间敏感中断(Time Critical)。 在使用 DBGIER 使能时间敏感中断时, IER 内对应的位也必须同时使能。 如果在实时仿真模式下, CPU 处于运行状态, 则标准的中断响应和处理机制被使用, 而 DBGIER 的内容被忽略。

三、状态寄存器 ST0、ST1

四、程序流程

五、乘法操作

六、移位操作

  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书详细介绍了TMS320C28x系列DSP的事件管理器、模-数转换器、32位CPU定时器、多通道缓冲串行口、串行外设接口、串行通信接口、增强型区域网络控制器、通用输入/输出多路复用器,以及电气特性和机械数据等内容。本书可供高等学校电子、通信、计算机、自动控制和电力电子技术等专业的高年级本科生及研究生作为教科书或参考书,也可作为各领域中从事信号处理、控制和电力电子技术的科研及工程技术人员的参考书籍 目录 第11章事件管理器(EV) 11.1事件管理器功能概述 11.1.1事件管理器功能 11.1.2 EV的增强特性 11.1.3事件管理器的寄存器地址 11.1.4通用目的(GP)定时器 11.1.5使用GP定时器产生PWM输出 11.1.6全比较单元 11.2 PWM电路 11.2.1有比较单元的PWM电路 11.2.2 PWM信号的产生 11.2.3空间向量PWM 11.3捕捉单元 11.3.1捕捉单元概述 11.3.2捕捉单元的操作 11.3.3捕捉单元的FIFO堆栈 11.3.4捕捉中断 11.3.5正交编码脉冲电路(QEP) 11.4事件管理器的中断 11.4.1事件管理器中断概述 11.4.2 EV中断请求和服务 11.5事件管理器的寄存器 11.5.1 寄存器概述 11.5.2定时器寄存器 11.5.3比较控制寄存器 11.5.4 比较行为控制寄存器 11.5.5捕捉单元寄存器 11.5.6事件管理器中断标志寄存器 11.5.7事件管理器控制寄存器 11.5.8寄存器位设置的区别 第12章模-数转换器(ADC) 12.1 ADC模块的特点 12.2 自动转换序列发生器的工作原理 12.2.1序列采样模式 12.2.2并发采样模式 12.2.3并发采样双序列发生器模式举例 12.2.4并发采样级联序列发生器模式举例 12.3连续自动序列化模式 12.3.1序列发生器启动/停止模式 12.3.2并发采样模式 12.3.3输入触发描述 12.3.4序列转换过程中的中断操作 12.4 ADC时钟预定标器 12.5低功耗方式 12.6加电顺序 12.7序列发生器的替换特性 12.8 ADC寄存器 12.8.1 ADC控制寄存器 12.8.2最大转换通道寄存器 12.8.3 自动序列状态寄存器 12.8.4 ADC状态和标志寄存器 12.8.5 ADC输入通道选择序列控制寄存器 12.8.6 ADC转换结果缓冲寄存器 第13章 32位CPU定时器O/1/2 13.1 CPU定时器的结构与工作原理 13.2 CPU定时器的寄存器 13.2.1定时器计数器寄存器 13.2.2定时器计数器寄存器高位 13.2.3定时器周期寄存器 13.2.4定时器周期寄存器 13.2.5定时器控制寄存器 13.2.6定时器预定标计数器低位 13.2.7定时器预定标计数器高位 第14章 多通道缓冲串行E!(McBSP) 14.1概述 14.1.1 McBSP介绍 14.1.2寄存器一览 14.1.3 McBSP操作 14.1.4 McBSP的采样率发生器 14.1.5 McBSP的意外/出错情况 14.2多通道选择模式 14.2.1通道、模块、分区 14.2.2 A-bis模式 14.2.3 SPI仂、议 14.3配置接收器和发送器 14.3.1接收器配置 14.3.2发送器配置 14.4仿真和复位事项 14.4.1 McBSP仿真模式 14.4.2数据打包实例 14.4.3 GPIO功能 14.5 McBSP的FIFO和中断 14.5.1 McBSP的FIFO概述 14.5.2 FIFO模式下McBSP的功能性与局限性 14.5.3 McBSP的FIFO操作 14.5.4 McBSP接收中断的产生 14.5.5 McBSP发送中断的产生 14.5.6 McBSP FIFO寄存器的说明 14.6 McBSP寄存器 14.6.1 数据接收和发送寄存器 14.6.2串行口控制寄存器(SPCRl和SPCR2) 14.6.3接收控制寄存器(RCRl和RCR2) 14.6.4发送控制寄存器(XCRl和XCR2) 14.6.5 采样率产生器寄存器(SRGRl和SRGR2) 14.6.6多通道控制寄存器(MCRl和MCR2) 14.6.7引脚控制寄存器(PCR) 14.6.8接收通道使能寄存器(RCERA-RCERH) 14.6.9发送通道使能寄存器(XCERA-XCERH) 14.6.10寄存器总结 第15章 串行外围接口(SPl) 15.1增强型SPI模块概述 15.2 SPI模块结构及工作原理 15.2.1 SPI模块信号总结 15.2.2 SPI模块寄存器概述 15.2.3 SPI操作 15.2.4 SPI中断 15.2.5数据格式 15.2.6波特率和时钟方案 15.2.7复位的初始化 15.2.8 SPI FIFO说明 15.3 SPI的寄存器组 15.3.1 SPI配置控制寄存器 15.3.2 SPI 512作控制寄存器 15.3.3 SPI状态寄存器 15.3.4 SPI波特率寄存器 15.3.5 SPI仿真缓冲寄存器 15.3.6 SPI串行接收缓冲寄存器 15.3.7 SPI串行发送缓冲寄存器 15.3.8 SPI串行数据寄存器 15.3.9 SPI FIFO发送、接收及控制寄存器 15.3.10 SPI优先权控制寄存器 15.4 SPI范例波形 第16章 串行通信接口(SCl) 16.1增强型SCI模块概述 16.2 SCI模块结构及工作原理 16.2.1 SCI模块信号总结 16.2.2多处理器和异步处理模式 16.2.3 SCI可编程数据格式 16.2.4 SCI多处理器通信 16.2.5空闲线多处理器模式 16.2.6地址位多处理器模式 16.2.7 SCI通信格式 16.2.8 SCI端口的中断 16.2.9 SCI波特率计算 16.2.10 SCI增强型特点 16.3 SCI寄存器组 16.3.1 SCI模块寄存器一览 16.3.2 SCI通信控制寄存器 16.3.3 SCI控制寄存器1 16.3.4 SCI波特率选择寄存器组 16.3.5 SCI控制寄存器2 16.3.6 SCI接收状态寄存器 16.3.7接收数据缓冲寄存器 16.3.8 SCI发送数据缓冲寄存器 16.3.9 SCI FIFO寄存器组 16.3.10优先权控制寄存器 第17章 增强型区域网络控制器(eCAN) 17.1 eCAN的结构 17.1.1 CAN概述 17.1.2 CAN网络和模块 17.1.3 eCAN控制器概述 17.1.4 消息对象 17.1.5消息邮箱 17.2 eCAN的寄存器 17.3 eCAN配置 17.3.1 CAN模块初始化 17.3.2分步配置eCAN 17.3.3远程帧邮箱操作 17.3.4中断 17.3.5 CAN功率下降模式 第18章 通用输入/输出(GPIO)多路复用器 18.1 GPIO多路复用器 18.2 GPIO多路复用器的寄存器 第19章 电气特性和机械数据 19.1 电气特性 19.2 机械数据 附录A寄存器速查参考 附录A.1 CPU寄存器速查参考 A.1.1访问CPU寄存器的指令和复位值 A.1.2寄存器图解 附录A.2事件管理器EV寄存器一览 附录A.3 片内ADC寄存器一览 附录A.4串行外围接El SPI寄存器一览 附录A.5 串行通信接 SCI寄存器一览 附录A.6 CPU定时器0/1/2的寄存器一览 附录A.7多通道缓冲串行ISl McBSP寄存器一览 附录A.8 eCAN寄存器一览 附录A.9通用I/0 H GPIO寄存器一览 附录A.IO时钟、系统控制及PIE寄存器一览 附录A.11片内Flash、OTP寄存器一览 附录A.12外设接H XINTF的寄存器一览 附录B 词汇表 参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值