FPGA 在激光测距机电路检测系统中的应用
FPGA 在激光测距机电路检测系统中的应用
作者:曹海源;张玺;孙斌;王淑云
针对部队各类激光测距仪机的维修保障,我所研制出了一套便携式激光测距机电路检测仪,能实现对 85 手持式、88 式、88对海式等五类激光测距机电路系统的快速检测和维修指导,极大地提高了维修效率。由于要完成对光信号的接收和处理,测距机的电路系统涉及到许多窄脉宽信号,而且具有严格的信号时序。其中的 AGC 信号、触发信号等脉宽均只有几十个 uS,主波和回波信号的脉宽均只有 1~2uS,信号时间间隔精确到 nS级,为信号检测增加了难度;同时,电路系统的控制信号繁多,各类装备的接口各异,这些都为检修仪的设计提出了挑战,仅采用传统的单片机和常规 IC 难以实现。随着大规模集成电路技术的飞速发展,CPLD 和 FPGA 等可编程逻辑器件在结构、工艺、集成度、功能、速度和灵活性等方面都有了很大的改进和提高,从而为高效率、高质量、灵活地设计嵌入式单片机系统提供了可能。可编程逻辑器件的加密功能也使产品开发者的权利得到保障。因此,本文基于 FPGA 逻辑器件设计了激光测距机的电路检测系统。
2 检测系统硬件组成
检测系统由 MCU 数据处理、FPGA 及其配置器件、被测信号调理、激励信号驱动适配、液晶显示等功能模块组成。其工作原理是:MCU 根据用户操作向 FPGA 发送测试相应命令,FPGA 模块产生激励信号,为被测电路提供工作时序,采集电路信号测量其特征参量,并将测试结果传送给 MCU, MCU 处理测量结果,进行故障分析判断,并在液晶屏上实时显示测试波形和数据信息。可见,FPGA 是整个检测系统的关键部分,整合了与 MCU 的通信、测试命令的解释及决策、测试激励信号的产生和输入信号检测等功能。
通过对检测对象中所有被测信号的分析,根据测试功能、处理速度和芯片容量的需求,本检测系统中 FPGA 芯片选用 AL-TERA 公司 Cyclone 系列的 EP1C3T144。该器件采用 0.13um 工 艺制造、TPFQ 封装,拥有 104 个 I/O 口和 2910 个逻辑单元,可直接由外部晶振提供 100MHz 的时钟输入,也可经片内 PLL 倍频,工作在更高的频率。采用 Verilog HDL 硬件描述语言来实现 FPGA 各功能模块,然后通过 EDA 开发平台,对设计文件进行逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对 FPGA 芯片进行编程,实现系统的设计要求。FPGA 的配置采用了专用配置芯片 EPCS1,用 ByteBlaster II 对其进行下载编程。
3 FPGA 功能模块划分及实现
在 FPGA 的功能实现上,首先构建整体方案,然后划分功能模块,再针对每个功能模块进行编程、波形仿真,最后进行整体功能的仿真和实验测试。根据上节分析,可将 FPGA 的作用分成 SPI 通信接口、命令解释与决策、时钟分频、激励信号产生、电路信号测试等功能模块。
3.1 SPI 通信接口的实现
SPI 接口是一个同步、全双工串行接口,最大数据位速率为时钟速率的 1/8,只要遵循同一时刻只有一个主机和从机通信的原则,在同一条总线上可以有多个主机和从机。SPI 口因接口简洁扩展方便等优良特性,广泛应用于串行存储器 (如DataFlash、3 线 E2PROM)、串行外设(如 ADC、DAC、LCD 控制器、CAN 控制器)和外部协处理器中。
在第三方软件 Altera SOPC Builder 中可直接定制 SPI 接口的 IP 核,在本系统中采用 Verilog HDL 来描述实现。 在设计中,MCU 作为 SPI 通信的主机,FPGA 的 SPI 接口作为从机。SPI口有四种不同的数据传输格式的时序,这里通过设置 SPCR 寄存器选择 CPOL=0、CPHA=0 模式。
3.2 时钟分频的实现
Verilog HDL 所描述的所有组合逻辑或时序逻辑电路的功能都是在各自输入时钟的节拍下工作的,而对于不同的功能模块,因其电路精度要求不同对输入时钟的要求也不同,时钟频率越低,对 FPGA 综合、布局布线的要求也越低,所设计出的电路也越稳定。在本设计中,系统时钟由外部 100MHz 晶振提供,系统内部模块要用到的时钟有 100MHz、1MHz、1KHz、10Hz 和1Hz 五种,由计数器分频实现,限于篇幅不详述。
3.3 命令解释与决策的实现
FPGA 要完成与 MCU 的数据交换,又要指挥各测试模块对指定通道信号的特定参量的测试,还要执行成百上千组时序信号激励和开关量信号激励,任务错综复杂,需要一个对命令的解释和决策执行机制。在具体实现上,首先对 MCU 的命令号进行区间划分,决策模块收到从 SPI 接口模块的命令后,判断命令的类别,分别针对握手联络命令、复位命令、测试命令(包括通道号、测试指标、时钟输入的选择)、激励发生命令(包括通道号、时序信息)、发送测试结果命令(通过 SPI 接口将测试结果发送给 MCU)等去触发相应 FPGA 内部模块动作。
3.4 信号测试的实现
信号测试功能包括对输入信号的脉宽测试、周期测试、特殊类型信号的测试等内容,限于篇幅,下面对比较典型的脉宽测试进行阐述。例如对于负脉冲信号,测试其脉宽即是测量其在某时段低电平的维持时间,可以通过计算时标信号的个数来实现。设时标信号周期为 Ts,时标个数为 N,则脉宽为 W=Ts*N,其主要部分是计数功能,并将得到的数予以锁存。计数模块与锁存模块由控制信号发生模块控制。
其中 CLKX 为被测脉冲,CLK 为时标信号,RST 为系统复位信号,WIDTH 为脉宽计算结果。图中有三个控制信号:计数允许信号 CNT_EN、计数清零信号 CNT_CLR 和锁存信号LOAD,分别控制计数模块和锁存模块。
在实际测试中发现,由于外界干扰的影响,在被测信号出现正常脉冲前会出现多个窄带干扰脉冲,这个脉冲的短暂低电平会让计数模块产生误动作,从而得出错误的计算结果。本文采取前级窄带脉冲过滤的方法,有效地消除了外界的干扰。其具体做法是外加一个计数模块判断输入信号的低电平时间是否超过一定门限,超过则触发其后的控制信号发生模块动作,否则不触发。 值得注意的是在后面的计数模块里要加上前级的门限值。
3.5 激励信号的实现
检测系统所要产生的激励信号包括时序信号和开关量信号,时序信号的产生相对复杂。其中, START 是启动信号,控制时序产生模块的启动与停止;
EX_SYNC 是外同步信号,在某些场合下,时序信号的产生需要与外界信号的同步,此信号用于控制信号发生的时基;计数模块负责在 CNTEN 和 CNT_CLR 等控制信号下计数,实时触发相应的 时序序列输出; LOCK 信号用于锁定末态时序序列的状态。
4 设计中应注意的问题及解决办法
4.1 电源干扰
检测电路,尤其是高精度测频、测脉宽的 FPGA 电路,电源部分性能起着举足轻重的作用。电源一般由 220V 交流经变压、整流后获得,为防止引入交变干扰,需要对其进行加去耦电容和屏蔽处理。由于在设计时对电源、地线的考虑不周而引起的干扰也会使 FPGA 测试性能的下降,甚至影响到功能的实现。为此在设计整机印制板时要尽量增加电源和地线的宽度,最好是地线比电源线宽。它们的宽度关系是:地线最宽,电源线次之,信号线最窄。在每个集成电路电源处加一个去耦电容,每个电解电容边上都要加一个小的高频旁路电容。另外本系统在检验中发现,由于在测试中整机电流的突然增大,会使 FPGA 复位芯片的电压产生抖动,进而引起 FPGA 的复位动作,最后采取在 FPGA 的 3.3V 端并接一个 470uF 的电容的方法解决了此问题。
4.2 数模互扰
由于整个系统是由数字电路和模拟电路混合构成的,在布线时需要考虑它们之间互相干扰的问题,特别是地线上的噪声干扰。数字电路的频率高,模拟电路的敏感度强,对信号线来说,高频的信号线应尽可能远离敏感的模拟电路器件;对地线来说,整个 PCB 对外界只有一个结点,所以必须在 PCB 内部处理数模共地的问题。具体做法是在板内数字地和模拟地分开,只在 PCB 与外界连接的接口处(如插头等),数字地与模拟地通过一点来短接。
5 结束语
本文采用 FPGA 芯片实现了检测系统中的测试命令解释及决策、测试激励信号的产生、输入信号特征参量的测量等多个功能模块,并通过 SPI 接口与 MCU 配合,完成对各类电路板的检测功能。分析了在实际应用中会出现的干扰,并采用了有效的解决方法。实验证明,采用 FPGA 的设计方案解决了测试中的难点问题,达到了测试精度要求,并具有很强的扩展性。目前,此项目产品已在多家单位推广使用。
本文创新点:在对多种电路板的信号检测的实现上,一般采用高速单片机来实现高速信号的特征测量,采用多块转换板来实现接口的适配和硬件资源的配置,而本文采用 FPGA 来解决这两个问题,大大提高了测试精度,简化了硬件设计,降低了设计成本;针对实际使用中的窄脉冲干扰、电源干扰、数模互扰,本文提出了相应的软件、硬件抗干扰措施。
本文章转自爱学术(aixueshu.com),如有侵权,请联系删除