FPGA在激光测距机电路检测系统中的应用
扫描二维码
随时随地手机看文章
引言
针对部队各类激光测距机的维修保障,我所研制出了一套便携式激光测距机电路检测仪,能实现对 85手持式、 88式、88对海式等五类激光测距机电路系统的快速检测和维修指导,极大地提高了维修效率。由于要完成对光信号的接收和处理,测距机的电路系统涉及到许多窄脉宽信号,而且具有严格的信号时序。其中的 AGC信号、触发信号等脉宽均只有几十个 uS,主波和回波信号的脉宽均只有 1~2uS,信号时间间隔精确到 nS级,为信号检测增加了难度;同时,电路系统的控制信号繁多,各类装备的接口各异,这些都为检修仪的设计提出了挑战,仅采用传统的单片机和常规 IC难以实现。随着大规模集成电路技术的飞速发展,CPLD和 FPGA等可编程逻辑器件在结构、工艺、集成度、功能、速度和灵活性等方面都有了很大的改进和提高,从而为高效率、高质量、灵活地设计嵌入式单片机系统提供了可能。可编程逻辑器件的加密功能也使产品开发者的权利得到保障。因此,本文基于 FPGA逻辑器件设计了激光测距机的电路检测系统。
2检测系统硬件组成 脉冲信号
通信MCU 数据采集处理
500)this.style.width=500;" border="0" />
如图 1所示,检测系统由 MCU数据处理、 FPGA及其配置器件、被测信号调理、激励信号驱动适配、液晶显示等功能模块组成。其工作原理是: MCU根据用户操作向 FPGA发送测试相应命令, FPGA模块产生激励信号,为被测电路提供工作时序,采集电路信号测量其特征参量,并将测试结果传送给 MCU,MCU处理测量结果,进行故障分析判断,并在液晶屏上实时显示测试波形和数据信息。可见, FPGA是整个检测系统的关键部分,整合了与 MCU的通信、测试命令的解释及决策、测试激励信号的产生和输入信号检测等功能。
通过对检测对象中所有被测信号的分析,根据测试功能、处理速度和芯片容量的需求,本检测系统中FPGA芯片选用 ALTERA公司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通信接口、命令解释与决策、时钟分频、激励信号产生、电路信号测试等功能模块,如图 2所示。
500)this.style.width=500;" border="0" />
3.1 SPI通信接口的实现
SPI接口是一个同步、全双工串行接口,最大数据位速率为时钟速率的1/8,只要遵循同一时刻只有一个主机和从机通信的原则,在同一条总线上可以有多个主机和从机。SPI口因接口简洁扩展方便等优良特性,广泛应用于串行存储器(如DataFlash、3线 E 2PROM)、串行外设(如ADC、DAC、LCD控制器、CAN控制器)和外部协处理器中。
在第三方软件 Altera SOPC Builder中可直接定制 SPI接口的 IP核,在本系统中采用 Verilog HDL来描述实现。 在设计中,MCU作为 SPI通信的主机,FPGA的SPI接口作为从机。SPI口有四种不同的数据传输格式的时序,这里通过设置 SPCR寄存器选择CPOL=0、CPHA=0模式,以下是其实现代码:
always @(posedge sck or posedge cs)
begin:chy
integer i;
if(cs) begin data=0;i=0;miso=1”b’Z; end
else begin
if(sck)
begin
data= data<<1;
data= data+mosi;
miso=(send_data>>(7-i))& 8'h01;
i=i+1;
if(i==8) begin
rev_byte= data;
end end end end
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,其主要部分是计数功能,并将得到的数予以锁存。计数模块与锁存模块由控制信号发生模块控制,其逻辑框图如图 3所示。
500)this.style.width=500;" border="0" />
其中 CLKX为被测脉冲,CLK为时标信号,RST为系统复位信号,WIDTH为脉宽计算结果。图中有三个控制信号:计数允许信号CNT_EN、计数清零信号 CNT_CLR和锁存信号LOAD,分别控制计数模块和锁存模块。
在实际测试中发现,由于外界干扰的影响,在被测信号出现正常脉冲前会出现多个窄带
干扰脉冲,这个脉冲的短暂低电平会让计数模块产生误动作,从而得出错误的计算结果。本文采取前级窄带脉冲过滤的方法,有效地消除了外界的干扰。其具体做法是外加一个计数模块判断输入信号的低电平时间是否超过一定门限,超过则触发其后的控制信号发生模块动作,否则不触发。 值得注意的是在后面的计数模块里要加上前级的门限值。
3.5激励信号的实现
检测系统所要产生的激励信号包括时序信号和开关量信号,时序信号的产生相对复杂,其实现机理如图 4所示。其中,START是启动信号,控制时序产生模块的启动与停止;EX_SYNC是外同步信号,在某些场合下,时序信号的产生需要与外界信号的同步,此信号用于控制信号发生的时基;计数模块负责在 CNT_EN和 CNT_CLR等控制信号下计数,实时触发相应的时序序列输出;LOCK信号用于锁定末态时序序列的状态。
500)this.style.width=500;" border="0" />
4 设计中应注意的问题及解决办法
4.1电源干扰
检测电路,尤其是高精度测频、测脉宽的 FPGA电路,电源部分性能起着举足轻重的作用。电源一般由 220V交流经变压、整流后获得,为防止引入交变干扰,需要对其进行加去耦电容和屏蔽处理。由于在设计时对电源、地线的考虑不周而引起的干扰也会使 FPGA测试性能的下降,甚至影响到功能的实现。为此在设计整机印制板时要尽量增加电源和地线的宽度,最好是地线比电源线宽。它们的宽度关系是:地线最宽,电源线次之,信号线最窄。在每个集成电路电源处加一个去耦电容,每个电解电容边上都要加一个小的高频旁路电容。另外本系统在检验中发现,由于在测试中整机电流的突然增大,会使 FPGA复位芯片的电压产生抖动,进而引起 FPGA的复位动作,最后采取在 FPGA的 3.3V端并接一个 470uF的电容的方法解决了此问题。
4.2数模互扰
由于整个系统是由数字电路和模拟电路混合构成的,在布线时需要考虑它们之间互相干扰的问题,特别是地线上的噪声干扰。数字电路的频率高,模拟电路的敏感度强,对信号线来说,高频的信号线应尽可能远离敏感的模拟电路器件;对地线来说,整个 PCB对外界只有一个结点,所以必须在 PCB内部处理数模共地的问题。具体做法是在板内数字地和模拟地分开,只在 PCB与外界连接的接口处(如插头等),数字地与模拟地通过一点来短接。
5结束语
本文采用 FPGA芯片实现了检测系统中的测试命令解释及决策、测试激励信号的产生、输入信号特征参量的测量等多个功能模块,并通过 SPI接口与 MCU配合,完成对各类电路板的检测功能。分析了在实际应用中会出现的干扰,并采用了有效的解决方法。实验证明,采用 FPGA的设计方案解决了测试中的难点问题,达到了测试精度要求,并具有很强的扩展性。目前,此项目产品已在多家单位推广使用。