一种可重构工业I/O设备的体系结构方法(An Architectural Approach for Reconfigurable Industrial I/O Devices翻译)

2 篇文章 0 订阅
2 篇文章 0 订阅

By:
在这里插入图片描述
摘要
本文提出了可重构工业I/O设备的体系结构概念。为了避免使用特殊的硬件模块,以及减轻PLC对传感器数据实时预处理的负担,这些任务被转移到可重构的I/O设备中。因此,提出了一种基于FPGA的体系结构模板,该模板支持在运行时将特定于应用程序的功能加载到I/O设备中。架构模板被划分为一个静态部分和几个可重新配置的时隙。静态部分实现所有固定的设计元素,如与现场总线和系统内CPU的通信,所有特定于应用程序的功能都映射到可重新配置的插槽上。为了在运行时实现应用程序特定功能的重构,采用了现代FPGAs的部分重构技术。通过将一个具有四个可重构插槽的案例研究映射到Xilinx Zynq-7000 SoC上,对该概念进行了评估。结果表明,新的特定于应用程序的功能可以灵活地加载到I/O设备中。示例性应用程序特定功能的总重新配置过程需要高达3 ms的时间,并导致低于0.5 ms的停机时间。这特别使得新的控制应用程序能够在循环数据通信期间甚至改变I/O设备内的预处理。

介绍
由于可重构制造系统的新趋势,今天,现代机器需要快速适应新的需求和客户需求[1],[2]。为了实现这种敏捷制造策略,系统需要能够集成各种不同类型的传感器。这也导致需要灵活的I/O设备来灵活地适应传感器的变化。
如今,传感器和执行器通常连接到I/O设备,这些设备通过现场总线(如PROFINET、EtherCAT、ModBus)与可编程逻辑控制器(PLC)通信[3]。为了支持可连接到特定类型I/O设备的各种传感器,必须由完整的控制系统支持任意预处理的安装。今天,这有两种处理方式。一种方法是使用连接到I/O设备的专用硬件组件来执行给定处理功能的预处理[4]。另一种方法是,除了常规操作外,处理功能还映射到可编程逻辑控制器上[5]。在这种情况下,简单的标准I/O或带有少量预处理支持(即输入信号过采样)的I/O被使用。
使用专用I/O模块的优点是,预处理既不需要额外的PLC计算性能,也不需要在I/O设备和PLC之间进行非常快速或确定性的数据传输。但由于每一项特殊的传感任务都需要单独的硬件模块,增加了系统的复杂度和工程工作量。将预处理映射到覆盖的PLC可以降低整个系统的复杂性。此外,用于预处理的软件组件可以灵活地适应特定的传感器要求。作为一个缺点,对PLC的性能、所使用的工业通信系统的性能和PLC编程的工程努力的要求都在提高。
为了减少工程和硬件方面的工作,已经提出了将设备平台与其功能分离的特定于应用程序的自动化设备。[6]中提出的方法通过将应用程序概念引入自动化设备来提供预处理功能。目标是一个设备,其功能可以扩展而无需交换硬件。另一个例子是[7]和[8]中提出的方法,因为它提供了一个可配置的工业自动化设备,重点是非常快速的计算时间。因此,I/O模块配备了一个承载额外功能的FPGA。
上述两种方法都以不同的方式处理工业自动化设备的灵活性需求。[6]中提出的基于软件的方法面向现代智能手机平台上已知的部署过程,这将应用程序带到通用设备上。这提供了灵活性,但基于软件的方法在处理实时需求时也可能会遇到性能问题。[7]和[8]中的方法使用FPGAs,因此在执行特定于应用程序的功能时可以提供高性能[7]。但是,这是通过限制解决方案的灵活性来实现的,因为只有一组固定的预安装功能可用,并且提供这些功能的硬件设备相当特殊。
由于FPGAs广泛应用于工业应用[9],两种解决方案的优点可以通过使用基于FPGA的自动化设备来结合。像使用软件一样,FPGAs支持独立改变其功能,但仍提供本机硬件性能。
部分重配置(PR)是一个允许这种灵活的FPGA设计的特性。但是,这一特性已经被人们知道并使用了至少十年[10]、[11]、[12],它仅限于昂贵的高端FPGA类型,而这些类型不适用于成本优化的自动化设备。现在,由于引入了低成本的FPGA系列,即Xilinx Artix-7[13]和相应的支持PR的供应商工具链,这一事实被撤销了。这些是支持上述所有必需关键特性的有希望的候选者。因此,本文评估了基于PR的具有时间复用功能的FPGA设计在特定工业自动化设备中的适用性。因此,本文重点研究I/O设备本身作为应用程序特定功能的执行平台。在一个架构方案的基础上,对一个具有时间复用功能的专用自动化设备进行了案例研究,以评估部分重构(PR)的设计流程。
本文的主要工作如下:第二部分详细介绍了可重构体系结构。第三节和第四节给出了案例分析和验证结果。最后,第五节对本文进行了总结。

可重构工业I/O设备体系结构
本小节详细介绍了可重构I/O设备体系结构。首先介绍了系统的一般方法。然后,详细说明了应用程序特定的I/O设备及其模块。
A、 系统方法
提出了一个工业I/O设备的体系结构模板,该模板能够执行特定于应用程序的预处理功能。由I/O设备确定的值通过循环通信传输到叠加控制系统(例如,PLC)。控制系统通过同样用于循环通信的信道来配置I/O设备。特定于应用的部分已经通过例如在[6]中描述的任意与设备相关的分发通道获得。
在获得预定义配置后,必须将其发送到I/O设备并存储在其非易失性存储器中。在开始循环过程数据交换之前,必须由控制系统执行此传输。图1概述了总体系统架构,包括具有特定于应用的额外功能的I/O设备、覆盖控制系统及其通信关系。
在这里插入图片描述
B、 特定于应用的I/O设备
图2示出了所提出的可重构I/O设备的顶层架构。它由一个信号采集单元组成,该单元还包括一些基本的调节、用于承载应用程序特定功能的运行时环境和用于与覆盖系统执行循环数据交换的组件。内部配置和监视是由运行在内部CPU上的系统内软件组件完成的。所有组件都位于特定于应用程序的自动化设备内的一个FPGA中。在下面的小节中,将解释特定于应用程序的I/O设备的所有模块。
在这里插入图片描述
1) 通信系统:为了实现与叠加控制系统的通信,集成了一个工业通信系统实例。它用于执行由I/O设备生成的数据到叠加PLC的循环传输。同样重要的是,通信系统提供一个配置通道,以便PLC能够在系统启动时配置I/O设备。
2) 系统内CPU:需要一个控制CPU来处理特定于应用程序的I/O设备的操作。通信系统的所有软件功能,如协议处理,都映射到CPU上。为了避免额外的硬件资源,在CPU上运行的软件管理运行时环境所需的部分FPGA重新配置。根据性能和功耗要求,软核和硬核CPU都与提议的方法兼容[14]。
3) 信号采集:作为第一处理阶段,所有输入信号必须经过一个信号采集单元,该单元对输入信号进行采样和去噪。采样和去噪所需的参数由系统内CPU设置。
4) 运行时环境:为了实现特定于应用程序的功能,运行时环境包含多个部分重新配置(PR)时隙。每个PR插槽能够执行一个特定于应用程序的任意函数。因此,信号采集单元的所有输出信号被并行地用作所有PR时隙的输入。PR插槽的输出被转发到通信系统。PR时隙的大小和数量必须在合成之前根据应用程序特定功能的预期最大复杂度和可用的FPGA资源的数量进行配置。
插槽内的功能可以彼此独立地交换,也可以与FPGA架构的静态部分(如系统内CPU或通信系统)独立地交换。交换一个PR插槽中的功能是由系统内CPU上运行的固件完成的。因此,从非易失性存储器加载特定硬件配置。
由于给定的体系结构支持在运行时交换特定于应用程序的功能,并且它完全独立于设计的其余部分,因此必须做好一些准备,以防止设计的其余部分在重新配置期间和之后出现未定义的行为。根据[15]和[16],这里必须特别考虑两个方面:(i)接口解耦和(ii)重新配置后重置。这些将在下文解释。
在重新配置PR区域时,其输出接口的行为是未定义的。由于这个事实,静态区域中的其余设计必须忽略输出数据,直到重新配置完成,并且最近加载的逻辑重置为定义的状态。此外,当PR区域内的逻辑被重新配置时,PR区域的所有非全局输入(即数据或控制)不应改变。这确保了它不会在最近加载的逻辑中导致冲突状态,这可能会在重新配置完成后导致未定义的行为[15],[16]。这些要求是通过为PR区域的所有I/O信号集成一个小的冻结和复位逻辑来实现的。运行时环境模块的结果架构如图3所示。
在这里插入图片描述
由于特定于应用程序的功能应该是可交换的,因此它们需要一组公共接口来与周围的运行时环境进行通信。这些接口需要预先定义,并且必须具有所有类型函数的公共结构。以后更改或扩展这些接口的部分时,必须调整所有现有函数和运行时环境。
为了实现特定于应用的功能,PR时隙应至少包括图4所示的所有I/O信号。除了向可重构插槽内的模块提供时钟和复位信号的强制性接口外,还使用数据和控制输入以及数据和标识(ident)输出。控制输入可用于启用或禁用插槽内的功能或执行进一步的任意配置。数据输入和输出接口用于将过程数据路由到函数和从函数路由到函数。除了数据输出外,模块还应提供一个ident输出。此接口可用于标识当前处于活动状态的函数类型。这可以在通电后使用,也可以用于验证以前的模块交换是否成功。
在这里插入图片描述
5) 非易失性存储器:非易失性存储器用于存储静态的FPGA配置和CPU固件。此外,一组特定于应用程序的功能可以通过网络上传并存储在这里。

案例研究
在本节中,一个示例性场景被描述为所提出的可重构工业I/O设备架构的用例。针对这种情况,给出了I/O设备的实现、映射及其相关应用的具体功能。为了关注所提出方法的一般适用性,创建了一个基于简单的特定于应用程序的预处理函数的场景。

A、 场景
一台自动化机器高速处理工件,当工件进出机器时,应进行计数。因此,安装了挡光板,指示工件何时通过。来自光屏障的信号由一个工业I/O设备进行评估,该设备对脉冲进行计数并将数字发送到叠加控制系统。为此,需要一个工业I/O设备,该设备能够执行向上或向下计数数字输入脉冲的应用特定功能。对于每个设备输入,如果应使用特定于应用程序的功能(向上或向下计数器),或者仅应评估输入本身的值,则可以单独配置。

B、 硬件平台
工业应用需要成本效益高的硬件平台,最好是基于低成本的FPGAs[17]。此外,还需要一个支持部分重构功能的FPGA设备系列,以及相应的支持PR的设计工具链。Xilinx 7系列FPGA系列满足所有这些要求[13],因此它被用作实施案例研究的基础。
虽然以后的实现应该在一个小的低成本的FPGA上进行,例如一个带有微块软核CPU的Xilinx Artix-7,但是在开发和概念评估的初始阶段选择了一个更强大的平台。因此,开发硬件ZedBoard用于实现案例研究[18]。该板包括一个Xilinx Zynq7000 SoC,该SoC在单个设备中集成了一个ARM Cortex-A9双核CPU和一个xilinx28nmfpga。ARM CPU还包括外部存储器接口和一组外围连接接口[19]。图5示出了用于实现案例研究的ZedBoard的已实现架构元素。
在这里插入图片描述
C、 I/O设备架构
作为实例研究,实现了基于图2的模板的可重构I/O设备。内部SoC架构如图6所示,内部SoC架构包括信号采集单元、应用程序特定功能的运行环境和包含系统内CPU、以太网接口和SD卡接口的处理系统部分。处理器配置访问端口(PCAP)是一个标准的Xilinx IP核,用于控制来自处理系统的可编程逻辑的配置。所有组件都通过通用高级可扩展接口(AXI)总线体系结构相互连接。
虽然Zynq-7000的处理系统由两个ARM核组成,但只使用了一个核。这种方法与较小的单核CPU体系结构保持兼容性,但性能较低(例如Xilinx MicroBlaze)。基于ARM的系统CPU运行频率为400mhz。它执行诸如SD卡访问、可编程逻辑的配置和监控、以太网通信和现场总线堆栈(ModBus-TCP)等任务。此外,通过应用PR机制来处理特定于应用程序的函数的配置。
在这里插入图片描述
D、 特定应用程序功能
如表1所示,已经实现了三个特定于应用程序的基本功能。函数func0只将传感器数据转发到通信系统。如果PLC应用程序需要直接访问传感器数据,则可以使用此功能。已经实现了两个特定于应用程序的函数func1和func2,每当传感器信号中出现上升沿时,它们都会增加/减少计数器值。除了8位计数器值外,它们还提供1位输入数据。
在这里插入图片描述
E、 设计实现
为了实现部分重配置的FPGA设计,采用了标准的Xilinx工具链。这里,定义了静态部件和模块的四种组合(运行配置),从中需要三种来完全实现设计并覆盖所有可能的组合。第四种配置仅用于评估目的。表二列出了定义运行配置中使用的模块组合。为了评估该方法的可伸缩性,还使用相同的放置约束为1和2个输入通道(PR区域)实现了所有运行配置。
在这里插入图片描述
除了表II所示的PR配置之外,还实现了非PR配置作为参考。这种设计风格代表了制造工业I/O设备的最先进水平。在非PR设计中,可重构区域被固定的逻辑模块所代替,这些模块实现了三种特定于应用程序的功能。所需功能通过多路复用器激活。这是通过将多路复用器插入到与应用程序特定功能的三个模块之间的所有数据路径来实现的。在下一节中,这种设计方法被称为功能复用。由于这三个函数(func0、func1和func2)在所有输入通道中都是静态集成的,因此它提供了与PR设计相同的功能,只是能够配置新的特定于应用程序的函数。对于1、2和4个输入通道也实现了非PR设计。
结果
在接下来的部分中,通过分析FPGA资源使用、系统性能和重构时间,对实现的案例进行了基准测试。
A、 资源利用分析FPGAs资源利用应阐明PR实施是否有利于总体设计规模。图7和8示出了四个PR运行配置(a)-(d)和非PR参考设计(e)的资源利用率。配置(d)只考虑2和4个输入,因为它反映了两种不同功能类型的组合。如使用的设计工具Xilinx PlanAhead 14.5所报告的,利用率分为寄存器和lut。其他类型的资源(如乘数)在设计中不使用。在这里插入图片描述
结果表明,与使用多路复用的非PR设计相比,使用PR实现的设计需要更多的寄存器,但使用较少的lut。PR设计中寄存器数量较多的主要原因是需要冻结逻辑和重新配置后的复位逻辑。在非PR设计中,lut的低功耗可以通过避免大型复用器结构来解释。
显然,如果只使用一组特定于应用程序的小函数,则不需要PR特性。但是,如果必须在字段中动态上载新的自定义函数,或者只使用非常消耗资源的函数,则PR概念是合适的。

B、 系统性能
应根据最大时钟频率评估设计的可实现速度。应澄清使用PR的实施是否影响最大系统性能。对于所有已实现的设计,使用Xilinx设计工具根据给定的时序约束计算最大可实现系统时钟频率。结果如表三所示。由于设计的静态部分在所有配置中都是必需的,并且需要大部分的FPGA资源,所以它负责最大的时钟频率。因此,最大时钟频率仅显示配置之间的微小差异。
根据[15],当在设计中使用PR时,预计时钟频率会降低约10%。然而,在实施案例研究期间取得的结果并不能证实这一论断。在给定的布局约束条件下,四个PR区域的PR设计可以获得最佳的系统性能,比非PR设计的性能提高约4%。只有一个PR区域的设计也显示出比非PR区域更好的性能,而对于两个区域,PR设计明显较慢。总体而言,实现的设计中的性能偏差约为±3-5%,这更多地是由于实现过程本身,而不是部分重新配置的使用。
在这里插入图片描述
C、 重新配置时间
重新配置时间是设备需要将其内部行为从一个特定于应用程序的功能更改为另一个功能的时间。这是一个重要的问题,因为在重构过程中,叠加系统无法访问相应的输入通道。可容忍的最大时间主要取决于运行在PLC上的自动化应用程序。一般来说,这个不可接近的时间必须尽可能短,这样就不会发生未定义或意外的行为。对于设备重新配置,PR数据必须在非易失性存储器中可用。作为重新配置期间的第一个任务,CPU需要在本地内存中分配一个缓冲区来缓存PR数据。这个过程叫做内存分配。之后,CPU访问SD卡,以便加载应配置的应用特定功能的二进制代码。最后一步是使用PCAP模块重新配置PR插槽。对于此任务,启动DMA传输,将二进制编码的FPGA比特流从本地存储器传输到PCAP,以便重新配置特定的PR时隙。
为了评估重构时间,在设计中对每个PR区域执行1000次这三步过程,得到4000个测量值。利用Zynq-7000片上系统的全局性能计数器,分别测量三个重构步骤所需的时间。计数器寄存器的宽度为64位,时钟频率为200兆赫,时间测量精度为5纳秒。根据得到的4000个测量值,计算了最小、最大和平均执行时间。结果见表四。
在这里插入图片描述
在所实现的设计中,使用大小为30108字节的部分比特流重新配置一个PR区域大约需要2.6 ms。根据结果,大约15%的时间是由重新配置PR时隙的PCAP模块引起的。其余时间用于将重新配置数据复制到本地存储器中。仅在PR区域的重新配置期间,应用程序特定设备没有任何功能。因此,停机时间小于0.5ms。

结论
本文提出了一种基于FPGA的可重构工业I/O器件体系结构概念。为了避免使用特殊的硬件模块,以及减轻PLC对传感器数据实时预处理的负担,这些任务被转移到可重构的I/O设备中。该方法利用现代FPGAs的部分重构概念,支持在运行时加载和交换特定于应用程序的数据预处理函数。在基于Xilinx Zynq-7000的SoC平台上进行了一个案例研究,以评估所提出的方法。
案例研究的结果显示了使用公关概念的优势。尽管PR设计在FPGA资源方面会产生一定的开销,但与非PR设计相比,逻辑资源的数量在相同的顺序范围内。与静态FPGA设计相比,PR概念支持新的应用程序特定功能的实现和提供。被评估设计的最大时钟频率主要取决于静态FPGA部分,这些部分代表了可重构I/O设备的基础结构。因此,静态部分的最大时钟频率可以用作设计新的特定于应用程序的函数的约束。应用程序特定元件的重新配置导致设备停机时间低于0.5 ms。这支持新的控制应用程序,甚至可以在1 ms周期时间范围内的循环数据通信期间更改I/O设备内的应用程序特定功能。
未来的工作将集中于将这一概念融入工程过程。将开发一个通信接口,该接口将支持直接在可编程逻辑控制器应用程序中启动应用程序特定功能的重新配置。此外,该架构将被映射到更小的FPGA平台上,并简化设计过程,以允许可重构I/O设备的用户设计自己的特定于应用程序的功能。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值