文献标识码:B
文章编号: 0258-7998(2014)07-0006-03
随着信息技术的发展,对频谱的需求日益增强,信号工作频段越来越高,单个信道占用的频谱带宽也越来越宽[1]。在实际生活中,越来越多的通信系统工作在很宽的频带,如LTE的频谱带宽已经达到20 MHz。若要监测这一类频谱,由带通采样定理可知[2],对数据采样率有更高的要求,相应地对数字信号处理器件处理能力的要求也更高。但仅仅提升数字信号处理器件的处理能力,而相应数据传输接口传输缓慢,也无法实时完成频谱监测任务。因此,各类数字处理器件之间数据接口的传输速率成为了解决这类问题的核心所在。
为实现更好、更快、更宽的频谱监测,采用TI公司的OMAP-L138双核处理器,利用其EMAC模块、uPP接口,结合ARM与DSP之间的双FIFO缓存结构,实现了一种高速处理器件之间高速数据传输接口的设计。该设计具有良好的可行性及扩展性,可以很方便地应用到其他对数据传输有较高要求的应用中。
1 设计方案
本文提出的高速传输接口设计以OMAP-L138双核处理器为核心,配合高速以太网PHY芯片DP83640和FPGA(现场可编程门阵列),组成了一个高速数字信号传输系统,系统结构如图1所示。射频信号通过射频前端变频到75 MHz中频,通过ADC以60 MS/s的采样率采样后送入FPGA,在FPGA中进行相关处理后通过uPP接口将数字化信息传至DSP。在DSP中进行相关的频谱参数处理后,利用共享内存的方式交由ARM回传数据到远端观测、记录,实现了无线电磁信号到网络频谱信息的高速传输。本设计提高了数字频谱监测中数据传输的吞吐能力,实时性更强,更易扩展。
本设计中以TI公司的OMAP-L138为核心,其集成了ARM926EJ-STM精简指令集处理器和C674x定点/浮点超长指令字(VLIW)数字信号处理器,其时钟频率最高可达300 MHz,提供了较强的控制能力与数据处理能力。外设中包括一个具有管理数据输入/输出(MDIO)模块的10/100 Mb/s以太网模块(EMAC)、通用并行接口uPP(Universal Parallel Port)等[3-4],这些强大的外设保证了高速传输系统的可实现性。
1.1 DSP与FPGA高速通信接口设计
从图1可知,FPGA完成信号的高速采集并进行预处理之后,需要将数据交由DSP来进行相应的信号处理。在DSP与FPGA的传输上采用了OMAP-L138提供的uPP接口。uPP为高速并行接口,可以利用其自身的DMA完成数据传输,而不占用处理器运行时间。在OMAP处理器中包含两个通道的uPP[3],每个通道可以设置成8 bit或16 bit传输,通过使用START、ENABLE和WAIT接口控制。uPP引脚功能说明如表1所示。
uPP包含内部DMA控制器以实现最大的吞吐率和最小化CPU占用。此外uPP外设支持数据的交织模式,使用这种模式,所有DMA资源可以服务一个单独的I/O。uPP最大工作频率可以达到75 MHz,若以16 bit传输,可以达到1 200 Mb/s的传输速率,两个通道并行传输则能够达到最大2 400 Mb/s的传输速率,这个数据传输速率对于大多数的应用都已足够。而在参考文献[5]中提到的基于McBSP的传输方式能够达到的最大数据速率只有40 Mb/s,可见uPP的使用大大提升了DSP与FPGA的接口速率。uPP与FPGA通信的时序如图2所示。
在开始传输时,FPGA端只需要拉高使能信号并提供一个START信号,DSP收到信号之后便能够启用uPP自带的DMA开始进行数据传输,其传输快捷,实现方便,利于扩展到其他类似数据传输任务中。
1.2 ARM与DSP双核通信接口设计
DSP接收到FPGA回传的预处理数据并完成相关处理之后便需要将数据信息回传到客户端进行相应的观察、记录。在本设计中,为了充分发挥双核的性能,完成数据的高速传输,提出了一种双FIFO共享内存的结构实现ARM与DSP之间的高效通信。
在参考文献[6]中,介绍了OMAP3530上ARM与DSP联合调试的方法。在本文中,基于此方法,将ARM与DSP之间的通信进行了适当的优化。ARM与DSP的通信采用DSP/BIOS Link(简称为DSPLink)完成。DSP Link是双核处理器内部GPP与DSP两侧通信的基础软件。它提供了一个通用的API,这个API可以从应用层上实现物理层GPP与DSP交互,避免了客户重新开发,可以快速实现GPP与DSP的交互功能[4,7]。
DSPLink软件架构如图3所示[7]。在GPP端,OS适应层将DSP/BIOS Link组件需要的操作系统服务封装。这个组件提供一些通用的API而非直接系统调用,使得DSP/BIOS Link可以很方便地在不同操作系统上移植。DSP端运行DSP/BIOS实时操作系统[8],GPP端与DSP端通过两端的Link Driver模块完成通信。Link Driver模块封装一些GPP与DSP之间底层的控制操作,同时负责控制DSP端的执行以及数据传输。
DSPLink通过在ARM和DSP两端触发硬件中断的方式来实现双核之间的通信,实际上并不能够达到高速的数据传输。但在本设计中,采用双FIFO共享内存的方式可有效解决这一问题。
在实际传输中,数据并不需要直接从DSP搬移到ARM,这种搬移必定会占用较多的时间,效率低下。本设计中通过对输入数据在两块FIFO间进行乒乓缓存的方式完成。当一块FIFO存满时,只需要利用DSPLink将该FIFO在共享内存中的地址以及数据大小传递给ARM,ARM直接从共享内存中取出使用,这样可以大大提高双核之间数据传递的效率。该共享内存结构如图4所示。
然而,在这个过程中存在一个问题,由于ARM运行Linux系统,进程运行时使用的是虚拟地址,所分配的一串内存在DSP端可能并不是一片连续的物理内存,这就为共享内存的实现带来了较大的麻烦。为了解决这个问题,采用了TI公司提供的连续内存管理CMEM(Contiguous Memory Manage)函数库。CMEM是一个API函数库,用于管理一块或多块连续物理内存。CMEM同时提供了地址转换服务和用户模式的缓存管理API,用于管理一个或多个连续的物理内存并提供地址转换功能,物理连续地址内存用于主处理器与DSP的数据缓存共享。
通过CMEM可以有效地解决DSPLink不能分配大片连续内存的问题。CMEM提供了ARM核Linux程序和DSP程序的直接数据缓存共享,此外还可以提供ARM核Linux中不通过MMU存取内存调用硬件加速器的方法。
利用CMEM基于POOL的配置,能够避免内存碎片,且能够保证即便系统已经运行了很长一段时间,也可以分配到很大一块连续物理内存块[4]。
至此,ARM端只需要通过网络便可以将监测到的信息回传到PC客户端,完成监测任务。
1.3 网络接口设计
ARM通过网络接口与PC相连,通过网络来完成与用户的数据交互。网络结构的标准模型是OSI模型,该参考模型从上到下分为7层,分别为:应用层、表示层、会话层、传输层、数据链路层及物理层。在实际应用中,通常使用TCP/IP网络模型,该模型从上到下分为4个层次:应用层、传输层、网络层和网络接口层(即物理层)[8]。其中应用层、传输层、网络层均在移植Linux系统时集成,本文不做重点讨论。物理层对应OSI模型中的数据链路层和物理层。数据链路层包括LLC(Logic Link Control)和MAC(媒体访问控制器)子层,LLC负责与上层(网络层)通信,MAC负责对物理层的控制。本系统中数据链路层使用OMAP-L138内部集成的EMAC模块实现,而物理层使用NS公司的PHY芯片DP83640实现。
DP83640是一款具有IEEE 1588功能的Ethernet PHY芯片。可以在100 Mb/s的高传输速率下,通过以太网连接的IEEE 1588精密时间协议(PTP)实现系统之间的精确同步。
DP83640通过OMAP-L138提供的标准媒体独立接口MII(Media Independent Interface)与其连接,其硬件连接图如图5所示。
MII接口以4 bit的方式双向传输,时钟为25 MHz,工作速率可以达到100 Mb/s。MDIO为MII的管理接口,用来传送MAC层的控制信息和物理层的状态信息。MDIO具有两根信号线,一个时钟信号,一个数据信号。利用MII接口可以确保在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。
2 接口测试
2.1 ARM与DSP数据传输测试
测试ARM与DSP之间的通信时,通过DSP往ARM端传递消息。测试中,共发送1 000条消息,测试结果如图6所示。
从图6中可以看出,传递1 000条消息总共耗时359 704 μs,即ARM与DSP之间传递一条消息大约耗时359 μs,利用文中提到的共享内存的方式,便可以在359 μs内完成一次大量数据的传输,传输性能得到了大大的提高。在本应用中,所选用的共享内存FIFO大小仅为8 KB,但此时等效的传输速率已经达到178.4 Mb/s。
在实际应用中,可以根据需求来设定FIFO大小,从而可以改变ARM与DSP之间的等效传输速率。
2.2 网络传输速率测试
测试方法:
(1)接收机作为客户端,接收PC数据;
(2)接收机作为服务器,往PC写数据。
测试工具选用Linux平台上的开放网络测试工具bwm-ng,能够准确地测试网络通信速率[9]。
2.2.1 PC往接收机传送数据速率测试
此种情况下PC作为服务器往接收机发送数据,测试得到的通信速率可以达到61 Mb/s左右,最快可以达到64 Mb/s,这个速率能够满足大多数的应用。
2.2.2 接收机往PC回传数据速率测试
在这种情况下,接收机作为服务器往PC客户端传输数据。PC端观测到的接收速率在14.5 Mb/s左右,对于回传频谱监测后的数据已经足够。
对比以上测试结果,在这两种情况下,获得的结果存在一定的差异,主要原因为当接收机作为服务器往外发送数据时,由于其时钟频率仅有300 MHz,而使用的PC主频接近2.4 GHz,所以发送速率较PC慢。但从两者可以看出,本设计中的网络接口部分可以达到上行14.5 Mb/s、下行64 Mb/s的传输速率,已满足大多数的网络传输应用需求。
本文采用OMAP-L138双核处理器,结合FPGA实现了数字频谱监测接收机中的高速传输接口。利用uPP接口,DSP与FPGA之间最大通信速率可以达到2 400 Mb/s,能很好地满足频谱监测任务的需求。双核间采用共享内存的方式,有效地解决了双核系统间的高速传输问题,此设计可以很方便地扩展到其他应用中。
参考文献
[1] 费连.无线电监测系统的革新——网络化小型频谱监测系统的概念及主要技术要求[J].电子测量与仪器学报,2009(S1):180-184.
[2] 陈祝明.软件无线电技术基础[M].北京:高等教育出版社,2007.
[3] Texas Instrument Inc..OMAP-L138 technical reference manual[Z].2009.
[4] DSP+ARM双核处理器OMAPL138开发入门[M].北京:清华大学出版社,2013.
[5] 徐萍,左洪成,徐婷.基于双FIFO乒乓缓存的多速率匹配McBSP接口设计[J].电子质量,2011(9):29-31.
[6] 林上升,韩润萍.基于OMAP3530硬件平台的ARM和DSP协同开发方法[J].电子技术应用,2013,39(2):6-8.
[7] Texas Instrument Inc.DSP/BIOS LINK user guide[Z].2010.
[8] 邴哲松.ARM Linux嵌入式网络控制系统[M].北京:北京航空航天出版社,2012.
[9] Volker Gropp.Bandwidth monitor NG[EB/OL](2007)[2014-03-31].http://www.gropp.org.