《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA的误码测试仪研究与设计
基于FPGA的误码测试仪研究与设计
来源:微型机与应用2013年第24期
张 强,彭向伟
(重庆邮电大学 工业物联网与网络化控制教育部重点实验室,重庆400065)
摘要: 误码率是反映数据传输设备及其信道工作质量的一个重要指标。作为通信系统的可靠性测量工具,误码测试仪广泛地应用于通信设备的生产调试、检验以及日常维护等方面。在对传统误码仪设计的研究和分析之后,研究并设计了一种基于FPGA的误码测试仪,详细地分析和介绍了各个模块的工作原理。
Abstract:
Key words :

摘  要: 误码率是反映数据传输设备及其信道工作质量的一个重要指标。作为通信系统的可靠性测量工具,误码测试仪广泛地应用于通信设备的生产调试、检验以及日常维护等方面。在对传统误码仪设计的研究和分析之后,研究并设计了一种基于FPGA的误码测试仪,详细地分析和介绍了各个模块的工作原理。
关键词: 误码测试;FPGA;m序列;Verilog HDL

    随着科技的发展,信息通信已成为人们日常生活中必不可少的一部分。数字通信因其抗干扰能力强、通信质量不受距离的影响、通信保密性好等特点而得到广泛应用和迅速发展[1]。与此同时,数字通信的传输可靠性就尤为重要了,而误码测试仪作为评估数据传输通道质量的重要工具被广泛地应用。
    误码率是反映数据传输设备及其通信信道工作质量的一个重要指标。误码测试仪就是通过检测数据传输系统的误码指标,对其系统的数据传输质量进行评估的一种工具。传统的误码仪大多数都具备了诸如操作简单、结果直观精确、测试内容丰富等优点,但是同时也存在体积偏大、价格昂贵、只适用于某些专用信道测试以及不易与某些接口适配等方面的问题[2]。因此分析和对比了现有的误码仪,研究和设计了一种基于FPGA的误码测试仪。
1 m序列
    伪随机序列也叫做伪随机码,是为模仿随机序列的随机特性而产生的一种码流。在一般的通信工程应用中,常采用二进制伪随机序列。伪随机序列只有0和1两种状态,一般是通过反馈移位寄存器来产生的,这种反馈移位寄存器可分为线性反馈和非线性反馈移位寄存器两种。其中由线性反馈移位寄存器产生的周期最长的二进制数字序列叫做最大长度线性反馈移位寄存器序列,也称m序列。因为其自身的自相关性和良好的统计特性,m序列广泛地用于密码学和误码测试等应用。
    如图1所示,m序列信号发生器是在n级线性移位寄存器的基础上,加上反馈逻辑电路构成的。正是由于m序列的这种结构特点,所以非常适合于通过FPGA来产生。一般地,m序列信号发生器有两种结构:Fabonacci型和Galois型[3]。

    本文采用Fabonacci型移位寄存器来产生m序列。这种结构的特点是移位寄存器的反馈抽头位置和本原多项式是一致的,序列与寄存器的初始状态相对应,而码流序列的产生速度主要受反馈网络的时延影响。
    an是各个移位寄存器的状态,cn是对应的各移位寄存器的反馈系数,系数为1时表示参与反馈;为0时表示不参与反馈。反馈函数为:an=c0a0+c1a1+…+cn-1an-1。在每一个时钟脉冲时刻,高位的移位寄存器将状态值传给下一个移位寄存器。一旦级数和反馈系数确定了,则反馈移位寄存器的输出序列也就确定了。m序列的一个重要的性质就是任何一个m序列的循环移位仍是一个m序列,序列长度为m=2n-1。由于移位寄存器状态全为0时系统会陷入死循环,所以当意外出现全为0的情况时使an-1等于1,跳出全0状态实现自启动。
    本文根据误码测试的需要,设计了9位、15位和23位寄存器的3个不同长度的m序列。根据ITU—T的建议,它们的本原多项式分别为x9+x5+1、x15+x14+1和x11+x9+1。设计选用的FPGA芯片为 Cyclone IV代的 EP4CE15系列,该芯片有15 408个逻辑单元,165个I/O口,4个PLL,端口支持频率可达600 Mb/s以上[4]。发送端提供3种类型m序列,支持在一定范围内的发送时钟频率的改变。本设计主要是基于低速的数字通信设计,发送频率设置为2N,N为0~20的整数,单位为MHz。
    在系统模块中设计了一个按键模块用于选择发送序列的级数以及发送时钟频率。由于在按动按键时通常会出现抖动和其他情况,所以采用了防抖动设计,其基本原理就是运用一个小的状态机,记住先前的状态,然后再对接下来的电平变化进行判断。
2 误码仪总体设计及其工作原理
    一般地,误码仪主要由发送端和接收端两部分组成。发送端就是一个伪序列发生器,负责产生用来检测被测信道的码流。该流码必须具有随机性和重复可生成性,通常采用m序列作为测试码。接收端则是误码仪最重要的一部分,其主要作用为接收从被测信道传来的测试序列,并从序列码中提取时钟信号,在此基础上恢复出本地序列,然后进行序列码流对比并统计出误码。如图2所示,发送端就是m序列产生模块,接收端包括位同步模块、序列同步模块和误码计数模块等。下面分别就各个模块做较为详细的介绍说明。

2.1 误码信号检测原理
    误码率是指在测量的时间内错误的数字码元数量与数字码元总数之比。这个工作主要由两个计数器完成,一个计数器计数误码,而另一个则计数总的码数。
    误码测试仪由发送和接收两部分组成,发送模块要求发出标准的数据信号作为测试信号,代替实际线路中的传输信号送到被测系统中。接收部分要求能产生与发送部分完全相同的数据信号,用以与接收到的信号逐位比较。
    由图3可知,由信道传送到接收机的序列码通过异或门与接收机产生的序列进行比较,若相同则输出为0,若不同则输出为1并计为1个误码, 最后再统计总的码元数和误码数,从而得到准确的误码数或误码率。

    总的来说, 误码仪检测的工作流程可概括为以下几个步骤:
    (1)以某种方式产生并发送码组相同的码型,以相同相位的本地码组作为对比标准;
    (2)将本地恢复码元与从信道接收到的码组逐个进行比较, 并输出误码脉冲信号;
    (3)对误码脉冲信号进行统计, 并给出相应的误码率。
    由于传统的误码仪一般用于专用的通信信道测试,其接口类型较为单一。为此本文设计了RS422、E1、E2接口,扩展了误码测试的接口类型。
2.2 位同步模块
    位同步模块的主要工作就是提取信道中码流的时钟,它由一个跳变沿捕捉模块、一个状态寄存器和一个计数器组成。如图4所示,其中data是输入系统的串行信号(m序列),clk是频率为串行信号码元速率的2N倍的高频时钟信号,a是系统产生的与输入串行信号码元位同步的脉冲信号,即位同步脉冲。

    系统工作时,当输入信号data发生变化时,捕捉模块就能及时抓捕到这次跳变,并产生一个脉冲信号c,该信号可以将可控计数器清零,同时将状态寄存器的输出b置为0,并送到计数器中。计数器进行模为2N的计数,待计满后就输出脉冲信号a,该信号一方面可作为整个系统输出的位同步时钟信号,另一方面它也被接入了状态寄存器,控制状态寄存器的输出b在计数器完成N的记数后就变为1;在没有c脉冲信号时使b保持为1,使计数器的模值保持为2N,直到输入信号data产生新的跳变并产生新的c脉冲信号。
    由此可见,在输入信号为连1或连0的情况下,只要系统使用的时钟信号足够精确,就可以保证在一定时间里输出满足要求的位同步时钟,而在输入信号data发生跳变时系统又会捕捉该跳变沿并以此为基准来输出位同步时钟。为了保证系统的精确性,文本中采用2N等于10。
2.3 序列同步模块
    前面已经指出m序列是周期序列,测试序列和检验序列的比较应以周期内的同一位置作为起点。因此在序列比较前应首先进行序列同步。常见的序列同步方法有滑动相关捕捉法、序列相关捕捉法、SAW器件捕捉法等。但是这些方法都存在着结构复杂、同步时间较长等缺陷,不适合用FPGA实现。
    序列同步模块的一个重要作用就是根据位同步模块得到同步时钟并产生本地检测码元序列,通常采用的是灌码的方式。如图5所示,在初始状态下开关K置于B位置,发送端送来的测试序列在完成位同步后按从高位到低位的顺序依次送入移位寄存器,存满后开关K就置于A的位置。移位寄存器和模二加法器在本地时钟的驱动下产生出检验序列。这里要强调的是,本地码元的m序列发生器和误码仪发送端的m序列产生器结构完全一致。

    以9阶的m序列为例,由于m序列的下一存储器状态组合仅由当前的状态组合所决定,因此只要最初接收到的9个码元是正确的,则其随后产生的所有码元都是与测试序列相同和同步的。在这之后,测试序列与检验序列需要进行一次相关比较,假如在若干个(如10个)码元周期内其相关值超过阈值,则可认为两序列同步,否则需要重新进行同步操作。
    采用这一方法之后,序列同步的时间大大缩短,有利于进行码流的快速测试。
2.4 误码计数和显示
    将恢复出来的本地检测序列与被测信道传输来的测试序列相比较可以检测出误码。两个码流通过一个异或门比较,相同为0,不同则为1,然后计数器统计1的个数得出总的误码数。
    误码测试仪定时每隔1 s进行误码统计,并将结果通过点阵型液晶显示器显示,直观地显示实时误码情况。为了便于简化硬件电路,设计采用FPGA直接驱动液晶显示器。
    特别地,由于程序设计中会用到除法运算,而除法运算会消耗大量的FPGA逻辑单元,因此本设计中采用独特的算法将除法运算转换成位运算,极大地减少了系统资源的占用。
3 误码测试仪的IP内核
    该误码测试仪基于FPGA设计,程序采用Verilog HDL编写。其建模的编程特点使得系统更直观和便于实现[5]。图6为误码测试仪的内核模块系统框架。所有的程序编写都遵循自底而上的建模思想。

 

 

    图6所示的IP核框架大致给出了本次系统设计的主要部分模块。在这里只给出了一部分的输入和输出信号。下面就一些信号做简单介绍说明。Clkin 为外部时钟输入40 MHz。DATAin为经过被测信道的m序列。Clka、Clkb、Clkc分别为倍频或分频后的时钟信号。Ctrl为LCM控制信号。按键模块控制发送序列的级数和发送时钟频率,而LED信号主要控制LED灯显示误码仪工作状态。
    本文研究了一种低速数字通信系统的误码测试仪。该误码测试仪是基于FPGA(现场可编程门阵列)为核心设计而成,适用于断线误码检测。该测试仪可以在发送端发送频率不明的情况下进行码流的时钟恢复,这样就使得其使用范围更广。同时根据FPGA的特点,系统还设计有AS下载口和JTAG下载口以及留出了一些多的I/O口,这样可以方便以后功能的增加和系统软件的升级。程序结构编写中,采用了一些独特的算法使得系统资源占用减少,同时增加了系统的智能性。
    设计中软件采用的是Verilog HDL编写程序,软件开发环境使用的是Altera公司的EDA开发工具quartusII 11.0。整个系统体积较小,具有一定的智能性且价格便宜,适用于一般的数字通信线路测试以及个人架设的通信信道。经过测试,系统的性能可以达到测试的基本要求。
参考文献
[1] 刘江.基于FPGA的误码率测试仪的设计与实现[J].微计算机信息,2005,2l(4):162-163.
[2] 王辉.基于DSP和FPGA的开环多码型误码测试仪的设计[J].测控技术与仪器仪表,2010,36(9):115-118.
[3] 邹学玉,易国华.一类基于FPGA的m序列发生器设计[J]. 长江大学学报,2006,9(3):84-86.
[4] Altera Corp.Cyclone Device Handbook[DB/OL].[2013-07-15].http://www.altera.conl.2010.
[5] 王金明.VerilogHDL 程序设计教程[M].北京:人民邮电出版社,2004.

此内容为AET网站原创,未经授权禁止转载。