第2章 DSP芯片结构和CPU外围电路
文章目录
- 第2章 DSP芯片结构和CPU外围电路
- TMS320C55x处理器的特点
- TMS320c55x CPU单元
- 指令缓冲(Instruction Buffer Unit) I单元
- 程序流程(Program Flow Unit) P单元
- 地址数据(Address-data Flow Unit) A单元
- 数据计算(Data Computation Unit) D单元
- TMS320c55x CPU外围电路
- 时钟电路 Clock
- PLL控制寄存器
- 时钟模式寄存器
- 工作模式
- 使用方法
- 通用定时器 Timer
- 结构框图
- 时钟部分
- 计数器部分
- 通用定时器的控制
- 外部存储接口 EMIF
- 概述
- 与外部存储器的接口方式
- 异步接口
- 同步动态RAM
- 例题
- 主机接口 EHPI
- EHPI 基本结构
- 复位对EHPI寄存器的影响
- 接口时序
- 应用举例
- 多通道缓冲串口 McBSP
- 概述
- 基本结构
- 收发通道
- 时钟与帧同步
- 多通道选择
- 串口事件
- 工作模式
- 收发格式与参数设置
- 异常处理
- McBSP寄存器说明
- 应用举例
- 通用输入输出口 GPIO
- 概述
- 上电模式设定
- 其他GPIO
- 直接存储访问控制器 DMA
- 基本结构
- EHPI 通道
- DMA通道传输配置
- 数据块、帧和单元
- 传输类型与数据打包
- 数据源和目的地址
- 单次传输与多次传输
- DMA通道数据传输的启动
- 通道中断与状态
- 寄存器说明
- 应用举例
- 片内存储器与DSP自举
- DA(Dual-Access)RAM
- SA(Single-Access)RAM
- ROM与DSP自举
- 应用举例
TMS320C55x处理器的特点
特征 | 优点 |
---|---|
一个 32 位 ×16 指令缓冲队列 | 缓冲变长指令并完成有效的块重复操作 |
两个 17 位 ×17 位的乘法累加器 | 在一个单周期执行双乘法累加操作 |
一个 40 位算术逻辑单元 (ALU) | 实现高精度算术和逻辑操作 |
一个 40 位桶形移位寄存器 | 能够将一个 40 位的计算结果最高左移 31 位或向右移 32 位 |
1 个 16 位算术逻辑单元 (ALU) | 对主 ALU 并行完成简单的算术操作 |
4 个 40 位的累加器 | 保留计算结果,减少对存储单元的访问 |
12 条独立总线,其中包括: 3 条读数据总线 2 条写数据总线 5 条数据地址总线 1 条读程序总线 1 条程序地址总线 | 为各种计算单元并行提供将要处理的指令和操作数 —— 利用 C55x 的并行机制的优点 |
用户可配置 IDLE 域 | 改进了低功耗电源管理的灵活性 |
TMS320c55x CPU单元
TMS320C55x DSP CPU Reference Guide (Rev. F) (ti.com.cn)
如图所示, C55x有1条32位的程序
数据总线(PB), 5条16位数据
总线(BB、CB、 DB、 EB、 FB)和1条24位的程序地址
总线及5条23位的数据地址
总线, 这些总线分别与CPU相连。
总线通过存储器接口单元(M)与外部程序总线和数据总线相连, 实现CPU对外部存储器的访问。这种并行的多总线结构, 使CPU能在1个CPU周期内完成1次 32位程序代码读
、 3次 16位数据读
和2次 16位数据写
。
C55x根据功能的不同将CPU分为 4 个单元, 即指令缓冲单元 (I)、 程序流程单元 §、 地址流程单元 (A) 和数据计算单元 (D)。
指令缓冲(Instruction Buffer Unit) I单元
如图所示, C55x的指令缓冲单元(I)由指令缓冲队列IBQ(Instruction Buffer Queue)
和指令译码器
组成。 在每个 CPU周期内, (I)单元将从程序读数据总线接收的 4 B 程序代码放入指令缓冲队列, 指令译码器从队列中取 6 B 程序代码, 根据指令的长度可对8位、16位、24位、32位和48位的变长指令进行译码, 然后把译码数据送入 P单元、 A单元和D单元去执行。
程序流程(Program Flow Unit) P单元
如图所示, 程序流程单元( P)由程序地址产生电路
和寄存器
组构成。主要功能产生所有(I)单元读取指令所需的24比特程序地址、控制指令读取顺序。
一般情况下,产生的都是(连续)顺序地址。在遇到指令要求读取非连续地址程序代码时,也可以根据来自(I)单元的立即数和(D)单元的寄存器值产生所需的地址,并将产生地址送到PAB。
在程序流程单元中,控制和影响程序地址的寄存器有5类:
1)程序流程寄存器,包括:PC—程序计数器,RETA—返回地址寄存器,CFCT—控制流程关系寄存器;
2)块重复寄存器,包括:BRC0、BRC1—块重复寄存器0和1、RSA0、RSA1—块重复起始地址寄存器, REA0、REA1—块重复结束地址寄存器0和1;
3)单重复寄存器,包括:RPTC—单重复计数器,CSR—计算单重复寄存器;
4)中断寄存器,包括:IFR0、IFR1(标志),IER0、IER1(使能),DBIER0、DBIER1(调试中断使能);
5)状态寄存器:ST0_55、 ST1_55、 ST2_55、 ST3_55。
地址数据(Address-data Flow Unit) A单元
如图所示, 地址流程单元(A)包括数据地址产生电路(DAGEN)
、算术逻辑电路ALU
和一组寄存器组
构成。
DAGEN
可以根据(I)单元的立即数和本(A)单元的寄存器数据产生读写数据空间的所有地址。在间接寻址中,还需要有§单元来指示采用那种寻址模式。
ALU
能接收(I)单元数据,又能够和存储器、I/O空间、(A)单元寄存器、(D)单元寄存器和§单元寄存器进行数据交换,完成算术、逻辑、位操作、移位、测试、旋转等操作。
(A)单元包括的寄存器有下列4种类型:
1)数据页寄存器(Data Page Register):DPH、DP、(接口数据页)PDP
2)指针寄存器(Pointers):CDPH、CDP—系数数据、SPH、SP、SSP—栈、XAR0~XAR7—辅助
3)循环缓冲寄存器(Circular Buffer Registers):BK03、 BK47、BKC—大小,BSA01、BSA23、BSA45、BSA67、BSAC—起始地址
4)临时寄存器(Temporary Registers):T0~T3
数据计算(Data Computation Unit) D单元
(D)单元包括了CPU的主要计算
部件,能够完成高效的计算功能。如图所示,数据计算(D)单元由移位器
、40比特算术逻辑ALU电路
、两个乘累加器(MAC)
和若干寄存器组
构成。
移位器
:(D)单元移位器能够接收 来自(I)单元的立即数,与存储器、 I/O空间、(A)单元寄存器、(D)单元寄存器和§单元寄存器进行双向通信。此外,还向(D)单元的ALU和(A)单元的ALU提供移位后的数据。
TMS320c55x CPU外围电路
TMS320VC5509 采用下图所示的结构, 由 CPU 和外围电路构成 。 CPU在上节已经介绍, 外围电路是指除 CPU 以外集成在 DSP 芯片内部的一些功能单元和外部接口, 包括:时钟电路、定时器、多通道缓冲串口 McBSP 、主机接口 EHPI、外部存储器接口 EMIF、通用输入/ 输出口 GPIO 、片内存储器和DMA控制器等。
芯片内部框图来源:
TMS320VC5509A Fixed-Point Digital Signal Processor datasheet (Rev. K) (ti.com.cn)
时钟电路 Clock
TMS320C55x DSP Peripherals Overview Reference Guide (Rev. K) (ti.com.cn)
TMS320VC5509 DSP 内部有一个时钟电路。 该时钟电路由一个数字锁相环(DPLL)
和一个时钟模式寄存器(CLKMD)
组成, 如图 2-4 所示。在时钟模式寄存器的控制下, 数字锁相环能对外部输 入时钟进行分频、 倍频和锁相, 为 CPU 及其外围电路提供工作时钟。
DSP时钟发生器产生CPU时钟,并提供给CPU、外设和DSP内部的其他模块。如下图所示。CPU时钟也传递给一个时钟分频器,该分频器向CLKOUT引脚提供一个信号( CLKOUT )。CLKOUT的频率取决于系统寄存器SYSR的CLKDIV位。上图电路即下图中的DSP Clock Generator
。
上下两图的CLKOUT的命名要区分开。
PLL控制寄存器
介绍PLL控制寄存器(PLLCSR)
,详见课本。
时钟模式寄存器
介绍时钟模式寄存器(CLKMD)
,详见课本。
工作模式
在时钟模式寄存器中 PLLENABLE字段的 控制下 ,DPLL有两种工作模式。
- 若PLLENABLE =0, DPLL工作于旁路(BYPASS)模式。
- 若PLLENABLE =1, DPLL工作于锁定(LOCK)模式。
旁路模式下只能分频,锁定模式即能分频又能倍频。
在旁路模式中,DPLL只对输入时钟CLKIN作简单的分频,分频次数由BYPASSDIV字段确定。
- 若BYPASSDIV =00, 为一分频,即CLKOUT等千CLKIN。
- 若BYPASSDIV =01, 为二分频, 即CLKOUT等于CLKIN的 一 半。
- 若BYPASSDIV =1x, 为四分频,即CLKOUT等千CLKIN的 四分之一。
在锁定模式中, DPLL 锁相环对输入时钟 CKLIN进行跟踪锁定,输出的时钟频率由公式确定。
使用方法
DSP时钟发生器的工作状态(A-F)。时钟模式寄存器(CLKMD)
通过软件加载或通过DSP复位加载。如果写入CLKMD使PLL工作,则PLL开始其锁相序列(状态A)。如果写操作使PLL失效,时钟发生器进入其旁路模式(状态D)。
状态 | 描述 |
---|---|
A | 锁定相位。时钟发生器进入旁路模式,PLL(相位锁定环)将输出时钟信号的相位锁定到输入时钟信号的相位。一旦相位锁定并且输出信号达到由 CLKMD 的 PLL MULT 位和 PLL DIV 位定义的频率,时钟发生器进入其锁定模式(状态 B)。你可以通过写入 CLKMD 来重新配置时钟发生器。 |
B | 锁定模式。在锁定模式下,PLL 正在生成具有选定频率的输出信号。输出信号与输入信号相位锁定。如果 PLL 失去锁定并且 CLKMD 的 IOB 位为 1,时钟发生器将返回到旁路模式并重新获取锁定(状态 A);如果 IOB 位为 0,时钟发生器不会重新获取锁定。空闲指令可以将时钟发生器置于其空闲模式(状态 C)。要更改为旁路模式或以其他方式重新配置时钟发生器,你可以写入 CLKMD。 |
C | 空闲模式(从锁定模式进入)。空闲指令已将时钟发生器置于其空闲模式。如果正确退出空闲模式,时钟发生器将重新开始并重新获取相位锁定(状态 A)。重新获取锁定的方法取决于 CLKMD 的 lAl 位。 |
D | 旁路模式。PLL 被禁用,时钟发生器处于旁路模式。时钟发生器内的分频器产生一个由 CLKMD 的 BYPASS DIV 位定义频率的输出时钟信号。空闲指令可以将时钟发生器置于其空闲模式(状态 E)。要更改为锁定模式或以其他方式重新配置时钟发生器,你可以写入 CLKMD。 |
E | 空闲模式(从旁路模式进入)。空闲指令已将时钟发生器置于其空闲模式。如果正确退出空闲模式,时钟发生器将重新开始旁路模式。 |
省电状态、复位时和失所时需要注意的因素见课本总结,很简洁。
通用定时器 Timer
TMS320VC5503/5507/5509/5510 DSP Timers Reference Guide (Rev. C)
结构框图
MS320VC5509 DSP 片内有两个定时器, 即定时器 0 (Timer 0) 和定时器 1 (Timer 1), 可以用来定时或计数。 它的计数器会在每个时钟周期减1,当减到0时就产生一个输出信号。 该输出信号可用于中断 CPU 或触发 DMA 传输(称为定时器事件)。 由此可见, 定时器通常都要有时钟
、 控制寄存器
、 计数器
和定时器事件
等部分。
TMS320VC5509 的定时器结构如图所示。 首先是时钟部分, 可以采用内部的 CPU 时钟, 也可以采用来自输入/输出引脚 TIN/TOUT 的外部输入时钟, 因此增加了时钟选择电路。
其次, 为了能在定时器工作期间设定下一次定时的长度, 它将计数器分为两个, 一个用于定时器工作(递减方式), 一个用于 CPU 读/写(设置定时长度)。
再次, 在定时器事件部分, 可以产生三个输出信号, 一个是向 CPU 发出中断请求, 一个是向 DMA 控制器发出同步事件, 一个是通过 TIN/TOUT 引脚输出信号。
时钟部分
如上图所示, 定时器的工作时钟可以来自 DSP 内部的 CPU 时钟, 也可以来自从 TIN/ TOUT 引脚输入的外部时钟。 具体时钟源的选择和 TIN/TOUT 引脚的功能由控制寄存器 TCR 中的 FUNC 字段确定。
TMS320VC5509 的定时器有 4 种工作模式。
- 当 FUNC =00 时, TIN/TOUT 为
高阻态
, 时钟源为 CPU 时钟。 该模式为复位后的缺省模式。 - 当 FUNC = 01 时, TIN/TOUT 为
定时器输出
, 时钟源为 CPU 时钟。 此时, TIN/TOUT 作 为三个定时器事件中的一个, 可以输出时钟信号或脉冲信号。 - 当 FUNC = 10 时, TIN/TOUT 为
通用输出
, 时钟源为 CPU 时钟。 此时, TIN/TOUT 作为通用输出, 其电平由控制寄存器 TCR 中的 DATOUT 字段确定。 - 当 FUNC = 11 时, TIN/TOUT 为
外部时钟源输入
, 定时计数器将在其上升沿递减。
计数器部分
该定时器有两个计数器:一个4位预分频器计数器
和一个16位主计数器
。两个计数器每个都有一个计数寄存器和一个周期寄存器。在定时器操作期间,计数寄存器被减量。定时器可以通过复制关联周期寄存器的内容,自动重新加载每个计数寄存器。
计数器 | 寄存器 | 描述 |
---|---|---|
预分频计数器 | PSC | 预分频计数寄存器。定时器预分频寄存器(PRSC)的位9-6。 |
预分频计数器 | TDDR | 定时器分频寄存器(预分频周期寄存器)。PRSC的位3-0。 |
主计数器 | TIM | 主计数寄存器 |
主计数器 | PRD | 主周期寄存器 |
通用定时器的控制
介绍定时控制寄存器TCR
,详见课本概括的很详细全面。
-
重点·搞定例题和作业题
- 配置定时器
外部存储接口 EMIF
TMS320VC5503/5507/5509 DSP External Memory Interface (EMIF) Reference Guide (Rev . A) (ti.com)
概述
EMIF 结构框图
如图所示, TMS320VC5509 DSP 的外部存储器接口 EMIF 有 16 位的数据总线, 4 个片选输出信号, 2 个字节使能信号和多种控制信号, 能够提供多种存储器接口。
EMIF 提供的地址总线根据器件的不同封装形式
有所不同,如下表所示。
外部存储器映射(见图1 - 2)被划分为四个区域,称为芯片使能( Chip Enable,CE )空间
。CE0空间位于最低地址,CE3空间位于最高地址。每个CE空间最多可以包含4M字节。
CE3空间中的一些地址可以用来访问DSP内部的ROM。如下图1 - 2所示,通过改变CPU状态寄存器ST3 _ 55中的MPNMC位,可以在CE3空间和ROM之间切换这些地址。MPNMC和ST3 _ 55在TMS320C55x DSP CPU参考指南( SPRU371 )中描述。对于每个CE空间和ROM中的字节数,见设备专用数据手册。
详见下图,课本中的存储空间映射图更加详细直观。二者可以相互验证着记忆。
与外部存储器的接口方式
EMIF为两种类型的存储设备提供了无缝接口:
- 异步器件,包括ROM、Flash、异步SRAM存储器等。
- 同步DRAM ( SDRAM )存储器。
EMIF支持以下几种数据访问类型
:
- 32位程序指令访问为CPU取指令;
- 32位数据访问用于CPU或DMA控制器;
- 16位数据访问用于CPU或DMA控制器;
- 8位数据访问用于CPU或DMA控制器。
异步接口
- 接口方法(见spru670a 2-2)
支持16位和8位数据的异步访问,连接方法如下图所示。
其中, 各个引脚信号的功能如下。
-
D[15:0]:16 位的数据总线;
-
A[13:0] :14 位的地址总线;
-
BE[1: 0]: 低电平有效的字节选择信号, 用于指定要访问的字节位置;
-
CE: 低电平有效的外部存储空间片选信号, 用于指定要访问的外部空间;
-
ARDY: 外部存储器件就绪指示, 使 EMIF 可以和较慢的器件相连;
-
AOE: 低电平有效的外部存储器件输出使能信号;
-
AWE: 低电平有效的外部存储器件写使能信号;
-
ARE: 低电平有效的外部存储器件读使能信号。
- 异步接口时序
EMIF可编程参数如下:
参数 | 控制位 | 定义 |
---|---|---|
建立时间(Setup periods) | RDSETUP WRSETUP | 设置周期是在CPU时钟周期内,为设置地址、芯片使能(CE)和字节使能(BE)信号,在读取选通信号(ARE)或写入选通信号(AWE)下降之前所给的时间。对于异步读取操作,这也是在ARE下降之前输出使能信号(AOE)的设置周期。 |
选通时间(Strobe periods) | RDSTROBE WRSTROBE | 选通周期是CPU时钟周期内,读取或写入选通信号下降(激活)和上升(去激活)之间的时间。 |
保持时间(Hold periods) | RDHOLD WRHOLD | 保持周期是在CPU时钟周期内,读取或写入选通信号上升后,地址和字节使能线保持激活的时间。对于异步读取操作,这也是ARE上升后输出使能信号的保持周期。 |
延长保持时间(Extended hold periods) | RDEXHLD WREXHLD | 扩展保持周期是在以下情况下插入的额外CPU周期数:(a) EMIF必须在执行下一次访问之前切换到不同的CE空间,或(b) 下一次访问需要改变数据方向(例如,EMIF已完成读取访问,现在必须执行写入访问)。在此期间,所有芯片使能信号都是非激活状态。EMIF会自动在你编程的任何周期上增加1个周期。例如,如果WREXHLD = 0,扩展保持周期为1个周期。 |
超时值(Time-out value) | TIMOUT | 单一的超时值适用于读取操作和写入操作。在操作期间,内部计数器计算ARDY信号被采样为低(表示内存未准备好进行访问)的CPU时钟周期数。如果计数器达到超时值,EMIF会在总线错误状态寄存器中记录一个错误(参见第4-7页的4.4节)。如果CPU总线请求了内存访问,EMIF会向CPU发送一个总线错误中断请求。如果DMA控制器请求了内存访问,EMIF会向DMA控制器发送一个超时信号。DMA控制器可以忽略该信号或向CPU发送一个总线错误中断请求。总线错误中断是可屏蔽的;CPU根据中断是否正确启用来忽略它或处理它。注意:在TMS320VC5503/5507/5509A设备中,如果EMIF全局控制寄存器中的ARDYOFF = 1,则不采样ARDY,因此不会发生超时情况。 |
在异步读操作过程中, 写使能信号 (AWE)
置为高电平;在异步写操作过程中, 输出使能信号 (AOE)
和读使能信号 (ARE)
置为高电平。 异步读/写操作第一次访问存储器的建立时间不少于两个CPU周期, 随后访问存储器的建立时间不少于一个CPU周期。
Figure2 - 5、Figure2 - 6分别展示了在读/写操作期间使用ARDY延长选通周期的情况。
- 寄存器配置
介绍了全局控制寄存器(EGCR)
,全局复位寄存器(EMIRST)
,总线错误状态寄存器(EMIBE)
,片选控制寄存器CEx_1,2,3
,详见课本。
同步动态RAM
- SDRAM接口方式(见spru670a 3-8)
SDRAM 是一种高密度、 高速率的同步动态 RAM。 它按行和列的方式来组织存储阵列, 并 通过行列地址对数据进行读/写。 TMS320VC5509 DSP 的 EMIF 能支持容量为 64 Mb 或 128 Mb
的、 宽度为16 位
的 SDRAM。
以 EMIF 与一片 64 Mb 的 SDRAM 接口为例, 它们之间的连接方法如下图所示。
由于 EMIF 的每个片选的最大空间为 32 Mb
, 所以一片 64 Mb 的 SDRAM 就要占用两个片选空间。 但是只能使用开始两个或是最后两个, 即只能为CE0和CE1
或CE2和CE3
。 图中选择了 CE0和CE1, 但 SDRAM 只有一个片选CS, 所以用CE0与之相连,CE1悬空。
- 寄存器配置
与 SDRAM 接口有关的寄存器有 EGCR 、 EMIRST 、 EMIBE 、 CEx_l 、 SDC1、 SDPER 、 SDCNT 、 INIT、 SDC2。
其中,全局控制寄存器 (EGCR)
用于设置同步时钟频率
(MEMFREQ和 MEMCEN 字段);片选空间控制寄存器 1 也只有 MTYPE 字段与 SDRAM 有关, 即当 MTYPE = Ollb
时, 选择 SDRAM 为外部存储器件。 这里只介绍 SDRAM 接口专用的寄存器。
介绍了SDRAM控制寄存器(SDC1、SDC2)
,SDRAM 周期寄存器(SDPER)
和计数寄存器(SDCNT)
, SDRAM初始化寄存器(INIT)
,详见课本。
例题
- 画出硬件连接接口
- 编写代码
主机接口 EHPI
TMS320VC5503/5507/5509 DSP Host Port Interface (HPI)
EHPI 基本结构
TMS320VC5509 DSP有一个16位
数据宽度的主机接口EHPI, 主机通过EHPI可以直接访问DSP内部的DARAM存储器。
介绍EHPI的外部引脚地址/数据
、选通
、控制
和模式选择
介绍EHPI的内部寄存器地址寄存器(HPIA)
、数据寄存器(HPID)
和控制寄存器(HPIC)
复位对EHPI寄存器的影响
HPIC恢复默认值,HPIA和HPID没有被DSP初始化。
接口时序
非复用模式
和复用模式
。
非复用
模式下。HPID用于临时存放要通过EHPI传送的数据。如果是读操作,则HPID中装有在DSP存储区中读到的数据;如果是写操作则HPID中装有要写入DSP存储区的数据。通过配置控制寄存器HPIC可以向DSP发中断,并且可以控制DSP的复位。要访问HPIC必须使HCNTL0
信号为低。
复用模式,较为复杂略。
应用举例
DSP1 为主机,采用非复用模式于DSP2 通信,并由GPIO来选择要访问的 对象(HPIC或数据空间)。详见课本。
多通道缓冲串口 McBSP
TMS320VC5501/5502/5503/5507/5509/5510 DSP (McBSP (ti.com)
概述
详见课本。
基本结构
收发通道
时钟与帧同步
-
采样速率发生器SRG的输入参考时钟
-
采样速率发生器的输出时钟和帧同步
-
时钟信号的方向和极性
-
帧同步信号的方向和极性
-
同步
多通道选择
串口事件
工作模式
多通道缓冲模式
、SPI模式
、A_bis模式
、数字回环模式
、GPIO模式
、省电模式
收发格式与参数设置
详见课本。
异常处理
- 接收过速
- 接收帧同步错误
- 发送数据重写
- 发送寄存器空
- 发送帧同步错误
McBSP寄存器说明
-
收发通道寄存器
-
时钟和帧同步部分的寄存器
——串口控制寄存器(SPCR1|2
)、引脚控制寄存器(PCR
)、采样速率发生寄存器(SRGR1|2
)、收发控制寄存器(R(X)CR1|2
) -
多通道选择部分的寄存器
——多通道控制寄存器(MCR1|2
)、多通道使能寄存器
应用举例
利用 McBSPO 来发送一段数据, 要求如下:
(1)采用多通道缓冲模式。
(2) 发送时钟和帧同步由内部采样速率发生器驱动, 接收时钟和帧同步由外部信号源驱动。
(3) 发送时钟速率为 CPU 时钟速率的 114, 帧同步周期为 18 个 CLKG, 脉冲宽度为 2 个 CLKG 。
(4) 收发数据帧格式都是每帧 1 个阶段, 每阶段 l 个字, 字长 16 位, 不压扩, 1 位延迟。
(5) 采用查询发送标志 XRDY 和接收标志 RRDY 的方式进行收发。
通用输入输出口 GPIO
概述
由8 个相互独立的可编程引脚 (l00~107) 构成。GPIO 各个引脚的方向由寄存器 IODIR
设定, 各个引脚上的输入/输出电平由寄存器 IODATA
设定。
上电模式设定
自举模式(Boot Mode)
是一种在微处理器或数字信号处理器(DSP)启动时加载程序代码的方式。对于 TMS320VC5509 这样的 DSP,自举模式决定了芯片从何处获取初始化代码以及如何开始执行程序。它就像是一个引导过程,告诉处理器在开机或复位后应该去哪里寻找启动所需的软件指令。- 例如,想象一个计算机系统在开机时,
BIOS(基本输入输出系统)
就是一种自举程序,它负责初始化硬件设备,并从硬盘、U 盘或网络等存储介质中加载操作系统的引导程序,然后将控制权交给操作系统。在 DSP 中,自举模式起到类似的作用,不过加载的是 DSP特定的启动代码
。
其他GPIO
在 DSP 中, 还有每个 7 个McBSP
的引脚、 2 个定时器引脚 TIN/TOUT
和外部标志引脚 XF
都能用作 GPIO 。
直接存储访问控制器 DMA
TMS320VC5503/5507/5509/5510 Direct Memory Access(DMA (ti.com)
基本结构
它通过4个端口和6个通道与 D S P的1/0资源相连。 其内部通过32位宽的 DMA 总线互连。 能 够独立于CPU工作, 完成1/0资源间的数据传输, 而不影响CPU执行其他的事情, 类似于PC 机的后台处理。
- 以视频播放为例,在 PC 机中,当从
硬盘
读取视频数据并传输到显卡
的显存中进行播放时,DMA 控制器可以在后台负责数据传输
。CPU 可以同时处理其他任务
,如响应用户的鼠标点击操作、更新播放界面的进度条显示等。在 TMS320VC5509 DSP 中也是类似的原理,CPU 可以专注于复杂的数字信号处理算法
,而 DMA 控制器在后台默默地完成数据在不同 I/O 资源之间的传输
,从而提高了整个系统的效率和并行处理
能力。
此外它有一个EHPI辅助端口和EHPI辅助通道, 可以直接和主机相连, DMA 控制器的各个传输通道采用时分复用(TDM )的方式分享 DMA 总线。
- 在一个复杂的多设备系统中,EHPI 接口增强了系统的集成性。它允许主机作为一个中心控制单元,对多个基于 DMA 的设备进行统一管理。例如,在一个分布式的数据采集和处理系统中,主机可以通过 EHPI 接口
同时控制多个带有 DMA 控制器的 DSP
,协调它们的数据采集和传输任务。 - 在 DMA 控制器内部,有多个传输通道需要访问 DMA 总线来传输数据。采用时分复用的方式可以在
不增加总线数量
的情况下,让多个通道都能有效地利用总线资源
。例如,如果有 6 个传输通道,通过合理分配时间片,每个通道都有机会在一定时间间隔内使用 DMA 总线进行数据传输,这样就避免了通道之间为了争夺总线资源而产生冲突。
EHPI 通道
由DMA的全局控制寄存器DMA_GCR
中的EHPI PRIO
字段控制优先级
;
由DMA全局控制寄存器DMA_GCR中的EHPI EXCL
字段确定共享模式
和独占模式
。
DMA通道传输配置
DMA传输过程如下图所示,先从数据源读入数据,并将其放到通道的FIFO缓冲区
,然后再从FIFO缓冲区取出写到目的端口。
DMA控制器有两套寄存器:
配置寄存器
:主要功能是对 DMA 通道传输进行预先设定和参数配置。
工作寄存器
:主要用于反映和记录 DMA 通道在数据传输过程中的实时工作状态。
数据块、帧和单元
通道参数寄存器(DMA_CSDP
)、数据帧数寄存器(DMA_CFN
)、数据单元数量寄存器(DMA_CEN
)。
传输类型与数据打包
DMA通道支持的数据传输类型如下表:
端口名称 | 传输类型 | DMA总线宽度 |
---|---|---|
SRAM | 8、16或32位 | 32位 |
DRAM | 8、16或32位 | 32位 |
EMIF | 8、16、32位或4×32位的突发方式 | 32位 |
外设 | 16位 | 16位 |
EHPI | 16位 | 16位 |
DMA 总线宽度为 32 位, 最多能支待两个 16 位
的或一个 32 位
的数据传输, 当所传输的数据单元长度小于总线宽度时, DMA 传输效率降低。比如8位长数据单元的传输, 4 次才传 32 位。 数据打包
:将 4 个8位数据单元打包成一个 32 位的数据包, 则只需传递一次, 这样就能够提高数据传输效率。使用通道参数寄存器(DMA_CSDP)
中的DST(SRC)PACK
字段设定数据打包功能。
数据源和目的地址
DMA通道源起始地址寄存器(DMA_CSSA_L/U
)低16bit+高16bit,DMA通道目的起始地址寄存器(DMA_CDSA_L/U
)低16bit+高16bit。
DMA通道进行数据传输时地址的修改方式由DMA通道控制寄存器(DMA_CCR
),中的DST(SRC)AMODE
字段控制。
单次传输与多次传输
由DMA通道控制寄存器(DMA_CCR
)中的AUTOINIT
、ENDPROG
和REPEAT
字段控制。
DMA通道数据传输的启动
- DMA_CCR 的通道使能字段(
EN
)置为1立即启动传输 - 20个DMA同步事件(6个外部中断、2个定时器中断、12个McBSP事件(每个串口4个)),由DMA_CCR 的同步字段
SYNC
来控制。
此外还可以通过DMA_CCR中的FS
字段,指定这些同步事件时与数据帧
传输同步还是与数据单元
传输同步。
通道中断与状态
DMA 通道在传输过程中产生的各种状态都会把通道状态寄存器(DMA_CSR)
中相应的标志位置 1。同时,在通道中断控制寄存器 DMA_CICR
的控制下, 这些状态都能触发 DMA 通道中断, 使 CPU 能及时得到 DMA 传输的状态。
寄存器说明
详见课本。
应用举例
假定需要将位于SARAM中从字节地址2 0000h开始的32个16位的数据搬到DARAM中从字节地址00C0h开始的数据缓冲区, 要求使用DMA通道1,并由CPU直接启动, 在传完以后给CPU一个中断。
详见课本。
片内存储器与DSP自举
DA(Dual-Access)RAM
双存取 RAM (DARAM) 的字节地址范围是 00 0000h~00 FFFFh
, 分为 8 块, 每块 8 KB。每个周期内可以对同一块 DARAM 访间两次
, 支持8 、16或 32 位的访问, 可以用作程序空间, 也可以用作数据空间。
注意: 8 块 DARAM 中, 字节地址 00 0000h 到 00 00BFh 被 CPU 的存储映射寄存器 MMR
占 用, 位于 DARAM0 的开始部分。 编程时要注意不能使用这段地址。
SA(Single-Access)RAM
单存取 RAM (SARAM) 的字节地址范围是 01 0000h~04 FFFFh
, 分为 32 块, 每块 8KB。 每个周期只能对同一块 SARAM 访问一次
, 支待 8、16 或 32 位的访问, 可用作程序空间, 也可以用作数据空间。
ROM与DSP自举
TMS320VC5509 DSP片内 ROM的字节地址范围是FF 8000h~FF FFFFh
, 只有 1 块, 32 KB。 这一区域是否用作片内 ROM 由 ST3_55
寄存器的 MP/MC
字段决定。 它的值在复位时
由 GPIO[3: 1]
的值决定。
应用举例
详见课本。
参考资料:
TMS320C55X DSP 原理及应用/代少升等编著.–2版.–北京:高等教育出版社,2013.7
TMS320VC5509A 数据表、产品信息和支持 | 德州仪器 TI.com.cn
TMS320C55X DSP 原理及应用/汪春梅,孙洪波编著. — 4版. —北京:电子工业出版社,2014.5
转载请标明出处。