摘要:误码测试仪是检测通信系统可靠性的重要设备。传统的误码测试仪基于CPLD和CPU协同工作,不仅结构复杂,价格昂贵,而且不方便携带。基于FPGA的高速误码测试仪,采用FPGA来完成控制和测试模块的一体化设计,提高了系统功能扩展性和系统的集成度,使得各个功能模块在不改动硬件电路的情况下可以相应变化。在发送端发送m序列作为测试数据,其测试速率最高可达到155 Mh/s。由于将物理层上的各协议层的功能集中到FPGA内部实现,减少了硬件和软件的设计复杂度,并且缩短了系统的开发的周期,具有可升级的特点。
关键词:高速误码测试仪;现场可编程门阵列;Vetilog硬件描述语言;模块图元;仿真;M序列码
误码分析仪作为数字通信系统验收、维护和故障查询的理想工具,广泛应用于同轴电缆、光纤、卫星及局间中继等符合CEPT(European Confence of Postal and Telecommunications Administrations)数字系列通信系统传输质量的监测。评价一个通信系统的可靠性的指标就是检测该通信系统在数据传输过程中误码率的大小,本文设计的高速信号误码测试仪,用于对EPON中接收和发送突发光信号的接收模块的可靠性进行检测。目前误码分析仪的工作模式已发展到如下4种:分析仪模式、发生器模式、分析仪/发生器模式、直通模式。本设计中的误码测试仪属于第3种类型,即该误码测试仪可以产生测试的码流,又可以进行误码测试。
误码测试仪主要由发送模块,接收模块,显示模块,控制模块等几个模块组成,系统硬件结构框图如图1所示。其中发送、接收模块在FPGA中实现,控制模块由单片机实现,显示模块由单片机驱动,这样使得设计的误码分析仪具有体积轻巧,接口丰富,简单易用,成本低廉,内核可升级等特点。
1 基于FPGA的误码测试仪的设计
FPGA在该设计中实现了误码测试仪的核心功能,FPGA设计使用的是自顶向下模块化的设计方法。基于FPGA设计的模块包括:SY87739L频率计的控制模块、SY87700时钟提取控制模块、计数模块、伪随机序列发送模块、数据接收模块、与单片机的通信模块。
1.1 频率合成芯片SY87739L的控制模块
在设计中SY87739L合成的频率用于伪随机序列合成的同步时钟,因为该误码测试仪可以测试的频率有32 Mb/s、64 Mb/s、122 Mb/ s、155 Mb/s 4种。所以该芯片要根据设置的参数合成相应的频率。具体合成哪一个,由FPGA来实现对SY87739L的控制。
SY87739L(规程式透明3.3 V 10~729 MHz分数N合成器)是一个频率合成芯片。依照一参考频率源,它可以合成10~729 MHz范围内的差分频率。此外它可以精确地为标准的传输协议合成相应的参考频率。SY87739L合成的频率是由一个32位的串行输入的编程数据决定。PROGCS为高电平时,编程数据才会被SY87739L接收。若用户需要改变编程数据获得一个新的频率时,应先将PROGCS设置为高电平,延时一段时间(待32 bit编程数据被SY87739L接收)后在回落到低电平。既在PROGCS的下降沿时,SY87739L会由前一时段接收到32 bit编程数据决定合成新的频率。具体步骤如下:1)确定编程数据的值;2)设置PROGCS为高电平;3)串行输入32 bit编程数据(由PROGDI管脚输入),同时在PROGSK端输入时钟信号;4)设置PROGCS为低电平;5)等待LOCKED跳为高电平。
根据SY87739L的工作原理,可以用硬件语言编写出SY87739L的控制代码,图2是由Verilog代码用Synplify Pro8.1综合出的图元。
该模块控制SY87739L合成32 M频率功能仿真结果(由ModelSim SE6.1仿真)如图3所示。
测试文件中给DATA-I赋值为00000001,可以观察出prog_di串行输出的编程数据为0000_01100_01101_0100_000_10001_101_101;prog_cs在prog_di有效编程数据输出为高电平,待编程数据输出结束后回落到低电平:PROGSK输出SY87739L的编程时钟。经分析可以看出SY87739L控制模块可以实现预想的功能。
1.2 时钟提取芯片SY87700V的控制模块
SY87700V对FPGA接收的数据进行时钟提取和数据恢复。将恢复的数据与接收端产生的本地伪随机序列进行对比,实现误码检测,两数据流对比时以提取的时钟为同步时钟。SY87700V在提取数据前要预知提取的频率的范围,此频率范围由FPGA发送给SY87700V。SY87700V的参考时钟是否进行分频,也要根据设置的参数由FPGA控制。此外该模块还要实现FPGA读取SY87700V的功能,以确定SY87700V是否完成时钟提取及数据恢复。根据SY87700V的工作原理,可以用硬件语言Verilog编写程序在FPGA实现控制SY87700V的模块,图4是由代码综合出的图元。
由FPGA控制SY87700V从122M数据提取时钟和恢复数据的功能仿真的结果波形图(用Modelsim仿真)如下图5所示。
测试文件中给data_i赋值为000011111,可以观察出FREQUSEL1输出值1,FREQUSEL2输出值为0,FREQUSEL3输出值为1,DIVSEL1输出值为0,DIVSEL2输出值为1。CLKSEL输出高电平(这一信号可以控制SY87700V完成提取的输入数据时钟的功能)。CD也输出高电平(使SY87700V能正常的进行数据恢复和时钟提取)。从图中可以看出SY87700V控制模块输出的信号可以控制SY87700V完成对122M数据的时钟提取和数据恢复,实现预想的逻辑功能。
1.3 计数模块
计数模块是用来计算总的码数和误码数以及误码块数的,该计数器是一个同步复位计数器。由verilog HDL代码综合出的图元如图6所示。
该计数模块最大的计数值达252,用Modelsim仿真软件对计数模块进行功能仿真的结果如图7所示:
在测试文件中,c_i赋值为一个脉冲流,在cnt_o输出的计数结果是正确的。可以判断出该模块的功能的正确性。
1.4 伪随机序列发送模块
伪随机序列发送模块的任务是以SY87739L合成的频率为时钟产生伪随机序列并串行输出伪随机序列。该模块可以产生三种级数的伪随机序列,生成的伪随机序列串行输出。具体合成那一级数决定于washbone模块(FPGA与单片机的通信控制模块)输出的控制信号:P09T-en(合成9级m序列使能信号)、P15T-en(合成15级m序列使能信号)、P23T-en(合成23级m序列使能信号)。三个信号中哪个为高电平就合成相应级数的伪随机序列。由Verilog HDL代码综合出的图元如图8所示。
功能仿真结果(合成23级伪随机序列)如图9所示。
在测试文件中赋给该模块的输入信号相应的值,使其完成合成23级伪随机序列的功能。在上图中,ser_o串行输出23级的m序列,可以判断该模块可以成功的合成m序列实现误码测试仪发送端的功能。
1.5 数据接收模块
FPGA中的接收模块实现的功能有:1)m序列发生,2)是误码检测。前者的逻辑功能与发送端模块相类似,其作用是产生一个与发端码形相同并且比特对齐的本地m序列;后者的作用是将收到的数据与本地m序列相比较,检测是否有误码,若有误码则输出一个误码脉冲给计数模块进行统计。该模块可以接收三种级数的伪随机序列,由Verilog程序综合出的图元如图10所示。
发送的测试码为周期是29-1的m序列时,数据接收模块的仿真波形如图11所示。
在仿真文件中对该模块输入端口ser_i赋值一个码流,当赋值码流与本地伪随机序列同步的(同频同相),数据接收模块每比对一bit码,就在sum_o端口输出一高电平,若比对时有误码,则prt_o端口输出一高电平。在上图中,PRBS_r是本地合成的伪随机序列,可以看出该模块能够实现了m序列的产生和误码的检测和统计功能。
1.6 FPGA与单片机通信的控制模块
FPGA与单片机的通信控制模块(washbone moudle)实现的功能有:1)控制FPGA发送数据(总码数、误码数、误码块数)到数据线上;2)控制FPGA接收单片机发送到数据线上的控制数据。FPGA与单片机的通信控制模块将FPGA接收到的控制信息产生控制其他模块的信号,这些控制信号包括SY87739L频率合成的使能信号,SY87700V控制模块的使能信号,计数器复位信号,伪随机码的级数、速率、发送接收接口的控制信号等。由源程序综合出的图元如图12所示。
当SY87700V提取的数据频率为30.72 MHz时,SY87700V的参考频率为3.84 MHz。图13为FPGA与单片机的通信控制模块的功能仿真结果。该仿真是对washbone模块中控制FPGA接收单片机控制数据这一功能的仿真。在测试文件中RAM_data FPGA与单片机的通信数据信号赋值为0001010(控制该模块产生P09T_en、mb_OO_en、mb_OI_en为高电平的信号);exchange赋值高电平,既FPGA将数据(总码数,误码数,误码块数)存入FPGA的内部存储单元;FPGA GSn=0.WRn=1既FPGA读取数据线上的数据,并存入内部寄存器memory中。在该模块的输出管脚中:P09T _en、mb_OO_en、mb_OI_en输出为高电平,既控制伪随机发送模块合成9级m序列,发送、接收的端口类型都为光接口类型。从下列仿真图中可以判断该模块可以实现要求的逻辑功能。
2 各模块综合结果
2.1 综合报告
综合优化(SyntIlesize)是指将HDL语言、原理图等设计输入翻译成由与、或、非门,RAM,寄存器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求(约束条件)优化所生成的逻辑连接,输出edf和edn等文件,供FPGA厂家的布局布线器进行实现。
在本设计中使用综合工具Synplify Pro8.1进行综合,该综合工具综合出的结果占用面积小、工作频率高,综合速度快。目前FPGA技术中最流行的高效综合工具之一。FPGA中各模块通过综合工具Synplify Pro8.1综合。在综合前,在时序约束文件中将分频系数为100分频的分频器时钟约束为10.0MHz;接收模块中合成m序列的同步时钟CDR00TKP约束为125.0 MHz;CDRK输入的是7.68 MHz的晶体振荡器产生的时钟,FPGA根据合成m序列的速率,判断CDRK是否进行二分频,FPGA将处理后的CDRK作为提取时钟芯片的参考时钟。该时钟约束为7.68 MHz;
DDS39REFCLK是时钟合成模块的参考时钟,该时钟约束为30MHz:DDS39TKP输入的是时钟合成芯片SY87739L的合成时钟,该时钟用于发送模块产生m序列的同步时钟,DDS39TKP约束为95 MHz。
从综合报告中可以看出综合后各个时钟的综合结果都超出了约束的频率,满足时序的要求。此外还可以从报告中得到FPGA中的资源利用情况:使用59个I/O原语资源,使用了0个I/O寄存器.使用了775个非I/O寄存器占FPGA总资源的50%,使用的总逻辑资源为1 253个查找表,占总资源的81%。
2.2 RTL(寄存器级)视图
RTL视图是由与、或、非门,RAM,寄存器等基本逻辑单元组成逻辑连接图,从中可以形象的得到FPGA中各模块的连接情况,并能判断硬件描述语言编写出来的系统在逻辑上是否正确。图14是由Synplify综合出的RTL视图。
分析上图中各模块的连接情况可以判断出由Verilog编写出的程序在各模块的逻辑连接设计上是正确的,可将综合后的edf文件输送给Xinlinx布局布线器实现。
3 结束语
本文研究的内容是一种用于高速通信系统中的误码测试仪。该高速信号误码测试仪是基于FPGA(现场可编程门阵列)为核心设计而成,适用于断线误码检测。误码测试仪在发送端发送m序列作为测试数据,其测试速率最高可达到155Mbps。对于高速数字电路迅速发展的今天,此误码测试仪的测试速率还可进一步提高,但是一旦提高了误码测试仪的工作速率,就无法回避高速数字电路中信号完整性,电磁干扰等高速数字电路设计中要注意的问题。由于使用FPGA实现误码测试仪的核心功能,该系统具有可以升级的特点。
设计中软件部分采用的是Verilog硬件语言编写程序,软件开发环境使用的是Xflinx公司的EDA集成开发工具ISE8.1,仿真工具ModelSim SE 6.1b,综合工具SynplifyPro8.1等几款软件。硬件实现采用的是Xilinx的SPARTANHE系列中的XC2S50E平台级FPGA为核心功能芯片。在FP GA中实现误码测试仪的发送部分、接收部分及误码量统计模块的设计。辅以时钟合成芯片Micrel SY87739L、时钟提取芯片Micrel SY87700V及单片机(C8051F010)的控制,整个系统的体积较小,成本也较低。