摘要:提出了一种基于FPGA的误码测试方案,并简要介绍了该方案的设计思想。
在数字通信系统的性能测试中,通常使用误码分析仪对其误码性能进行测量。它虽然具有简单易用、测试内容丰富、误码测试结果直观、准确等优点,但是,价格昂贵、不易与某些系统接口适配,通常需要另加外部辅助长线驱动电路;此外,误码分析仪对于突发通信系统的误码性能测试存在先天不足。例如,在对TDMA系统上行链路误码性能测试时,只有通过外加接口,对连续数据进行数据压扩,才能为被测设备模拟出突发形式的数据,从而完成测试。这给测试工作带来极大的不便。 另一方面,现今的通信系统大量采用FPGA作为系统的核心控制器件。将物理层上的各协议层的功能集中在FPGA内部实现,不仅提高了通信系统的集成,同时也减少了硬件和软件设计的复杂度。
基于上述两方面的考虑,笔者在FPGA内部实现了一个简易的多功能误码分析仪。该误码仪主要有三方面优点:一是可以根据用户需要,以连续或突发的方式产生若干种不同的随机序列或固定序列,并据此测试数字通信系统的误码性能;二是测试结果可以误码率或者误码数两种形式,通过外围器件直观地显示出来;三是作为被测系统的一个嵌入式模块,便于功能扩展及系统调试。 1 伪随机序列(m序列)
许多数字通信理论的结论都基于这样一个假设:原始的信源信号为0、1等概并相互独立的随机数字序列。同样,实际数字通信系统的设计,也是基于相同假设。因此,为使测试结果尽可能真实地反映系统的性能,采用伪随机序列(m序列)作为测试中传输的信号。
M序列是一种线反馈移位寄存器序列,其原理方框图如图1所示。每级移位寄存器的输出被反馈系数Ci加权(Ci可以取1或0),经模2和运算再反馈到第一级。令第一级的输入为ak,就有:
根据反馈系数的取值不同,电路可以产生出各种具有不同特性的数字序列。对于一定的移位寄存器级数r,存在一些特殊的Ci取值,使得输出序列的周期达到最长,即为2r-1。这样的序列被称为最长线性反馈移位寄存器序列,即m序列。
2 误码仪测试原理
该误码仪由发端模块和收端模块两部分组成。发端模块产生连续或者突发的比特流,作为通信系统的信源数据;收端模块接收通信系统输出的比特流,并将其与本地产生的、与发端形式相同的比特流进行比较,从而完成误码测试。从逻辑上看,误码仪的工作过程大致可以分成以下几个步骤:
(1)发端模块产生原始数据,并使其通过被测通信系统构成的信道;
(2)收端模块产生与发端相同码型、相同相位的数据流;
(3)将收到的数据流与收端产生的本地数据流逐比特地比较,并进行误码统计;
(4)根据误码统计结果,计算出相应的误码率,并输出误码指示。
误码仪收端模块所面临的最主要问题是如何准确地实现本地产生的m序列与收到的数据流同步,即比特对齐,这是整个误码仪正常工作的前提。为了适应各种不同类型的通信系统,根据m序列的性质,采用随动同步的方法解决这个问题。图2给出了随动同步的原理框图。
通过上述讨论知道,周期为2r-1的m序列发生器由r级移位寄存器组成。同时,由r个比特所能组成的所有序列(除全零序列外)都会在m序列的一个周期内遍历,且相应的前后位置固定。因此,如果两个具有相同逻辑结构的m序列发生器在某一时刻所有寄存器状态完全相同,则由这两个m序列发生器所产生的数字数据流保持同步。随动同步就是根据m序列的这个性质实现的。
3 误码仪逻辑结构
发端模块
本误码仪的发端模块实质上是一个多功能的序列发生器。用户可以通过相应的控制信号,指定其m序列发生器的线性反馈逻辑。由它产生的数字数据流将作为仿真数据送出到需要进行误码性能测试的数字通信系统中。
收端模块
收端模块在逻辑上可以分成两个功能子模块:一是m序列发生子模块,二是误码统计子模块。前者的逻辑功能与发端模块相类似,其作用是产生一个与发端形式相同并且比特对齐的本地m序列;后者的作用是将收到的数据与本地m序列相比较,同时统计误码指标,从而完成对数字通信系统的误码性能测试。
在测试过程中,接收到的数字序列被不断地逐次移入接收数据缓冲器中。在接收序列中,任意截取包含r个连续比特的片断(其中r为发端m序列发生器的阶数),将其置入本地m序列发生器的移位寄存器中,作为其初始状态,并假定此时收发双方已同步在这个状态。此后,本地m序列发生器与接收数据缓冲器同步移位输出。这样,只要对两个序列逐位比较,就可以进行误码统计了。需要特别注意:如果截取的数据片断中包含误码,则据此得出的收发双方已同步的结论是错误的。这样的数据片断将导致整个误码统计过程失去意义,不妨称这种情况为同步。为了消除假同步的影响,需要一种保护机制,用以确保收发双方的正常同步。 根据上述思想,笔者设计的收端模块的状态机由4个状态组成,分别为搜索态(SEARCH)、预同步态(PRESYN)、同步态(SYN)和等待态(WAIT)。各个状态所完成的功能如下:
搜索态(SEARCH):在该状态下,当接收数据缓冲器中出现非全零状态时,其中的序列被置入收端m序列发生器的移位寄存器中,同时进入预同步状态。
预同步态(PRESYN):在该状态下,本地m序列发生器输出本地比特流,并使其与收到的数据流进行逐位比较,同时进行初步的误码统计。如果统计结果指示误码高于某一事先选定的阈值,则说明电路进入了假同步,于是需要返回搜索态重新同步。反之,则可以较大的概率认为收发双方已经同步。反之,则可以较大的概率认为收发双方已经同步,电路进入同步态。
同步态(SYN):在该状态下,电路将进行正式的误码统计,并且在指定的测试周期结束时进入等待状态,同时输出误码测试结果。
等待态(WAIT):误码测试尚未启动以及测试结束时所处的状态。在该状态下误码仪等待再一次误码测试的启动信号。
收端模块的逻辑状态转移图见图3。
4 测试结果的输出
通常,误码测试结果可以以误码数和误码率两种形式输出。大多数取代传统误码分析仪的其它误码测试方案均采用易于实现的误码数形式输出测试结果,但种方式受到输出位数的限制而无法适应高误码率或需要进行长时间统计的测试环境。但是,误码率的计算又常常需要进行除法运算,而在FPGA或其它可编程逻辑器件中实现除法运算通常要消耗掉大量的逻辑资源,有时甚至超过了实现主要功能所需的资源。 事实上,在一般的工程实践中,人们通常关心的只是误码率的量级,因而误码仪也就没有必要准确地计算出实际的误码率。根据这一想法,该误码仪采用某种近似的实际的误码率。根据这一想法,该误码仪采用某种近似的估计算法,避免了意义不大的除法运算,而以较少的资源消耗实现了对误码率的估计。下面简要介绍该估计算法。
在误码测试逻辑中,接收到的总比特数与误码个数均以二进制方式存储在内部的逻辑向量中。它们最高非0比特所处的位置之差实际上反映了误码率的指标不。这样只要根据这个差值就可以大致估计出误码率,同时复杂的除法运算也被简单的减法运算所代替。
例如:当收到总特数为“00……01110110110”误码计数值为“00……0110”时,总比特数的最高非0位为第10位,误码计数值为第3位,差值为7,误码率近似为1/2 7,即7.8×10 -3,与实际误码率6.3×10 -3相当。
采用近似算法可能造成的最大系统误差是输出误码率的50%.但是,在通信系统的误码性能统计中,这样的误差并不会影响对系统误码率数量级的判断。因此,作为调试使用的简易误码性能的测试算法是完全可行的。
评论
查看更多