图1 测试仪系统框图
引言
本设计主要用于石油勘探仪器车与外部设备连接电缆的通信可靠性测试。误码率测试仪主要由测试信号发生模块、收发模块、误码统计模块以及键盘和液晶显示模块等部分组成。通过对测量参数的设置,该设备可以对通信线路进行不同速率、不同码元的误码率闭环测量,并通过图形点阵显示屏进行实时显示,以供评估使用。
常见的误码率测试仪多数专用于测试各种标准高速信道,不便于测试实际应用中大量的专用信道,并且价格高,搭建测试平台复杂。随着大规模集成电路的迅速发展,FPGA在保持其集成度高、体积小、功耗低、性价比高等特点的同时,能够实现越来越复杂的功能,广泛应用于通信设备的设计实现。本设计采用Altera公司的Cyclone系列FPGA芯片EP1C12,内嵌Nios II软核CPU,并利用SOPC技术进行了整体设计,在保证具有良好性能的同时,更有利于后期的优化和升级。接口采用ECL(电流开关型逻辑电路)电平,可以直接链接测试电缆,方便现场测试。
1 SOPC和Nios II概述
SOPC (System On Programmable Chip,可编程片上系统)是基于大规模FPGA的单片系统,是美国Altera公司于2000年提出的(同时推出了相应的开发软件Quartus II)。SOPC的设计技术是现代计算机辅助设计技术、EDA技术和大规模集成电路技术高度发展的产物。SOPC Builder是Altera公司为硬件设计人员开发的一套系统级硬件设计工具,通过它可以方便地创建Nios II CPU系统级设计项目,从而为设计人员提供SOPC设计必需的软硬件设计平台。
Nios II嵌入式处理器是FPGA生产厂商Altera公司推出的软核CPU,是一种面向用户的、可以灵活定制的通用精简指令集架构(RISC)32位高性能嵌入式CPU。Nios II以软核的方式提供给用户,并专门为在Altera的FPGA上实现做了优化,用于SOPC集成,最后在FPGA上实现。Nios II IDE是SOPC系统的软件开发环境,在Nios II IDE中可以进行软件的编写、下载和调试等工作。
2 误码率测试仪功能概述
误码率测试仪分别设有2个通信测试端口——输出端口和输入端口,分别连接到待测试电缆的两端,构成数据传输回路。FPGA内部有一个Nios II软核CPU,负责初始化和管理该系统;用VHDL语言编写了收发芯片AM7968和AM7969的控制器接口模块,完成测试码发送、接收、误码率统计的任务;系统还设有4×4的矩阵扫描键盘和128×64分辨率的OLED图像点阵显示屏作为人机接口,如图1所示。
用户通过矩阵键盘输入并设置测试代码、通信速率以及测量模式(定时测量、定量测量)。确认开始测量后,Nios配置AM7968和AM7969,并通过AM7968发送测试代码,经待测试电缆及AM7969接收到数据后,将接收的代码与原始数据比较。如果发现不等,即认为是误码,统计误码个数的计数器加1。当测量停止时,OLED显示屏输出误码率数值及其他测量信息。
3 硬件设计
3.1 收发模块设计
误码率测试仪的收发芯片采用的是美国AMD公司的AM7968和AM7969。
AM7968发送端芯片和AM7969接收端芯片提供通过同轴电缆或者光线传输的一般通用接口,通信速率在40~175 Mbps的范围内可以调节。AM7968/AM7969为并行TTL总线接口,一共有12位的数据和控制总线,可以灵活配置成8~10位数据总线,对应4~2位控制总线的接口形式。
(1) 发送端设计
如图2所示,芯片AM7968是信号的发送端。根据功能设置,测试代码的发送模式有固定代码模式、循环码模式和自定义代码模式3种。故设置控制寄存器(mode_reg)位宽为2:00为初始状态,系统位于初始化状态;01为固定代码模式,发送系统预设的代码;10为循环代码模式,测试代码从00h~FFh连续循环发送;11为自定义代码模式,发送用户自定义的代码。模式初始状态固定代码循环代码自定义代码
图2 AM7968发送端设计框图
发送频率的设置,是通过AM7968的输入时钟(50 MHz)直接分频实现的。在AM7968的控制器中,设有时钟分频寄存器(clk_p_reg)。该寄存器位宽为8。也就是说,用户可以在40~175 Mbps范围之内,设定256种不同频率,进行误码率的测试工作,尽可能地满足用户的测试频率要求。
设备上电后进入模式选择,用户根据需要设定模式,确认后,mode_reg设置完毕。随后进入速率选择,设置时钟分频器的数值,用以设置代码发送速率。Control_reg提供了AM7968其他端口的设置。参数设置完毕后,设置好的代码就配合设定好的时钟频率,通过通信端口发送出去了。
需要特别说明的是循环代码的发送过程。因为,在其他模式下,数据自发送开始就一直在数据总线上有效,只要控制好数据的发送脉冲信号即可;而循环代码模式下,数据需要实时更新,且不能有遗漏和跳跃,因此特别设计了循环码发生模块。它以AM7968芯片的ACK信号作为循环代码递增的触发信号。这是因为ACK信号是AM7968在数据发送完毕后立即发送的反馈信号。所以利用这个信号,就很好地保证了循环代码的可靠性。
(2) 接收端设计
如图3所示,芯片AM7969是信号的接收端。在用户设定了代码模式后,AM7969的控制寄存器被配置为相应模式。之后设置误码计算模式,并将误码计数器复位,且设置好对应的对照代码。
图3 AM7969接收端设计框图
AM7969芯片中的锁相环时钟生成器(PLL clock generator),可以从接收到的数据流中分离出时钟信号和数据信号。
由于线路传输存在延时问题,会使AM7969分离的时钟相对于发送端AM7968的时钟滞后。对比较器两端的输入来说,出现了不同步的情况。如果AM7969也利用本地系统时钟,那么其接收到的数据就会紊乱。这种方法不可取。
本系统采取发送同步序列的方式来进行同步。在测量开始后,发送端发送同步序列。在10 ms内(此时间阈值可进行设置),如果接收端没有收到同步序列,则判定线路故障,无法正常测量;如果在时间阈值内收到同步序列,则立刻进入测试状态。例如,当发送代码A0后,接收端如果在时限内(时间阈值)收到信号,则进行比较,之后发送1个反馈信号Dstrb和1个数据A1,依此类推;如果接收端没有收到信号,则系统将认为是误码丢失,记为误码,同时自行发送1个伪Dstrb,继续测量。
3.2 显示模块设计
显示部分采用了Visionox公司的VGG12864ES002、128×64点阵的单色图形显示模块。该模块有以下特点:亮度高,对比度高,视角宽,响应速度快,温度范围宽,功耗低;8位并行数据接口,读、写操作时序;模块内藏64×64显示数据RAM(RAM中每位数据对应OLED屏上一个点的亮、暗状态);接口电路简单,使用方便。
本设计通过VHDL语言编写接口时序IP核控制器oled.VHD,使其作为Slave device连接到Avalon总线上,实现了数据显示功能。
3.3 误码率测试仪的SOPC设计
图4 为在SOPC Builder工作窗口中的该误码率测试仪的SOPC系统。
图4误码率测试仪SOPC系统
其中,cpu_0为主Nios II处理器,cfi_flash_bridge_0为Avalon三态桥用来连接Flash IP核控制器cfi_flash_0,sdram是SDRAM IP核控制器,timer_0是Nios II内部定时器,oled_0是OLED IP核控制器,pio_0是按键外部引脚,am7968_2_0和am7969_2_0分别是用VHDL语言编写的收发芯片AM7968和AM7969的IP核控制器。
3.4 用SignalTap嵌入式逻辑分析仪验证设计
SignalTap允许设计者在FPGA运行期间同时监视内部信号。通过下载电缆或传统的分析设备连接到用户PC机上,便可以在用户的PC机上观察到这些信号的波形。使用SignalTap类似于使用逻辑分析仪,用户能够设置初始化、触发(内部或外部)和显示条件并观察内部信号,以此研究运行状态。用户的分析参数可以被编译为嵌入式逻辑分析仪(ELA),它和设计的其他数据一起配置FPGA。
图5是将误码率测试仪硬件逻辑下载到FPGA中,用SignalTap看到的系统实际运行时的波形截图。它显示的是当测试代码设定为循环代码模式时,测试代码从00H到FFH之间循环发送的波形情况。信号am_clk是系统时钟;to_7969clk是信号接收端AM7969的输入时钟;am_ack是信号发送端AM7968的发送反馈信号,每返回一个am_ack表示有一个数据已经发送出去;to_7969_clk是指AM7969从接收到的信号中分离出来的时钟信号,从SignalTap可以看出有一定的延时;am_data信号是发送端AM7968发出的数据;to_7969_data是信号接收端AM7969收到的数据,可以看出,线路上有一定的延时;am_strb和to_7969_dstrb分别是AM7968和AM7969的数据发送和接收的同步脉冲信号,本测试仪就是利用这个信号来统计测试码发送个数和测试码接收个数的。
4 软件设计
在软件设计方面,本着简单易用的原则进行,在尽可能满足实际使用需求的同时,提供友好的人机交互接口。下面分别介绍一下软件的开发环境(Nios II IDE)和软件开发设计。
Nios II集成开发环境(IDE)是Nios II系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以在Nios II IDE下完成,包括编辑、编译和调试程序。Nios II IDE提供了一个统一的开发平台,用于所有Nios II处理器系统。仅仅通过1台PC机、1片Altera公司的FPGA以及1根JTAG下载电缆,软件开发人员就能够往Nios II处理器系统写入程序,并与Nios II处理器系统进行通信。
Nios II IDE为软件开发提供4个主要功能:工程管理器、编辑器和编译器、调试器、闪存编程器。
为了便于大批量地测量线路的误码率,方便用户使用,设计了“自动测量”模式。该模式的各种参数是用户预
图5 SignalTap嵌入式逻辑分析仪验证
图6 误码率测试仪主程序流程
先设置好的,其中包括测试模式、测试速率、测试代码以及时间阈值或者数量阈值。这样,用户在检测大批量的通信电缆时,就不需要重复进行繁琐的参数设置了。表1是需要用户设置的参数,图6为主程序流程。
5结论
本文结合石油勘探仪器车与外部设备连接电缆测试的实际, 提出了一
表1 需要用户设置的参数