×
嵌入式 > 嵌入式开发 > 详情

基于DSP EMIF口及FPGA设计并实现多DSP嵌入式系统

发布时间:2020-07-06 发布时间:
|

实时图像处理及高速数据运算处理要求系统设计具有数据处理速度快、数据吞吐率高等特点,并具有多任务处理功能。针对这些特点,本文设计并实现了基于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则相应半满状态标志。

4 系统的DSP间数据通信

不同的算法代码在平台上对应不同的算法调度方法,但DSP之间数据通信分两个步骤,一是数据通信协议,另一个是数据通信。数据通信协议格式如表1(x表示0、1、…7)。

Send/Receive:MDSPx通过FPGA请求DSPx接收(D0=1)或发送。
MDSPx:向FPGA发出请求的DSP。
DSPx:MDSPx向FPGA提出要求响应的DSP。
Data_leng:MDSPx请求DSPx接收或发送的数据长度。
Data_Unit:1表示接收或发送为Data_leng K(1K= 1024bit),0表示接收或发送Data_leng。
Data_Block:表示MDSPx请求DSPx接收或发送Data_Block个Data_leng K或Data_leng。
Data _Character:MDSPx请求DSPx接收或发送的算法代码中间运行结果或最终结果。
Interr_Priority:中断优先权。
Odd_Check:奇偶校验位。
设SUM,若为奇数,则Odd_Check=1,否则为0。

Over_Lable:结束标志位,用户可自己定义。

数据通信的实现过程:若FPGA接收到MDSPx发来的请求信号,先根据D[0:37]计算出校验数据,然后与Odd_Check比较。若不等,FPGA向MDSPx发出重发请求信号的请求;若相等,且DSPx空闲时,FPGA再由Send/Receive通知DSPx接收或发送数据,并将接收到的数据传输给DSPx,同时使对应的FIFO数据通道使能。DSPx根据收到的数据信息,同样计算出校验数据,若与Odd_Check相等,则根据Send/Receive标志位,采用EDMA方式向EMIF口接收或发送Data_Block*Data_leng(或Data_Block*Data_leng K)数据。

如果FPGA同时接收到两个或两个以上的MDSPx发来的请求信号,还要由Interr_Priority判其执行的先后。

5 系统的性能分析

多DSP嵌入式处理系统中,DSP间的数据通信性能是影响系统性能的重要因素,而数据通信带宽和数据传输延迟是衡量数据通信性能的主要指标。

若系统中DSP读写FIFO的带宽为B(单位时间内DSP间的数据通信量),则:

其中,f是DSP读写FIFO的时钟,w是FIFO数据总线宽度。本设计配置Nsetup=Nstrobe=1,Nhold=0,w=32 bit,f=133MHz,因此B理论值266MB/s。

但DSP间数据通信的实际带宽Bf主要受握手时间τhandshake、写FIFO到半满时间τfifo_hf、响应GPIO口中断启动读操作时间τgpio_int err、接收数据时间τdata_receive四个延迟时间影响。其中τhandshake、τgpio_int err、τdata_receive是传输数据必需的固定时间,而τfifo_hf是由于使用FIFO缓存数据引入的额外时间。显然,FIFO的深度越长,τfifo_hf越大,额外时间就越长,则实际带宽Bf就越小,反之则越大。
为了保证DSP间正确的数据通信,要求DSPx开始从FIFO读取数据时,MDSPx还没有写满FIFO,即:

表2是DSP0分别与DSP1~DSP7传输不同大小数据时测得的平均延迟时间。图6是根据测试数据绘出的实际带宽Bf曲线。可以看出,随着传输的数据增大,Bf逐渐逼近B。因此,利用FPGA实现多DSP间的互相数据通信,既获得了较大的持续带宽,又降低了数据传输延迟。

本文设计的多DSP嵌入式系统可重构性灵活,实现容易,性能稳定,数据吞吐量大,处理数据能力强。该嵌入式系统已经成功应用到某公司的超声图像智能识别产品中。该产品利用系统中TMS320DM642对B超图像进行采集、保存、图像预处理、显示;利用7个TMS320C6416T对超声图像做相关算法处理。经测试,算法代码在单DSP(DM642 720MHz)平台处理时间小于0.4s,而在此平台处理时间小于40ms,满足实时要求。

另外,该系统还可以广泛适用于图像处理、电子对抗、雷达信号处理等各个领域。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PLC控制步进电机方法