[资料分享] TMS320C6455的EMIF与FPGA通讯

Jacktang   2019-7-26 08:40 楼主

一、EMIF简述

64x的EMIF是用于片外存储器扩展和外部数据接口的一种并行数据传输片上外设。使用过程需要通过软件编写配置程序,使片上外设的的硬件电路实现特定的时序逻辑功能,构成与外部存储器或外设设备之间的无缝高速数据传输通道,因此,EMIF工作需要软硬件相互配合,属于混合基体。

EMIF可以通过EDMA与存储空间直接关联,整个数据传输可以与CPU工作并行,增加了算法执行的时间效率。

图为EMIF基本结构及接口信号图。EMIF基本结构包括与64x内部存储空间链接的EDMA控制器,用以直接将外部存储器数据存入64x内部存储器;EMIF控制寄存器组用以设置EMIF的数据传输模式,这些寄存器的设置决定了EMIF的实际应用功能,是EMIF设计的关键环节之一;EMIF与外部存储器链接的接口信号较多,以适应不同存储器类型,SRAM,、ROM、 FLASH、FPGA。

以下主要讲解EMIF与FPGA的数据传输。

虽然接口信号很多,但是真正用到就只有几个,见图中画红色矩形框的地方。

(1)时钟信号,图中ECLKIN为总线输入时钟,用以控制EMIF数据传输的总线频率ECLKOUT输出EMIF的实际总线时钟信号,用来与外部存储器读/写同步。关于时钟的设置,我还没有完全明白,书上说实际EMIF频率可以通过PLL寄存器设置其数值。由于我是在师兄留下的工程基础上做的,没有找到设置EMIF频率的代码。但是在FPGA的约束文件中设置EMIF的时钟周期为10ns。不太了解两者之间的关系。

(2)数据/地址信号,图中ED为数据线,EMIFA具有数据长度选择模式,可以选择8bit,16bit,32bit,64bit。在控制寄存器设置即可。

(3)控制信号,控制信号包括存储器读/写信号,与FPGA数据传输时,只用到了CE、AWE、AOE三个信号。CE为片选空间使能信号,AWE为DSP往数据总线写数据使能信号,AOE为DSP读取数据总线数据使能信号。FPGA检测到CE与AOE同时低,则接收DSP发送的数据;FPGA检测到CE与AWE同时低,则向DSP发送数据。一般FPGA与DSP数据通讯时,FPGA通过FIFO接收发送数据,FIFO的时钟由EMIF时钟控制,FIFO的写使能或者读使能分别由CE、AWE和CE、AOE控制。

(4)片选信号,EMIF有4组片选信号,每一组选择一个确定的地址空间。每一组片选空间和不同的外部存储器相连。一般选择CE2与FPGA进行数据传输。

二、EDMA简述

EDMA是增强直接存储器存取方式,主要用于片内二级缓存L2与其他外设之间的数据传输,具有独立于CPU的后台批量数据传输的能力,能够满足实时图像处理中高速数据传输的要求。

由于我们采用的是TMS320C6x系列DSP芯片,所以采用EDMA3,EDMA3有64个通道, 每个通道都有一个事件与之关联, 每个事件相当于一个同步信号, 由事件触发相应通道的数据传输。在没有CPU 参与的情况下, EDMA控制器可以在后台完成片内存储器和外设之间的数据搬移。

在DSP与FPGA的数据传输中,EDMA的主要功能是:存储空间之间的数据块搬移。将数据从EMIF片选空间的存储地址上转移到内部存储空间或者将数据从内部空间转移到EMIF片选空间的存储地址上。具体实现,后面会详解。

二、DSP中配置

这部分只记录用到的部分。

(1)控制寄存器的配置

参考XILINX官方文档spru971e(TMS320C645x DSP External Memory Interface (EMIF))的12.5小节。

SSEL设置为1时,表示该CE对应同步模式的外部存储器。只需要设置四个数据就好。

a:SBSIZE数据总线长度选择,可以设置为8、16、32、64。

b:R_LTNCY读延时周期。当CE和AOE同时为低电平后,表示DSP开始读FPGA的RAM,经过R_LTNCY个ECLKOUT周期后第一个数据出现在数据总线上。

c:W_LTNCY写延时周期。当CE和AWE同时为低电平后,表示DSP开始往数据总线上写数据,经过W_LTNCY个ECLKOUT周期后第一个数据出现在数据总线上。

d:R_ENABLE设置SRE/SADS管脚功能。

(2)EDMA的配置

参考官方文档:《C6455_CSL_APIREFERENCE》

首先定义数据结构体DAT_Setup,并进行初始化配置。

然后,调用DAT_open,我理解的这样就可以对EDMA的进行配置。

最后,调用DAT_copy,对数据进行搬移。

三、FPGA中配置

FPGA与DSP的EMIF进行数据传输,最好通过fifo接收数据或者fifo发送数据。这样可以保证数据传输时,FPGA与EMIF共用同一个时钟。FPGA其它模块可以使用不同的时钟。

(1)FPGA接收dsp发送的数据

fifo的写使能fifo_wr_en由EMIF的CE和AWE控制。一个时钟周期写入一个数据。

(2)dsp接收FPGA发送的数据

fifo的读使能由EMIF的CE和AOE控制。一个时钟周期读出一个数据。
 

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复