FPGA嵌入式多处理器架构
可编程控制器
摘要 - 本文介绍了现场可编程门阵列(FPGA)中的多处理器可编程控制器的设计和实现。 所提出的解决方案的新颖性在于它结合了迄今为止在控制算法的FPGA实现的领域中使用的两种方法,即基于程序和硬件编码,并且在单个FPGA芯片中应用多个处理器。 控制器根据IEC 61131-3标准进行编程,并且并行运行控制任务。 原型的性能测试表明,它能够比工业可编程逻辑控制器显着更快地执行控制程序。
关键词 :现场可编程门阵列(FPGA),工业控制,可编程逻辑控制器(PLC)。
1 引言
可编程逻辑控制器(PLC)是工业自动化的基础,因为它具有广泛的应用范围,坚固性和使用IEC 61131-3语言的简单编程[1]。 由于FPGA芯片的结构灵活性和速度,一段时间以来PLC现场可编程门阵列(FPGA)的实现已经成为一个重要的研究领域[2]。 专用控制器[4]或用于图像处理的特定滤波器[5]是这种方法的示例。 因为标准PLC的性能并不总是满足高响应系统的要求[6],[7],FPGA提供的程序的并行执行创建
显着的潜力。
涉及用于在FPGA中实现控制算法的各种技术的论文可以被分成两组。 第一种应用从程序的形式描述到硬件描述语言(HDL)中的代码的转换。 例如,在[7]中给出了PLC指令到超高速集成电路HDL的转换,[8]和[9]中给出了梯形图(LD)的转换。 基于Petri网的矩阵模型的可重编程逻辑控制器的实现在[10]中描述。 第一种方法的基本优点是更快地执行硬件编码程序。 然而,任何改变控制概念需要使用三个软件工具,即PLC程序编辑器,转换到HDL和FPGA合成。
第二种方法假定实现了完整的可编程控制器,或至少其基本组件在FPGA中。 这种基于FPGA的PLC原型可以通过单个工具进行编程,而无需转换为HDL。 这在[11]中说明,其中通用FPGA微型PLC执行LD。 所提出的一些解决方案涉及主处理器和协处理器,例如在[12]中,其中精简指令集计算机(RISC)处理器专用于PLC,并且布尔协处理器加速按位操作。 在[13]中描述了用于测试两个FPGA中央处理单元(CPU)的硬件 - 软件平台,即一个用于位,另一个用于字节(字)操作。
FPGA技术对控制设备制造商也越来越感兴趣。 西门子公司的基于FPGA的FM 352-5布尔处理器模块[14]可能是一个例子。 该模块提高了逻辑计算的速度,并且可以作为较大系统的组件或作为独立控制器操作。 它使用西门子STEP-7 LD或功能块图(FBD)语言编程,并并行执行程序指令。 National Instruments(NI)提供了包含FPGA的更强大的可编程自动控制器。 CompactRIO平台[15]包括用户可编程FPGA机箱,带有浮点(FP)处理器的嵌入式控制器和输入/输出(I / O)模块。 CompactRIO由(NI)LabView图形编程工具编程。 西门子和NI解决方案接近于在FPGA中实现PLC程序的第一种方法。 程序是通过使用集成软件开发的,它隐含地调用FPGA HDL综合工具。
还有对多处理器系统的FPGA实现越来越感兴趣[16]。 例如,用于并行执行多个线程的对称多处理器系统的设计在[17]中给出。 另一个系统实现了软件定义无线电的宽带码分多址算法[18]。 多个超长指令字处理器加速氧饱和度映射的计算[19]。
在本文中,我们提出了一个多处理器控制器,由在单个FPGA芯片中实现的相同的CPU组成,在所有IEC 61131-3语言中编程。因此,该思想对应于前面提到的PLC FPGA实现的第二种方法,但是通过使用多个CPU,控制程序可以被分成并行执行的任务,因此更快。此外,控制器集成根据第一种方法开发的,即直接在HDL中配置的所谓的硬件功能块(HFB),甚至更多地增加速度。 HFB可以表示连续控制器,滤波器等。因此,该解决方案组合了两种现有方法,即基于程序和硬件编码。这个想法的初步实现在[20]中提出,其中设计了具有单个处理器的FPGA控制器。在[21]中提出了使用多个处理器执行多个控制任务的概念。然而,该文件在介绍初步架构后,处理了解决方案的软件方面。
在这里,我们展示进一步发展的结果与以下新颖方面:用于并行执行和同步IEC 61131-3任务,HFB的扩展架构和定制FP单元(FPU)的增强型多处理器架构。 新硬件涉及改进对全局存储器,更宽的32位全局存储器总线,用于快速任务同步的直接访问寄存器(DAR)和用于由其他处理器或外部输入即时触发处理器的配置寄存器(CR) 。 性能改进通过一组测试证明是合理的,与几个商业PLC相比。 还描述了基于FGPA的PLC多处理器控制器的完整原型。
这里介绍的FPGA控制器由控制程序开发人员(CPDev)工程工具进行编程,该工具在一段时间以前开发[22]。 该工具已经扩展到FPGA以处理多处理和HFB。
本文组织如下。 第二部分解释了如何通过CPDev编程的通用微处理器可以被FPGA代替的概念。 FPU的架构在第三部分。 第四部分介绍了HFB和CPU的集成。 具有可配置数量的CPU的多处理器控制器的一般结构在第五节中描述。用于多任务的CPDev工具的扩展,全局存储器的使用以及同步机制在第VI节中描述。 多处理器控制器的原型如第七节所示。 在第八节中给出了涉及与工业PLC进行比较的性能测试结果以及关于CPU,HFB和硬件改进的时间缩减的结果。
2 CPU的概念和架构
基于FPGA的可编程控制器的概念最初受CPDev编程环境的操作结构的影响[22]。 主要想法是预先编写基于FPGA的平台,用于以IEC 61131-3语言编写的CPDev程序。
CPDev是一个独立于目标的工具,最初是为具有通用AVR,ARM和x86处理器的控制器开发的。 支持IEC 61131-3编程的类似环境包括众所周知的CoDeSys,IS-aGRAF或MULTIPROG。 就像三个,CPDev支持各种平台; 然而,它主要面向具有有限资源(计算能力,存储器)的中小规模控制器。 虽然它缺乏商业同行的一些高级功能,一些独特的解决方案是可用的,如SysML建模和支持单元测试[23]。
CPDev有一些工业应用,包括船舶控制和监测[24]或小型分布式控制系统[23]。工具的整体结构如图1所示。以结构化文本(ST)或指令列表(IL)文本语言编写的程序或从FBD,LD或顺序功能图(SFC)图转换到ST的程序被编译成虚拟机汇编器(VMASM)通用可执行代码,由虚拟机(VM)在目标处理器处执行,这不同于例如CoDeSys,CoDeSys直接生成用于多种CPU类型的本地机器代码。 VMASM是一种汇编语言,与任何特定的处理器无关,而是面向IEC 61131-3 [25]。软件VM机器用C编写;因此,它可以运行在不同的硬件平台上,从8位微控制器到32/64位通用处理器。它包括通用和平台相关模块(后者由控制器制造商准备)。 VM模型和架构已经在[25]中给出。
拥有这样一个工具,可能不奇怪,FPGA控制器开发的基本概念是用FPGA中实现的硬件机器替换VM。 因此,控制器实际上是专用于执行VMASM代码的专用FPGA处理器。 此外,FPGA实现提供了新的功能,如多处理和HFB,在通用处理器中不可用。 在[25]。
实现VM指令的专用32位CPU是控制器的重要组成部分。 在[20]中已经研究了两种版本的CPU。 具有更好的性能测试结果的一个被选择用于进一步扩展。
多处理器控制器中一个CPU的架构如图1所示。 2.并行执行某些内部操作的能力是对CPU性能有直接影响的重要特性。 例如,当从程序存储器读取连续的争论时,数据存储器被访问,并且操作数以相同的周期被读取并存储在32位寄存器中。 类似地,在与从程序存储器读取下一指令代码相同的时钟周期(类似于流水线处理)执行写入算术逻辑单元(ALU)结果。
与早期设计[20]相比,引入到新的多处理器控制器的CPU中的扩展包括通过全局存储器与FPU和HFB的接口的通信,对全局变量的信号量操作的附加指令以及在线 调试功能。 与[21]相比,增加了用于任务同步的WAIT指令,并且已经改变和优化了与全局存储器通信相关的指令。 还升级了负责断言程序计数器(PC)的下一个值的NEXT PC块(见图2),即现在在单个指令周期中执行修改PC(跳转)的指令。 这里应用的机制类似于[26]中提出的机制,就典型的微处理器而言是相当独特的特征。
3 FPU
FPGA结构被优化用于定点计算。实现FP算法需要大量的资源;因此,最大时钟频率变得相对较低[27]。为了克服这一点,已经设计了FP算法的有效实现,例如,顺序和流水线分割器和平方根块[27],对数和指数函数[28]以及一组特定库[29]。
上一节中提到的CPU的ALU(参见图2)仅处理整数。 CPDev工具中的REAL是IEEE 754标准的单精度FP数。除了加法,减法,乘法和除法的基本操作之外,控制器FPU还执行比较(等于,大于等),具有舍入和截断的整数到FP双向转换,确定绝对值,符号反转和IEC 61131-3(MIN,MAX,LIMIT)的一些功能。
在设计用于多处理器控制器的FPU的组件时,资源需求和计算速度之间的可接受的折衷是一个重要目标。作为例子,让我们简要地讨论FP乘法器的设计问题。
通过尾数的多重化和指数的加法来执行两个FP数的乘法。 FP乘法器的简化架构如图1所示。右边的归一化块是一个简单的移位寄存器,它有条件地右移尾数乘法的结果。使用round到最近偶模式对结果进行舍入。舍入需要在A3块中确定的三个附加位,即保护,循环和粘性位。
已经研究了四个版本的乘法器。它们在固定点乘法器块A3的设计上不同,其结构对最终实现参数(诸如FPGA资源要求和计算速度)具有重要影响。已经研究了标准系列纸 - 铅笔乘法算法,以及具有或不具有FPGA嵌入式硬件乘法器的并行,流水线和快速阵列多镊子。乘法器版本的性能测试和实现参数评估已经表明纸笔算法是速度和资源要求之间的良好折中。因此,已经为FPU FP乘法器选择了此版本。在最终实施之前对FPU的其他组件进行了类似的评估。
4 HFBS
HFB是FPGA控制器的另一个特性。它们可以驱动定制设计的外围设备,并提供对低级硬件的访问,例如显示。此外,HFB还可以用作硬件加速器以提高计算速度。他们可以实现特定的控制算法,如连续控制,神经网络等,成为FPGA中PLC程序的二维实现的桥梁(见第一部分)。
HFB可以特别用于需要时间的应用,例如,内置在微机电系统技术中的快速传感器和致动器的驱动器,其响应时间在某些情况下小于50ns。
这里,HFB被设计为知识产权(IP)核;因此,它们可以由独立的设计者与控制器集成。 HFB与CPU或HFB访问仲裁器的连接方式如图1所示。 4.为便于HFB集成而开发的PC应用程序自动生成Verilog HDL代码,用于块和CPU之间的连接。还实现了用于硬件块和CPU之间的数据传输的专用握手协议。
V.多处理器可编程控制器
如前所述,多处理器系统的FPGA实现变得越来越重要[16,17,19]。 在本节中,介绍了FPGA中为控制器实现的片上多处理器系统(MPSoC)的架构。 它由具有FPU,HFB集成部分和通信模块(CM)的多个处理器组成。 MPSoC作为可编程控制器,能够同时运行多个控制任务。 每个任务由单独的处理器执行。 设计目标不是对多功能系统的开发作出新的贡献,而是将这种系统应用到可编程控制器的领域。 这里,控制,技术计算,通信等可以分配给不同的CPU。 此外,可以分离时间关键和非时间关键的处理功能。
我们的多处理器系统架构的一般概念主要由IEC 61131-3软件模型确定(参见第VI节)。此外,我们引入了一些特性来提高处理器间的同步和通信,如WAIT指令和信号量。
控制器的简化架构如图1所示。 5.分别配备了第II节和第III节所述的FPU的多个CPU(或另一个词,CPU核心)是控制器的基本组件。它还包括启动器核,是一个简单的微处理器,负责全局变量的初始化。启动器在上电或将新程序加载到控制器后触发。只有在初始化后,所有CPU内核才开始执行其任务。
遵循CPDev VM的原始架构[25],CPU内核通过全局内存进行通信。如图所示。 2,每个CPU通过32位总线连接到全局存储器。因为CPU还具有其自己的集成数据存储器,因此,全局存储器仅在需要交换公共数据时使用。这显着减少了可能的瓶颈
全局内存地址空间分为两个以相同方式访问的范围。 下限范围,即从地址0到配置的值,保留给I / O外设。 上范围映射物理同步RAM,实现为双端口块RAM和特殊功能寄存器(SFR)。存储器存储典型的全局变量,而占用最高地址空间的SFR包括DAR和CR。 全局存储器和I / O访问仲裁器块提供无冲突访问(见图5)。 DAR是一个例外,因为读操作可以在任何时候由任何CPU完成,而不涉及仲裁器。 这显着减少了CPU之间的同步和通信的时间。 CRs控制所选CPU(如果在单模式下)被其他CPU触发,或响应所选输入信号的有效沿。
仲裁器使用类似于令牌传递的协议来授权访问。 握手用于CPU核心和仲裁器之间的数据传输。 已经检查了两种仲裁算法。 第一个,相对简单,应用于控制器原型的初步版本[21],但吞吐量很差。 在当前版本中,复合优先级编码器和优化的时钟方案(授权访问被缩短到一个时钟周期)基本上提高了全局数据吞吐量。
HFB可以以两种方式在控制器中实现。 在第一个,每个CPU内核都有自己的一套HFB。 第二种方式假定HFB实例可以在CPU之间共享。 。 5,HFB实例1,。 。 。 ,m(左上)永久分配给CPU 1.这些块不能被CPU 2,...访问。 。 。 ,n。 另一方面,HFB实例m 1,..., 。 。 ,q(右上)在除CPU 1之外的所有
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[139675],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。