电路交换域数据采集系统的FPGA设计

2014-02-01 08:41何赞园吉立新
电讯技术 2014年11期
关键词:存储器数据流以太网

何赞园,王 凯,吉立新

(国家数字交换系统工程技术研究中心,郑州 450002)

1 引 言

传统的数据采集系统是基于某种特定场景进行语音或图像数据实时采集,采集的容量都仅局限于单路或多路[1-3]。而在电路交换域中,往往面临着数以万计的通道数据需要采集,传统的数据采集系统就显得力不从心。在电路交换领域中,也有使用专用传输设备,直接和传输线路对接,数据流经过串并转换后映射到外部存储器中,由CPU或者DSP按照访问内存的方式完成数据的采集、封装、输送至大数据库。采用处理器直接对数据进行处理,这种数据采集模式对于处理器的性能要求较高,处理器的处理能力直接会影响到数据采集的实时性,而且随着传输线路端口的增加,投入成本将成线性增加,处理器的处理能力会成为海量数据采集的瓶颈。本文介绍一种基于现场可编程门阵列(Field Programmable Gate Array,FPGA)实现的时分复用模式(Time Division Multiplexing,TDM)线路数据采集方法,集成可编程片上系统(System on a Programmable Chip,SOPC)技术,完成信令处理引导,硬件电路自动完成媒体数据流的实时采集处理,并可以根据海量数据库的要求,完成数据包的任意格式封装,运行速度快,扩展性强,处理能力高,在电路交换域的海量数据实时采集中得到了很好的使用。

2 电路交换域的数据采集模型

电路交换域的数据通常在信令引导下,以时分复用的形式完成交换和传输。本文设计的电路域数据采集系统包括线路接口单元、时隙交换单元和控制处理单元以及采集输出单元。线路接口单元完成线路对接,时隙交换单元实现基于时隙的交换,将信令时隙汇聚由控制模块处理,根据信令引导,启动采集单元完成采集、组包和输出。基于FPGA实现的数据采集模块接收CPU所下发的规则信息,对采集数据进行封装,最后以用户数据报协议(User Datagram Protocol,UDP)的格式完成数据的输出,实现基于电路交换域的数据实时采集功能。图1为基于FPGA实现的电路交换域的高速数据组包系统模型。

图1 数据采集模型功能框图Fig.1 Model of data acquisition

如图1所示,线路接口单元完成线路接入功能,产生多路脉冲编码调制(Pulse Code Modulation,PCM)格式的数据。串行格式的数据流转换为并行数据,按照不同的交换时隙完成相应端口的存储,以并行数据的模式暂存于外部存储器接口(External Memory Interface,EMIF)中[4],再按照时序关系要求,经由EMIF接口转存到采集FPGA的相应空间。EMIF接口是交换网络芯片与数据采集FPGA的单向数据接口。同步时钟为16.384 MHz。帧同步信号指示每帧的第一个字,每帧长度2 048个字,按顺序分别对应2 048个端口。每个端口又分为来话和去话两部分,来话占用数据的高字节,去话占用数据的低字节,相应的时序关系如图2所示。

图2 EMIF接口数据时序图Fig.2 Sequence diagram of EMIF interface data

选择FPGA实现电路交换域的媒体数据自动组包,主要是考虑到FPGA特有的体系结构和逻辑单元灵活、集成度高以及适用范围宽的特点。在该设计中,选择Altera公司的Cyclone IV系列的EP4CE40F23C8芯片为目标FPGA[5]。

3 数据采集FPGA的设计实现

电路交换域数据采集系统的FPGA设计的功能框图如图3所示,主要包括全局功能模块、基础网络模块、数据采集模块、数据流管理模块以及以太网接口等5个模块。

图3 FPGA设计功能框图Fig.3 FPGA design

如图3所示,数据以高速并行时分复用的接口格式输入,经由FPGA中全局管理模块以及数据流管理模块完成格式数据处理,最后以AVALON总线[6]的格式由以太网接口模块处理后,依照UDP的格式完成数据的输出。

3.1 全局功能模块

全局功能模块为其他模块提供CPU接口、时钟网络、管理寄存器以及复位等基础功能,是该FPGA的基础模块。

CPU接口是外部处理器管理本芯片内部功能的异步处理器接口,总线宽度16位,地址空间64K。信号逻辑遵循CPU接口标准,并且使用了输入/输出同步寄存器,保证了芯片外部信号的稳定性[7]。

时钟网络为FPGA内部以及外围其他电路提供时钟。时钟网络使用了FPGA芯片内部两个锁相环和全局时钟网络电路,为系统提供了可靠的、低延时和低抖动的时钟信号质量。为保证CPU可以随时接管数据采集模块和数据存储器,使用了时钟网络中的时钟选通电路,通过配置管理寄存器可以使这些模块的同步时钟在内部时钟与CPU同步时钟之间互相切换,保证访问时序同步。锁相环之一的PLL2的参考时钟由外部25 MHz晶振提供,输出的125 MHz时钟在片内提供给千兆以太网OSI模型数据链路层(Media Access Control,MAC)的千兆媒体独立接口(Gigabit Medium Independent Interface,GMII)接口使用。为外部千兆以太网PHY(OSI最低层,物理层)芯片提供25 MHz和125 MHz时钟激励。为使以太网接口可以工作在10/100/1 000M自适应模式下,百兆以太网MII接口使用的25 MHz时钟信号与125 MHz时钟占用了一个时钟选通电路,可以通过配置寄存器进行切换。

管理寄存器是芯片的功能配置寄存器,存储CPU与芯片内部模块之间的管理信息,其内容与芯片的运行状态有密切关系。CPU控制模块根据信令引导采集过程,保证采集数据的有效性和完整性,并根据控制流程,配置每个数据流的标志。

3.2 基础网络模块

基础网络模块实现CPU与千兆以太网接口间的互联,使CPU可以通过千兆以太网发送接收通信数据包。除了支持系统数据的UDP采集链信令数据包外,还需要支持通用网络协议使用的以太网通信数据包。

基础网络模块的基本结构如图4所示。

图4 基础网络模块基本结构图Fig.4 Basic network module structure

图4中软件接口负责基础网络模块内部的地址划分和处理器命令存储,并向处理器提供中断源。

接收队列和发送队列实现通信数据包缓冲和时钟域转换。它们由两个双时钟先入先出队列构成,这两个队列在与软件接口的连接侧使用处理器提供的50 MHz时钟进行同步读写操作,在与数据流管理模块的连接侧使用全局模块提供的64 MHz系统时钟进行同步读写操作。这样在系统内部所有数据操作都是时钟同步操作,保证系统传输可靠性。数据流管理模块通过CH1通道实现接收队列、发送队列与千兆以太网MAC间的数据连接。数据采集模块与千兆以太网MAC间的数据连接通过CH2通道实现。在系统中CH1比CH2有更高的处理优先权。

3.3 数据采集模块

数据采集模块负责把高速并行EMIF接口的数据封装成UDP格式数据包,其功能框图如图5所示。

图5 数据采集模块功能框图Fig.5 Data acquisition module

EMIF接口是一个时分复用的数据接口,以帧的格式进行数据封装,每个数据帧分为4 096个时隙,每个时隙内传送一个端口的8位数据(1字节),端口也是4 096个。端口号与时隙号一一对应。采集模块把接收到的EMIF端口数据按照端口号排列,缓存在存储器内,每个端口缓存512个字节(即512个数据帧)。缓存完成后这512个字节被封装进一个数据包内发送到后台服务器。如果要把4 096个端口的数据全部发送到服务器,则每次采集需要发送4 096个这样的数据包。发送到后台服务器的数据包使用UDP传输协议封装。一个标准的UDP数据包在媒体层必须有以下几部分:MAC段,以太网媒体层规定的标准格式,指定数据包的物理地址和使用的传输协议;UDP数据段,指定数据包的IP地址和传输端口;数据段,用户数据;开发系统(Field Bus Control System,FCS)段,数据包的循环冗余校验码(Cyclic Redundancy Interface,CRC)效验信息。

在数据采集模块组装数据包的流程中,把UDP数据包分为两个部分。

(1)软件组装段,这部分数据是在每次数据采集任务开始后每个UDP数据包之间相同的数据段,由处理器在任务初始化的时候装定;

(2)硬件组装段,这部分数据是在每次数据采集任务开始后每个UDP数据包之间不相同的数据段,由数据采集模块在UDP数据包发送前组装好。

数据采集模块在工作时会通过数据缓冲管理子单元把EMIF接口接收到的数据写入数据存储器(此处假设是数据存储器#1),每个端口缓冲512字节,总共缓冲4 096个端口。缓冲完成后数据缓冲管理子单元会通知数据包生成子单元把数据取走。与此同时数据缓冲管理子单元会开始对另一片数据存储器(数据存储器#2)开始写入操作。

在数据缓冲管理子单元对数据进行采集的同时,数据包生成子单元同时在发送缓冲完成的数据。数据包生成子单元内的数据读取器在读取一个端口的数据包前会扫描端口命令查找表。端口命令查找表是一个双端口随机存储器,它的写入端口由CPU处理器通过软件接口和信令数据包分析器共同管理。读出端口由数据读取器管理。端口命令查找表内部分为4 096个数据段,每个数据段存储的数据都对应一个端口。

在端口命令查找表中得到端口信令数据后,数据读取器分别把信令数据和语音数据写入数据包生成缓存。数据包生成缓存是一个双端口随机存储器,写入端口在初始化阶段由CPU通过软件接口管理,写入UDP数据包的软件实现数据段;在数据采集工作开始后写入端口由数据读取器接管,写入UDP数据包的硬件实现数据段。

3.4 数据流管理模块

如图6所示,数据流管理模块负责读出基础千兆网络模块和数据采集模块在发送端存储器中准备好的以太网数据包,转换成AVALON-ST接口格式,传输到千兆MAC模块;从千兆MAC读出接收到的以太网数据包,传输到基础千兆网络模块的接收端。

在系统侧数据流管理模块的接口是存储器接口,在以太网侧是AVALON-ST接口。在该模块内需要进行数据格式的转换,总线转换模块会根据AVALON-ST总线的状态实时把存储器数据流转换成符合AVALON总线格式的数据流。

3.5 以太网接口模块

如图7所示,以太网接口模块实现千兆以太网的MAC层和PHY层功能,其中MAC层由ALTERA公司提供的IP CORE“Triple-Speed Ethernet MegaCore”[8]在FPGA片内实现;PHY层由VITESSE公司的商用芯片VSC8201[9]实现。

千兆MAC实现的是10/100/1 000M自适应以太网媒体层模块,以太网数据由数据流管理模块通过AVALON-ST接口提供。千兆MAC内部实现数据缓存、CRC效验、数据帧同步、冲突检测等功能。

图7 以太网接口模块功能框图Fig.7 Functional block diagram of Ethernet interface module

千兆MAC通过其自带的管理接口挂载在CPU接口上进行管理。由于AVALON-MM接口是32位数据总线,如果选择的CPU是16位数据总线,则需进行总线格式转换,因此该设计中选择使用AVALON-ST接口。

以太网MAC层和PHY层的接口采用MII /GMII格式。

4 系统的软件接口

在该系统中,系统的软件接口共涉及到系统全局管理寄存器、接收发送队列、数据包生成、数据存储器、千兆MAC等五个方面。CPU可以通过访问这些软件接口来管理芯片的各项功能。假定本芯片访问起始地址为BASE_ADDR=0x0000,其他的设置均为寄存器实际地址计算公式为BASE_ADDR+地址偏移量。

如表1所示,全局管理寄存器提供软件复位,处理器初始化标志,全局初始化在芯片工作环境改变后启动,以保证芯片采集参数正常。芯片工作环境改变包括采集服务器、本板MAC地址、IP地址改变以及系统复位或重新上电等多种情况,还包括端口地址扩展和状态寄存器。

表1 全局管理寄存器列表Table 1 Global management register list

如表2所示,接收和发送队列模块,接收发送队列由先入先出队列构成,负责缓存处理器与以太网接口间的网络数据包。

数据包生成模块用于管理芯片的数据采集功能,数据采集功能需要软件管理的是数据包生成缓存和端口命令查找表。访问数据包生成缓存前,需要使芯片进入初始化模式;访问端口命令查找表前,需要进入初始化或处理器管理模式。

CPU可以通过数据存储器软件接口访问数据存储,访问存储器前,需要使芯片进入初始化模式,并且在端口地址扩展寄存器填写相应的端口序号和存储器选择位。

表2 接收和发送队列模块寄存器列表Table 2 Sending and receiving queue module register list

CPU通过千兆MAC软件接口访问千兆MAC模块,接口地址偏移量为0x1800。在上电或复位后须重新初始化千兆MAC模块,千兆MAC模块不保留上次初始化的寄存器数据。

5 数据采集模型的实验结果

采用FPGA嵌入的逻辑分析仪对数据组包模块进行测试,结果如图8所示。

图8 数据组包逻辑分析仪实时数据Fig.8 Data from packet data logic analyzer

对照逻辑分析仪测试结果说明如下:

实验的模型基于STM-1(Synchronous Transfer Mode,同步传输模式,STM-1的速度为155.52 Mb/s)的线路接入,通过程序可以模拟128路的呼叫同时进行,呼叫端口覆盖STM-1的所有端口,经过该FPGA实现数据组包,最后根据采集服务器上的数据包来统计整个呼叫时间段的总呼叫数。

从模拟呼叫端的统计起呼总数为324 756个,在服务器接收侧统计达到完全正确的输出的数量为322 754个,可以达到99.38%,存在接近0.6%的丢包,在应用的角度可以达到系统的设计要求。FPGA的以太网输出速率计算出为244 Mb/s,以太网的设计带宽能够满足系统的实际需求。

该设计基于FPGA实现电路交换域的数据组包,采用的是Altera公司的Cyclone IV系列的EP4CE40F23C8芯片设计,整个系统使用VHDL语言进行描述,图9为所使用的硬件资源情况。

图9 FPGA硬件资源使用情况Fig.9 The FPGA hardware resource usage

6 结 论

本文选择FPGA来完成电路交换域的数据组包,实现了1个STM-1的链路数据的实时组包;采用数字交换网络完成实时STM-1的数据的并行处理,根据系统的时序要求,在FPGA中用标准硬件描述语言(Very High Speed Integrated Circuit Hardware Description Language,VHDL)语言合成数据组包设计,使实现电路交换域数据的实时采集开销尽可能少,给数据的进一步处理留下充足的时间。经过测试,各方面都达到了很好的效果。考虑到应用的可行性,目前该芯片仅能提供1个STM-1的数据容量采集,并且尚未达到100%采集正确率,还有待继续优化电路。通过该FPGA的设计,为后续可能进行的IC设计提供了一个功能验证平台。

[1] 伍乾永,陈彬.基于FPGA的实时图像数据采集模块设计[J].微电子学,2008,38(3):453-456.

WU Qian-yong,CHEN Bin.Design of Real-Time Image Data Acquisition Module Based on FPGA[J].Microelectronics,2008,38(3):453-456.(in Chinese)

[2] 蒋伟林,胡跃明,陈安.基于FPGA的实时图像采集系统[J].计算机测量与控制,2011,19(5):1215-1231.

JIANG Wei-lin,HU Yue-ming,CHEN An.Image Acquisition System Based on SOPC[J].Computer Measurement & Control,2011,19(5):1215-1231.(in Chinese)

[3] 王永利.基于FPGA的实时图像处理平台的研究与设计[D].沈阳:东北大学,2011.

WANG Yong-li.The Study and Design of Real-time Image Processing Platform Based on FPGA[D].Shenyang:Northeastern University,2011.(in Chinese)

[4] 朱文斌,刘春平,黄振.基于FPGA的高可靠性SDRAM控制器设计与实现[J].电讯技术,2011,51(10):113-116.

ZHU Wen-bin,LIU Chun-ping,HUANG Zhen.Design and Implementation of a High Reliability SDRAM Controller Based on FPGA[J].Telecommunication Engineering,2011,51(10):113-116.(in Chinese)

[5] Altera Company.Altera Cyclone IV Device Handbook[M].San Jose,CA:Altera Company,2013.

[6] Altera Company.Altera Avalon Interface User Guide[M].San Jose,CA:Altera Company,2011.

[7] 何赞园,王凯,吉立新,等.基于ATCA架构的可重构通信处理机设计[J].电讯技术,2014,54(2):115-120.

HE Zan-yuan,WANG Kai,JI Li-xing,et al.ATCA-based Reconfigurable Communication Processor Design[J].Telecommunication Engineering,2014,54(2):115-120.(in Chinese)

[8] Altera Company.Altera Triple Speed Ethernet MegaCore User Guide[M].San Jose,CA:Altera Company,2012.

[9] VITESSE Company.VSC8201 Datasheet[EB/OL].(2006-10-12)[2014-05-20].http://www.vitesse.com.

猜你喜欢
存储器数据流以太网
静态随机存储器在轨自检算法
汽车维修数据流基础(上)
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
汽车维修数据流基础(下)
谈实时以太网EtherCAT技术在变电站自动化中的应用
基于数据流聚类的多目标跟踪算法
浅谈EPON与工业以太网在贵遵高速公路中的应用
Altera演示FPGA中高性能DDR4存储器数据速率
北医三院 数据流疏通就诊量
存储器——安格尔(墨西哥)▲