1、基于 FPGA 的 PCB 测试机硬件电路设计PCB 光板测试机基本的测试原理是欧姆定律,其测试方法是将待测试点间加一定的测试电压,用译码电路选中 PCB 板上待测试的两点,获得两点间电阻值对应的电压信号,通过电压比较电路,测试出两点间的电阻或通断情况。 重复以上步骤多次,即可实现对整个电路板的测试。由于被测试的点数比较多, 一般测试机都在 2048 点以上,测试控制电路比较复杂,测试点的查找方法以及切换方法直接影响测试机的测试速度,本文研究了基于 FPGA 的硬件控制系统设计。硬件控制系统测试过程是在上位计算机的控制下,控制测试电路分别打开不同的测试开关。测试机系统由以下几部分构成: 上位计
2、算机 PC104 、测试控制逻辑(由 FPGA 实现) 、高压测试电路。 其中上位机主要完成人机交互、测试算法、测试数据处理以及控制输出等功能。 FPGA 控制高压测试电路完成对 PCB 的测试过程。本系统以一台 PC104 为上位计算机,以 FPGA 为核心,通过 PC104 总线实现上位机对测试的控制。测试系统总体框图如图 1 所示。FPGA 与 PC104 的接口电路PC104 总线是一种专为嵌入式控制定义的工业控制总线,其信号定义与 ISA 总线基本相同。 PC104 总线共有 4 类总线周期,即 8 位的总线周期、16 位的总线周期、DMA 总线周期和刷新总线周期。 16 位的 I/
3、O 总线周期为 3 个时钟周期,8 位的 I/O 总线周期为 6 个时钟周期。 为了提高通信的速度,ISA 总线采用 16 位通信方式,即 16 位 I/O 方式。 为了充分利用 PC104 的资源,应用 PC104 的系统总线扩展后对 FPGA 进行在线配置。正常工作时通过 PC104 总线与 FPGA 进行数据通信。 基础电路设计(十)高频电路用电路板设计技术探索电子设备中电路板布局、布线和安装的抗 ESD 设计规则PCB 导线设计技术(上)SI 设计及板级 EMC:汤昌茂线路板 PCB 覆铜经验之我谈PCB 电路板差分阻抗测试技术PCB 导线设计技术(下)根据测试机系统设计要求,需要对测
4、试电压及两通道参考电压进行自检,即 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 决定,延续 1
5、6 个时钟周期,将命令字写入片内寄存器,完成后即进行 D/A 转换。TLV5618 读入命令字是从 CS 的下降沿开始有效,从下一 SCLK 的下降沿开始读入数据,读入 16 位数据后即进入转换周期,直到下次出现 CS 的下降沿。 其操作时序图如图 2 所示。TLC2543 是 TI 公司的带串行控制和 11 个输入端的 12 位、开关电容逐次逼近型 A/D 转换器。 片内转换器有高速、高精度和低噪音的特点。 TLC2543 工作过程分为两个周期:I/O 周期和转换周期。I/O 周期由外部时钟 SCLK 决定,延续 8、12 或 16 个时钟周期,同时进行两种操作: 在 SCLK 上升沿以 M
6、SB 方式输入 8 位数据到片内寄存器;在 SCLK 下降沿以MSB 方式输出 8、12、16 位转换结果。转换周期在 I/O 周期的最后一个 SCLK 下降沿开始,直到 EOC 信号变高,指示转换完成。 为了与 TLV5618 的 I/O 周期一致,采用了 MSB 方式,使用 CS 的 16 时钟传送的时序。其操作时序如图 3 所示。由于这两种器件都是 SPI 接口,可将这两器件连接至同一 SPI 总线,通过不同的片选信号对不同的器件操作。 由于 SPI 接口协议复杂,而且从图 3 可以看出,这两种器件的时序并没有用到全部的 SPI 接口时序。为了实现符合以上逻辑的时序,减少标准 SPI 接
7、口IP 核对 FPGA 资源的浪费, 设计采用 Verilog 硬件描述语言用同步状态机(FSM)的设计方法实现,编写 ADC 及 DAC 控制时序。程序实际上是一个嵌套的状态机,由主状态机和从状态机通过由控制线启动的总线在不同的输入信号情况下构成不同功能的有限状态机。 则由图 3 可知,D/A 操作有 4 个状态,A/D 操作有 7 个状态。 两种状态中有几个状态是相同的,故可用一个有限状态机完成对串行 A/D 及 D/A 的操作。程序实际上是一个嵌套的状态机,由主状态机和从状态机通过由控制总线启动的总线在不同的输入信号情况下构成不同功能的较复杂的有限状态机。 A/D 及 D/A 操作共用唯
8、一的驱动时钟(SCLK) 及数据总线(SI、SO)。由于操作的写周期有 16 个时钟周期,读周期有 12 个时钟周期,模块是在三个嵌套的有限状态机中完成的,其主状态机的状态如图 4 所示。 系统设计中,将 AD、DA 操作封装成一单独模块,由上层控制模块输出命令字及控制信号启动本模块的相应操作,操作完成后(进入 idle 状态) ,本模块发出相应状态信号至上层模块。 基础电路设计(十)高频电路用电路板设计技术探索电子设备中电路板布局、布线和安装的抗 ESD 设计规则PCB 导线设计技术(上)SI 设计及板级 EMC:汤昌茂线路板 PCB 覆铜经验之我谈PCB 电路板差分阻抗测试技术PCB 导线
9、设计技术(下)FPGA 片内程序是整个测试系统正确运行的关键。 由自顶向下的 FPGA 设计原则,将系统分为 5 个独立的模块, 即通信模块(ISA) 、测试模块(TEST) 、AD/DA 模块、解码模块(DECODER) 、RAM 控制模块(RAMCTL)。ISA 模块:系统通信及控制模块,完成与上位机通信、命令字解释、控制信号的产生等。系统根据上位机传送的导通电阻、绝缘电压等参数启动 ADDA 模块完成参考电压的输出;根据测试命令启动测试模块完成测试过程。数据在多个同步运行的同步状态机间传送,较难控制的是多进程间的数据通信与数据同步。RAM 控制模块:在测试开始前,上位机将测试点的信息通过
10、总线传送至 ISA 模块, ISA 模块再将其存放到片内 RAM 中;测试完成后,将 RAM 中的测试结果传送到上位机。 在测试时测试模块通过读 RAM 中测试点的信息来打开相应测试开关,再将测试结果保存到RAM 中。 这样两个模块都要求读写 RAM 以实现两个模块之间的数据共享,这就要求有一控制信号将两组读写信号线分别与 RAM 模块相连接,RAM 控制模块即完成此功能。测试模块(TEST):虽然测试过程有多种,如开关卡自检、导通测试、绝缘测试等,但测试过程却是相同的,即测试扫描。 测试的工作过程是:加比较电路参考电压打开待测点开关延时读比较器结果测试另一组测试点。 本模块是按照不同的操作码
11、,进入不同的测试过程。测试结果与测试点编号一起组成 13 位数据保存到 RAM 中,并将原来测试点的编号信息覆盖。解码模块(DECODER):这一模块挂在测试模块(TEST) 之后,它完成开关编号到实际电路的映射。 由于测试针阵形式不同、译码电路与控制电路的硬件设计不同,上级模块输出的测试开关信息并不能直接作为输出控制测试开关电路。 解码模块完成这两者间的转换。AD/DA 模块(AD/DA):设计 SPI 总线接口对 A/D 及 D/A 器件操作,模块以允许(adenable , daenable) 信号启动,以 busy 信号作为转换完成标志信号,将 A/D 及 D/A操作相对其它模块进行封
12、装。系统的每个模块采用 Verilog 硬件描述语言编写,采用多个多层嵌套的同步状态机(FSM)完成整个系统的逻辑功能;每一模块应用仿真工具 Modelsim完成模块的功能仿真,系统完成功能测试后;利用 Altera 综合布线工具 QuartusII 完成系统后仿真及综合、布线、下载;充分利用 Altera 公司免费提供的 IPcore 对程序模块进行优化;顶层设计采用方框图输入方式,模块间的数据流由方框图更直观地表现出来。结束语基于 FPGA 的 PCB 测试机的硬件控制系统,提高了 PCB 测试机的测试速度、简化电路的设计。此外由于 FPGA 的可重构特性,为系统的软件算法以及硬件结构的进一步优化升级打下了良好的基础,具有良好的应用前景。