基于ARM Cortex-M3的高速误码测试系统设计
2013-06-29吴聪,谢虎
吴 聪,谢 虎
(1.重庆邮电大学信号处理与片上系统实验室,重庆 400065;2.上海欣诺通信技术有限公司,上海 201613)
受3G、三网融合以及各种新型网络应用的逐渐普及的影响,通信行业正在经历从以往的语音通信业务为主向大力发展数据业务转型,通信网络的数据传输量大幅增长。据中国电信估计,未来5年骨干网流量每年将增加56% ~80%,因而我国骨干网带宽需要扩大10~20倍。目前我国的骨干传输网都是基于10 Gbit/s速率传输的,随之而来,在网络建设、施工以及维护中对于基于10 Gbit/s速率的高速误码测试仪器的需求更显迫切。
误码测试仪主要用于对现代数字通信系统的误码性能测试与评估[1]。目前市面上已经有多种误码测试仪,国内的误码测试产品普遍信号处理速度比较低,美国Agilent公司、Tektronix公司生产的高端、成熟的误码测试仪功能完善,处理速率很高,但是价格十分昂贵。因此设计一种廉价的高速率误码测试仪对我国光通信网络建设和发展都有重要意义。
1 误码测试系统原理
误码测试系统由发送模块和接收模块两部分组成[2]。发送端模块的测试码发生器产生一个已知序列的伪随机码序列数据流送入被测试系统的输入端,在经过被测试系统后,接入误码测试系统的接收端模块,接收端将产生与发送端相同并同步的伪随机码序列,与收到的信号进行对比,如果不同则认为是误码,对误码计数器加1,随之记录并显示测试结果[3]。测试系统原理图如图1所示。
图1 误码测试系统原理图
2 系统硬件概述
LM3S9B90是TI公司的32位ARM Cortex-M3微处理器,CPU时钟高达80 MHz,处理速度达到1.25 MI/s(兆指令/s)[4]。它整合了Cortex-M3 和Thumb-2 指令集。Thumb-2技术可以使16位和32位指令并存,带来了代码密度和性能的最佳平衡。Thumb-2比纯32位代码占用少26%,同时带来25%的性能提升,它为对成本尤其敏感的嵌入式微控制器应用方案带来了高性能的32位运算能力。LM3S9B90丰富的外设接口简化了硬件电路的设计[5],片内256 kbyte的Flash和96 kbyte RAM对于本设计中存储器的需求也已经足够,不需要外置存储芯片,降低了系统成本。
Si5040是Silicon Laboratories生产的在数据发送和接收端都带有信号抖动消除单元的10 Gbit/s XFP收发器。Si5040低功耗低抖动性能非常适合空间有限的XFP模块应用,Si5040是连续支持9.9~11.4 Gbit/s之间所有电信与数据通讯协议和信号抖动消除能力的收发器芯片,支持协议包括 OC-192/STM-64、10 Gbit/s Ethernet、10 Gbit/s Fiber Channel及其FEC速率,同时还支持模拟信号LOS监测、数字信号CID(连0或连1)监测以及数字眼图(Eye Opening)3种信号质量监测功能。此外,Si5040还提供线路环回检测、XFI回路检测和收发双向的PRBS码流生成和检测功能,这使得系统级的测试和调试变得更简单。通过MCU的I2C或SPI接口可完成芯片寄存器配置和状态监测[6]。
误码测试硬件系统由上位机、控制模块、误码测试模块和被测线路或设备构成,系统硬件结构如图2所示。其中上位机(PC)是人机交互设备,上位机软件主要用于操作对误码测试系统的控制以及对误码测试系统的各项数据进行监控;控制模块和误码检测模块共同构成误码测试系统的硬件部分,其中控制模块由微控制器LM3S9B90和外围电路组成,是整个系统的核心部分,主要完成与上位机、Si5040芯片以及XFP光模块的通信连接;误码测试模块由Si5040误码测试芯片和XFP光模块构成,Si5040芯片用于产生高速伪随机码、完成码型同步及对比,检测出误码数(Error Count),XFP光模块用于光电信号的转换;被测线路或设备是被用于误码测试的线路或设备。
图2 误码测试系统硬件结构框图
误码测试系统工作流程如下:微控制器LM3S9B90对Si5040寄存器复位后配置成为误码测试模式;Si5040产生10 Gbit/s的伪随机码流电信号,XFP模块将Si5040传输过来的电信号转换成光信号通过TX端发送到测试线路中去;在接收端,XFP模块的RX端将接收到的光信号转换成高速电信号后传递给Si5040;Si5040将接收的高速电信号与发端伪随机码进行同步比较,在电域中得出误比特数并记录到寄存器中;上位机软件会每隔100 ms向微控制器发送读取指令,微控制器读取Si5040的寄存器值后立刻返回给上位机,上位机将受到的信息解析后,将误码数、误码率等信息显示到界面中,完成误码测试。
3 软件设计
本文中设计的误码测试系统软件分为底层驱动程序、应用程序和上位机程序3部分。其中,底层驱动主要完成对微控制器的控制以及与外设之间的底层通信。应用程序是底层外设与上位机之间的连接桥梁,主要完成从上位机读取指令、分析指令做出相应的对底层外设信息读取或配置,最后将数据返回给上位机。上位机软件主要实现从串口接收微控制器发送回来的误码测试信息,并将此信息进行解析,实时显示测试时间、误码数、误码率以及各种告警信息,同时完成误码测试码元设置、误码测试时间设置、误码率告警阈值设置、误码测试结果记录等功能。软件设计结构如图3所示。
图3 误码测试系统软件结构框图
3.1 底层驱动程序
Luminary Micro®Stellaris®外围驱动程序库是一系列用来访Stellaris系列的基于ARM®CortexTM-M3微处理器上的外设的驱动程序[7]。TI Stellaris系列M3/M4之所以强大,StellarisWare软件库提供的快速软件开发解决方案功不可没。开发者不必对M3微处理器内部寄存器悉数了解,只需要调用相应驱动库就可以实现对M3微处理器的控制。
在本设计中使用StellarisWare软件库提供的外设驱动程序,大大节约了开发时间,提高了开发效率。
3.2 应用程序
LM3S9B90的应用程序是底层外设与上位机之间的连接桥梁。应用程序采用中断方式通过UART驱动接收上位机发过来的串口指令,调用SPI和I2C驱动来读取或设置XFP光模块和SI5040的寄存器。应用程序是一个被动过程,上位机给应用程序发送相应的指令后应用程序才去响应上位机,例如,上位机向应用程序发送指令要读取SI5040的误码数,应用程序收到指令后再调用SPI驱动去读取误码数,之后将读到的误码数返回给上位机。图4为应用程序流程图。
图4 应用程序流程图
微控制器的初始化包括对系统时钟初始化、串口初始化、I2C初始化、看门狗初始化、I/O初始化。系统外部接16 MHz晶振,通过PLL再分频后系统时钟配置成80 MHz。串口初始化时配置成波特率115200 Baud,数据位8位,停止位1位,接收中断使能。对微控制器的SPI和I2C端口都配置为主机模式,设置Si5040和XFP模块从机地址。为防止程序出错,设计中启用了看门狗,如到达设定看门狗时间内没有对看门狗计数初值进行重新填充,看门狗就会复位微控制器。在LM3S9B90中串口、SPI和I2C接口都是和GPIO复用的,而且默认状态下GPIO都是没有启用的,因此需要对相应I/O口启用并设置用做特殊接口。
在对微处理器初始化后,紧接着需要对Si5040进行复位,这样Si5040的所有寄存器都会恢复默认值,目的是为了消除上一次测试对本次的影响。之后程序进入等待状态,当微处理器通过中断方式受到上位机发的指令之后首先判断指令是否正确,如不正确就清空接收缓存,继续等待上位机发送过来的指令,如接受到的指令正确就执行串口响应程序,并将数据返回给上位机,完成对上位机的响应。
3.3 上位机软件
上位机软件是测试人员对误码测试系统硬件监控接口。上位机的功能包括:控制误码测试功能开启和停止;显示误码数目、运行时间及BER;监控测试系统输入输出光功率;控制XFP模块激光器开关;记录测试结果、各种告警监控以及根据检查需要设置检测参数(产生与检测码型、码型翻转、测试时间、误码率阈值等)。告警显示的信息有“时钟是否失锁”、“是否失去同步”、“XFP激光器是否打开”、“误码测试记录”、“接收光功率是否过低”、“串口是否连接”。
上位机监控软件以Windows XP环境采用Microsoft Visual Basic 6.0开发的,上位机软件主要由测试和设置两个界面构成。测试界面内容包括测试时间、误码数、误码率、输入和输出光功率、告警信息测试按钮等,设置界面内容包括码型设置、码型翻转设置、测试时间设置、误码率阈值设置和测试结果记录设置。测试界面如图5所示。上位机软件开发分成用户界面开发、窗体和空间属性设置和程序开发3个步骤。首先根据系统需求设计好窗体界面,设置窗体和系统控件的属性,然后编写应用程序,由于VB采用事件驱动模式,所以最后需要把应用程序调用到控件中去。
图5 误码测试系统测试界面(截图)
在设置好测试参数后,当用户点击测试界面中的STRAT按钮控件时,激发误码测试程序,程序调用MSCOMM控件向串口发送读取误码数的指令到微控制器,然后将微控制器返回的数据解析为误码数和BER显示到测试界面中。程序每100 ms读取一次误码数目,每1 s读取1次告警信息,并实时地将这些信息解析显示到测试界面中,达到实时监控的目的。
4 误码测试性能
经过实验测试,本设计中的上位机与LM3S9B90、LM3S9B90与Si5040和XFP光模块之间均能正常通信。根据本设计方案设计的误码测试系统已经运用于WDM系统中的10 Gbit/s波长转换单元的误码性能测试。与美国Agilent公司的4960B误码测试仪进行对比测量的结果来看,在测试码型为PRBS31,测试时间为60 min的测试条件下两种设备的误码率和误码数基本一致。
5 结束语
本误码测试系统采用了价格低廉的高性能微控制器LM3S9B90和带误码检测功能收发器芯片Si5040,既保证了较高的误码测试仪性能,又很好地控制了测试系统的成本。与Agilent公司的4960B的对比测试更是体现了系统的优秀误码测试性能。本系统设计简单,价格低廉,可以代替国外昂贵的高速误码测试仪,用于基于10 Gbit/s速率的光通信系统以及10 Gbit/s速率光模块的测试。
[1]李履信,沈建华.光纤通信系统[M].北京:机械工业出版社,2003.
[2]王苗苗.基于DS2172的误码测试仪的设计[D].保定:河北大学,2008.
[3]潘东.基于ADμC7020的误码测试仪设计[J].单片机与嵌入式系统应用,2010(10):44-45.
[4]TI Corporation.LM3S9B90 Datasheet[EB/OL].[2012-05-10].http://www.ti.com/product/lm3s9b90.
[5]马钧元.基于Cortex和ZigBee的智能家居网关设计与实现[J].电视技术,2012,36(1):56-58.
[6]Silicon Labs Corporation.SI5040 Datasheet[EB/OL].[2012-05-10].http://www.silabs.com/pages/product/SI5040.
[7]TI Corporation.Stellaris®peripheral driver library user’s guide[EB/OL].[2012-05-10].http://wenku.baidu.com/view/a2e24da40029bd 64783e2c33.html.