韩世川,黄建国,李 力
(电子科技大学自动化工程学院,四川 成都 611731)
USB(Universal Serial Bus)通用串行总线是应用在PC领域的新型接口技术,由于具有速度快、连接简单快捷、可热插拔的特点,USB总线已经被广泛的应用于各种自动测试系统的开发[1-2]。程控信号发生器通过USB总线与笔记本电脑连接,通过上层软件控制输出多路地、开离散信号,用来激励被测设备,并采集被测设备反馈回来的测试结果,送到电脑屏幕上显示,供测试人员分析。实现了一台笔记本电脑+专用测试模块的检测方案[3]。
如图1程控信号发生器硬件结构示意图所示,程控信号发生器模块通过USB总线与计算机进行连接,控制检测模块工作并读回测试结果。其中USB总线接口电路用于实现检测模块与PC之间的通信,传递控制信息和返回测试数据[4];输出模块主要采用FPGA控制模拟开关通断,切换各个输出通道的输出状态,将地、高阻信号电平对应输出给被测设备;输入检测模块,进行多路输入通道的切换,并将切换后输入的信号送给AD7854,进行模数转换,然后将模数转换后的2进制数据送回到计算机分析显示。为保证输入/输出电路的可靠工作,模拟输出和输入电路设计为具有自检测功能。输出信号在输出给被测设备的同时,还要经过自检测电路,送回A/D进行模数转换,得到实际的输出信号电平。
图1 程控信号发生器硬件结构示意图
模拟输出电路以ULN2803为核心进行设计。ULN2803内部为8个达林顿管,根据要求设计成8个晶体管反相器[5],当成8个模拟开关。FPGA的I/O输出电平为3.3V或者0V,所以该电压可以直接控制达林顿管模拟开关的关断或者开启。程控信号发生器输出模块电路示意图如图2所示。根据晶体管反相器工作原理,当达林顿管输入3.3V时,模拟开关打开,输出接地,实现了地信号的输出;当达林顿管输入0V时,模拟开关关断,输出端28V接反向二级管,相当于输出端高压大电阻上拉,实现了高阻电平输出。通过FPGA控制逻辑,打开、关断相应的反相器模拟开关,就能给相应通道输出所需的地信号或者高阻信号。该设计输出通道有160路,所以需要160个FPGA的可编程I/O引脚,ULN2803总共20片。
图2 程控信号发生器输出模块电路示意图
输入测试电路以耐高压的多路开关DG408、DG409和AD7854为核心构成,其中DG408为八选一多路开关,DG409为四选一多路开关,AD7854为转换速率为4M的模数转换芯片。通过FPGA控制逻辑将各个检测通道的输入信号切换到ADC进行测试。在测试的同时,还可以将模块自身输出的信号切换到输入端进行测试。根据设计,总共需要27片DG408和1片DG409。程控信号发生器输入模块电路示意图见图3。
当离散输入为开状态时,输入A/D的测试电压为3.3V左右,当离散输入为地时输入A/D的测试电压为2V左右,从而实现了外部离散(地/开)输入的的检测。
图3 程控信号发生器输入模块电路示意图
图4 程控信号发生器通道切换示意图
如图4程控信号发生器通道切换示意图所示,因为在某一特定时刻只能有选定的一路信号送入A/D转换器,并保持一定时间不变。该设计采用了三级开关进行选通。通道选择切换时,第一级需要三位控制码,可以选通160路中的20路信号;第二级需要三位控制码,可以选通第一级的20路中的3路信号;第三级二位控制码选通第二级3路中的1路。所以在某一时刻选通160路中的一路,只需要输出八位控制码到三级开关,就可以一个A/D模数转换器的分时复用。
该设计的数据传输方式采用USB的控制传输,以保证数据传输的稳定性和准确性。USB读写译码示意图如图5所示。USB地址码不管是写地址还是读地址,首先要经过地址译码模块译码,产生相应的低电平有效的地址选通信号。地址码一个时钟周期后,低电平有效的USB读/写信号到来,然后再和之前的地址选通信号经过一个组合逻辑,产生一个上升沿。如果是Write写信号就锁存相应的控制信息输出;如果是Read信号,就对A/D进行一次读操作,读回相应的数值。
图5 USB读写译码示意图
A/D的控制逻辑采用Verilog硬件描述语言来实现。Convst为A/D开始工作的开始信号。A/D正在工作的时候,Busy信号为高,此时不能读数。当A/D完成一次数据采集过后,A/D输出的Busy变成低电平,通知上层可以读数。Hben为读数的高低位选择信号,当hben为低时,上层读取A/D转换数据的低八位,当hben变成高时,在读取A/D转换数据的高八位。AD7854时序控制示意图见图6。
通过万用表测试模块输出的GND为0V,模块自检测电压也为0V,证明输出的地信号正常。高阻信号通过一个3.3V串接一个1 kΩ的上拉电阻,用万用表测得电压为3.3V,高阻信号经过自检测模块后A/D输出为3.3 V,证明输出的高阻信号正常,输入模块输入5V,A/D采集到的电压最大为5.1V,最小为4.7V,满足测试精度要求。最后将模块输出激励被测设备,被测设备工作正常。再检测模块的反馈信号,输入部分正常。
该设计利用了USB总线的优点,采用可编程逻辑器件为主控芯片[6],实现了160路离散信号的自检测与输出和32路离散电压信号检测。该设计极大地减少了测试人员的人工操作,可以实现机载航空电子设备的快速动态测试。另外该设计采用了通用化、模块化、标准化的思想,可移植性强,对其他类似航电自动测试系统的开发具有参考和推广价值。
[1] 李广军,林水生.微机系统原理与接口技术[M].成都:电子科技大学出版社,2005.
[2] 甄国涌,张森峰.高速USB接口设计[J].电子设计工程,2009,17(3):80-82.
[3] 杨瑞瑞.基于USB总线灯光告警系统监测模块的设计[D].成都:电子科技大学出版社,2007.
[4] 许永和.USB外围设备设计与应用[M].北京:北京航空航天大学出版社,2002.
[5] 林 生,金京林.数字设计原理与实践 [M].北京:机械工业出版社,2003.
[6] 王 诚,吴继华.Altera FPGA/CPLD设计[M].北京:人民邮电出版社,2005.