基于DSP和PCI总线的通信数据采集系统
扫描二维码
随时随地手机看文章
随着移动通信突飞猛进的发展,移动通信的数据业务量急剧上升,监控大容量的移动数据业务成了电信运营商刻不容缓的需求。而移动通信数据的传输一般都是基于E1链路。因此从E1链路上采集通信数据成了移动数据业务监控最基础的一部分。
数字信号处理器能够高速地处理数据并具有强大的数据吞吐能力,在数据采集领域获得了广泛的应用。而PCI总线也因为极高的数据传输速率、与处理器无关、能支持多个外设等独特性能,逐渐成为数据采集领域微机总线的主流。本文中的采集系统就是运用TI公司的TMS320C5410高速定点DSP和PLX公司的PCI9052 PCI总线接口芯片来搭建的。
1 系统功能概述
根据实际应用的需要,系统的主要功能有:
(1)可以同时采集处理一条E1链路上所有32个时隙的数据;
(2)对数据进行链路层协议解包后,重新打包成特定的格式,交给上层系统(PC机)保存或进一步处理。对链路数据状态和采集的统计信息进行监测,定时生成报表,交给上层系统实时显示;
(3)系统应具有尽量大的软件升级功能和灵活性,便于系统提高性能或者应用于其他通信业务数据的采集。
本系统的设计难点主要是如何实现DSP与PCI9052之间高效率的数据通信。如果PCI9052和数据采集芯片共用一条总线,势必会造成数据读写上的冲突,影响工作效率,因此在系统中PCI9052通过DSP上专门的高速主机通信接口(host port interface,以下简称HPI口)和DSP进行通信。但是HPI口总线是一个非常特殊的总线,它采用访问寄存器的方式来进行DSP内部数据的读写,把HPI口单纯映射到PCI的I/O空间或者存储器空间,有不可避免的缺点。本文提出了一种双映射方法,成功地解决了这一问题,实现了DSP与PCI9052之间方便、高速的数据通信。
2 系统的硬件设计
整个硬件系统主要由DSP、PCI总线接口芯片和链路数据采集芯片组成。
本系统采用TI公司的TMS320C5410(以下简称C5410)DSP,该芯片的特点有[1][2]:
·处理能力可达到100MIPS;
·采用多总线技术,一条指令可以同时访问数据和程序空间,具有高度并行性;
·具有改进型的8位HPI接口,主机通过HPI口可以访问DSP系统的任何一个存储器单元,而且外部访问和DSP内部操作相互独立,互不干扰;
·软件可编程的等待状态发生器,可以灵活地用不同速度的器件组建系统。
PCI接口芯片采用PLX公司的PCI9052,它是一款面向低端应用的高性能、工作在目标模式下的PCI接口芯片。PCI9052的本地总线宽度可以通过编程配置成8位、16位和32位,字节顺序也可编程选择,它提供了4个本地地址片选和5个本地地址空间[3]。这些特征为用户搭建PCI板卡带来了极大的方便和灵活性。
数据采集芯片采用了PMC公司的PMC4351。它可以同时采集三个时隙上的数据,可以通过编程选择采集或输出T1、E1数据,支持HDLC协议,可以进行去除CRC标志、复帧标志等预处理,为每个时隙提供128字节的发送FIFO和接收FIFO,有很完善的处理器接口。为了能够同时采集一整条E1链路上的数据,本系统采用了11片PMC4351组成链路数据接口单元。各个芯片之间的接口利用CPLD来完成,它的可编程性为各个组成部分之间的控制和通信提供了相当大的灵活性,也省去了大量外部电路,保证了硬件的方便调试和稳定工作。
具体的硬件框图如图1所示。
3 DSP的HPI 接口与PCI9052的连接
C5410上的增强型8位HPI口为上层系统提供了一个灵活访问DSP内部存储器的并行数据口。上层系统可以通过HPI口自由地读写DSP内部存储器中的任何一个单元。并且C5410为HPI口提供了专门的中断线,这样两个系统可以通过中断进行控制信息交互。HPI为上层系统的访问提供了四个端口,通过这四个端口上层系统可以读写HPI的地址寄存器(HPIA)和控制寄存器(HPIC);通过另外两个端口HPIDC和HPIDS来分别连续和单个读写C5410存储器中的数据。这四个端口由HCNTL0和HCNTL1来寻址,它们的地址分配如表1所示[2]。
本系统采取双映射方式来完成C5410与PCI9052的连接。第一个映射是将HPI口的四个寄存器分别映射到PCI空间的四个16位I/O口上。上层系统可以通过访问I/O端口的方式来访问这四个寄存器,而依照HPI口的工作流程就可以间接地访问C5410内部存储器。这四个寄存器和PCI9052本地I/O空间的对应关系如下:
HPIC——100H
HPIDC——104H
HPIA——108H
HPIDS——10CH
在这种映射方式下,上层系统可以通过PCI的I/O访问方式直接访问HPI口的四个寄存器,操作很直观。但是由于I/O访问无法进行突发传输,大大限制了数据传输速度。
第二种映射方式是将HPIDC寄存器映射成PCI空间的一个长度为2000H的8位存储器块。上层系统对该地址空间内任一单元的读写操作都会被映射成对HPIDC的读写访问,因此从该空间内读取一个长度为2000H的存储器块就会被映射成对HPIDC的2000H次读取操作,效果等效于从DSP内部存储器中读取连续1000H个16位字。写入的情况也类似。由上述可以看出,实际上这种模式形成了一个PCI存储器空间和DSP内部存储器空间之间一一对应的直接映射。
在这种模式下,数据在PCI总线上可以突发传输,所以大大提高了数据读写速度。但是如果把四个寄存器都映射为这个模式,接口逻辑会变得非常复杂。
上述两种模式都有局限性,因此本系统同时采用了两种映射模式。利用I/O映射来访问控制、地址寄存器和单个数据口,而用存储器映射来访问连续数据口。
在这种配置方法下,PCI9052和HPI口之间的硬件连接,主要利用PCI9052的读写控制信号ADS#、LBE[3..0]#、LW/R#、LRDY#和部分地址信号LA[3..2]进行简单的时序和逻辑转换后来生成HPI口的读写控制信号HBIL、HDS1#、HCNTL0/1、HR/W#。由于HPI口的访问时钟是C5410的外部频率CLKOUT的5分频,所以PCI9052的本地时钟采用CLKOUT/5。
所有控制信号的接口逻辑和时序转换都是由CPLD来完成,具体的连接方式如图2所示。
4 系统的软件设计
数据的采集与预处理需要在C5410数据存储器中开辟三种存储块:一种是DATA BUFFER,它与PMC4351中各个时隙的FIFO一一对应,用于缓存每个时隙上采集到的消息数据;第二种是DATA POOL(大小为1000H字),这是一个消息数据池,消息数据在DATA BUFFER中存满一整条消息后,就进行一些相应的预处理,加上一些TS包头后,形成一个新的消息包,存入到DATA POOL中;另外还要再开辟一个大小为1000H字的存储块HPI RAM,用于上层系统通过HPI来访问,这样就将DSP的数据采集部分与上层系统的通信部分相互隔离开来,互不干扰。在DATA POOL中存满数据后,就进行打包,形成一个大的数据包,交给HPI RAM,通过PCI 总线交给上层系统,进行进一步处理。整体的数据流图如图3所示。
由于DSP芯片的中断引脚数目有限,而且中断工作方式容易造成各个时隙数据采集不均匀的情况,本系统采用了轮询的工作方式。
本文提出的双映射配置方法和DSP软件工作策略,成功地将C5410 DSP和PCI总线相互连接,接口具有逻辑简单、操作方便、效率高等优点。在C5410的CLOCKOUT配置成64MHz的前提下,两者之间数据传输速率理论峰值可达12.8Mbps,实际系统实现的平均速率达到了10Mbps。由于本系统采用的链路采集芯片的微处理器接口最高速率为2Mbps,限制了同时采集时隙的数目,从而限制了本系统的整体采集性能。因此采用更加高性能的采集芯片,可以充分发挥HPI口与PCI9052之间的高速数据连接,同时系统也可以升级到同时采集10条E1链路。
本文实现的数据采集系统工作良好,并已经在电信部门得到采用。本系统具有应用领域广、可升级能力强、使用方便等特点。该系统目前已经不仅仅用于采集移动通信数据,也开始应用于采集V5、七号信令等协议的数据,满足了系统功能设计的要求。