TMS320C55x DSP芯片结构和CPU外围电路

第2章 DSP芯片结构和CPU外围电路

文章目录

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控制器。
异步接口
  1. 接口方法(见spru670a 2-2)

支持16位和8位数据的异步访问,连接方法如下图所示。

其中, 各个引脚信号的功能如下。

  • D[15:0]:16 位的数据总线;

  • A[13:0] :14 位的地址总线;

  • BE[1: 0]: 低电平有效的字节选择信号, 用于指定要访问的字节位置;

  • CE: 低电平有效的外部存储空间片选信号, 用于指定要访问的外部空间;

  • ARDY: 外部存储器件就绪指示, 使 EMIF 可以和较慢的器件相连;

  • AOE: 低电平有效的外部存储器件输出使能信号;

  • AWE: 低电平有效的外部存储器件写使能信号;

  • ARE: 低电平有效的外部存储器件读使能信号。

  1. 异步接口时序

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延长选通周期的情况。

  1. 寄存器配置

介绍了全局控制寄存器(EGCR),全局复位寄存器(EMIRST),总线错误状态寄存器(EMIBE),片选控制寄存器CEx_1,2,3,详见课本。

同步动态RAM
  1. 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和CE1CE2和CE3。 图中选择了 CE0和CE1, 但 SDRAM 只有一个片选CS, 所以用CE0与之相连,CE1悬空。

  1. 寄存器配置

与 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)

概述

详见课本。

基本结构

收发通道
时钟与帧同步
  1. 采样速率发生器SRG的输入参考时钟

  2. 采样速率发生器的输出时钟和帧同步

  3. 时钟信号的方向和极性

  4. 帧同步信号的方向和极性

  5. 同步

多通道选择
串口事件

工作模式

多通道缓冲模式SPI模式A_bis模式数字回环模式GPIO模式省电模式

收发格式与参数设置

详见课本。

异常处理

  1. 接收过速
  2. 接收帧同步错误
  3. 发送数据重写
  4. 发送寄存器空
  5. 发送帧同步错误

McBSP寄存器说明

  1. 收发通道寄存器

  2. 时钟和帧同步部分的寄存器------串口控制寄存器(SPCR1|2)、引脚控制寄存器(PCR)、采样速率发生寄存器(SRGR1|2)、收发控制寄存器(R(X)CR1|2)

  3. 多通道选择部分的寄存器------多通道控制寄存器(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)中的AUTOINITENDPROGREPEAT字段控制。

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

转载请标明出处。

相关推荐
东方芷兰3 小时前
伯克利 CS61A 课堂笔记 11 —— Mutability
笔记·python
快下雨了L8 小时前
C++面试笔记(持续更新...)
笔记
柃歌9 小时前
【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists学习笔记
java·数据结构·笔记·学习·算法
JANGHIGH9 小时前
c++ std::list使用笔记
c++·笔记·list
柃歌9 小时前
【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记
java·数据结构·笔记·学习·算法
大溪地C10 小时前
Git 合并冲突解决与状态分析笔记
笔记·git
BUG 劝退师11 小时前
C语言预处理学习笔记
c语言·笔记·学习
花王江不语13 小时前
设计模式学习笔记
笔记·学习·设计模式
前端熊猫13 小时前
CSS Grid 布局学习笔记
css·笔记·学习·grid
肥肠可耐的西西公主14 小时前
前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传
前端·笔记·学习