在做DSP与FPGA之间的视频传输工作,使用的通信方式是EDMA,为了系统的介绍通过EDMA方式在DSP与FPGA之间实现数据传输。
首先介绍一下DSP-C6455中的GPIO与中断系统。以后再介绍DSP强大的EDMA模块,以及具体的数据传输实现。
(注: 其实EDMA是C6455芯片中的一个模块,可以认为其是芯片内部的一个”协处理器”)
背景
使用DSP+FPGA搭建的嵌入式系统进行视频采集,编解码,传输无疑是一个不错的选择。使用FPGA系统进行视频采集,DSP进行视频处理需要了解一下知识:
1. DSP-C6000系列的中断与GPIO系统
2. DSP-C6000系列的EDMA模块
3. FPGA的乒乓RAM
4. 一种视频格式(例如VGA,PAL等)
5. 视频处理算法
本文将介绍DSP C6000系列的GPIO系统(针对C6455)
C6455的GPIO
TMS320C6455中共有16个通用输入输出管脚。每一个管脚都可以单独进行配置成如下功能之一:
通用输入管脚Input
通用输出管脚Output
中断&EDMA事件 管脚
GPIO框图
首先看一下GPIO的框图:
通过查看GPIO框图,我们可以得出许多信息:
DIR寄存器控制GPIO管脚是输入还是输出,其中,对应bit置0表示该管脚配置为输出管脚;对应bit置1表示该管脚配置为输入管脚。
若一个GPIO管脚配置为Output,给SET_DATA寄存器对应位置1,将使该管脚输出高电平,给CLR_DATA寄存器对应位置1,将使该管脚输出低电平。需要注意的是:向SET_DATA和CLR_DATA中写入0无作用。
若一个GPIO管脚配置为Input,可以通过读取IN_DATA寄存器中的对应位来获得管脚的状态。且向SET_DATA和CLR_DATA中写入0无作用。
若一个GPIO管脚配置为中断&EDMA事件模式,此时可以忽略该管脚的Input/Output配置。可以通过置位SET_RIS_TRIG和SET_FAL_TRIG寄存器的相应bit把GPIO管脚配置为中断/事件触发方式。如下图所示:
由于C64+的CPU无法直接访问RIS_TRIG和FAL_TRIG寄存器,若要访问中断模式的配置状态,可以通过读取SET_RIS_TRIG(SET_FAL_TRIG)或者CLR_RIS_TRIG(CLR_FAL_TRIG)来获取。
|