DSP原理及应用-TMS320DM6437 课件 第6、7章 TMS320DM6437流水线与中断、TMS320DM6437增强的直接存储器访问EDMA3_第1页
DSP原理及应用-TMS320DM6437 课件 第6、7章 TMS320DM6437流水线与中断、TMS320DM6437增强的直接存储器访问EDMA3_第2页
DSP原理及应用-TMS320DM6437 课件 第6、7章 TMS320DM6437流水线与中断、TMS320DM6437增强的直接存储器访问EDMA3_第3页
DSP原理及应用-TMS320DM6437 课件 第6、7章 TMS320DM6437流水线与中断、TMS320DM6437增强的直接存储器访问EDMA3_第4页
DSP原理及应用-TMS320DM6437 课件 第6、7章 TMS320DM6437流水线与中断、TMS320DM6437增强的直接存储器访问EDMA3_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DSP原理及应用第六章TMS320DM6437的流水线与中断第六章TMS320DM6437流水线与中断

6.1流水线6.2DSP的中断系统6.3实验及程序实例6.1流水线操作6.1.1流水线概述在冯诺依曼结构中,机器各部件在某些周期内进行操作,而在某些周期内是空闲的,导致机器各部分的利用率不高。

为了提高计算机各功能部件的工作效率和计算机的运行速度,这就需要流水线(pipeline)技术。流水线技术是指在程序执行时多条指令重叠进行操作的一种准并行处理技术。它是将一个重复的过程分解为若干个子过程,每个子过程有专门的功能部件来实现。6.1流水线操作流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度。把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行进行。6.1流水线操作对微处理器的每个部件来说,每隔1个时钟周期即可进入一条新指令,这样在同一时间内,就有多条指令交叠在不同部件内处理,使CPU运算速度提高。但这种流水线工作方式控制较为复杂,很难全速运行。

6.1流水线操作

TMS320DM6437的DSP具有独特的特点,它可以通过消除流水线交错,简化流水线的控制,并通过增加流水线消除程序提取、数据访问和乘法运算等传统结构的瓶颈,提高了单周期的吞吐量。并且利用流水线提供的灵活性可以简化编程,提高性能。6.1流水线操作6.1.2.流水线操作

流水线操作以CPU周期为单位,一个CPU周期是指特定的执行包在流水线特定阶段的时间。CPU周期的边界总是发生在时钟周期的边界,随着节拍代码流流经各个部件,各个部件根据指令代码进行不同处理。一个指令的取出和执行过程可以分为多个阶段。

TMS320DM6437的DSP指令集流中所有的指令都通过:取指(Fetch),译码(Decode),执行(Execute)3个阶段,各阶段的任务如下:6.1流水线操作(1)取指

取出一条指令送到指令寄存器;所有指令的取指阶段都有4个节拍,即PG、PS、PW、PR节拍,每个节拍的具体功能如下:PG程序地址产生:CPU上取指包的地址确定PS程序地址发送:取指包的地址送至内存PW程序访问等待:访问程序存储空间PR程序取指包接收:取指包送至CPU边界6.1流水线操作TMS320DM6437的DSP取指阶段:①每个节拍采用8个字的取指包。②四个节拍从左到右依次进行。③

所有的这8个字同时通过PG、PS、PW和PR进行取指。④PR取指包有四个执行包,PW和PS各包括两个执行包,PG包含有八个指令的一个执行包。图6-1

流水线取指级的四个节拍功能图6.1流水线操作(2)译码对指令操作码进行译码,读取操作数;所有指令译码阶段都包括2个节拍,即DP和DC节拍,每个节拍的具体功能如下:DP指令分配

:确定取指包的下一个执行包,并将其送至适当的功能单元准备译码。DC指令译码:指令在功能单元进行译码。(1)DP阶段,取指包被分为执行包。执行包包括一个指令或两到八个平行指令。在此阶段,执行包的指令被分配合适的功能单元。(2)DC阶段,源寄存器、目标寄存器和相关路径被解码,以执行功能单元的指令。6.1流水线操作(3)执行根据操作码的要求,完成指令规定的操作,并把运算结果写到指定的存储或缓冲单元中。流水线的执行阶段节拍的数量不同,这取决于指令的类型。流水线的执行部分被分为5个节拍。大多数DSP指令是单周期的,所以它们只有一个执行节拍(E1)。只有少数指令需要多个执行节拍。不同类型的指令需要不同数量的这些节拍来完成执行。流水线执行级的5个节拍如下:6.1流水线操作1>执行节拍E1①测试指定执行条件及读取操作数,对所有的指令适用②对于读取和存储指令,假定指令的条件被评估为真时,地址产生,其修正值写入寄存器,若指令的条件为假,则指令在E1后不写入任何结果或进行任何流水线操作③对于转移指令,程序转移目的地址取指包处于PG节拍④对于单周期指令,结果写入寄存器6.1流水线操作1>执行节拍E1⑤对于双精度(DP)比较指令、ADDDP和MPYDP等指令,读取源操作数的低32位⑥对于其他指令读取操作数⑦对于双周期双精度(DP)指令,结果的低32位写入寄存器6.1流水线操作2>执行节拍E2①读取指令的地址送至内存,存储指令的地址和数据送至内存,对结果进行饱和处理的单周期指令,若结果饱和,置SRC的SAT位②

对于单个16×16乘法指令、乘法单元和非乘法操作指令,结果将写入寄存器文件。TMS320C64x的M单元的非乘法操作指令,对于DP比较指令和ADDDP/SUBDP指令,读取源操作数的高32位③

对于MPYDP指令,读取源操作数1的低32位和源操作数2的高32位,对于MPYI和MPYID指令,读取源操作数6.1流水线操作3>执行节拍E3①进行数据存储空间访问②

对结果进行饱和处理的乘指令在结果饱和时置SAT位③对于MPYDP指令读取源操作数1的高32位和源操作数2的低32位④

对于MPYI和MPYID指令,读取源操作数6.1流水线操作4>执行节拍E4①对于读取指令,把所读的数据送至CPU边界;②对于乘法扩展,结果将被写入寄存器;③

对于MPYI和MPYID指令,读取源操作数;④

对于MPYDP指令,读取源操作数的高32位;⑤

对于4周期指令,结果写人寄存器;⑥

对于INTDP指令,结果的低32位写入寄存器。6.1流水线操作5>执行节拍E5①对于读取指令,把所读的数据写入寄存器②对于INTDP指令,结果写入寄存器。TMS320DM6437中所有指令均按照以上3级流水线运行,具体流水线结构如下图所示:图6-2

TMS320DM64373级流水线6.1流水线操作TMS320DM6437流水线流程图如下图所示,连续的各个取值包都包含8条并行指令,各个指令包以每个时钟一个节拍的方式通过流水线。图6-3TMS320DM6437流水线流程图6.1流水线操作流水线的实现步骤如下所示:①从存储器中取出一条指令。②判断该指令是否支持并行执行,如果支持,则执行步骤①,不支持执行步骤③。③对指令包中的每一条指令进行解析,解析过程中采用运用缓存机制提高指令的解析效率。④判断延时队列中是否有指令,如果有指令则执行步骤⑤,没有则执行步骤⑥。6.1流水线操作⑤对延时队列中每一条指令进行如下操作:将指令的延时间隙减1;此时,如果延时间隙为0,则执行指令在En节拍的操作。⑥判断指令包中是否有未执行的指令,如果有,则执行操作⑦,没有则结束。⑦对执行包中每一条指令进行如下操作:如果指令有延时间隙,则执行步骤⑥,如果没有执行延时,执行指令E1节拍的操作并跳动步骤⑥。⑧执行指令E1节拍的操作,指令的延时间隙减1,将指令加入到延时队列中,并跳到步骤⑥。6.1流水线操作6.13.各类指令的流水线执行TMS320C64x+系列的DSP的流水线操作执行指令分为6种:①单周期指令(single-cycleinstruction)

②双周期或多周期(two-cycleormultiplyinstruction)

存储指令(storeinstruction)④扩展乘法指令(extendedmultiplyinstructions)⑤加载指令(loadinstructions)⑥跳转指令(branchinstructions)6.1流水线操作下表是六种类型指令的每个执行阶段中发生的操作的映射。表6-2

六种类型指令的每个执行阶段发生的操作表6.1流水线操作

当要将同一指令读入和存储到相同的内存位置时,有如下规则(i为周期):(1)在存储之前执行读入指令,则以前的值被读入,新的值被存储。

iLDWi+1STW(2)读入指令前执行存储指令,则新的值被存储和读入。

iSTWi+1LDW6.1流水线操作(3)当读入指令和存储指令同时执行,以前的值首先被读入,新的值被存储,但是都在同一节拍。

iSTWi+1LDW6.1流水线操作CPU运行时,每次取八条指令组成一个指令包,取指包一定在地址的256位边界定位。每条指令的最后一位是并行标志位P,P标志位决定本条指令是否与取指包中的下一条指令并行执行。CPU从低地址到高地址依次判读P标志位:如果为1,则该指令将与下一条指令并行执行;如果为0,则下一条指令要在本指令执行完以后才能执行。6.1流水线操作如果流水线中的指令相互独立,则可以充分发挥流水线的性能。但在实际中,指令间可能会相互依赖,这会降低流水线的性能。相邻或相近的两条指令因存在某种关联,后一条指令不能在原指定的时钟周期开始执行,造成流水线中出现“阻塞”的情况。(1)在一个取指包中有多个执行包的流水线操作一个FP包含8条指令,可分成1~8个EP,每个EP是并行执行的指令,每条指令在1个独立的功能单元内执行。当一个取值包包含多个执行包时,这时将出现流水线阻塞。6.1流水线操作图6-4流水线阻塞图取指包在指令周期1~4时,通过取指级的4个节拍,同时1~4的每个指令周期都有1个新取指包进入PG节拍;在第5个指令周期的DP节拍,CPU扫描FPn的P位,检测出有3个执行包EPk~EPk+2,迫使流水线阻塞,允许EPk+1和EPk+2在第6和7个指令周期进入DP节拍,一旦EPk+2进入DC节拍,流水线阻塞也被释放;6.1流水线操作FPn+1~FPn+4在第6和7个指令周期被阻塞,FPn+5在第6和7个指令周期也被阻塞,直到第8个指令周期后才进入PG节拍:第8个指令周期后流水线将连续操作,直至又有多个执行包进入DP节拍或有中断发生。图6-4

流水线阻塞图6.1流水线操作(2)多周期NOP指令对流水线运行的影响单周期NOP指令与其它代码在一个执行包中。LD、ADD、和MPY指令的结果在适当指令周期是可用的,NOP指令对执行包无影响。图6-5NOP与其它代码在一个执行包6.1流水线操作用一个多周期NOP5代替单周期NOP指令。NOP5将产生除它的执行包内部指令操作之外的空操作。在NOP5指令周期完成之前,任何其它指令不能使用LD、ADD、和MPY指令的结果。图6-6

用多周期NOP指令代替单周期NOP指令6.1流水线操作跳转指令可以影响多周期NOP指令的执行,当一个跳转指令延迟间隙结束时,多周期NOP指令不管是否结束,这时跳转都将废弃多周期NOP指令。图6-7

跳转指令对多周期NOP指令的影响6.1流水线操作6.1.4.存储器对流水线性能的影响

TMS320DM6437片内为哈佛结构,即存储器分为程序指令存储空间和数据存储空间,是一种并行体系结构。与两个存储器相对应的是体系中设置了程序总线和数据总线两条总线,从而使数据的吞吐率提高了数倍。

6.1流水线操作

为了进一步提高运行速度和灵活性进行改进:(1)允许数据存放在程序存储器中,并被算术运算指令直接使用,增强了芯片的灵活性;(2)将指令暂存在高速缓冲器中,当执行此指令时,不需要再从存储器中读取指令,节省了取指令周期。由于数据读入和程序取指,内存访问被分为多个阶段,这保证了TMS320C64x系列的DSP能进行内存访问。6.1流水线操作

存储器对流水线性能的影响主要为存储器阻塞。对于程序存储器,存储器阻塞发生在PW节拍。对于数据存储器则发生在E3节拍。存储器阻塞会使处于该流水线的所有节拍延长1个指令周期以上,从而使执行增加额外的指令周期。图6-8

存储器阻塞图6.1流水线操作6.2DSP的中断系统1.中断的基础知识中断类型和优先级中断是由硬件或软件驱动的信号,为使CPU具有对外界异步事件的处理能力而设置的。中断信号使DSP暂停正在执行的程序,接受并响应中断请求,进入中断服务程序。中断过程包括保存当前进程的上下文、完成中断任务、恢复寄存器和进程上下文、恢复原始进程。中断一旦被正确启用,CPU将开始处理中断并将程序流重新定向到中断服务程序。TMS320DM6437的CPU有3种类型中断,即RESET(复位)、不可屏蔽中断(NMI)和可屏蔽中断(INT4~INT15)。3种中断的优先级别不同,复位具有最高优先级。优先级别见表6-4。表6-4中断优先级表6.2DSP的中断系统(1)复位RESET

具有最高级别中断,复位中断时正在执行的指令中止,所有的寄存器返回到默认状态。复位是低电平有效信号,必须保证低电平10个时钟周期,然后再变高才能正确重新初始化CPU。复位中断服务的取指包必须位于特定设备的特定地址。复位中断不受分支指令的影响。6.2DSP的中断系统(2)不可屏蔽中断(NMI)

不可屏蔽中断优先级为2,它通常用来向CPU发出严重硬件问题的警报。出现在NMI线上的请求,不受中断标志位IF的影响,在当前指令执行完以后,CPU立即无条件响应。为实现此中断,在中断使能寄存器中的不可屏蔽中断使能位(NMIE)必须置1。NMIE为0时,所有可屏蔽中断(INT4~INT15)均都被禁止。6.2DSP的中断系统(3)可屏蔽中断(INT4~INT15)

可被CPU通过指令限制某些设备发出中断请求的中断。有12个可屏蔽中断,它们被链接到芯片外部或片内外设,也可由软件控制或者不用。I/O设备发出的所有中断都可以产生可屏蔽中断,受标志位IF的影响,根据中断循环标志的设置来判断CPU是否响应中断请求。中断发生时将中断标志寄存器(IFR)的相应位置为1。6.2DSP的中断系统中断服务表(IST)IST是包含中断服务代码的取指包的一个地址表。当CPU开始处理一个中断服务时,它要参照IST进行。IST包含16个连续取指包,每个中断服务取指包都含8条指令。图6-9给出了IST的地址和内容。图6-9

中断服务表6.2DSP的中断系统中断服务取指包(ISFP)当中断服务程序很小时,可以把它放在一个单独的取指包内,为了中断结束后能够返回主程序,FP中包含一条跳转到中断返回指针所指向地址的指令。接着是一条NOP5指令,它使跳转目标能够有效地进入流水线的执行级。若无这条指令,CPU将会在跳转前执行下一个ISFP中的5个执行包。

图6-10单独的中断取指包6.2DSP的中断系统中断服务表指针寄存器(ISTP)ISTP用于确定中断服务程序在中断服务表中的地址。ISTP中的ISTB确定IST的地址的基值,HPEINT确定当前响应的中断,并给出这一特定中断取指包在IST中的位置。6.2DSP的中断系统图6-12

ISTP格式描述表6-5ISTP字段描述6.2DSP的中断系统2.中断控制寄存器TMS320DM6437芯片控制寄存器组中有下列8个寄存器涉及中断控制寄存器:(1)控制状态寄存器(CSR)

控制全局使能或禁止中断。该寄存器用于标识一些状态,其中包括全局中断使能、高速缓冲存储器的控制位和其它各种控制位和状态位。在控制状态寄存器中包含控制中断的两个域,即GIE和PGIE。全局中断使能(GIE)允许通过控制单个位的值来使能或禁止所有的可屏蔽中断。6.2DSP的中断系统图6-14CSR格式全局禁用可屏蔽中断的代码:MVCCSR,B0;AND-2,B0,B0;MVCB0,CSR;全局使能可屏蔽中断的代码:MVCCSR,B0;OR1,B0,B0;MVCB0,CSR;表6-6CSR字段描述(2)中断使能寄存器(IER)

该寄存器用于标识某个中断是使能还是禁止。格式图6-15所示。图6-15IER格式使能一个中断(INT9)的代码:MVK200h,B1;MVCIER,B0;ORB1,B0,B0;MVCB0,IER;禁用一个中断(INT9)的代码:MVKFDFFh,B1;MVCIER,B0;ANDB1,B0,B0;MVCB0,IER;6.2DSP的中断系统该寄存器用于显示中断标志。给出有中断请求但尚未得到服务的中断,存在于等待中断的状态中,包括INT4-INT15和不可屏蔽中断的状态。图6-16

IFR格式(3)中断标志寄存器(IFR)、中断设置寄存器(ISR)、中断清除寄存器(ICR)设置一个中断(INT6)并读标志寄存器的代码:MVK40h,B3MVCB3,ISRNOPMVCIFR,B4清除一个中断(INT6)并读标志寄存器的代码:MVK40h,B3MVCB3,ICRNOP

MVCIFR,B46.2DSP的中断系统(4)中断设置寄存器(ISR)

人工设置IFR中的标志位,使用它手动清除IFR中的可屏蔽中断(INT15-INT4)。该寄存器用于标识是否允许软件控制来设置中断。图6-17

ISR格式6.2DSP的中断系统(5)中断清零寄存器(ICR)

人工清除IFR中的标志位,使用它手动完成中断处理。该寄存器用于标识是否允许软件来清除中断。ICR格式如下图所示。图6-18ICR格式另外,ISR和ICR可用程序设置和清除IFR中的可屏蔽中断位,设置和清除操作不影响NMI和复位。6.2DSP的中断系统(6)不可屏蔽中断返回指针寄存器(NRP)NRP保存从不可屏蔽中断返回时的指针,该指针引导CPU返回到原来程序执行的正确位置。当NMI完成服务时,为返回到被中断的原程序中,在中断服务程序末尾必须安排一条跳转到NRP指令(BNRP)。从NMI返回的代码:BNRP;NOP5;延迟间隙6.2DSP的中断系统(7)可屏蔽中断返回指针寄存器(IRP)IRP保存从可屏蔽中断返回时的指针,该指针引导CPU返回到原来程序执行的正确位置。当可屏蔽中断完成服务时,为返回到被中断的原程序中,在中断服务程序末尾必须安排一条跳转到NRP指令。从一个可屏蔽中断返回的代码:BIRP;NOP5;延迟间隙6.2DSP的中断系统(8)中断—复位状态复位后,控制寄存器及控制位的中值如下:AMR,ISR,ICR,IFR及ISTP=0h;IER=1h;IRP和NRP未定义;CSR的位15~位0=100h(小终端模式)=000h(大终端模式)表6-7中断控制寄存器描述6.2DSP的中断系统3.中断响应过程根据TMS320DM6437的中断机制,可以把中断分为三部分:中断请求、中断检查和中断响应。TMS320DM6437支持处理多个中断请求:(1)当有一个中断正在执行的时候,如果产生了一个优先级更高的中断请求,这时处理器便会去响应优先级比较高的中断请求;(2)如果中断请求的优先级比较低,则该中断请求被挂起,直到高优先级的中断执行完毕后才执行。6.2DSP的中断系统1>中断请求若有多个中断源,CPU就需要判断其优先级:先响应优先级别高的中断请求。6.2DSP的中断系统2>中断响应CPU要响应中断需要满足以下条件:①无同级或高级中断正在服务;②当前指令周期结束;③

若现行指令是RETI、RET或者访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。响应过程:①

置位中断优先级有效触发器,关闭同级和低级中断;②调用入口地址,断电入栈;③

进入中断服务程序。6.2DSP的中断系统3>中断处理中断处理就是在确认中断后,执行中断服务程序,从中断入口地址开始执行,直到返回指令为止。一般包括:①

保护现场;②

执行中断服务程序;③恢复现场。用户根据要完成的任务编写中断服务程序,要注意将主程序中的需要保护的的寄存器内的内容进行保护。保护和恢复现场可以通过堆栈操作或切换寄存器组完成。6.2DSP的中断系统4>中断返回

中断返回是指中断服务完成后,CPU返回到原程序的断点,继续执行原来的程序,通过中断执行指令RETI来实现。6.2DSP的中断系统4.中断嵌套中断嵌套是指中断系统正在执行一个中断服务时,有以下两种情况:①事先设置了中断优先级寄存器IP②没有设置IP

6.2DSP的中断系统6.3实验及程序实例6.3.1

IIR数字滤波器的MATLAB设计6.3.2

基于ICETEK-DM6437-A的IIR数字滤波器的DSP实现流水线是增强DSP性能的重技术。本章首先介绍TMS320DM6437流水线的线作用、级数、取指包、执行包、流水线执行级类型和流水线运行时应该注意的问题等相关内容,其中重点是TMS320DM6437的流水线作用、级数、时序和流水线操作过程中存在的问题。

本章小结DSP原理及应用

第七章:增强型内存直接访问控制器EDMA3第七章:增强型内存直接访问控制器EDMA37.1概述7.2EDMA3控制器7.3EDMA3数据传输7.4参数RAM(PaRAM)7.5EDMA3的中断7.6快速DMA(QDMA)7.7实验及程序实例7.1EDMA3概述

信号处理中经常涉及大量的数据传输。利用DSP的指令可以完成数据的搬移,但这会占用大量的CPU资源。为降低CPU的负荷,通常都在DSP片内设计多通道的直接存储器访问(DMA)控制器。DMA控制器是独立于CPU的设备,一旦正确初始化后,就能独立于CPU工作,在CPU操作的同时实现片内存储器、片内外设以及外围器件间的数据传输。DMA传送时,需要使用系统的地址和数据总线以及一些控制信号线,但这些总线一般都是由CPU控制的,因此为了能够实现DMA需要由硬件自动实现总线的控制权转移,为此一般的DMA控制器需要具有以下功能:

(1)可以向CPU发出HOLD号,请求CPU让出总线,即CPU在这些总线上的引线

处于高阻状态;(2)CPU让出总线后,可以接管对总线的控制;(3)可以在总线上进行寻址和读写控制;(4)可以决定传送的数据个数;(5)可以启动数据的传送,可以判断数据传送是否结束并发出结束信号;(6)可以在结束传送后自动交出总线控制权,恢复CPU正常工作状态。

7.1EDMA3概述

为便于数据传输,在基本操作的基础上,DSP芯片的DMA控制器将数据进行了分块(block)管理,每一块又可以分为若干帧(frame),每帧由一定长度的数据单元(element)组成。每个DMA通道的数据块和数据帧大小可以由用户自行设定。基于这些管理单元,DMA控制器提供了多种传输方式,包括元素传输、帧传输和块传输等。三种传输方式的最主要区别在于传输数据量的大小:(1)元素传输只对一个数据进行读/写操作;(2)帧传输将搬移一帧内的所有数据;(3)块传输搬移块内所有帧的数据。7.1EDMA3概述以下是DMA传输中的常用术语:●读传输:DMA控制器从源地址读取一个数据单元。●写传输:DMA控制器将读出的数据单元写入目的地址。●单元传输:包括数据的读传输与写什专输的数据传输。●数据传送单元:单个数据单元从源地址到目的地址传输,如果需要每个数据单元可以由同步事件传输。●帧:一组数据单元组成一个帧,一帧中的单元可以是间隔存放也可以连续存放的。帧传输可以同步传输,也可以异步传输。●块传输:完成若干帧的传输块的传输俞,每块内的帧数可以通过编程来设置。●阵列:一组连续的数据单元组成一个阵列,在一个阵列中单元的位置连续存放且不能改变。阵列多在二维数据传输中使用。块:多个阵列或者多个帧组成一个块。●一维传输:一组帧组成一个块。每个块中的帧个数范围是1~65536。●二维传输:一组阵列组成一个二维块,其中第一维是一个阵列中连续单元,第二维DMA控制器的工作方式有三种:方式1:存储器与外部设备之间进行数据交互传输;方式2:存储器与存储器之间的数据交互传输;方式3:外部设备与外部设备之间的数据交互传输。7.2EDMA3控制器EDMA3在TMS320DM6437DSP结构中的位置7.2EDMA3控制器7.2.1EDMA3控制器的组成7.2.1.1.EDMA3控制器组成EDMA3控制器包含两个主要模块:EDMA3通道控制器(EDMA3_m_CC0)和EDMA3传输控制器(EDMA3_m_TCn)。7.2EDMA3控制器7.2.1EDMA3控制器的组成7.2.1.2.EDMA3通道控制器(EDMA3CC)7.2EDMA3控制器7.2.1EDMA3控制器的组成7.2.1.2.EDMA3通道控制器(EDMA3CC),主要模块如下:•DMA/QDMA通道逻辑:这个模块包括捕捉外部系统或外设事件用于初始化事件触发传输的逻辑单元,也包含允许配置DMA/QDMA通道(队列映射,参数RAM条目映射)的寄存器。.还有为不同触发类型(手动,外部事件,链接和自动触发)使能/禁止事件和检测事件状态寄存器。•参数RAM集(PaRAM):为通道和重载参数集提供参数集条目.需要将期望的通道和连接参数集的传输内容写入到参数RAM集中。•事件队列:它们构成事件监测逻辑和传输请求提交逻辑之间的接口。•传输请求提交逻辑:这个逻辑基于已提交到事件队列的触发事件以及提交相关事件队列的给传输控制器的传输请求来处理参数RAM集。•结束检测:结束检测模块检测EDMA3传输控制或者从设备传输结束.传输结束可以使用链接触发一个新传输或者声明一个中断.这个逻辑包括使能/禁止中断(发送给CPU的)中断处理寄存器,中断标志或中断清除寄存器。另外,还有:•区域寄存器:允许DMA资源(DMA通道和中断)被分配到唯一的区域,该区域被唯一EDMA编程者(适用于异/多核模型)或唯一的任务/进程(适用于单核设备模型)所有拥有。•调试寄存器:调试寄存器提供读取队列状态,通道控制器状态(带有CC的逻辑单元被激活)和丢失事件状态的寄存器以使得调试可视化.7.2EDMA3控制器7.2.1EDMA3控制器的组成7.2.1.3.EDMA3传输控制器(EDMA3TC)7.2EDMA3控制器7.2.1EDMA3控制器的组成7.2.1.3.EDMA3传输控制器(EDMA3TC),主要模块如下:•DMA程序寄存器集:DMA程序寄存器集存储从EDMA3通道控制器(EDMA3CC)接收到的传输请求。•DMA源激活寄存器集:DMA源激活寄存器集存储运行态时读控制器中当前DMA传输请求的内容读控制器:读控制器发送读命令到源地址。•目的FIFO寄存器集:目的FIFO寄存器存储运行态或挂起态中写控制器的当前DMA传输请求的内容。•写控制器:写控制发送写命令/写数据到目的地址。•数据FIFO:数据FIFO存储中间态数据.存储在数据FIFO中的源外设读数据和后续通过写控制器写入目的外设/从端的数据•完成接口:当一个传输完成时,完成接口发送完成代码到EDMA3CC,完成接口对生成中断和链接事件都有用。7.2EDMA3控制器7.2.1EDMA3控制器的组成7.2.1.4.EDMA3控制器的触发方式(1)DMA通道有3种触发方式事件触发:CPU必须先通过EER使能该事件,当一个触发事件锁存到ER寄存器就会启动相应通道的EDMA3手动触发:CPU可以通过写ESR启动一个EDMA3通道。链接触发:由一个EDMA3通道的传输结束来触启动另一个EDMA3。(2)QDMA通道有2种触发方式:自动触发:PaRAM里设置为触发字的域被写入值后,触发传输(通过QCHMAPn寄存器设置PaRAM的哪个域作为触发域)。链接触发:由一个EDMA3通道的结束来触发,启动另一个EDMA3。7.2EDMA3控制器7.2.2EDMA3通道控制器(EDMA3_m_CC0)的工作流程依据事件寄存器配置的触发方式,在事件触发之后,优先级编码器对两个以上的触发事件进行优先级编码,优先级编码器仲裁后将最高优先级事件传送给队列,经过队列之后这个事件由通道映射提取参数RAM中的参数集,参数集里包含了EDMA3要传输的数据的各种数据,例如,数据块的大小、数据的源地址和目标地址等。这些参数集传输给EDMA3传输控制器。7.2EDMA3控制器7.2.3EDMA3同步事件表7-1和表7-2是EDMA0和EDMA1的各种类型的同步事件,这些事件产生可以触发EDMA3进行数据传输,EDMA0和EDMA1各有32个同步事件。通道控制器EDMA0的同步事件7.2EDMA3控制器7.2.3EDMA3同步事件通道控制器EDMA1的同步事件7.2EDMA3控制器7.2.4EDMA3的事件与通道的映射关系7.2.4.1.事件与通道的映射关系每个EMDA3控制器支32个同步事件,32个事每件与32个通道之间的映射关系是固定的一一对应关系。事件与通道的映射关系7.2EDMA3控制器7.2.4EDMA3的事件与通道的映射关系7.2.4.2.DMA通道与PaRAM的映射关系event与DMAChannel一一对应,

DMA通道与PaRAM的映射也是一一对应的。DMA通道与PaRAM的映射关系7.2EDMA3控制器7.2.4EDMA3的事件与通道的映射关系7.2.4.3.QDMA通道与PaRAM的映射关系QDMA通道不支持事件出发,其触发方式有两种,即自动触发和链接触发。例如,将QDMA通道2映射到PaRAMSet3,这时,以SRC作为触发字时,QCHMAP2[PAENTRY]=000000011QCHMAP2[TRWORD]=0017.2EDMA3控制器7.2.5事件队列事件队列是EMDA3CC的事件检测逻辑和EDMA3CC的传输请求提交之间的接口。TMS320DM6437有两个传输控制器,每个传输控制器有32个DMA通道和8个QDMA通道,当配置多个通道进行数据传输时,如果多个通道同时被触发,而传输控制器是有限的,此时就不能完成数据传输。解决的办法就是依靠事件队列,通过对事件的仲裁设定优先级,依据优先级高低设置事件队列,事件队列依据优先级向传输控制器提交传输请求。事件队列与传输控制器7.3EDMA3数据传输7.3.1.EDMA3传输数据块定义每一个EDMA3的传输数据都可看做是一个三维数据,这个数据的大小由ACNT、BCNT和CCNT来描述。下图是一个数据块内ACNT、BCNT和CCNT的定义。数据块内ACNT、BCNT和CCNT的定义7.3EDMA3数据传输7.3.2A-同步传输A-同步传输每次传输一个数据单元(array),当一个数据单元传输完毕后根据B索引跳转到下一个进行传输,直到一行传输完毕后根据C索引跳转到下一行。B索引和C索引满足:SRCBIDX=DSTBIDX=ACNTSRCCIDX=DSTCIDX=ACNT同步事件数=BCNT×CCNT7.3EDMA3数据传输7.3.3AB-同步传输在AB类同步传输中,每个EDMA3同步事件初始化二维数组或一个帧的传输。换句话说,每个事件或传输请求包携带BCNT个数列ACNT个字节的帧的所有信息。需要CCNT个事件服务以完成一个参数RAM集。

7.4参数RAM(PaRAM)7.4.1PaRAM集EDMA3控制器是基于RAM的结构,EDMA3CC中为DMA或者QDMA通道编程的传输内容(源/目的地址,计数,索引等)的RAM参数表被称为PaRAM。PaRAM表被分解成多个参数RAM集。每个参数集包含8个4字节的参数RAM集条目,这些条目包含典型的DMA传输参数,比如说源地址,目的地址,传输数量,索引,选项等。

7.4参数RAM(PaRAM)7.4.2参数RAM条目EDMA3通道控制器(EDMA3CC)的参数RAM条目。

7.4参数RAM(PaRAM)7.4.3传输示例例1块传输示例使用EDMA3做最基本的传输是块传输。在设备操作的时候,经常需要从一个地方到另一个地方或者片内和片外之间内存传输一个块数据。在这个例子中,从外部内存到L2SRAM复制一段数据。4000,0000h地址开始的一个256K字节的数据需要传输到内部地址11800000h(L2),

7.4参数RAM(PaRAM)7.4.3传输示例传输源地址被设置为外部内存所传数据块的起始地址,目的地址被设置位L2中数据块的起始地址。如数据块小于64K字节,那么参数RAM配置按照图7-15,同步类型设置为A类同步传输及索引清零。如果传输数据量大于64K字节,同步类型需要设置成AB类传输,BCNT和B-索引需要被设置成适当值。OPT中STATIC位设置成先前的连接。(a)EDMA参数(b)通的选择项参数(OPT)内容7.5EDMA3的中断EDMA3中断源可以分为两类:•传输完成中断源•错误中断源7.5EDMA3的中断EDMA3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论