基于 FPGA 的多路数字量采集模块电路设计

2017-08-18 79 0

测控系统常常需要处理所采集到的各种数字量信号。通常测控系统采用通用 MCU 完成系统任务,但当系统中采集信号量较多时,仅依靠 MCU 则难以完成系统任务。针对这一问题,本文提出一种基于 FPGA 技术的多路数字量采集模块:利用 FPGA 的 I/O 端口数多且可编程设置的特点,配以 VHDL 编写的 FPGA 内部逻辑,实现采集多路数字量信号。

该数字量采集模块主要功能是采集输入的 36 路数字及脉冲信号,并将编帧后的信号数据上传给上位机,上位机经解包处理后显示信号相应的状态以进行判断。根据设计要求,所测量的 36 路数字信号中有 15 路正脉冲信号,它们均由一个同步脉冲信号触发,因此需要测量这些正脉冲的宽度和相对于同步信号脉冲的延时,要求采集步长不能大于 10 ns,即采集频率高于 100 MHz;而其他数字信号需要显示高低电平状态,其中一路信号是固定频率信号,需测量其频率值。上位机要求显示所采集信号的状态。

一、模块原理框图

FPGA 内部逻辑功能强大,外围电路设计基于简单、可靠的原则。该模块由 FIFO、USB2.0 单片机、光电隔离器等部分组成:36 路数字信号经光电隔离器进入 FPGA 主控单元以供采集,FPGA 处理采集到的信号、转换成数据进行编帧,然后写入 FIFO;USB 单片机提取 FIFO 中的数据,通过 USB 电缆传送给上位机,上位机将传送来的数据解帧,然后显示所有信号状态;模块通过电源接口向各个部分供电。其原理框图如图 1 所示。

基于 FPGA 的多路数字量采集模块电路设计

图 1 模块原理框图

1. FPGA 配置电路

FPGA 采用 XILINX 公司的 Spartan-II 系列 XC2S100E:该系列器件的内核采用 2.5 V 供电,工作频率高达 200 MHz;I/O 端口供电电压为 3.3 V,可承受 5 V 的输入高电平。Spartan-II 系列的 FPGA 具有丰富的 I/O 端口资源,其 I/O 端口输出缓冲器可接收高达 24 mA 源出电流和 48 mA 灌入电流。

由于 FPGA 基于 RAM 工艺技术、掉电后不能保存信息,因此需要一个外置存储器来保存信息,采用一次可编程的 PROM(高有效或低有效)XCF01S,其复位引脚的极性可编程设置,供电电压为 3.3 V。XCF01S 的 DONE、INIT、CCLK 信号来自于 FPGA XC2S100E:系统上电后首先 FPGA 初始化,INIT、DONE 置低;INIT 置低后复位 PROM,此时由于 PROM 的 CE 为低,因此选取 PROM,从而可将数据流从 DATA 引脚输入到 FPGA 的 DIN 引脚。配置完成后,FPGA 将 DONE 接高,PROM 处于低功耗的待机模式,并将 DATA 引脚置为高阻态,FPGA 配置电路如图 2 所示。

基于 FPGA 的多路数字量采集模块电路设计

图 2 FPGA 配置电路

2. 光电隔离电路

采用高速光电耦合器 HCPL-2631,其开关频率高达 10 MHz,而输入数字信号频率为 120 kHz,完全满足要求。由于光电耦合器件以光为媒介传输信息,可使输入输出隔离;由于光电耦合器的输入回路为发光二极管,其输入阻抗很小,而干扰源的内阻较大,根据分压原理可知,馈送到光电耦合器输入端的噪声干扰电压变得很小,从而能有效抑制尖峰脉冲及各种噪声干扰,具有较强的抗干扰性能;另外,由于光电隔离器的两端采用不同的接地方式,因此数字信号地和模块地被完全隔离。光电隔离电路如图 3 所示。

基于 FPGA 的多路数字量采集模块电路设计

图 3 光电隔离电路

3. FIFO 电路

FIFO 电路采用 IDT 公司的 IDT72V17190 器件,该器件采用 3.3 V 电压供电,为 16 位 64 KB 容量的 FIFO,工作时钟高达 100 MHz。如图 4 所示,FIFO 的数据输入 D0~D15 及 PAF、WCLK、WEN 均与 FPGA 相连,数据输出 Q0~Q15 及 REN、RCLK、OE、EF、MRS、HF、FF 均与 USB2.0 单片机相连。读 FIFO 状态时,USB2.0 单片机给出 FIFO 复位信号 MRS 和使能信号 OE,然后判断 FIFO 的状态信号 EF(空)和 HF(半满):当 FIFO 半满且非空(即 EF 为高、HF 为低)时,给出 FIFO 读使能信号 REN 和读时钟 RCLK,从 FIFO 中读出数据;写 FIFO 时,FPGA 判断 FIFO 的 PAF(几乎满)信号,如果该信号无效,则给出写使能 WEN 和写时钟 WCLK,将数据写入 FIFO。

基于 FPGA 的多路数字量采集模块电路设计

图 4 FIFO 电路

二、FPGA 内部逻辑设计

FPGA 内部逻辑主要分为数字信号采集、数据缓存和数据读取、FIFO 控制。根据要求,信号采集又分为频率信号采集、20 路数字信号采集和 15 路脉冲信号采集;系统同时采集三组信号,再送入外部 FIFO 中缓存。由于脉冲信号的数据量较大、时序不匹配,因此在信号采集完后数据还应缓存,然后再经数据编帧送至外部 FIFO。内部缓存利用 VHDL 编写模块,但更简易的方法是利用 FPGA 内部的双口 RAM,因此 FPGA 选用 Xilinx 公司的 XC2S100E,其内部集成一定容量的 RAM,足够内部缓存使用。数据经信号采集后送入缓存,然后由读取模块读出再送入外部 FIFO,整个模块采用 120 MHz 的时钟,可以满足要求大于 100 MHz 的时钟频率。采集 20 路数字信号的方法是当信号变化时,就将当前所有数字信号的电平状态都送入缓存;而对于频率信号和脉冲信号的采集,其方法见下文的编帧与解帧部分。

数据的编帧和解帧

基于 FPGA 的多路数字量采集模块电路设计

图 5 完整的数据帧结构

在数据采集部分中,当同步信号的上升沿到来时,将 3 个帧标志分别写入 3 个缓存:频率信号数据的帧标志为 EB90,20 路数字信号的帧标志为 2 个 EB91,15 路脉冲信号数据的帧标志为 3 个 EB92。读取数据模块中,当同步信号的下降沿到来时开始读取缓存的数据送至外部 FIFO,并判断当读取一个 EB90 后开始读取缓存的数据并送入外部 FIFO;当读到两个 EB91 后读取缓存的数据并送入外部 FIFO;当读到 3 个 EB92 后表明一帧数据读取完毕,等待下一个同步信号的下降沿后再开始读取下一帧数据。由于外部 FIFO 是 16 位,所以数据中不满 16 位的都用 0 将数据补充完整,完整的数据帧结构如图 5 所示。

上位机收到一帧数据后进行解帧处理:对于频率信号数据,将这些 T 值相加并求平均得出 T′,再乘以 2,由于系统时钟是 120 MHz,所以 2T′/120 为频率信号周期(μs 级),然后求倒数即可得出该信号的频率值;20 路数字量信号数据直接显示其电平状态;脉冲信号数据则先判断哪一路(多路)脉冲信号发生变化,再判断该信号(几路信号)的电平状态——若为高电平,则对应的时间应为 TBa;若为低电平,则对应的时间应为 TBb。TBa 即为该脉冲信号相对于同步信号的延迟,而 TBb − TBa 的值即为该脉冲信号的正脉冲脉宽。

相关文章

压敏电阻的参数、特性与应用
基于 STC12C 与 SIM300 的智能家电防盗系统电路设计
基于 nRF24L01 与 DHT11 的无线温湿度测试系统电路设计
电冰箱电子温控器的原理与半自动除霜电路
基于 586-Engine 的无人机飞行控制器电路设计
三极管开关电路的改进接法:加速电容、图腾柱与驱动电路

发布评论