其他分享
首页 > 其他分享> > DSP应用技术(第二章)

DSP应用技术(第二章)

作者:互联网

TMS320C2000处理器

2.1 TMS320C2000概述

C2000:32位微控制器,针对处理、传感和驱动进行优化以提高闭环性能的 32 位微控制器

2.2 TMS320F28335内部结构

TMS320C2000系列DSP芯片采用改进的哈佛结构,其程序总线存储器和数据存储器分别独立,有各自的总线结构,并允许互访。
TMS320C2000系列DSP芯片有3个主要组成部分:中央处理单元、存储器、片内外设。同一系列DSP都采用相同的中央处理单元、总线结构和指令集。但片内存储器以及外设有所区别。

2.2.1 F28335 DSP的内核

CPU介绍

基于F28335 CPU + FPU 的控制器和 TI 现有的 F28x 具有相同的32位定点 CPU架构(减少对存储空间的占用),同时支持16位于32位的指令操作(加快指令的执行时间);

此外,F28335 的 CPU 还包括一个单精度(32位)的IEEE 754 浮点单元(FPU)

F28335 的 CPU 还支持一种叫原子指令的读/写简化机制,可以在单个时钟周期内完成“读取-修改-写回”的操作。

原子指令是小的、通用的不可中断指令
原子指令可以更快地完成读/写操作,并具有更小的代码规模。

总线结构

F28335 的总线分为内存总线和外设总线两种。
多总线被用于在内存和外设以及CPU之间传输数据。

类型组成
程序读总线22位地址,32位数据
数据读总线32位地址,32位数据
数据写总线32位地址,32位数据

流水线机制

即处理流程分为若干步骤,而且整个数据处理是“单流向”的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,可以提高系统的工作频率。

F28335 还使用一个特殊的8级保护管道,最大限度地提高吞吐量。这里有一种特殊的保护机制,即不允许对同一位置同时进行读/写,以避免时序的冲突。

FPU流水线

F28335 附带了专门的浮点处理引擎(Floating Point Unit,FPU),可以理解为一个协处理器。
两个并行的处理器(CPU + FPU),在它们直接之间就涉及数据的交换,且整数与浮点格式之间的转换需要1个延时槽,其余的指令,例如load、store、max、min、absolute等,则不需要延时槽。

其基本特性为:
(1)浮点运算是没有流水线保护的,例如,FPU 可以再前一条指令写操作结束前就发出一条新的指令;(这意味着一些与其有关的指令需要使用延时槽来等待操作完成)
(2)汇编器检测流水线的冲突;
(3)编译器将阻止流水线的冲突;
(4)在浮点流水线的延时槽中防止非冲突指令可以提高性能。

2.2.2 F28335 的存储单元

F28335 的存储空间被划分为程序存储与数据存储,其中一些存储器即可用于存储程序,也可用于存储数据。一般而言,F28335 DSP上的存储介质有以下几种:

(1)Flash 存储器
(2)单周期访问 RAM
(3)OTP(One Time Programmable,一次编程)
(4)片外存储
(5)Boot ROM

代码安全模块(CSM)

使用 CSM 的主要目的就是防止逆向工程,并保护知识产权,即 IP。
实际的 CSM 是位于 Flash 中的一段长度为 128bit 的存储空间。
密码长度可由用户定义,长度为128位,即2128=3.4×1038种可能的密码。
在烧写 Flash 时,一定要注意 CSM 位所烧写的内容,一旦忘记所烧写的密码,则芯片无法再次烧写。

2.2.3 片上外设

外设是 DSP 芯片上除了 CPU、存储单元之外的,可以实现一些与外部信号进行交互的单元。

2.3 F28335特点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 F28335 系统时钟

内核时钟(SYSCLKOUT)
外设时钟:

2.4.1 内核时钟

片上振荡器 OSC 及锁相环模块 PLL 共同决定了器件的时钟信号。

在这里插入图片描述
F28335 系列 DSP 具有三种时钟方案:

PLL 工作模式

如上图所示,OSCCLK 由内部振荡器或外部电路直接提供,而 OSCCLK 之后的时钟信号处理由 PLL 模块进行控制,PLL 模块具有 3 中工作模式,由寄存器 PLLSTS[DIVSEL] 位决定,如下表所示。

在这里插入图片描述
写 PLLCR 寄存器前,PLLSTS[DIVSEL] 必须为0。

PLL 配置流程:

在这里插入图片描述

2.4.2 外设时钟

在 F28335 系列 DSP 中,几乎每一个外设都需要相应时钟信号,这些时钟信号都是对系统时钟信号 SYSCLKOUT 处理后产生的。

2.5 中断控制

为了及时响应、处理外界的异步事件,中断要求DSP暂停当前的工作,转而对外界异步事件作出处理,完成以后再继续当前的工作。

2.5.1 中断分类
在这里插入图片描述
TMS320C2000 管理中断有3个主要阶段:
在这里插入图片描述
2.5.2 外设中断扩展模块 PIE

F28335 系列 CPU 可直接处理1路非屏蔽(NMI)以及16路可屏蔽中断(INT1~INT14、RTOSINT、DLOGINT)。

F28335 系列 DSP 的 CPU 无法直接处理所有的中断请求,因此通常使用外设中断扩展模块(PIE)来仲裁外设或外部引脚中断请求信号,并将仲裁结果送入到 CPU 进行处理。

PIE模块概述

PIE 模块最多可接受96路中断请求信号,这96路中断请求信号被分为12组,每组有8路,每组将产生一路复用的中断请求信号,共12路,这12路复用的中断请求信号连接到CPU的中断输入口INT1~INT12 上。96路中断请求信号中的每一路都具有独立的中断向量,这些向量被存储在特定的 RAM 中,用户可根据需要修改。CPU 需要9个时钟周期访问中断向量地址并保存重要的CPU寄存器,因此 CPU 可快速响应中断事件。中断优先级可通过硬件和软件共同控制,每路中断请求信号都可以在PIE模块中使能或静止。

中断请求信号分为外设级、PIE级和CPU级3种。

在这里插入图片描述

2.5.3 中断向量表

中断矢量表,又称为中断地址,表明中断发生后,若DSP响应中断,指令执行的地址。

在这里插入图片描述
中断向量表映射地址

中断向量列表用来存放中断服务函数的地址,F28335 系列 DSP 的中断向量列表可映射到4个不同的存储单元,由以下控制位决定:

在这里插入图片描述
(通常情况下仅使用 PIE 向量)

上电复位后中断向量列表映射为 BROM 向量,在复位和引导完成后,应由用户代码初始化 PIE 向量列表,将向量列表映射为 PIE 向量。下图为器件复位后中断向量列表的配置方法:
在这里插入图片描述
中断向量列表:

PIE 向量列表占用 256×16bit 的SARAM,当 PIE 模块未使用时,此部分 SARAM 可当作通用的 RAM 单元。 PIE 中断向量列表中的内容在复位后是未定义的。 CPU默认从 INT1 到 INT12 具有从高到低的中断优先级顺序。中断优先级体现在中断执行时向量的提取顺序上。

2.5.4 PIE 设置寄存器

寄存器名称寄存器说明
PIECTRLPIE 控制寄存器
PIEACKPIE 中断确认寄存器
PIEIERnPIE 组n使能寄存器
PIEIFRnPIE 组n标志寄存器

在这里插入图片描述

注:value after reset 为复位后的值

字段取值及功能描述
15~1PIEVECT用于保存 PIE 中断向量的地址,中断向量地址的最低位被忽略,仅保存地址的15~1位。通过读取中断向量地址,可判断 CPU 在响应哪个中断。
0ENPIEPIE 向量列表使能位。0:PIE 模块禁用,向量列表从 Boot ROM 中的 CPU 向量列表提取向量,即使被禁用,PIE 模块的所有寄存器仍可被访问; 1:除 Reset 复位向量外的所有向量都从 PIE 向量列表中提取。
字段取值及功能描述
15~12保留保留
11~0PIEACK每位对应一个 PIE 组,bit0对应PIE组1(INT1),以此类推,bit11对应PIE组12(INT12)。0:读返回0,表明此时对应的PIE组可以向CPU发送中断请求;写0无反应; 1:读返回1,表明对应的PIE组向CPU发送过中断请求,此时组内的其他中断请求被阻塞;写1将对本位清零,重新允许对应的PIE组再次向CPU发送中断请求。
字段取值及功能描述
15~8保留保留
7~0INTn.8~INTn.1每位用于使能组内的中断。0:禁止中断;1:使能中断
字段取值及功能描述
15~8保留保留
7~0INTn.8~INTn.1每位用于指示其对应的中断请求是否有效,与CPU的中断标志寄存器类似,一旦中断请求信号到达,相应的位置1。如果中断服务函数被执行,此位自动清零,同时也可通过向该位写0来清零。硬件对 PIEIFR 寄存器的访问优先级比CPU高。

2.5.5 CPU 中断设置寄存器

CPU级中断控制相关寄存器主要有标志位寄存器 IFR 与中断使能寄存器 IER 两个,用于控制CPU级的中断响应(INT1~INT14),当 PIE 模块使能时,PIE模块将为CPU提供12路中断请求信号(INT1~INT12)。

字段取值及功能描述
15RTOSINT实时操作系统(RTOS)中断标志位。0:无挂起的RTOS中断;1:至少有一个RTOS中断被挂起
14DLOGINT数据记录中断。0:无挂起的DLOGINT中断;1:至少有一个DLOGINT中断被挂起
13~0INT14~INT1用于表示CPU级的中断状态。0:INTx通道上无中断请求;1:INTx通道上至少有一个中断请求
字段取值及功能描述
15RTOSINT实时操作系统(RTOS)中断标志位。0:禁止RTOS中断;1:使能RTOS中断
14DLOGINT数据记录中断使能控制位。0:禁止DLOGINT中断;1:使能DLOGINT中断
13~0INT14~INT1CPU级的中断使能控制位。0:禁止INTx通道上的中断请求;1:使能INTx通道上的中断请求

2.5.6 中断服务程序ISR

中断服务程序是用户编写的,是对中断事件做出响应的子程序。
CPU接收到中断请求并响应之后,就根据中断矢量内容转移到相应的中断服务程序ISR中。
ISR在为中断所要求的任务服务之前需要保存和恢复寄存器的值,并且还要管理中断嵌套

2.6 外部接口模块XINTF

EXINTF是一种异步接口,主要用于存储器扩展。

标签:中断,PIE,DSP,中断请求,F28335,应用,寄存器,第二章,CPU
来源: https://blog.csdn.net/weixin_44862382/article/details/115270827