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
转载请标明出处。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战攻防中针对JS路径的泄露和Webpack漏洞的初探

0x1前言 浅谈 这篇文章给师傅们分享下前段时间跟其他师傅学习和交流的Webpack相关漏洞,这个漏洞相对来说比较冷门,在web漏洞中不是那么的热度高,但是平常去挖掘和发现这个漏洞相对来说还是不难的。 后面要是有机会可以给师傅们分享下油猴的…

【人工智能基础08】卷积神经网络习题:卷积神经网络计算、图像填充、卷积的表达与设计

文章目录 1. 卷积核计算2. 卷积神经网络计算3. 卷积核关注的特征问题解答水平边缘检测与水平条纹检测45度条纹检测 4. 图像检测5. 卷积网络是特殊的全连接网络6. 输出矩阵的三种填充方法7. 卷积设计8.9 成像公式10. 卷积的计算次数11. 全连接层的计算 1. 卷积核计算 卷积操作过…

音乐网站设计与实现

文末获取源码和万字论文,制作不易,感谢点赞支持。 音乐网站设计与实现 摘 要 本音乐网站是针对目前音乐网站管理的实际需求,从实际工作出发,对过去的音乐网站管理系统存在的问题进行分析,结合计算机系统的结构、概念、…

【机器学习】在向量的流光中,揽数理星河为衣,以线性代数为钥,轻启机器学习黎明的瑰丽诗章

文章目录 线性代数入门:机器学习零基础小白指南前言一、向量:数据的基本单元1.1 什么是向量?1.1.1 举个例子: 1.2 向量的表示与维度1.2.1 向量的维度1.2.2 向量的表示方法 1.3 向量的基本运算1.3.1 向量加法1.3.2 向量的数乘1.3.3…

SpringBoot——分层解耦、IOC、依赖注入

三层架构 如下图&#xff0c;创建Dao的接口以及该接口的实现类&#xff0c;Service也一样 Dao // Dao接口 public interface UserDao {public List<String> findAll(); }// Dao接口的实现 public class UserDaoImpl implements UserDao {// 加载用户数据Overridepublic …

【数据结构——栈和队列】括号配对(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;编写一个程序利用栈判断左、右圆括号是否配对。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;栈对括号的处理。 栈对括号的处理 &…

企业级日志分析系统ELK之ELK概述

ELK 概述 ELK 介绍 什么是 ELK 早期IT架构中的系统和应用的日志分散在不同的主机和文件&#xff0c;如果应用出现问题&#xff0c;开发和运维人员想排 查原因&#xff0c;就要先找到相应的主机上的日志文件再进行查找和分析&#xff0c;所以非常不方便&#xff0c;而且还涉及…

pyqt+ubuntu18.04+designer+测试是否安装成功

引用&#xff1a; Ubuntu Linux安装PyQt5并配置Qt Designer 在Visual Studio Code中使用PyQt5开发python GUI应用程序 Linux环境下在Vscode中安装和设置PyQt5插件 其中&#xff0c; 测试是否安装成功 1、设置好之后在vscode编辑器的左侧文件目录栏空白位置右键&#xff0…

torchaudio.load 段错误

使用 torchaudio.load 时出现崩溃&#xff0c;如图 解决&#xff1a; 安装 ffmpeg ​conda install ffmpeg -c conda-forge 尝试但没解决问题的方法包括 重装 cuda&#xff0c;重装 pytorch&#xff0c;安装 PySoundFile、SoundFile、sox。

React 第十六节 useCallback 使用详解注意事项

useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook&#xff0c;返回一个函数的 memoized的值&#xff1b; 2、如果多次传入的依赖项不变&#xff0c;那么多次定义的时候&#xff0c;返回的值是相同的,防止频繁触发更新&#xff1b; 3、多应用在 父组件为函…

Chrome webdriver下载-避坑

WebDriver以原生的方式驱动浏览器&#xff0c;不需要调整环境变量。 一、window版 1.chrome和chromedriver下载地址&#xff1a; Chrome for Testing availability 我下载的是如下两个安装包&#xff0c;解压即可。 2.导包 pip install selenium然后用python代码引用即可…

PyQt事件机制练习

一、思维导图 二、代码 import sysfrom PyQt6.QtTextToSpeech import QTextToSpeech from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit from PyQt6 import uic from PyQt6.QtCore import Qt, QTimerEvent, QTimeclass MyWidget(QWidget):d…

【Rive】Android与Rive交互

1 Android与Rive交互的常用接口 1.1 RiveAnimationView参数 <app.rive.runtime.kotlin.RiveAnimationViewandroid:id"id/rive_view"android:layout_width"match_parent"android:layout_height"match_parent"android:adjustViewBounds"…

Maven、mybatis框架

一、Maven介绍 1.概念&#xff1a; Maven项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件。 2.为啥使用maven: 之前项目中需要引入大量的jar包。这些jar从网上下载&#xff0c;可能下载地址不同意。这些jar之间…

使用 Python 爬取某网站简历模板(bs4/lxml+协程)

使用 Python 爬取站长素材简历模板 简介 在本教程中&#xff0c;我们将学习如何使用 Python 来爬取站长素材网站上的简历模板。我们将使用requests和BeautifulSoup库来发送 HTTP 请求和解析 HTML 页面。本教程将分为两个部分&#xff1a;第一部分是使用BeautifulSoup的方法&am…

HCIA-Access V2.5_2_2网络通信基础_TCP/IP协议栈报文封装

TCP/IP协议栈的封装过程 用户从应用层发出数据先会交给传输层&#xff0c;传输层会添加TCP或者UDP头部&#xff0c;然后交给网络层&#xff0c;网络层会添加IP头部&#xff0c;然后交给数据链路层&#xff0c;数据链路层会添加以太网头部和以太网尾部&#xff0c;最后变成01这样…

数据湖治理最佳实践

如果没有最佳实践&#xff0c;存储可能会变得无法维护。自动化数据质量、生命周期和隐私功能可持续清理/移动数据湖中的数据。数据湖正成为企业从大数据中提取价值的一种日益可行的解决方案&#xff0c;对于早期采用者和新用户来说都是合理的下一步。在独立的逻辑区域中随时可用…

ssd202d-badblock-坏块检测

这边文章讲述的是坏快检测功能 思路&#xff1a; 1.第一次烧录固件会实现跳坏块&#xff0c;但是后续使用会导致坏块的产生&#xff1b; 于是我在uboot环境变量添加了两个变量来控制坏快 lb_badnum //坏块个数 lb_badoff //坏块所在位置 2.第一次开机会根据lb_badnum是否…

鸿蒙ArkTS如何实现数据可视化:饼状图/柱状图/折线图

鸿蒙数据可视化系列 在我们鸿蒙APP开发中&#xff0c;经常需要使用到一些图表的开发&#xff0c;本文主要介绍使用 McCharts 框架绘制柱状图的方法 配套指导视频地址&#xff1a;鸿蒙数据可视化系列-McCharts使用介绍_哔哩哔哩_bilibili 1. 第三方库介绍 1.1. McCharts Mc…

unity打包sdk热更新笔记

Unity3D项目Plugins目录组织 https://blog.csdn.net/linxinfa/article/details/102978005 IPreprocessBuild 继承提供打包前&#xff0c;打包后接口 BuildAssetBundles UnityWebRequest’s DownloadHandlerAssetBundle / LoadFromFile / LoadFromMemoryAsync 数据完整性校…