基于FPGA的控制:数百万个供您遣用的晶体管(常见问题)
概览 现场可编程门阵列(FPGA)技术提供了专用硬件电路所特有的可靠性、真正的并行执行和闪电般的快速闭环控制性能。本文给出了关于可重配置的基于FPGA的硬件目标平台在闭环控制应用中使用的常见问题(FAQ)的解答。 什么是现场可编程门阵列(FPGA)? 一个 FPGA 是一种包含有一个可重配置的门阵列逻辑电路矩阵的设备。通过配置, FPGA 的内部电路以一定方式相连接,从 而创建了软件应用的一个硬件实现。与处理器不同, FPGA 使用专用硬件进行逻辑处理,而不具有操作系统。 FPGA 在本质上是完全并行的,故不同的处理操作 不必竞争相同的资源。因此,增加额外的处理时,应用某一部分的性能不会受影响。而且,多个控制循环可以以不同的速率在单个 FPGA 设备上运行。基于 FPGA 的控制系统可以加强关键互锁逻辑,也可以通过设计防止操作人员强夺 I/O 。然而,不同于拥有固定硬件资源的硬连接的印制电路板( PCB )设计,基 于 FPGA 的系统可以完全重新连接其内部电路,以支持控制系统在现场部署后可以重新配置。 FPGA 设备提供了专用硬件电路所特有的性能与可靠性。 单个 FPGA 可以通过在单个集成电路( IC )芯片上集成数百万个逻辑门以代替数以千计的分立元件。一个 FPGA 芯片的内部资源包括一个被 I/O 组块环围的可配置逻辑组块( CLB )矩阵。在 FPGA 矩阵内,信号通过可编程的互连开关和连线传递。 图 2.FPGA 芯片的内部构造 与基于处理器的系统相比,基于FPGA的控制系统有何特点? 与基于处理器的控制系统相似, FPGA 已经被应用于各种类型工业控制系统的实现,包括模拟处理控制、离散逻辑、批处理控制系统或基于状态机的控制系统。然而,基于 FPGA 的控制系统还是与基于处理器的系统存在显著的差别。 为 FPGA 设备编译控制应用程序时,受益于专用硬件电路的性能与可靠性优势,最终得到的高度优化硅实现可以支持真正的并行处理。由于 FPGA 芯片上不存在操作系统,所以代码实现方式确保了最优的性能与可靠性。 除了提供高可靠性, FPGA 设备还可以以极快的循环速率执行确定性的闭环控制。对于大多数基于 FPGA 的控制应用,其速 率受限于传感器、传动装置和 I/O 模块,而不是 FPGA 的处理性能。例如,包含在 LabVIEW FPGA 模块中的比例积分微分( PID )控制算法以 300 纳秒( 0.000000300 秒)的速率运行。 PID 控制常用于模拟过程数值的调节,如压力、温 度、作用力、位移、流体流动或电流等。 图 3. 在 LabVIEW FPGA 中执行 PID 控制 基于 FPGA 的控制系统提供速率超过 1 MHz 的确定性的闭环控制性能。事实上,许多算法可以在单个 FPGA 时钟( 40 MHz )周期内执行完成。由于是并行处理,所以易于实现多速率控制系统。因为在 FPGA 上的专用硬件子系统内运行控制逻辑,故在增加额外处理时,应用的运 行速度不会因此降低。在许多情况下, FPGA 硬件中一个软件定义的门阵列可以用于替代一个昂贵且耗时的自定义印制电路板( PCB )布线图。 FPGA 可以以数字的方式处理非常高速的信号,并时常用于重新配置 I/O 模块的功能特性。例如,一个数字输入模块可以用 于仅读入每条数字线的真 / 假状态。另外,该同一个 FPGA 可以被重新配置,以执行这些数字信号的处理和测量脉宽、执行数字滤波或甚至测量来自一个积分编码 器传感器的位置和速率信息。 基于 FPGA 的系统时常将运动控制和电机驱动整流集成到单个基于 FPGA 的控制应用中。相比之下,基于微处理器的系统通常将电机驱动整流分配给独立的硬件,因为电机电流或扭矩控制需要较高的循环速率(通常为 20 kHz )与门驱动整流信号的精确定时。 图 4. 基于微处理器的控制(左)与基于 FPGA 的控制(右) 我如何利用LabVIEW FPGA模块编程实现我的控制应用? LabVIEW FPGA模块 支 持您使用高层次的图形化数据流编程方法,以创建您的模拟或数字控制逻辑的一个高度优化的门阵列实现。您可以使用常规的 LabVIEW 编程技术开发您的 FPGA 应用。当您以如 CompacRIO 机箱或 R 系列智能 DAQ 设备等 FPGA 硬件为目标平台时, LabVIEW 编程面板简化为仅包含专为工作于 FPGA 之上而设计的函数。与传统 LabVIEW 相比,其主要的编程差别在于 FPGA 设备使用整型算术而不是浮点算术。而且,也不存在多线程或优先权的概 念,因为每个循环运行于独立的专用硬件,并不使用共享资源,这样使得每个循环以 “ 时间关键 (time critical)” 的优先权并行执行。 LabVIEW FPGA 面板包含广泛的知识产权( IP )库。下表列举了一些用于开发基于 FPGA 的控制系统的关键功能模块。如欲了解更多细节,敬请查阅 LabVIEW FPGA模块用户手册 。 类别
用于控制的关键函数
常见控制应用
编程结构
For 循环、 While 循环、条件结构、反馈节点、顺序结构、单周期定时循环、移位寄存器、 HDL 接口节点
模拟过程控制循环、状态机、批控制、顺序功能流图、事件响应、重复执行、信号锁存、子程序、排序、系统状态控制(上电、关机、看门狗、错误、 … )
输入 / 输出
模拟输入、模拟输出、数字输入、数字输出、数字端口输入、数字端口输出
与数字 I/O 、电压、电流、温度、负载、压力、张力、继电器、 4-20 mA 、 H- 桥、 CAN 通信、无线网络和其他信号接口
模拟控制
离散 PID 、离散控制滤波器、离散时延、离散归一化积分器、初始条件、单位时延、零阶保持、反冲、死区、摩擦、存储单元、量化器、限速器、中继、饱和、开关、触发器、线性插值、正弦信号发生器、一维查找表
模拟控制算法、带噪信号滤波、输入 / 输出信号限幅、将非线性传感器信号缩放为工程单位比例值、函数发生、正弦、余弦、对数、指数、增益调度、 ramp/soak 控制
离散逻辑
与、与数组元素、布尔数组至数字转换、布尔值至 (0,1) 转换、混合运算、异或、蕴含、非、非与、同或、非或、数字至布尔数组转换、或、或数组元素、布尔值转换
数字控制、数字逻辑、布尔逻辑、梯形图、事件次序、状态转移、 2- 状态离散设备与 3- 状态离散设备的控制、边缘检测
比较函数
等于?、等于 0 ?、大与?、大于等于?、大于等于 0 ?、大于 0 ?、小于?、小于等于?、小于等于 0 ?、小于 0 ?、不等于?、不等于 0 ?、选择、最大值与最小值、判定范围并强制转换、过零点
报警、触发、事件检测、峰值检测、信号比较、阈值、状态变换检测、信号选择(高、最小、最大)、极限测试、选择器 / 多路复用器、加热 / 降温分程控制
Math 数学
绝对值、加、混合运算、减 1 、加 1 、乘、取负数、商与余数、按 2 的幂缩放、符号、减、饱和加、饱和乘、饱和减、联合数、逻辑移位、循环移位、带进位的左移位、带进位的右移位、拆分数字、交换字节、交换字
模拟信号处理、求和、计数器 / 定时器、变化速率检测、电子传动装置 / 凸轮系统、蓄电池、平均化、累加器、数字信号处理
数据传输、定时、触发与同步
全局变量、局部变量、 FIFO 读、 FIFO 写、存储器读、存储器写、中断、循环定时器、时间计数器、等待、生成事件、设置事件、等待事件、首次调用?
看门狗、定时器、蓄电池、脉宽测量 / 发生、定时器打开 / 关闭延时
NI SoftMotion模块
运动控制循环 PID ( 32- 位)、花键引擎(插值)
多轴坐标运动控制、轨迹生成、直线移动、微动、圆弧运动、等值线、插值
数字滤波器设计工具包
滤波器设计、定点工具、代码发生
数字滤波器设计、浮点到定点的转换、生成 LabVIEW FPGA 代码
表 1.LabVIEW FPGA 中用于控制的关键函数 LabVEIW编译器如何将我的图形代码转换为FPGA电路? LabVIEW FPGA 模块利用一个自动的多步骤过程,将您的 LabVIEW 应用编译到 FPGA 硬件。在后台,您的图形代码被转化为基于文本的 VHDL 代码。然后调用业 界标准的 Xilinx ISE 编译器工具,该 VHDL 代码被优化、精简和综合到由 LabVIEW 设计的硬件电路实现。这一过程也对设计施加了定时限制,以力图实现 FPGA 资源 (有时称为 “ 结构 ” )的有效利用。 在 FPGA 编译过程中执行了大量的优化工作,以精简数字逻辑并创建 LabVIEW 应用的一个最优实现。然后,该设计被综合至一个高度优化的硅实现,它提供了真正的并行处理能力以及专用硬件所特有的性能与可靠性。 最终结果是一个包含门阵列配置信息的比特流文件。当您运行该应用时,该比特流被加载至 FPGA 芯片,并用于重新配置门阵 列逻辑。该比特流也可以被加载至非易逝性闪存,当目标平台加电时被同时加载。 FPGA 芯片上不存在操作系统,但可以利用内置于 FPGA 应用的启动逻辑链来 开始和停止运行。 图 5.LabVIEW FPGA 编译过程 FPGA运行速度很快,但是更快速的循环速率如何改进控制系统的性能? 一般而言,控制系统的速率影响其性能、稳定性、健壮性和抗干扰等特性。更快速的控制系统通常更为稳定、易于调整、并不易受条件变化和干扰影响。 为提供稳定、健壮的控制,一个控制系统必须能够测量其过程变量,并在一个固定的时段内设置传动装置输出命令。可快速变化 的系统(工厂车间)需要快速控制系统,以确保在可接受范围内的可靠性能。作为一个指导原则,控制循环的速率应当至少高于系统(工厂车间)的时间常数的十 倍。时间常数是系统速率的一个度量。 例如,在响应来自一个 H- 桥驱动装置的 24 伏输出时, DC 电机的电流可能以 1 安培 / 秒的速率变化。为了精确控制电机电流,控制系统必须快速对电流进行采样并频繁调整传动装置的输出。如欲了解更多信息,请参阅 在线文档PID嵌入式控制指南 。 图 6. 典型的闭环控制系统 NI提供哪些可用的FPGA硬件目标平台? NI 提供大量用于部署基于 FPGA 的控制应用的高性能平台。此部分将介绍几个关键的平台。如欲得到 NI 所提供的可重配置硬件目标平台的完整列表,敬请访问 ni.com/fpga 。 CompactRIO可重配置嵌入式系统 是 一个面向要求最高稳固性和可靠性的工业应用的小尺寸、模块化系统。 CompactRIO 专为恶劣环境设计,它具有极宽的工作温度范围、高冲击与振动评级和 若干工业认证与评级。 CompactRIO 评级为海军环境, I 类, 2 级,适合危险场所,并提供高达 2300 伏的隔离。与所有来自 NI 的 FPGA 目标平台相 似, CompactRIO 使用 C 系列工业 I/O 模块,以实现与工业控制传感器与传动装置的低成本直接连接。此外,世界范围内有许多第三方厂商提供 C 系列 I /O 与通信模块。如欲获得关于利用 CompactRIO 执行控制的指南,敬请 下载CompactRIO机器自动化白皮书 。 图 7.CompactRIO 可重配置嵌入式系统 NI R系列智能数据采集(DAQ)设备 是 面向 PCI 与 PXI/CompactPCI 总线的插入式板卡,其板上 FPGA 硬件用于用户定义的信号处理与控制。多达 8 个模拟输入、 8 个模拟输出和 160 个数字 I/O 通道被内置于智能 DAQ 设备中。您也可以将一个扩展底板连接至任何一个数字端口,并添加 C 系列工业 I/O 模块。 R 智能 DAQ 设备支持定义您自 己的硬件功能特性,并为定时、触发、同步、数字信号处理和控制提供了无限可能。 PXI R 系列智能 DAQ 系统在工业标准 PXI 外型尺寸下提供 FPGA 的性能与可靠性。除了来自 NI 的智能 DAQ 设备,尚有来自 NI 与世界范围的其他厂商的数百个 非可重配置的插入式板卡可供使用。 PXI 系统可以启动进入 Windows 或 LabVIEW 实时操作系统。 C 系列 I/O 模块提供信号调理,并将仪器系统级的 精度与隔离或高电流驱动能力等工业特性相结合。 R 系列扩展底板用于将 C 系列模块连接至智能 DAQ 设备。如欲了解更多信息,请查看描述 R 系列智能 DAQ 设备 的 在线应用说明 。 图 8.PXI R 系列智能 DAQ 系统 PCI R 系列智能 DAQ 系统支持您将基于 FPGA 的控制能力添加至任何台式机、工控机或包含一个 PCI 插槽的单板卡计算机( SBC )。与所有的 NI FPGA 目标平台相似,智能 DAQ 设备可以在上电时即刻从位于插入式板卡上的非易逝性闪存加载其比特流。 NI-RIO 驱动接口与 R 系列设备同时提供,无需 额外费用,也无需运行时部署许可的费用。 了解更多信息 。 图 9.PCI R 系列智能 DAQ 系统 NI 紧凑视觉系统 (Compact Vision System) 是一个稳固的独立平台,它面向工业机器视觉与 I/O 应用,如机器人、自动化测试和自动化检测等应用。所有的紧凑视觉系统均包含一个用户可编程的 FPGA , 用于实现自定义的触发器、计数器、脉宽调制( PWM )、运动与其他数字控制操作。 NI 紧凑视觉系统使用 IEEE 1394 (火线)技术可以实现与超过 300 个兼容摄像头的连接。 图 10.NI 紧凑视觉系统 如欲了解来自 NI 的关于可编程自动化控制器( PAC )硬件技术的更多信息,敬请访问 ni.com/industrial 。 我可以获得怎样的闭环控制性能? 在绝大多数情况下, FPGA 的计算性能是如此之快以致控制循环的速率仅受限于传感器、传动装置和 I/O 模块。这一点完全不同于传统的控制系统,因为对于传统控制系统,其处理性能是典型的限制因素。 例如,利用 R 系列智能 DAQ 设备,离散控制应用的输入 / 输出与控制逻辑的计算,均可以利用板上的 5 伏 TTL 数字 I/O 线 以 20 MHz 的控制循环速率实现。这些数字线可以在一个以 25 纳秒速率运行的 LabVIEW 单周期定时循环内被访问。通常,数量可观的控制逻辑可以被包含在一个 单周期定时循环内。 对于使用高电流 C 系列数字 I/O 模块的 24 伏离散逻辑控制应用,循环速率受限于模块的更新速率。例如, NI 9423 数字输入模块与 NI 9474 数字输出模块均具备 1 微秒的更新速率,从而得到 500 kHz 的最大 24 伏离散控制性能。 在模拟过程控制应用中,控制循环速率也受限于 I/O 模块的更新速率。 NI 9215 模拟输入模块与 NI 9263 模拟输出模块,提供 16 位精度以及 10 微秒更新速率下的同时采样功能。这样得到了 50 kHz 的闭环模拟过程控制性能。 loop 图 11. 循环周期时间( T )是指执行控制循环的一个周期所需的时间 Algorithm 算法 我可以预期多少基于FPGA的控制循环中的抖动? 衡量控制系统的性能与鲁棒性的一个常用尺度便是抖动,它是实际循环周期时间与期望的循环周期时间的偏差。在通用操作系统 如 Windows 中,抖动是不受控制的,故无法确保闭环控制系统的稳定性。具有实时操作系统的基于处理器的控制系统,通常能够确保控制循环抖动小于 100 微妙。 在基于 FPGA 的应用中,控制循环不必与其他任务共享硬件资源,而控制循环可以利用 FPGA 时钟实现精确定时。基于 FPGA 的控制循环的抖动取决于 FPGA 时钟源的精度。对于 CompactRIO cRIO-910x 可重配置机箱, FPGA 时钟抖动在 40 MHz FPGA 时钟速率情况下仅为 250 皮秒( 0.000000000250 秒)。如欲了解更多细节,请参阅 可重配置机箱产品手册 。 图 12. 为确保稳定性,控制循环抖动必须是受限的 我是否能够创建自定义的I/O模块? 是的, NI 提供了一个模块开发工具包( MDK ),使得您可以开发自定义的 C 系列模块并将其连接至一个可重配置的 FPGA 。该工具包提供了许可权、设计导则和对通用 I/O 模块节点的访问,以创建与您的定制模块电路的接口。此外, Electronics Workbench 电路教学平台现在提供 C 系列 I/O 模块模板,这些模板已被预组装并配有常见信号连接端选项。如欲了解关于自定义模块开发的更多信息,请 访问CompactRIO技术库 。 图 13.Electronics Workbench 电路教学平台现提供 C 系列 I/O 模块模板