可以使用指定的传输任务完成来触发新的EDMA通道提交传输请求 3:手动触发或CPU触发
通过修改事件设置寄存器,使用CPU手动触发一个传输请求。 初始化QDMA传输主要有2种方式: 1:自动触发传输请求
在QCHMAPn中写入对应的触发字 2:链接触发传输请求
当链接发生的时候写入触发字触发传输 常用寄存器描述:
DCHMAPn:设置信道与PaRAM Set的对应关系,如DCHMAP48赋值为0x00000020指代
的就是将信道48与PaRAM Set 1对应
EESR,EESRH:事件使能设置寄存器组,指代的是0-63事件 IESR;中断使能设置寄存器,用于设置是否使能中断
DMAQNUMn:事件队列寄存器,用于设置事件/信道与传输队列(queue)之间的关系 EMCR,EMCRH:事件丢失清除寄存器,有事件在传输的过程中被侦测到丢失,将在EMR,
EMRH寄存器中对应位设置为1,不能自动清除掉,必须在寄存器EMCR,EMCRH设置清除
ICR,ICRH:中断清除寄存器,在传输的过程中被侦测到发生中断,将在IPR,IPRH寄存
器中对应位设置为1,不能自动清除掉,必须在寄存器ICR,ICRH设置清除
结合例子说明EDMA寄存器的基本设置: 1:EDMA3CC_DCHMAP48 = 0x00000020;
功能:这里写入DCHMAP48中的PAENTRY位置为1,指代的是将PaRAM Set 1映射到48信道/事件,这里的事件与信道是一一对应的,但是PaRAM与信道是可编程的。 注:信道48指代的是GPIO 事件0,实际中需要根据上面的设置来确定。 2:EDMA3CC_EESRH = 0x00010000; 功能:使能信道/事件48。
3:EDMA3CC_IESR = 0x00000003; 功能:使能TCC0和TCC1中断。
4:EDMA3CC_DMAQNUM6 = 0x00000000;
功能:在DMAQNUM6寄存器中设置事件48放置在队列(queue0)中。 5:pEDMA3CC_PaRAM = EDMA3CC_PaRAM1;
功能:设置了pEDMA3CC_PaRAM为一个指向结构体的指针,用于设置PaRAM参数。 6:pEDMA3CC_PaRAM->OPT = 0x00100004;
功能:设置OPT参数,传输完成时产生中断,实行AB同步。 7:pEDMA3CC_PaRAM->SRC = EMIFA_CE4_BASE_ADDR; 功能:设置数据源地址。
8:pEDMA3CC_PaRAM->BCNT_ACNT = 0x00800008;
功能:设置BCNT和ACNT大小,这里BCNT为128,ACNT为8,单位byte。 9:pEDMA3CC_PaRAM->DST = FPGA_DATA_PING; 功能:设置目标地址。
10:pEDMA3CC_PaRAM->DSTBIDX_SRCBIDX = 0x00080008;
功能:设置DSTBIDX和SRCBIDX,用于源区域取数据和目标区域放数据时候数据存放形式时使用。
11:pEDMA3CC_PaRAM->BCNTRLD_LINK = 0x00804060;
功能:当一个传输完成的时候自动链接下一个PaRAM地址。 12:pEDMA3CC_PaRAM->DSTCIDX_SRCCIDX = 0x0;
功能:设置DSTCIDX和SRCCIDX,用于源区域取数据和目标区域放数据时候数据存放形式时使用。由于CCNT为1,所以没有CCNT数据块之间的变化,无论源还是目标区域,这里设置为0;
13:pEDMA3CC_PaRAM->RSVD_CCNT = 0x00000001;
功能:设置CCNT大小,这里仅有一个块,设置CCNT为1。
附2:PLL功能描述及设置
PLL用于6455芯片产生内部工作或外设相应的时钟,PLL包含有可配置的倍频和分频控制器,PLL控制器提供灵活的倍频器和分频器用于调整输入的时钟,调整后的时钟将被送入DSP核,外设和DSP的其他模块。
PLL控制器包含一个输入和多个输出时钟。 CLKIN:外部晶振输入时钟
AUXCLK:直接从CLKIN引入的信号时钟
SYSCLK1 to SYSCLK16:系统域时钟,每一个包含自己的分频器
PLL工作于旁路模式bypass mode和PLL 模式PLL mode,工作模式决定与寄存器PLLCTL中的PLL enable bit和PLLENSRC bit,6455默认的工作模式是旁路模式bypass mode。 旁路模式指的是外部输入的时钟不经过倍频和分频器的处理,直接进入各个子系统时钟域进行处理,PLL模式指的是外部输入的时钟要经过倍频和分频器的处理,完成后的时钟进入各个子系统时钟域进行再处理。 寄存器及相应bit位说明:
1:PLLCTL:PLL控制寄存器,用于设置工作模式
PLLENSRC:PLL源使能比特,置0表示使能PLLEN 比特位,这时设置PLLEN才有效,
置1时直接选择外部时钟源为输入,即旁路模式,此时设置PLLEN没有效果。
PLLRST: PLL复位比特,该比特在初始化设置的时候使用。
PLLEN: PLL使能比特,该比特设置选用旁路模式还是PLL模式,该模式设置的前提
是PLLENSRC比特位必须为0,否则设置不起作用。
2:PLLM:倍频控制寄存器,用于设置倍频系数
PLLM: 5-0比特位设置倍频系数,最大可以设置64倍。 3:PREDIV:预分频控制寄存器,用于倍频后的分频
PREDEN: 预分频使能比特,如果系统工作在PLL模式下,不管是否分频,该位必须设
置为1,否则没有时钟输出。
RATIO: 预分频系数比特,控制分频比例,最大可设置32分频。 4:PLLDIVn:各个子系统分频控制寄存器,n为1-16。
DnEN: 第n个子系统分频器使能,如果要使用该子系统时钟输出,不管是否分频,
该比必须设置为1.
RATIO: 子系统分频系数比特,控制分频比例,最大可设置32分频。 5:PLLCMD:PLL控制器指令寄存器,用于初始GO OPERATION操作
GOSET: 设置为1表示开始初始化GO OPERATION操作,设置为0没有效果。 6:ALNCTL:PLL对齐控制寄存器,
ALNn: 比特位0-15指代的是1-16个子系统域是否对齐,设置为0表示在GO
OPERATION操作期间该子系统时钟与其他系统时钟不必对齐,设置为1表
示在GO OPERATION操作期间该子系统时钟与其他系统时钟对齐。
7:DCHANGE:子系统时钟状态改变寄存器,用于指示是否在GO OPERATION期间改变
子系统时钟频率。
SYSn: 设置为1表示在GO OPERATION期间子系统时钟将变为由分频器寄存器
更改以后的时钟,设置为0表示不更改,在结束的时候才更改。
8:CKEN:AUXCLK使能标志寄存器,用于控制是否使能AUXCLK。 AUXEN:设置0不使能,设置为1使能。
以上是所需要设置的寄存器,下面的是状态寄存器:
9:PLLSTAT:GO OPERATION操作状态寄存器,标识GO OPERATION操作是否在进行。 10:CKSTAT:标识AUXCLK时钟是否开启。 11:SYSTAT:标识个子系统时钟是否开启。
初始化过程:
PLL和PLL控制器在重置以后可由程序初始化,PLL控制寄存器仅仅有CPU或仿真设置, 其他主机如HPI或PCI不能设置PLL控制寄存器,并且初始化应该在程序运行的开始,在设置其他外设之前设置。 一,PLL模式下的初始化: 1:关闭中断寄存器CSR。
2:PLLCTL第5位置0,使能PLLEN。 3:设置为旁路模式。
4:执行空语句,根据要求等待4个最慢周期。 5:写入PLLRST = 1。 6:执行输入倍频频率。
7:设置使能,同时设定预分频比例。
8:执行GO OPERATION是否完成的判断。 9:设置个子系统输出使能及设定分频比例。 10:开启GO OPERATION 状态。 11: 检测GO OPERATION状态是否完成,即,检测赋值过程是否完成,因为GO OPERATION是赋值过程的标识。
12:空操作,等待PLL正确重置,128周期。 13:最后使能PLL mode。 14:使能中断寄存器CSR。 二,旁路模式下的初始化: 1:关闭中断寄存器CSR。
2:PLLCTL第5位置0,使能PLLEN。 3:设置为旁路模式。
4:执行空语句,根据要求等待4个最慢周期。 5:写入PLLRST = 1。
6:设置个子系统输出使能及设定分频比例。 7:开启GO OPERATION 状态。 8: 检测GO OPERATION状态是否完成,即,检测赋值过程是否完成,因为GO OPERATION是赋值过程的标识。
9:空操作,等待PLL正确重置,128周期。 10:最后使能PLL mode。
11:使能中断寄存器CSR。
注:旁路模式下的初始化与PLL模式的初始化区别在于旁路模式无需设置倍频及预分频。