0 引言
随着我国航空技术的不断发展,我国新研制了众多不同型号和不同用途的飞机。这些飞机以及这些飞机上电子设备之间采用的RS 232和RS 422格式传输的数据总线也有了极大的发展。它们传输数据的数据位、校验位、停止位、波特率及传输的信息块形式各不相同,尤其波特率,已经从当初的几十Kb/s发展到现在的上百Kb/s甚至上Mb/s。这就需要研制一种高速RS 232/422信号模拟器,它能够模拟我国现有飞机及机上设备采用RS 232或RS 422格式进行相互通信的RS 232/422总线数据,为机载测试工程师在试验室对机上采集RS 232或RS 422信号的设备进行通电和编程验证,以及外场机上排故时提供方便可靠而又灵活的RS 232/422信号模拟器。
1 系统总体方案设计
RS 232/422信号模拟器主要由USB接口、键盘显示、电源管理、RS 232/422信号电平转换和FPGA核心控制这几部分电路模块组成。USB接口电路主要功能是和上位计算机通过USB接口建立连接,把上位计算机发送数据传送到FPGA核心控制电路,或者把FPGA核心控制电路发送的数据传送到上位计算机。键盘显示电路主要功能是当信号模拟器脱离PC机独立工作时,通过键盘输入命令和数据,并在LED显示屏上观察输入的命令和数据是否正确,并可以在接收时能察看接收到的数据,以判断接收到的数据正确与否;此外,它还可以实时显示电源的状态和电池的电量等信息。电源管理主要是对供电源头进行排序和自动选择,同时监控电池的电量信息,并把这些信息传送给FPGA核心控制电路。
RS 232/422信号电平转换电路主要功能则是把TTL或CMOS电平转换成符合要求电平传送出去,或者把接收到的RS232或RS 422标准的信号电平转换成TTL或COMS电平,同时在不工作时使这些电路处于睡眠状态,以降低功耗。FPGA核心控制电路是本硬件系统的核心,它对以上部分的电路系统进行统一管理,监控所有电路的工作状态,并随接收来自这些电路的数据信息,根据这些信息做出不同的处理,如果需要的话,并把部分结果在LED显示屏或者上位计算机屏幕上显示出来,供操纵者参考。本信号仿真器的硬件系统电路原理框图如图1所示。
2 主要电路模块设计
2.1 USB接口电路模块设计
USB(Universal Serial Bus,(计算机)通用串行总线)是计算机和外围设备连接的最常用,也是最方便的总线接口,它支持热插拔和即插即用,应用灵活,易于升级,全速率传输可达12 Mb/s,而高速传输达480 Mb/s,并且它同时可以向外围设备提供耗电电流不大于500 mA的
5 V电源。在本信号仿真器中,USB接口不仅仅具有和信号仿真器交换数据的任务,同时还向信号源提供5 V的直流供电的功能。通过USB接口,上位计算机依靠用户界面程序对信号仿真器的工作状态、模拟的信号格式和信息块内容进行没置;当处于接收工作状态时,还可以把接收到的数据实时显示在计算机屏幕上。在设计中,本文采用了FTDI公司的FT245RL芯片作为主要的接口协议处理芯片,它本身集成了协议处理的固件程序,并且FTDI公司网站上也提供了此芯片的驱动程序,缩小了开发难度,加快了开发时间和成本。USB接口电路模块的电路原理图如图2所示。
2. 2 电源管理电路模块设计
信号模拟器既有USB接口供电,也有AC/DC适配器供电,同时还有着电池供电,这里供电电源的管理显得异常重要。在电源管理电路的设计中,首先要有电源排序和自动切换电路,当同时存在这三个电路供电时,要求能自动切断AC/DC和电池供电,无缝的转向USB供电。当USB接口不供电时,转向了AC/DC适配器供电,最后才是电池供电。整个过程的供电顺序是USB供电→AC/DC供电→电池;其次是要求能够对供电电路的状态和信息进行监控。电源管理电路模块要求能提供供电是来自USB接口、AC/DC适配器或是电池的信息,当是电池供电时,还需要提供电池的电量信息,即电池还剩余多少电量;最后,还要有锂离子充电电池的放电和充电的管理。为保护锂离子电池因过度放电而无法再次使用,当电池放电到终止电压时,自动切断供电电路,使电池供电电路处于断开状态。当插入AC/DC适配器和USB接口供电时,电源管理电路模块可以对电池进行充电,同时,电池的放电是一个电源逐渐衰减的过程,还需要对电源进行稳压。鉴于这些原因,电源管理电路模块的设计是本文的重难点之一。本系统中电源管理电路模块原理图如图3所示。
2. 3 FPGA核心控制电路模块设计
FPGA核心控制电路监控以上各电路模块的工作状态,随时准备接收来自它们的数据和命令,并进行相应的控制。它包括了控制部分和串行数据生成部分,控制部分是在FPGA芯片内部嵌入Alter公司提供的NIOSⅡ的处理器IP软核,利用QuartusⅡ软件内部的SOPC工具生成FPGA内部的控制电路。串行数据生成部分利用VHDL硬件编程语言编制了波特率发生器和并串转换模块生成RS 232/422串行信号数据。所有的控制电路都是通过软件定制在一片FPGA芯片内,外围电路比较简单,除了正常的程序加载电路和程序存储芯片,仅需要一片时钟芯片即可。FPGA核心控制电路原理图如图4所示。
3 系统软件设计
3.1 波特率和串行数据产生模块设计
串行数据产生模块负责生成符合格式设置要求的串行数据,如起始位,数据位,效验位,停止位等。它主要是把控制器发送的并行数据转换成串行数据,并根据控制器发送的效验位,停止位等设置命令来设置数据的格式,以来自波特率产生模块的16倍的波特率作为全局时钟,生成要模拟的RS 232/422信号数据。
波特率产生模块根据控制器发送的命令数据来产生符合要求的波特率。在本系统中,要求产生24种标准和非标准的波特率,其中标准的波特率16种,非标准波特率8种,最高的波特率达到1 Mb/s,这样利用常规的分频器不能满足要求。
依据DDS(直接数字频率合成)的原理,结合积分分频电路,设计了频率字累加器,通过从NIOSⅡ控制器输入的频率字来控制累加器的累加步长,将累加器输出的最高位作为输出的时钟信号的方法实现所需要的波特率时钟,此时输出的时钟即可作为串行数据产生模块的全局时钟,也就是16倍的波特率。同时为了提高时钟的精确度,降低误码率,在系统时钟(这里采用的是22 11 8 4 MHz)进入分频器以前,利用PLL倍频电路提高时钟的频率。
波特率和串行数据产生模块在FPGA内部的原理实现框图如5图所示。它的实现是采用VHDL硬件描述语言实现的,框图中每个小的模块代表VHDL语言编制的模块程序。
3.2 NIOSⅡ控制器系统定制和内部程序设计
传统的MCU,DSP或ARM等硬处理器或控制器,它们的功能和片内外设都是固化好的,用户只能使用,而不能做任何改动。而NIOSⅡ处理器是FPGA芯片生成厂商Altera公司无偿提供的软IP核,可以通过QuanusⅡ软件对它进行设置,随时可以添加在片的ROM或RAM,并去掉不必要的外设,使得整个系统的搭建灵活,方便,简洁。并且,在硬件系统的设计上,一片FPGA芯片内就可以完成整个的数字控制系统,使得硬件系统的设计非常的简单可靠,性能也非常的稳定。
在本系统的设计中,NIOSⅡ处理器和传统的MCU,DSP或ARM等硬处理器或控制器一样,也可以用C语言编程实现需要的控制功能,也可以嵌入各种嵌入式操作系统,并进行调试等。编程的开发环境是专用的NIOS2-IDE集成开发环境。
NIOSⅡ处理器内部程序主要完成USB与PC机之间的通信协议,依据PC机发送的设置命令来完成具体RS 232/422信号的实现,并完成数据格式的设置,数据块的设置,数据下行发送和上行传输及信号源工作状态的显示。其内部程序流程图如图6所示。
3. 3 用户界面程序设计
信号仿真器在PC机端的软件设计包括设备驱动程序和用户程序两部分,FTDI公司为基于FT245RL的USB接口设备提供了VCP、D2XX(动态链接库)两种驱动程序,这样就不再需要自己设计设备驱动程序,而只需要选择不同的驱动程序,可以把主要精力投入在用户软件设计上面。
底层驱动程序主要完成上位计算机和硬件设备的连接功能,并为用户界面程序建立和信号源仿真器相互通信的通信协议和通道,其结构框图如图7所示。
用户界面程序主要完成用户对模拟信号源进行的工作模式选择,信号种类选择,数据格式设置和消息块格式设置的输入功能,同时可以预览信号源发送的信号数据,读取信号源接收到的数据,并可以对存贮数据的FLASH芯片进行擦除。依据其要完成的功能,其流程图如图8所示。
4 结语
本文研制的高速RS 232/422信号仿真器,即可以由计算机通过USB接口控制使用,也可以依靠自身携带的电池、键盘和LED显示屏独立工作。它在设计中采用了FPGA技术,免除了程序跑飞的可能,提供了高速的,多种标准和非标准的波特率,灵活的数据格式和信息块格式设置,是机载测试采集器采集RS 232/422信号进行实验室通电或外场排除RS 232/422总线数据故障时比较理想的选择。