实际工作中,常常需要误码仪能测试多种信道。但是目前市面上所销售的误码仪大多只能测试电信部门的标准通信信道,低速以一、二次群为主,高速可达SDH信道速率;且价格昂贵、体积偏大,不能用于测试实际工作中大量存在的专用信道或自行架设的信道。这类信道多为水文监测、气象预报等特殊用途而设计,一般对传输系统的可靠性要求较高。
本文所介绍的智能误码仪在设计时特别考虑了这类信道的测试要求。它结合FPGA及单片机的结构特点进行编程,可在较宽的速率范围内(150bit/s~2.048Mbit/s)实现智能位同步和快速码序列同步。用户不仅可以从LCD上了解信道的误码情况,还可以通过仪器与PC机连接,在个人电脑上看到某段时间内的误码率折线图和其它误码信息,并以此来了解系统的误码发生情况。为了便于在无人值守的情况下进行误码测试,该误码仪内置了大容量的E2PROM,可以保存被测系统最后4000次的误码事件(包括时间及误码率大小)。由于设计时采用了FPGA、单片机等大规模集成电路,该误码仪不仅体积小巧(采用贴片元件时仅香烟盒大小),而且成本低廉、功能强大,具有较高的实用价值和市场价值。
1 误码仪总体框图及误码测试原理
1.1 误码仪整体结构
图1是该误码仪的整体设计框图。
m序列发生模块的主要功能是根据用户的速率要求产生测试序列——m序列。实际设计时,采用CCITT建议的用于低速数据传输设备测试误码的m序列,其特征多项式为X9+X5+1,周期为512。在外部附件的支持下,它还可以进行多种码型变换和调制解调。
位同步模块的主要功能是从传来的码元中提取位同步信息——码元时钟并将这一时钟提供给本地序列同步模块,以便在本地恢复出与测试序列同步的检验序列。
序列比较模块用于比较检验序列与测试序列的一致性。通过比较就能知道经过被测信道传输后测试序列中有多少码元产生了错误,并以此评估被测信道的性能。由于m序列是周期序列,所以测试序列与检验序列的比较必须在周期的同一位置开始进行(即同相)。这也是本地序列同步模块的另一项重要功能。完成了序列比较后,序列比较模块将实时地把传输的总码元数和误码数传送给单片机。
单片机是整个误码仪的核心,它根据用户的选择控制各模块的正常工作,并根据各模块提供的状态向用户发出误码事件、状态告警、故障提示等信息。在加电时对FPGA进行配置也是单片机的一项重要任务。实际设计时选用了性价比极高的FPGA——Altera公司的FLEX10K10。该器件的配置文件有15K字节,因此选用了大容量的通用单片机AT89C55。存储器及时钟为用户查询误码信息提供了方便,为了简化电路设计,选用了I2C总线方式的E2PROM(24LC128)和专用时钟芯片(PCF8563)。
1.2 主要模块特点
在设计该误码仪时,根据FPGA的结构特点进行编程,采用了独特的算法,使该误码仪中位同步模块和本地序列同步模块具有较强的智能处理能力。
位同步模块可自适应地提取并跟踪位同步时钟。由于误码仪需要对多种非标准信道进行测试,因此它必须能在较宽的速率范围内工作。在位同步模块中采用了新型数字锁相算法,使该误码仪能在不知道发端发送速率的情况下对信号进行快速而准确的位同步处理。在单片机的配合下,还可向用户提供无信号提示、失步告警等多种信息。
本地序列同步模块可实现快速序列同步。完成位同步后,误码仪还需进行序列同步。为了减少序列同步的时间,设计了快速序列同步算法,使误码仪能在不知道发送端m序列发生器初始状态的情况下进行快速盲同步,并提供序列失步告警和序列失步后快速恢复功能。因此,该误码仪不仅可以用于对信道进行闭环测试,而且还能方便地进行开环测试。
1.3 误码仪基本测试过程
m序列发生模块首先根据用户的速率要求发送测试序列。该序列经过被测信道传输后到达接收端,并送入位于FPGA内的位同步模块。位同步模块恢复码元时钟成功后,会将这一时钟送至其它模块,并通知单片机位同步成功。其它模块利用本地时钟完成检验序列恢复、同步及比较,并由此得到误码信息:误码数和总码数。该信息实时传送给单片机后,单片机每隔1秒进行一次误码率的计算,并将具体日期、时间和误码率大小显示在LCD上。如果误码率大于0则认为发生了一次误码事件,单片机会将此事件发生的时间和误码率的大小记录在储存器内,并通过RS232串口上传至PC机。
2 核心部分设计
FPGA中的位同步模块和序列同步模块是实现误码仪的关键。这两个模块设计得好坏直接影响着误码仪的整体性能。同时,误码仪智能能力的实现也离不开单片机的有效工作。
2.1 位同步模块
实际应用中,由于不同的被测信道采用不同的技术,因此其传输方式、传输速率、复杂程度都各不相同。这就要求误码仪中的位同步模块具有较强的适应能力。一般常见的同步方法如插入导频法、滤波法等都无法满足信道多变的要求5。为此,根据数字锁相环的基本原理并结合FPGA的结构特点,研究了一种自适应的智能锁相算法,该算法可使误码仪在较宽的速率范围内对信号时钟进行智能提取和跟踪,具有较高的实用价值。
图2是该位同步模块的结构框图。为了使接收端能快速、准确地提取码元时钟,发送端在发送m序列前应先发送一定数量的0101序列(见图3中的S1),其中“0”和“1”的宽度与单个码元宽度相同。在接收端预先不知道信号单个码元宽度(即码元时钟)的情况下,位同步模块首先进行码元宽度检测。这一工作主要由码元宽度计数器完成。该计数器在高速全局时钟驱动下分别对信号中的“0”、“1”电平进行宽度计数。