2.3.2 内部数据存储器
1.数据存储器控制器
数据存储器控制器在TMS320C62x/C67x DSP结构中。具有如下功能 :
● 对CPU和DMA控制器访问内部数据存储器的申请进行仲裁;
● 对CPU访问EMIF的申请进行处理;
● 作为CPU通过外设总线控制器访问内部集成外设的桥梁;
● CPU请求数据读出并写入到内部数据存储器,或者通过外设总线控制器的内部集成外设及EMIF写入内部数据存储器;
● DMA控制器请求对内部数据存储器进行读/写操作;
● CPU不能通过数据存储控制器访问内部程序存储器。
CPU通过2条地址通路发送请求到数据存储控制器。输入的数据将通过CPU数据传输通路。读取数据通过CPU数据读取总线。CPU数据请求基于地址被映射到内部数据存储器,内部集成外设空间和外部存储器接口。
2.内部数据存储器
(1)TMS320C6201/C6204/C6205内部数据存储器的结构
内部64KB的数据RAM分为2块,每块各32KB,每块由4个16位宽的Bank组成,占据的地址为8000 0000h~8000 7FFFh和8000 8000h~8000 FFFFh,CPU和DMA能够同时访问处于不同块的数据而不产生冲突。CPU的2个数据端口A和B能够在块内同时访问相邻的16位数据元素而不发生冲突。因此在每个周期内最大为3个32位的RAM访问,分别为CPU数据端口A和B的访问,以及在不同块中的DMA访问。内部数据存储器组成参见表2-14,同其他块相连的数据存储器控制器框图如图2-21所示。
表2-14 TMS320C6201/C6204/C6205内部数据存储器组成
图2-21 TMS320C6201/C6204/C6205同其他块相连的数据存储器控制器框图
(2)TMS320C6701内部数据存储器的结构
TMS320C6701的内部数据存储器容量为64KB,分为2块,占据地址为8000 0000h~80007FFFh和8000 8000h~8000 FFFFh,便于CPU和DMA控制器或CPU的2个数据端口A和B同时存取数据而不发生冲突。内部数据存储器组成参见表2-15,同其他块相连的数据存储器控制器框图如图2-22所示。
表2-15 TMS320C6701内部数据存储器组成
图2-22 TMS320C6701同其他块相连的数据存储器控制器框图
(3)内部存储器的双CPU访问
CPU和DMA均可以对8位字节、16位字节的数据进行读/写,数据存储控制器对每个16位的块进行单独的仲裁,尽管是对16位字节宽的字执行,但块具有字节使能功能以支持字节宽数据的访问。
当对在不同块的数据具有多任务访问要求时,所有的访问能够同时执行而不发生冲突,当两种存储器访问对分散的32KB存储器块进行操作时,无论地址是多少,它们之间不存在冲突,对于在同一块中的多任务数据访问,当它们位于不同块时,存储器同样允许同时对多存储器访问,在单CPU周期中2个同时发生的对不同内存块访问将造成1个时钟的CPU管道阻塞,2次访问将造成2个CPU时钟的阻塞。
处于一个执行包中的Load/Store命令是同时被提交给片内DMC的,不在同一个CPU周期内的Load/Store命令之间并不会相互影响,只有处于同一个CPU中的Load/Store指令才有可能导致插入等待状态,条件是它们要存取的数据处于同一个存储体中。此时,DMC会将CPU阻塞1个CPU周期,将发生冲突的两个存取指令处理为顺序执行。在优先级上, Load命令总是优先于Store命令执行。如果两个都是Store命令,由DA1执行的Store命令优先于DA2执行的Store命令。
(4)内部存储器的DMA访问
DMA控制器可以与CPU同时进行对片内数据RAM的访问,只要它们存取的数据位于不同的块中,或是位于相同块的不同Bank中。如果都要访问同一个存储体,就会产生资源冲突,此时通过设置的DMA/CPU优先级来决定访问顺序。
如果DMA的优先级高,那么CPU的访问将被延迟1个CPU时钟周期,等候DMA的存取结束;如果CPU的两个数据通道与DMA三者同时访问同一块RAM,那么CPU的访问申请将会被插入2个周期等待;如果DMA有连续的访问请求,则CPU的访问会等待所有的DMA存取完成后才能进行。如果CPU的优先级高,发生冲突时,DMA的存取将被推迟,此时CPU对片内数据区的访问不会遇到任何等待。