《电子技术应用》

PC104故障监控平台FPGA程序设计

2017年电子技术应用第9期
周治虎1,2,张 凡1,2,武明虎1,2,孔祥斌1,2,刘 聪1,2,代 松1,2
(1.湖北工业大学 太阳能高效利用湖北省协同创新中心,湖北 武汉430068; 2.湖北省电网智能控制与装备工程技术研究中心,湖北 武汉430068)
摘要: PC104总线是专为嵌入式控制系统定义的一种工业控制线,其应用广泛,但是内部结构复杂,出现故障不易检测。设计了一种基于FPGA的PC104总线故障自动监控平台,对PC104总线信号进行实时监控和故障检测。该平台利用FPGA程序采集和处理总线信号,并传至上位机处理显示。系统中利用FPGA程序实现其功能模块,包括捕获POST上电自检指令和BIOS自检端口代码、监测总线电压水平、监控时钟和复位等关键信号的质量、控制PC104的自动复位和BIOS设置模式等功能。给出上位机监控结果和FPGA实时检测得到的时序图,反映了该FPGA程序在本系统中满足PC104总线检测的技术要求。
中图分类号: TN407;TP206
文献标识码: A
DOI:10.16157/j.issn.0258-7998.170644
中文引用格式: 周治虎,张凡,武明虎,等. PC104故障监控平台FPGA程序设计[J].电子技术应用,2017,43(9):57-60.
英文引用格式: Zhou Zhihu,Zhang Fan,Wu Minghu,et al. FPGA program design of PC104 fault monitoring platform[J].Application of Electronic Technique,2017,43(9):57-60.

FPGA program design of PC104 fault monitoring platform

Zhou Zhihu1,2,Zhang Fan1,2,Wu Minghu1,2,Kong Xiangbin1,2,Liu Cong1,2,Dai Song1,2
(1.Hubei Collaborative Innovation Center for High-efficiency Utilization of Solar Energy, Hubei University of Technology,Wuhan 430068,China; 2.Hubei Power Grid Intelligent Control and Equipment Engineering Technology Research Center,Wuhan 430068,China)
Abstract: PC104 bus is a specifical industrial control line and defined for embedded control system, and its widely used. But it′s difficult to measure when the fault occurs because of the internal structure of complex. This paper designs a fault automatic monitoring platform which is based on FPGA for PC104 bus, the platform monitors the PC104 bus signal and detects the fault in real-time. The platform uses the FPGA program to collect and process the bus signal, and send to the host computer processing to display in time. The functional modules are achieved by FPGA in this system, which are including capture the POST self-test command and BIOS self-test port code, monitor bus voltage level, measure the quality of key signals such as clock and reset, and control PC104 auto reset and BIOS setup mode. Finally, the paper publishes the PC monitoring results and FPGA real-time detection of the timing diagram to reflect the FPGA program in the system can meet the PC104 bus detection technology requirements.

0 引言

    PC104作为一种专用嵌入式控制主板[1],具有功耗低、效率高、体积小、可扩展等优点,在航空航天[2]、军用武器装备[3]、工业控制[4]等领域应用广泛。PC104主板的结构复杂紧凑,一旦发生故障,仅靠常规的监控手段很难判断具体的故障原因。PC104总线需要监测的信号高达70多个,总线运行频率也高达14 MHz左右,无法利用单片机实现监测功能[5-6]。因此,本项目采用了基于FPGA的设计方案,利用FPGA的多I/O端口特性和高速并行处理能力[7]对PC104总线进行实时监测。

1 PC104监控系统设计方案

    基于FPGA的PC104故障监控平台(以下简称监控平台)主要由待测PC104主板、电平信号转换模块、FPGA功能模块(DE0开发板)[9]、上位机系统4个部分组成。监控平台硬件结构如图1。

qrs3-t1.gif

    监控平台中的上位机系统板使用常用Windows XP系统,并自动运行监控APP程序。通过串口和FPGA功能模块通信,利用约定好的通信协议读取FPGA功能模块返回的信息,将返回的这些信息处理成可供参考的数据,最后在上位机APP程序的界面中显示。

    PC104主板功能强大,扩展功能端口很多。监控平台为判断其具体的故障信息,需要对其总线信号进行实时监测。为了保证监控平台方便高效的运行,在待测下方引入主板治具方便主板的插拔,这不仅提高了监控效率和准确性,同时可以保护PC104主板总线接口不被损坏。

    由于PC104主板工作在+5 V供电环境下,而采用的FPGA的工作电压是+3.3 V,监控平台加入了基于74AL-VC164245的电平信号转换模块。74ALVC164245是TI公司生产制造的一种+5 V和+3.3 V之间双向转换的电平转换芯片,可以很好地实现FPGA和PC104主板之间的电平匹配。转接板上还包括PC104主板电源测试模块,并将PC104主板上的键盘接口、鼠标接口和两个串口接口做了扩展。不仅实现了不同电平之间信号的实时传输,同时增加了监控平台的空间利用率。

2 FPGA功能模块设计

    FPGA功能模块是PC104主板故障检测平台的核心,也是本文介绍的重点。FPGA拥有可编程输入输出单元(IOB)、可配置逻辑块(CLB)、数字时钟管理模块(DCM)、嵌入式块RAM(BRAM)、丰富的布线资源等功能,能很好地满足检测平台的相关需求。不仅可以实时采集PC104总线信号,而且可以通过输出TTL电平信号控制总线上相关引脚来控制PC104主板的运行状态。采用FPGA功能模块作为检测平台的核心,在很大程度上提高了检测平台的可靠性和高效性。

2.1 BIOS启动监测和POST上电自检

    PC104主板的片外总线接口包括其地址信号线、锁存地址信号线和数据信号线,其中包括20根地址信号线和16根数据信号线。监控平台实现该功能基本原理是通过FPGA的信号采集端口监控PC104主板启动时所有地址信号线和数据信号线的状态来判断各信号线的工作状态是否正常。实现总线信号监控功能的具体FPGA程序设计流程图如图2。

qrs3-t2.gif

2.1.1 BIOS启动检测

    PC104主板的启动过程包括加电、自举、核心测试、POST自检4项。监控平台上电后开始测试,给PC104主板加电后向其发出复位命令,主板进入初始化过程及复位时长满足后,释放复位信号。FPGA的地址线监控端口开始读取地址信号线的数据,如果读到的地址线数据为0xFFFF0H,则开始执行监控PC104主板启动码的程序,并保存总线上的地址和数据。

    从PC104主板用户手册可知,其在启动时,首先运行的通常都是一条“EA”跳转指令,跳转到实际BIOS ROM的开始地址。这个初始化搜索地址0xFFFF0H和随后的CPU重定向的过程一般称为自举或引导,也可简称为BOOT。当PC104每次启动时,FPGA采集总线上的地址和数据线信号理想情况下是会经过跳转指令“EA”跳转到某一固定地址单元,开始执行程序。分别监测两块正常运行主板的BIOS启动码实际被测数据,如表1所示。

qrs3-b1.gif

    从表中数据可以看到,主板正常启动时,从0xFFFFF0地址开始执行程序,执行的第一条指令是0x5BEA,依此可以判断该主板的数据和地址总线没有故障。监测结果符合测试要求。

2.1.2 POST上电自检

    PC104主板初始化分为冷启动(初次加电启动)和热启动(通过FPGA发送复位命令重启)。若是冷启动,就会执行POST上电自检;反之,将会跳过POST上电自检。遇到错误时,单字节的POST码会被写入80H的I/O端口中,系统的初始化也将终止。如果自检通过,则会向80H的I/O端口中返回0xFF。主板的自检过程是判断PC104主板是否正常的标准,所以POST自检是判断主板故障信息最重要的模块之一。当FPGA监控到PC104主板启动后,开始定时反复读取80H的I/O端口中的信号。当读取到0xFF时,保存该信号并返回给上位机系统,提示自检通过;反之则返回故障指令并提示自检未通过。通过对比3块不同PC104主板的POST监控结果,并参考主板实际运行状态可知符合测试要求。当测试过程中,如果主板刚启动POST自检代码就监控到0xFF,同时起始代码不再变化,那也可能是主板并没有运行,BIOS自检并没有正常开始,应该重启PC104主板,重新测试。POST上电自检结果如表2所示。 

qrs3-b2.gif

    利用FPGA实时采集PC104主板在启动过程中总线检测的结果,如图3所示。从图中可以很直观地看出PC104主板在启动过程中所包括的初始化过程和POST自检结果,符合其总线测试要求。

qrs3-t3.gif

2.2 PC104复位与BIOS模式控制

    监控平台在运行过程中,会要求对于同一块PC104主板进行反复测试。由于PC104主板的高集成度,并没有复位按钮,所以需要控制主板上的复位控制(Reset Switch)引脚进行复位控制。当上位机系统发出复位指令后,就需要FPGA给PC104主板的复位控制引脚发送一个延时复位命令,并监测启动计时器。当复位时间到达后,释放复位信号。

    系统扩展模块利用盛博科技生产的符合PC104总线标准的软盘驱动控制器驱动装有测试程序的硬盘,通过测试程序可以监控PC104主板的串口和键盘等接口的故障信息。为了设置PC014主板的启动方式以及显示器状态和分辨率等基本硬件信息,需要在启动时对其是否进入BIOS进行控制。通过FPGA的I/O口控制由继电器和三极管组成的基本控制电路来控制主板的串行口连接器的DTR和RI引脚是否短接来控制其启动过程中是否进入BIOS设置。

2.3 PC104关键信号测量

    PC104主板总线控制信号线中有4个关键信号,包括3个时钟信号和一个复位脉冲信号。

2.3.1 PC104总线时钟频率测量

    FPGA常用测量频率的方法有直接测频法和等精度测频法,其中直接测频法又分为直接计数测频法和测周期测频法。直接测频法的测频精度与被测信号有关,被测信号频率越高,测频精度越高;实现简单,对硬件资源要求不高。等精度测频法的测频精度与被测信号无关,仅与系统时钟信号有关,系统时钟信号频率越高,精度越高;相比直接测频法,等精度测频法实现较复杂,需要FPGA系统的晶振频率达到等精度测频的测频精度要求。

    待测的时钟信号分别是:REFRESH#存储器刷新信号线由刷新控制器驱动,以表明将执行一个刷新周期;BCLK是由平台电路驱动的系统总线时钟信号线,正常运行状态下频率为6 MHz~8 MHz(±500 ppm),周期的占空比为45%~55%;OSC振荡器信号线是由平台电路驱动的时钟信号,其频率为14.318 18 MHz(±500 ppm),周期的占空比为45%~55%。其中OSC不与任何其他总线信号线同步。最小的待测频率是6 MHz,可以选用直接计数测频法,测量精度分别可达10-6和10-7级,满足该频率测量1%误差的技术要求。直接计数测频法实现过程简单,计算量小,提高了监控平台的运行速度。

2.3.2 PC104总线复位脉宽测量

    脉宽测试是测量PC104主板复位过程中复位脉冲的脉宽,复位信号线由平台电路驱动为有效状态。任何接收到复位信号的总线资源必须立即使所有输出驱动器处于三态,并进入适当的复位状态。

    FPGA监测脉宽通常采用脉冲计数法,即在待测信号的高电平或低电平用一个高频时钟脉冲进行计数,然后根据脉冲的个数计算待测信号宽度。待测信号相对于计数时钟通常是独立的,其上升、下降沿不可能正好落在时钟的边沿上,因此该法的最大测量误差为一个时钟周期。监控平台FPGA采用50 MHz的高频时钟,脉宽测量精度可达2×10-8,满足PC104主板监测复位脉宽测量的技术要求。

2.4 电源测量模块

    电压监控模块是基于ADI公司生产的AD7417设计的,AD7417为十位、四通道模数转换器,片内带有温度传感器。AD7417在降低功耗方面有非凡的性能,其自动掉电功能可以使芯片在输出速率较低时启动掉电模式来降低功耗。

    PC104主板工作电压是+5 V,有些模块的工作电压是+12 V。AD7417拥有四路AD转换通道,可以对于总线的±5 V、±12 V分别进行监测。利用FPGA的I/O口和AD7417的SDA、SCL构成双线I2C串行总线接口,通过FPGA控制AD7417芯片分别采集PC104总线上的各路电源电压,同时将采集到的结果进行AD转换后上传到FPGA处理。

    电压测试模块输入电路原理图如图4所示。总线正电压采用电阻串联分压的方式得到可被AD7417识别的模拟电压值;总线负电压经过8.2 V的反向稳压二极管后得到正电压,再分压为可识别电压值。下面以+5 V测试输入端口为例,介绍实际电压值计算方法。

qrs3-t4.gif

    已知AD7417的参考电压是内部参考电压2.5 V,假设实际被测电压为V1,AD7417输入端口IN1被测电压为V2,FPGA采集到的数值为x,则:

     qrs3-gs1-3.gif

3 结论

    本项目设计的FPGA监测程序不仅可以有效地记录PC104的总线运行代码,还能实时提取有效启动代码和故障监控码,测量总线关键信号的频率和脉宽。FPGA程序与上位机实时通信,可根据上位机的指令,实现信息上传、复位控制及BIOS模式控制等功能。该设计经过多次测试,可以有效地检测到故障PC104主板,并提供具体的故障信息。从检测结果可以看出,基于FPGA设计的检测程序在速度和功能上均能满足PC104主板系统的检测技术要求。本设计的系统操作方便,扩展性强,实用性好。目前应用该FPGA程序的PC104监控平台达到技术要求,并通过验收。

参考文献

[1] 刘广林.基于PC/104和ARM的工业控制平台设计及应用[D].武汉:华中科技大学,2010.

[2] 杨勇智,黄胜伦,冯和军,等.基于PC/104总线的某型飞机武器控制系统的ATS[J].空军工程大学学报(自然科学版),2003,4(3):36-39.

[3] 张仲华,高晓庄,王大鹏.基于PC104的雷达主控单元检测维修平台[J].现代电子技术,2015,38(3):48-50.

[4] 陈芳.基于PC/104的ARINC 429通讯总线的设计与实现[D].南京:南京航空航天大学,2005.

[5] 陈正捷,何健.基于CPLD和PC104总线规范的嵌入式计算机主板检测卡设计[J].测控技术,2006,2(25):331-336.

[6] 陈岩申,张波,管少辉,等.基于OMAPLl38和FPGA构架的PCI04主板检测系统[J].计算机测量与控制,2015,23(5):1512-1514.

[7] 杨海钢,孙嘉斌,王慰.FPGA器件设计技术发展综述[J].电子与信息学报,2010,32(3):714-727.

[8] 张婉明,李琦,李金海,等.基于ARM与FPGA的便携式GNSS信号采集回放系统设计[J].电子技术应用,2016,42(10):58-61.

[9] Altera Corporation,Terasic Technologies.DE0 user manual[EB/OL].(2011)[2017]http://DE0.terasic.com.



作者信息:

周治虎1,2,张  凡1,2,武明虎1,2,孔祥斌1,2,刘  聪1,2,代  松1,2

(1.湖北工业大学 太阳能高效利用湖北省协同创新中心,湖北 武汉430068;

2.湖北省电网智能控制与装备工程技术研究中心,湖北 武汉430068)

继续阅读>>