DSP

C64x EDMA Architecture

2019-07-13 14:55发布

本文转自http://volvet.blogbus.com/logs/8270502.html (1)    Transfer Request 1)    Transfer Request 每次数据传输都是由Transfer Request(TR)发起的,TR包含了所有数据传输所需要的信息:源地址,目标地址,优先级,传输的元素个数等等。TR根据不同的优先级被塞入相应的队列中,每次排于队列首位的TR被传入EDMA 控制器中,实际的数据传输就开始了。 (2)    L2 Memory/Cache Controller Level 2 Memory/Cache Controller要实现很多种控制:允许CPU直接访问数据,递交QDMA申请(Quick DMA Request),维护L1 CacheL2 Cache的一致性(Coherence),另外所有Memory-Mapped PeripheralsCPU的通信也是通过L2 Memory Controller的。 L2 Memory Controller 的 QDMA Request 的申请可能是以下几种情况:CPU主动发起QDMA Request, CPU访问不能Cache的片外内存,L2 Cache读取可以被Cache的片外内存,L2 Cache 上的内容失效时候(把L2 Cache的数据写回片外内存),用户的一些Cache操作。 (3)    Transfer ControllerTransfer Request 按照优先级不同分4个队列 ,分别是Q0(Urgent)Q1(High),Q2(Medium)Q3(Low),每个队列的长度是16,就是说可以放入16TR, 这里要注意的是并不是把TR的优先级设为最高,数据就能优先得到传输的, 因为对不同队列TR的处理是并发的,所以要把TR均匀的分步到4个队列中,才能得到最优的数据传输性能。     EDMA控制寄存器是内存映射模式的,EDMAChannel参数表是一块2k Bytes的片内内存( Parameter RAM -PaRAM )。每一个Channel的参数长度为24Bytes , 因为C64x CPU64Channel , 所以C64x CPU64×24 Bytes作为EDMA到参数表,剩下的部分内存作为Link Parameter Set  EDMAPaRAM的地址是:0x01A000000x01A00017  Parameter For Event 1                             0x01A000180x01A0002F  Parameter For Event 2                                     ………                             0x01A005E80x01A005FF  Parameter For Event 63   EDMA Parameter的格式如下: Option - 4 Bytes     EDMA Transfer Configuration Option Source Address - 4 Bytes   源地址 Array/Frame Count  - 2 Bytes  需要传输的Frame或者Array的个数  ( Frame1D,Array2D ) Element Count  - 2 Bytes  每个Frame 或者 Array 中 Element 的个数 Destination Address - 4 Bytes   目的地址 Frame/Array Index - 2 Bytes  1D时候是指被拷贝到目标地址的每个Frame之间的偏移, 2D时候是指每个Array的偏移。 Element Index - 2 Bytes    1D时候有效, 2D时候被ignore,是指被拷贝到目的地址的Frame中每个Element的偏移。 Element Count Reload - 2 Bytes Link Address - 2 Bytes    要完成多种功能的数据拷贝功能 比如说数据重排等等, 往往需要借助Frame/Array IndexElement Index的合理设置。    EMDA Transfer Configuration Option 的定义如下: Bits 31-28 Priority -  000: Urgent                     001: High                     010: Medium                     011: Low                         Others: Reserved    Bits 28-27 ESize -    0032 Bits Element                         0116 Bits Element                         10: 8 Bits Element                         11: Reserved    Bits 26  2DS -  0: Source 1D模式                     1: Source 2D 模式    Bits 25-24  SUM -  00: Same Source Address, 是指用相同值填充目标地址的情况 , 类似DAT操作时候DAT_fill的情况。                        01: Increment Source Address ,  拷贝完一个值后,Source Address + 1                       10: Decrement Source Address, 拷贝完一个之后,Source Address – 1                       11: Index 模式, 在2D模式下这个值无效果,会导致不可预料的情况,在1D模式下,表示拷贝完一个值后,Source Address + Element Index   Bits 23  2DD - 0: Destination 1D模式                    1: Destination 2D 模式    Bits 22-21  DUM -  Destination Address Update Mode , 与SUM 的定义相同。    Bits 20  TCINT - 0:  Transfer Complete Interrupt Disable                      1:  Transfer Complete Interrupt Enable    Bits 19-16  TCC -  Transfer Complete Interrupt Code 的低4   Bits 15 -  Reserved    Bits 14-13  TCCM - Transfer Complete Code的高2位。这个值等同与传输结束时候的事件代号。    Bits 12  ATCCINT -  Alternate Transfer Complete Interrupt    Bits 11 - Reserved    Bits 10-5  ATCC  - Alternate Transfer Complete Interrupt Code    Bits 4 - Reserved    Bits 3   PDTS - Peripheral Device Transfer Mode for Source    Bits 2   PDTD - Peripheral Device Transfer Mode for Destination    Bits 1   Link -  1: Link Enable                     0: Link Disable    Bits 0   FS -  0Channel is Element/Array synchronization                   1Channel is Frame/Block synchronization       QDMAEDMA很象,不同之处就是QDMA的 Parameter中没有 Element Count ReloadLink Address , QDMA 的Parameter的长度是20 Bytes。另外QDMATransfer Configuration Option没有ATCCINTATCCPDTS,PDTDLink等参数,这说明 QDMA不能用来做外围设备跟RAM之间的数据传输, 仅仅是L2 MemoryExtern Memory 之间的数据传输。