《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于PCI的高速DSP应用系统设计
基于PCI的高速DSP应用系统设计
来源:微型机与应用2012年第1期
童建中1,童 华2
(1.四川化工职业技术学院 信息工程系,四川 泸州 646005;2.重庆电子工程职业学院 通信工程
摘要: 结合S5933和TMS320C6000 DSP设计了高速图像处理硬件平台,可适应和满足利用PC机进行高速数据采集与处理设备的技术发展趋势和应用需求。
Abstract:
Key words :

摘  要: 结合S5933和TMS320C6000 DSP设计了高速图像处理硬件平台,可适应和满足利用PC机进行高速数据采集与处理设备的技术发展趋势和应用需求。
关键词: 前端数据采集;TMS320C6000系列DSP;PCI总线专用芯片;实时高速数字图像处理

 当前,在计算机、多媒体、数据通信和网络技术的发展、应用和融合中,人们对计算机视频应用的要求越来越高,这使得实时、高速、便捷、智能化、大容量的高性能数字图像处理设备成为未来视频设备的发展方向,这必然要求产生与之相适应的新理论、新方法和新算法。为了在利用和实现这些新技术的过程中验证其可行性,突破高速DSP硬件设备的技术应用瓶颈,本文提出了一种基于PCI总线和TI公司C6000系列高端DSP芯片的高速数字图像处理平台设计方案,从硬件和软件上解决了通过AMCC公司的S5933 PCI总线接口芯片,由CLPD作桥,实现与功能强大的 TMS320C6416 HPI主机接口的高速通信,为做进一步实时音视频压缩、图像检测、视觉定位、高速处理等算法研究提供了完整的实践平台。
1 系统硬件结构
 TMS320C6000系列DSP是基于TMS320C6000平台的32 bit浮点DSP处理器。它包含两个子系列:用于定点计算的TMS320C62x系列和用于浮点计算的TMS320C67x系列。TMS320C6000系列时钟频率最高可达到250 MHz。该系列DSP包含两个通用的寄存器组A和B,每组有16个32 bit的寄存器。芯片内含8个运算功能单元:两个乘法器(M1和M2),6个算术逻辑单元(L1、L2、S1、S2、D1及D2),所有单元都能独立并行操纵。以TM320C6701为例,其工作频率最高为167 MHz,最快速度可达8×167=1 336 MIPS。
基于S5933的高速TMS320C6000 DSP图像处理硬件平台设计系统框图如图1所示。整个系统由前端数据采集、DSP和PCI总线专用芯片组成。

 DSP芯片采用TI公司高性能数字信号处理器TMS320C6416,芯片采用哈佛结构、流水线操作、专用硬件乘法器、快速DSP指令。主频可高达600 MHz~1 GHz,片内的RAM采用两级高速缓存结构,程序和数据拥有独立的缓存空间。片内提供多种集成外设;多通道的EMDA控制器、多信道带缓冲能力的串口McBSP、32 bit通用计数器和I2C总线主/从模式接口等。
 TMS320C6416的两个独立的外部数据总线接口EMIFA(64 bit)和EMIFB(32 bit)具有很高的数据吞吐率(最高能达到1 200 Mb/s),而且可以与目前几乎所有类型的存储器直接连接,完成数字图像处理数据的大容量高速存储。
 前端采用两路ADI公司的14 bit数/模转换器AD6645(80/105 MSPS)通过SMA射频端子进行高速数据采样,其具有很高的无杂散动态范围和过采样性能,可以降低系统对前端射频元器件的要求,从而降低系统的复杂性和生产成本。数据经FPGA进行一定缓冲,或是进行FFT、滤波、去噪,再由64 bit的EMIFA接口发送到DSP进行编解码处理、MPEG4压缩等。最终,压缩编码后的视频数据流可通过RS422将数据同步输出或是由PCI总线发送给主机端保存或进行进一步验证。
 该平台DSP片外提供大容量高速存储器空间。用ISSI公司的SBSRAM(128 KB×32 bit)和HYNIX的SDRAM(4 MB×16 bit),外置4 MB的Flash,为预处理或是处理后的图像数据提供可靠、充裕的暂存空间。SBSRAM和SDRAM均可由EMIFB进行无缝连接,为硬件的实现带来了很大的便利。
 PCI部分采用目前较常用的AMCC公司S5933接口芯片,它是一种功能强且使用灵活的PCI总线控制器专用芯片。该芯片符合PCI局部总线规范2.1版本,既可作为PCI总线目标设备,实现基本的传送要求,也可作为PCI总线主控设备,访问其他PCI总线设备。S5933的峰值传送速率为132 Mb/s(32 bit PCI数据总线)。
S5933外部提供了3个物理总线:PCI总线接口、外加总线接口(Add_On Bus)和可选的NVRAM接口。用户可根据需要设计S5933与外加总线接口相连接的逻辑电路和配置空间的初始化,而不必考虑PCI总线规范的众多协议,从而将复杂的PCI总线接口关系转化为简单的8 bit/16 bit/32 bit外加总线接口关系。
    S5933硬件结构及外部连接图如图2所示。主机端通过32 bit PCI总线与S5933进行数据传输,再由CPLD做内部状态机,负责DSP端HPI(Host-Port Interface)接口的时序控制,使DSP与主机端进行16 bit/32 bit的数据交互。

 主机接口HPI是TI高性能DSP上配置的与主机进行通信的片内外设。通过HPI接口,主机可以非常方便地访问DSP的所有地址空间,从而实现对DSP的控制。例如,TMS320C6421的HPI接口是一个16 bit宽的并行端口。主机(Host)对CPU地址空间的访问是通过EDMA控制器实现的。HPI接口的访问主要通过HPI控制寄存器(HPIC)、HPI地址寄存器(HPIA)和HPI数据寄存器(HPID)三个专用寄存器来实现。
另一方面,CPLD挂载在EMIFB上,进行DSP端存储器映射,从而使DSP可以通过Add_On Bus接口实现对S5933内部FIFO或Mailbox的控制,达到与主机端进行命令或状态信息的通信。
2 系统软件实现

 


 使用专用DSP芯片进行设计与开发,包括硬件和软件两个方面。在软件方面通常有以下三种软件设计方式。
 (1)完全用C语言开发。TI公司提供了用于C语言开发的CCS(Code Composer Studio)平台,该平台包括优化ANSI C编译器,从而可以在C源程序级进行开发。这种方式大大提高了软件的开发速度和可读性,方便了软件的修改和移植。但是,在某些情况下,C代码的效率还是无法与手工编写的汇编代码的效率相比,如FFT编程。这是因为即使是最佳的C编译器也无法在所有的高速下都能最合理地利用DSP芯片所提供的各种资源。此外,用C语言实现DSP芯片的某些硬件控制也不如汇编程序方便,有些甚至无法用C语言实现。
 (2)完全用汇编语言开发。TI公司提供了用于汇编语言开发的针对TMS320C54X的汇编语言,用户可以用它进行软件开发。此方式可以更合理地充分利用DSP芯片提供的硬件资源,代码效率高,程序执行速度快。但是用DSP芯片的汇编语言编写程序是比较复杂的。一般来说,不同公司的芯片汇编语言是不同的,即使是同一公司的芯片,由于芯片类型的不同(如定点和浮点)和芯片的升级换代,其汇编语言也不同。因此,用汇编语言开发基于某种DSP芯片的产品周期较长,并且软件的修改和升级较困难,这些都是由汇编语言的可读性和可移植性较差所致。
 (3)用C语言和汇编语言混合编程开发。为了充分利用DSP芯片的资源,更好地发挥C语言和汇编语言的各自优点,可以将两者有机结合起来,兼顾两者的优点,避免其弊端。因此,在很多情况下,采用混合编程方法能更好地达到设计要求,完成设计功能。但是,采用C语言和汇编语言混合编程必须遵循一些有关的规则,否则会遇到一些意想不到的问题,给开发设计带来许多麻烦。
 TMS320C6000在设计时采用了一种类RISC机的结构,指令集非常简单,运算速度特别快,实时性较好,但是有时又感觉汇编指令集太小。像DSP算法中常用的乘加指令、循环操作指令等,在C54x和C3x中两条指令就可以完成的功能,而在C6000中用作处理复杂并发任务时却需要一个循环体,所以它的程序设计一般比较复杂。要想充分发挥C6000的运算能力,必须从其硬件结构出发,最大限度地利用8个功能单元,使用软件流水线,尽量让程序无冲突地并行执行。
 并行处理的长处在于,在处理彼此之间没有承接关系的运算时,在CPU资源允许的情况下可以并行完成。但对于前后有承接关系或者判断、跳转频繁的情况,就无法发挥并行的优势。一般循环体都满足并行处理的条件,并且循环体往往是程序中耗时最长的,因此用C6000进行开发时应将优化重点放在循环体上。为了降低开发难度,C6000提供了很多通过高级语言(如ANSI C)对程序进行优化的方法。在应用满足实时性处理要求时,应尽量采用该方法。但是这种方法的效率比较低,C语言优化最好的例子是点乘,这种循环使用C语言进行优化的方法可以百分之百地利用CPU资源,使程序的并行性达到最好。但经验证明,做20点的点乘的耗时是汇编语言程序的3倍,所以如果系统对实时性要求比较高,就不能使用这种优化方法了。基于DSP的C语言和汇编语言混合编程的程序设计方法可以较好地解决以上问题。
 软件设计包括了两个部分:主机端对DSP片内片外存储器的读写和DSP端对片外存储器的读写。
主机端和DSP端的软件流程如图3所示。


 主机端用Visual C++开发生成,其中利用了WIN32的API函数,封装在EVM6X.LIB库中。在应用程序中,需要包含头文件evm6xdll.h,在这个头文件中,包含对各个WIN32 API函数的定义,具体定义可以参看参考文献[4]。
由图3中可知,主机端通过HPI口把COFF文件加载到DSP片内运行,由S5933的Mailbox做桥梁,实现了与DSP之间消息的通信。从而达到了主机端对DSP片内和片外所有存储器的高速读写,保证了数据处理的实时性和可靠性。
 需要注意的是,在主机端和DSP端之间Mailbox的传递,在硬件上是通过DSP芯片的外部管脚EXT_INT4来发起的,并且每次跳出中断服务程序都应该对S5933的Add_On Bus端的imcoming mailbox实行中断清零操作。
 例如,实现PC机对DSP摄像系统的摄像控制以及图像的传输,主要使用的API函数是DeviceIOControl()、ReadFile()和WriteFile()。其中DeviceIOControl()用于PC机(主机)向DSP图像采集系统发送请求;ReadFile()和WriteFile()分别用于从图像采集系统中读出数据以及向图像采集系统中写入数据。在设计过程中必须注意的问题是,由于USB接口为主-从方式,其一切传输过程都必须通过主机向外设发送请求后才可以开始,因此在使用ReadFile()、WriteFile()读写数据之前,必须先通过DeviceIOControl()向图像采集系统发送请求。
 实验数据表明,DSP数据吞吐率>500 Mb/s,PCI传送速率>100 Mb/s。采用PCI接口芯片S5933、DSP芯片TMS320C6416设计,再配置视频输入处理芯片SAA7113,实现的视频图像处理实验平台系统可实现图像的高速连续采集,进行图像压缩、图像处理等算法的验证,达到了系统设计的目标。本系统具有使用灵活、升级TI更新芯片方便等特点。此外,TMS320C64x系列自带有PCI桥,HPI接口有16 bit/32 bit两种数据宽度,可由外部PCI_EN和HD5管脚进行灵活配制。利用TMS320C64x自带的PCI桥,可更加节省硬件的开发成本,但却缺少了PCI总线主控操作,主机端与DSP通信灵活性没有本文提出的方案高,在实际工程应用中根据设计人员的具体要求而定。
参考文献
[1] TI Inc.. Interfacing the TMS320C6000 EMIF to a PCI bus using the AMCC S5933 PCI controller[Z]. 2001.
[2] TI Inc.. TMS320C6414, TMS320C6415, TMS320C6416 fixed-point digital signal processors[Z]. 2005.
[3] AMCC Inc.. PCI products data book[Z]. 1998.
[4] TI Inc.. TMS320C62016701 evaluation module[Z]. 2004.
[5] TI Inc.. TMS320C6000 optimizing compiler user′s guide([SPRU187L])[Z]. 2004.
[6] TI Inc.. TMS320C6000 programmer′s guide([SPRU198G])[Z]. 2002.
[7] TI Inc.. TMS320C6000 assembly language tools user′s guide([SPRU186N])[Z]. 2004.
[8] 陈利学.微机总线与接口设计[M].成都:电子科技大学出版社,1998.

此内容为AET网站原创,未经授权禁止转载。