查看: 404|回复: 0

[经验] 基于FPGA的PCB测试机硬件的电路设计

[复制链接]

该用户从未签到

发表于 2021-1-28 21:10:54 | 显示全部楼层 |阅读模式
分享到:
PCB 光板测试机基本的测试原理是欧姆定律,其测试方法是将待测试点间加一定的测试电压,用译码电路选中PCB 板上待测试的两点,获得两点间电阻值对应的电压信号,通过电压比较电路,测试出两点间的电阻或通断情况。 重复以上步骤多次,即可实现对整个电路板的测试。
  由于被测试的点数比较多, 一般测试机都在2048点以上,测试控制电路比较复杂,测试点的查找方法以及切换方法直接影响测试机的测试速度,本文研究了基于FPGA的硬件控制系统设计。
  硬件控制系统
  测试过程是在上位计算机的控制下,控制测试电路分别打开不同的测试开关。测试机系统由以下几部分构成: 上位计算机PC104 、测试控制逻辑(由FPGA 实现) 、高压测试电路。 其中上位机主要完成人机交互、测试算法、测试数据处理以及控制输出等功能。 FPGA 控制高压测试电路完成对PCB 的测试过程。
  本系统以一台PC104 为上位计算机,以FPGA为核心,通过PC104 总线实现上位机对测试的控制。
  测试系统总体框图如图1所示。

  FPGA与PC104的接口电路
  PC104总线是一种专为嵌入式控制定义的工业控制总线,其信号定义与ISA 总线基本相同。 PC104总线共有4 类总线周期,即8 位的总线周期、16 位的总线周期、DMA 总线周期和刷新总线周期。 16 位的I/O总线周期为3 个时钟周期,8 位的I/O总线周期为6 个时钟周期。 为了提高通信的速度,ISA总线采用16 位通信方式,即16 位I/O方式。 为了充分利用PC104的资源,应用PC104的系统总线扩展后对FPGA 进行在线配置。正常工作时通过PC104总线与FPGA进行数据通信。
  FPGA与串行A/D及D/A器件的接口
  根据测试机系统设计要求,需要对测试电压及两通道参考电压进行自检,即A/D转换通道至少有3 路。 两路比较电路的参考电压由D/A输出,则系统的D/A通道要求有两通道。 为了减少A/D及D/A的控制信号线数,选用串行A/D及D/A器件。 综合性能、价格等因素, 选用的A/D器件为TLC2543,D/A器件为TLV5618。
  TLV5618是TI公司带缓冲基准输入(高阻抗)的双路12 位电压输出DAC,通过CMOS 兼容的3线串行总线实现数字控制。器件接收16 位命令字,产生两路D/A模拟输出。TLV5618只有单一I/O周期,由外部时钟SCL K决定,延续16 个时钟周期,将命令字写入片内寄存器,完成后即进行D/A转换。TLV5618读入命令字是从CS的下降沿开始有效,从下一SCLK的下降沿开始读入数据,读入16位数据后即进入转换周期,直到下次出现CS的下降沿。 其操作时序图如图2 所示。

  TLC2543是TI公司的带串行控制和11个输入端的12 位、开关电容逐次逼近型A/D转换器。 片内转换器有高速、高精度和低噪音的特点。 TLC2543工作过程分为两个周期:I/O周期和转换周期。I/O周期由外部时钟SCLK决定,延续8、12或16个时钟周期,同时进行两种操作: 在SCLK上升沿以MSB方式输入8位数据到片内寄存器;在SCLK下降沿以MSB 方式输出8、12、16位转换结果。转换周期在I/O周期的最后一个SCLK下降沿开始,直到EOC信号变高,指示转换完成。 为了与TLV5618的I/O周期一致,采用了MSB方式,使用CS的16 时钟传送的时序。其操作时序如图3 所示。

  由于这两种器件都是SPI接口,可将这两器件连接至同一SPI 总线,通过不同的片选信号对不同的器件操作。 由于SPI接口协议复杂,而且从图3 可以看出,这两种器件的时序并没有用到全部的SPI接口时序。为了实现符合以上逻辑的时序,减少标准SPI 接口IP 核对FPGA资源的浪费, 设计采用Verilog硬件描述语言用同步状态机(FSM)的设计方法实现,编写ADC及DAC控制时序。程序实际上是一个嵌套的状态机,由主状态机和从状态机通过由控制线启动的总线在不同的输入信号情况下构成不同功能的有限状态机。 则由图3 可知,D/A操作有4 个状态,A/D操作有7个状态。 两种状态中有几个状态是相同的,故可用一个有限状态机完成对串行A/D及D/A的操作。 程序实际上是一个嵌套的状态机,由主状态机和从状态机通过由控制总线启动的总线在不同的输入信号情况下构成不同功能的较复杂的有限状态机。 A/D及D/A操作共用唯一的驱动时钟(SCLK) 及数据总线(SI、SO)。由于操作的写周期有16个时钟周期,读周期有12个时钟周期,模块是在三个嵌套的有限状态机中完成的,其主状态机的状态如图4所示。

  系统设计中,将AD、DA操作封装成一单独模块,由上层控制模块输出命令字及控制信号启动本模块的相应操作,操作完成后(进入idle状态) ,本模块发出相应状态信号至上层模块
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-24 16:44 , Processed in 0.107648 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.