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)

CPU框图

如图所示, 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单元去执行。

I单元框图

程序流程(Program Flow Unit) P单元

如图所示, 程序流程单元( P)由程序地址产生电路寄存器组构成。主要功能产生所有(I)单元读取指令所需的24比特程序地址、控制指令读取顺序。

一般情况下,产生的都是(连续)顺序地址。在遇到指令要求读取非连续地址程序代码时,也可以根据来自(I)单元的立即数和(D)单元的寄存器值产生所需的地址,并将产生地址送到PAB。

P单元框图

在程序流程单元中,控制和影响程序地址的寄存器有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一组寄存器组构成。

A单元框图

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单元框图

移位器:(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)

TMS320VC5509的内部结构

时钟电路 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结构框图

EMIF 提供的地址总线根据器件的不同封装形式有所不同,如下表所示。

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位数据的异步访问,连接方法如下图所示。

EMIF连接16位的异步存储器芯片 EMIF连接的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与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信号为低。

非复用模式下主机与BSP连接图

复用模式,较为复杂略。

应用举例

DSP1 为主机,采用非复用模式于DSP2 通信,并由GPIO来选择要访问的 对象(HPIC或数据空间)。详见课本。

多通道缓冲串口 McBSP

TMS320VC5501/5502/5503/5507/5509/5510 DSP (McBSP (ti.com)

概述

详见课本。

基本结构

McBSP的结构框图
收发通道
时钟与帧同步
  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)

基本结构

DMA控制器的结构框图

它通过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 通道在数据传输过程中的实时工作状态。

数据块、帧和单元

通道参数寄存器(DMA_CSDP)、数据帧数寄存器(DMA_CFN)、数据单元数量寄存器(DMA_CEN)。

传输类型与数据打包

DMA通道支持的数据传输类型如下表:

端口名称传输类型DMA总线宽度
SRAM8、16或32位32位
DRAM8、16或32位32位
EMIF8、16、32位或4×32位的突发方式32位
外设16位16位
EHPI16位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
转载请标明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936231.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker 相关操作

1. 以下是一些常见的 Docker 命令&#xff1a; docker --version显示安装的 Docker 版本。 docker pull <image_name>从 Docker Hub 或其他镜像仓库下载镜像。 docker build -t <image_name> <path>从指定路径的 Dockerfile 构建 Docker 镜像。 docker i…

WinRAR 创建自解压文件 自定义标题 自定义图标 添加桌面快捷方式

一、创建自解压文件 自定义标题 自定义图标 1、利用Winrar压缩你要压缩的文件夹"【游戏运行必备组件】.rar",选择压缩格式是【rar格式】&#xff0c;选择创【建自解压格式…】 2、点击【高级】&#xff0c;选择【自解压文件选项】 3、自定义解压界面【窗口标题】、…

深度学习基础--将yolov5的backbone模块用于目标识别会出现怎么效果呢??

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 yolov5网络结构比较复杂&#xff0c;上次我们简要介绍了yolov5网络模块&#xff0c;并且复现了C3模块&#xff0c;深度学习基础–yolov5网络结构简介&a…

:-1: error: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set

QT想使用webenginewidgets&#xff0c;因此只能使用MSVC进行编译处理&#xff0c;出现报错:-1: error: msvc-version.conf loaded but QMAKE_MSC_VER isnt set 错误的原因是MSCV版本不匹配 D:\Qt\Qt5.12.9\5.12.9\msvc2017_64\mkspecs\common\msvc-version.conf 报的错如下图…

ElasticSearch - 使用 Composite Aggregation 实现桶的分页查询

文章目录 官方文档概述Composite Aggregation 概述示例&#xff1a;基本分页查询分页&#xff1a;获取下一页结果使用场景注意事项 官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-composite-aggregation.html#_pagin…

微积分复习笔记 Calculus Volume 2 - 3.7 Improper Integrals

3.7 Improper Integrals - Calculus Volume 2 | OpenStax

C语言程序设计P5-5【应用函数进行程序设计 | 第五节】—知识要点:变量的作用域和生存期

知识要点&#xff1a;变量的作用域和生存期 视频&#xff1a; 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 有一个一维数组&#xff0c;内放 10 个学生成绩&#xff0c;写一个函数&#xff0c;求出平均分、最高分和最低分。 任务要求用一个函数来完…

学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式

学习笔记&#xff1a;从ncsi/nc-si协议和代码了解网络协议的设计范式 参考文档&#xff1a; https://www.dmtf.org/standards/published_documents https://www.dmtf.org/dsp/DSP0222 https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.2.0.pdf参考代…

2024.12.10——攻防世界Web_php_include

知识点&#xff1a;代码审计 文件包含 伪协议 伪协议知识点补充&#xff1a; 在PHP中&#xff0c;伪协议&#xff08;Pseudo Protocols&#xff09;也被称为流包装器&#xff0c;这些伪协议以 php://开头&#xff0c;后面跟着一些参数&#xff0c;用于指定要执行的操作或需要…

Wireshark如何查看数据包时间间隔

1.如果数据包量不大&#xff0c;抓包本身也不大&#xff0c;建议从绝对时间判断&#xff0c;打开wireshark软件&#xff0c;并点开相应要分析的抓包文件。 进入到最上方菜单<视图>,在弹出菜单选择时间显示格式&#xff0c;再在右侧菜单中选择自捕获经过的秒数。 这样就可…

【ChatGPT】解锁AI思维链:如何让机器像人类一样思考?

在人工智能领域&#xff0c;我们一直在追求让机器像人类一样思考。然而&#xff0c;即使是最先进的AI&#xff0c;也常常被诟病缺乏“常识”&#xff0c;难以理解复杂问题&#xff0c;更不用说像人类一样进行逻辑推理和解决问题了。最经常的表现就是遇到不会的地方&#xff0c;…

MVC基础——市场管理系统(四)

文章目录 项目地址六、EF CORE6.1 配置ef core环境6.2 code first6.2.1 创建Database context1. 添加navigation property2. 添加MarketContext上下文七、Authentication7.1 添加Identity7.2 Run DB migration for Identity7.3 使用Identity7.3.1 设置认证中间件7.3.2 设置权限…

FinClip | 2024年11月产品大事记

FinClip 的使命是使您&#xff08;业务专家和开发人员&#xff09;能够通过小程序解决关键业务流程挑战&#xff0c;并完成数字化转型的相关操作。不妨让我们看看在11月的产品与市场发布亮点&#xff0c;看看是否有助于您实现目标。 产品方面的相关动向&#x1f447;&#x1f…

华为eNSP:VRRP

一、VRRP背景概述 在现代网络环境中&#xff0c;主机通常通过默认网关进行网络通信。当默认网关出现故障时&#xff0c;网络通信会中断&#xff0c;影响业务连续性和稳定性。为了提高网络的可靠性和冗余性&#xff0c;采用虚拟路由冗余协议&#xff08;VRRP&#xff09;是一种…

安卓主板_MTK联发科android主板方案

在当前智能设备的发展中&#xff0c;安卓主板的配置灵活性和性能优化显得尤为重要。安卓主板的联发科方案&#xff0c;在芯片上&#xff0c;搭载联发科MTK6761、MT8766、MT6765、MT6762、MT8768、MT8390、MTK8370以及MT8788等型号&#xff0c;均基于64位的四核或八核架构设计。…

【论文阅读】PRIS: Practical robust invertible network for image steganography

内容简介 论文标题&#xff1a;PRIS: Practical robust invertible network for image steganography 作者&#xff1a;Hang Yang, Yitian Xu∗, Xuhua Liu∗, Xiaodong Ma∗ 发表时间&#xff1a;2024年4月11日 Engineering Applications of Artificial Intelligence 关键…

Redis应用—1.在用户数据里的应用

大纲 1.社区电商的业务闭环 2.Redis缓存架构的典型生产问题 3.用户数据在读多写少场景下的缓存设计 4.热门用户数据的缓存自动延期机制 5.缓存惊群与穿透问题的解决方案 6.缓存和数据库双写不一致问题分析 7.基于分布式锁保证缓存和数据库双写一致性 8.缓存和数据库双写…

【Tomcat】理解tomcat与Socket

目录 1. Tomcat 1.1 Tomcat帮助启动http服务器。 1.2 tomcat理解&#xff1a; 2. 计算机网络最基本的流程 2.1 信息是怎么来的&#xff1f; 2.2 端口是干什么的&#xff1f; 3. 简单的Socket案例 服务端 客户端 启动&#xff1a; 3.2 在Tomcat发送信息&#xff0c;看…

Linux / Windows | ping IP + Port 测试

注&#xff1a;本文为 “Linux / Windows | ping IP Port 测试端口通畅” 相关文章合辑。 未整理去重。 windows 如何确认服务器上程序端口是否正常&#xff08;ping、tcping&#xff09; 三希已于 2023-05-22 18:08:06 修改 方式 1&#xff1a;ping 命令 ping 命令说明 p…

计算机网络之网络层超详细讲解

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; …