基于DSP EMIF口及FPGA设计并实现多DSP嵌入式系统
实时图像处理及高速数据运算处理要求系统设计具有数据处理速度快、数据吞吐率高等特点,并具有多任务处理功能。针对这些特点,本文设计并实现了基于DSP EMIF接口及FPGA的8个DSP(7个TMS320C6416T、1 个 TMS320DM642)通信的嵌入式系统。设计中利用TMS320DM642进行数字视频信号捕获、显示、保存以及图像信号的预处理;利用TMS320C6416做算法运算;且每个DSP与FPGA都是无缝连接。设计中利用了FPGA实现的软FIFO进行DSP之间的高速数据传输,以及多任务调度处理等。
另外,系统还提供一个高速数据通信接口,以使系统能够方便地对外进行高速数据传输。
1 设计的系统结构
1.1 系统结构
图1所示为1个TMS320DM642(720MHz)与7个TMS320C6416T(1GHz)通过FPGA(EP2C70-7)实现互联的多DSP系统结构。所有的DSP通过EMIF(外部存储器接口)和FPGA无缝相连,DSP之间的数据传输通过FPGA内部互联FIFO网络和高速数据传输网络实现。
图2所示是一种互联的FIFO网络结构和高速数据传输网络结构。DM642和所有的C6416T通过FIFO互相连接,所有FIFO都是双向的,FIFO及其读写控制逻辑都在FPGA内部实现。
每个DSP的一部分GPIO口也连接到EP2C70,可以作为FIFO读写状态控制,以及各DSP之间通信前的同步握手信号等。
1.2 系统结构的特点
系统结构具有可重构特性。在硬件平台不变的情况下,只需通过改变FPGA程序代码就可以完全改变系统结构,以适应不同的算法结构。若图2中屏蔽DSP1至DSP7之间的相互通信,就组成主从并行的流水线结构;若需要串行的流水线结构,只需DSP1至DSP7的其中一个与DSP0通信即可。当然,若想设计更复杂的串并混合性结构,也只需改变FPGA的代码就能够很容易的实现。
系统结构具有一个对外高速通信接口。数据宽度64bit(双向),接口最大时钟200MHz(针对EP2C70-7),12根信号控制线(用户按自己需要通过FPGA定义),一个输出3.3V/1.5A电源。高速通信接口不仅使系统很方便与别的系统进行高速数据传输,还可以使两个本系统很简单地对接起来,构成更强大的多DSP嵌入式系统结构。
2 TMS320DM642与视频A/D、视频D/A接口
2.1 TMS320DM642主器件简介[1][2]
TMS320DM642是TI公司2002年推出专门用于多媒体处理的高性能DSP。内部采用程序总线和数据总线分离的哈佛总线结构,使得取指令和执行指令并行;工作时钟高达720MHz,峰值处理能力为5760MIPS(百万条指令每秒);内部采用两级CACHE;有三个独立的可编程视频接口、一个64bit EMIF接口、16个GPIO等丰富的外部接口;另外,DM642还拥有64个独立的EDMA通道,使其具备很强的数据搬移能力。
2.2 接口实现[1-4]
TMS320DM642的三个独立视频接口都支持视频捕获/显示模式,可直接与视频编解码芯片无缝连接。在捕获模式下,器件捕获速率可达80MHz;在显示模式下,其显示速率为110MHz。系统设计时将TMS320DM642的VP0接口配置为8bit/10bit或Y/C 16bit/20bit、YUV4:2:2捕获模式,与视频解码芯片TVP5146连接;VP1接口配置为8bit、YUV4:2:2显示模式,与视频编码芯片SAA7121连接。TMS320DM642与视频编辑解码芯片接口图如图3所示。
VP0配置为单通道视频输入,VP0CKL0作为输入时钟(Datainclk);VP0CTL0、VP0CTL1和VP1CTL0分别作为输入视频HS、VS、FID。
VP1配置为单通道视频输出,VP1CKL1作为视频输出时钟(Dataoutclk),VP1CKL0作为输入时钟,VP1CTL0、VP1CTL1和VP1CTL2分别作为输出视频HS、VS、FID。
另外,DM642上集成I2C总线,其数据传输速率最高可达400kb/s,分别与编解码芯片相连。设计时采用100kb/s数据传输速率对TVP5146和SAA7121的工作参数进行配置。
3 基于DSP EMIFA与FPGA实现软FIFO接口
3.1 DSP的EMIFA接口[1][2][5]
TMS320DM642和 TMS320C6416T都可以通过外部存储器接口(EMIFA)访问片外存储器。EMIFA由64bit数据线D[63:0]、20bit地址线A[22:03]、8bit字节使能线BE[7:0]、4bit地址区域片选线和各类存储器的读/写控制信号组成。
TMS320DM642和TMS320C6416T的每个/CEx空间都有256MB寻址空间,并且可配置为与SRAM、SDRAM、ZBTSRAM、Flash、FIFO等各类存储器接口。
EMIFA读/写各类存储器的时钟可由软件配置为EMIF的AECLKIN,或CPU/4、CPU/6。本设计配置为EMIF的AECLKIN,且为133MHz。
3.2 FPGA主器件及其实现FIFO[6]
FPGA采用Atera的CycloneII EP2C70-896C7。EP2C70具有68 416个逻辑单元(LE);嵌入250个RAM存储块,总容量1.152Mbit;150个专用18×18乘法器;4个锁相环(PLL);最高工作频率250MHz。
采用FPGA实现多时钟电路系统时,需要处理不同时钟域之间的速率匹配,可利用FPGA内部生成的异步FIFO来处理。异步FIFO主要有双端口RAM、写地址产生模块、读地址产生模块、满空标志产生模块组成。双端口RAM可以由FPGA的Block RAM块构成,EP2C70-896C7的Block RAM读写时钟频率可以达到216.73MHz,因此选用Block RAM作为存储体,不仅速度快,而且设计简单。设计时,一个端口配置成写端口,另一端口配置成读端口,然后把Block RAM的管脚与相对应的控制信号相接即可。读写地址通过FPGA芯片内部的二进制进位逻辑产生,以对应Read_En/Write_En作为使能信号在读/写时钟的控制下进行计数。空或满标志可以由读或写地址的相对位置来获得。
3.3 EMIF与软FIFO接口实现[7]
DSP之间通过EMIF口与FPGA实现的异步FIFO进行通信。EMIF异步接口的每个读/写周期分为三个阶段:SETUP(建立时间)、STROBE(触发时间)、HOLD(保持时间)。每个阶段时间可编程设置,以适应不同的读写速度。图4是DSP写异步FIFO的时序图[7]。图5是DSP读异步FIFO的时序图[7]。DSP读写FIFO控制信号由FPGA产生,其逻辑关系如下:
读FIFO信号:rdclk=AECLKOUT
rdreq=!(/CE+/AARE)
写FIFO信号:wdclk= AECLKOUT
wdreq=!(/CE+/AAWE)
另外,写FIFO的DSP要相应满状态标志,读FIFO的DSP则相应半满状态标志。
- TMS320C672x系列浮点DSP的EMIF研究与应用(02-18)
- 异步FIFO在FPGA与DSP通信中的运用 (03-22)
- 高性能信号处理通用平台研究(01-21)
- FPGA与DSP协同处理系统设计之: FPGA与DSP的通信接口设计(06-05)
- 基于EMIF接口的数据采集系统的设计(03-17)
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)