基于FPGA的可编程逻辑控制器的算术运算硬件实现外文翻译资料

 2022-03-12 15:41:57

英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料


基于FPGA的可编程逻辑控制器的算术运算硬件实现

波兰,格利维策,西里西亚理工大学,电子学院

摘要:介绍了在FPGA器件中实现的可编程逻辑控制器(plc)的算术逻辑单元(ALU)。PLC实现对EN 61131-3规范定义的机器语言的一个子集的执行。这个设计是用来综合Verilog和VHDL模型的设计。ALU可以执行32种运算,包括基本逻辑运算、比较器和四种基本算术运算。可以对定点数和浮点数执行操作。所有的操作都是在硬件中实现的,所以解决方案很快。系统化的HDL模型可以很容易地移植到其他FPGA体系结构或ASIC中。

关键词:可编程逻辑控制器,中央处理单元,算术逻辑单元,算术算法,微处理器,数字电路,逻辑阵列,现场可编程门阵列,浮点运算。

  1. 简介

在过去50年中,可编程逻辑控制器(PLC)作为实现控制系统的一种方便手段得到了广泛的欢迎。

多年来,可编程逻辑控制器一直采用通用微处理器构成,或微控制器单元(MCU),如流行的来自英特尔的MCS 51(伯格斯等人。2003,西门子2008)。这种解决方案很便宜,但在实现PLC特有的许多功能方面却很不方便。在过去三十年中,我们可以观察到硅技术的进步,特别是应用专用集成电路(ASIC)技术的出现,使PLC设计者能够克服这些问题,并从头开始设计中央处理器(CPU),使之适合PLCs的特殊需要。现在,PLC硬件的关键部分被构造成ASIC设备。

可编程逻辑器件,特别是现场可编程门阵列(FPGA),为ASIC技术提供了一个有趣的替代方案。现代FPGA设备的逻辑资源,可以达到数以百万计的等效逻辑门(Altera 2013,Xilinx 2013),足够在一个单一的设备全32位CPU实现,并且连同最外围。编程一个FPGA设备既快又便宜:它只需一小部分时间,只使用一个低成本的串行编程器,并且可以在桌面上执行。

如果没有专门的计算机辅助设计工具,那么庞大的逻辑能力将难以控制。设计师指定所需设备的行为需要一个高层次的分层描述,特别是硬件描述语言(HDL)。然后自动合成方案在目标的技术下转换成高层次的描述组成的原始元素表。

此外,设计的方法,特别是利用硬件描述语言(HDL)设计规范,是非常类似的,这应该在FPGA的结构和ASIC器件上实现。通常可以将相同的HDL描述移植到FPGA中,只对其进行微小的改动。这一点,加上快速的上市时间,以及快速无限制的芯片重新编程的可能性,使得FPGA设备成为设计开发和原型设计的一个特别有吸引力的平台。准备一个设计并在FPGA中实现它是可能的。然后,在该概念得到积极验证之后,该设计可以移植到ASIC技术中,以获得更好的参数(例如速度),并降低递归工程成本。

上述考虑是西里西亚理工大学的一组研究人员开发PLC的原型设计的灵感,并将其作为一个整体在FPGA设备中实现。项目的另一目标是,设计与指令表和EN 61131-3规范兼容的CPU(CENELEC 2013)。据作者所知,目前规范中实现PLC可以在只有在编译器层次市场,并在规范定义的指令翻译成机器语言指令序列,这些都针对特定的PLC(约翰和泰格卡穆 2010)。通过这种设计,目标是在机器语言级别上实现与规范的兼容性。

然而,必须强调的是,并非全部规范真正实现,而是它的一个子集。规范的目标是定义一个可能完全的、甚至是冗余的操作集和各种数据类型,这些数据类型应该涵盖所有可想象的问题。许多操作(通常称为“函数”)非常复杂,它们在硬件中的直接实现是非常困难和不切实际的。从这个集合中选择了120个指令子集来实现。

本文的目的是描述算术逻辑单元(ALU)的设计,它是PLC CPU的重要组成部分。ALU的一个特点是所有支持的算术运算都是在硬件中实现的。ALU设计的实际描述将在前面简要介绍整个PLC的概念。PLC的较为详细地设计介绍可以在Czerwinski等人的著作中参考。(2013).

一些类似的设计,在之前通过一些研究团队开发,在希米尔等人描述中。(2001)、Hrynkiewicz和希米尔(2012)。另一个实现可写在一个与EN 61131-3标准兼容的语言程序PLC的CPU的想法,是克罗地亚等人提出的。(2011)。这个解决方案是基于虚拟机概念的。这个研究主题也可以在Okabe中找到(2008)。

2. PLC的概念

这是假设整个PLC将在FPGA设备上实现,没有任何实质性的外部逻辑块(切尔文斯基等人。2013)。进一步决定了PLC只处理布尔变量,以及用双字(32位宽数据字)表示的变量。

控制器最重要的部分是中央处理单元。中央处理单元包含控制整个PLC操作的元件——从程序存储器中读取指令,并执行它们。CPU可以解释和执行120个命令。CPU还包括两个标记内存块(位标记存储器和双字标记存储器)和适当的控制器。

图1给出了执行单元的结构,它是cpu的核心。

图1 CPU的结构

中央处理单元分为两个主要部分:位逻辑单元和双字长算术逻辑单元(ALU)。每个单元都运行在自己的当前结果寄存器(CR)寄存器中。这两个独立的数据处理单元的目的是加快二进制变量执行操作(Chmiel和hrynkiewicz 2005, 2010)。

3.算术逻辑单元

3.1数字格式

它决定PLC将支持两种数字类型:整数和实数。两种类型都用32位宽数据字表示。整数使用著名的补码(TC)格式(Deschamps等人。2006),根据IEC 754规范(IEEE 2008),实数表示为单精度浮点数。

浮点格式相当复杂,不便于硬件实现。数由三部分组成:标志(1位)、指数(8位),和的尾数(23位)-见图2。

图2 按IEC 754标准编号的单精度浮点表示法

二进制表示的数值是用(1)计算的:

其中S代表符号位,E–的价值指数领域的8位代表,和M–尾数的小数部分。

一些0和1的组合被保留起来表示亚数值,即,无穷大和0。另外,有些不代表任何正确的数值。这种组合被称为不是数字(NaN)(IEEE 2008)。

3.2 ALU的实现

ALU会在双字参数进行32则运算(Chmiel等人。2013)。这包括:

  • 关于整数和实数的四种基本算术运算,
  • 整数运算的模运算,
  • 从整数到实数,从实变到整数(圆),
  • 对整数和实数的否定,
  • 六个整数和实数的基本比较器,
  • 在32位数据字上的三个逻辑运算(和,或异或),
  • 向左移动,转到正确的操作,
  • 两个旋转操作(左旋转和右旋转)。

ALU执行的操作的完整列表显示在表2中。这个运行是在5位操作码的编码下执行的,由CPU执行单元提供。

图3显示了ALU的内部结构。在一般情况下,操作是电路并联运行实现的,虽然有些成分能在不同业务之间共享。输入参数提供给所有的子电路的输入,而最终的结果是由输出多路选择,由操作码控制。

这个设计是作为一套可综合的VHDL模块的设计。ALU被设计成一个组合结构,作为最快的解决方案,可以以相当大的资源使用成本获得。

VHLD的逻辑运算的实现是简单的、标准的逻辑算子定义的语言操作矢量。实现比较器,只要加和减,也很简单。这就足以包含对适当的算术包的引用,并使用表示操作的标准运算符。如果矢量符号用于操作数,合成软件可以检测的算术运算,并推断结构利用快速进位发生器,这是一种非常有效的、快速的解决方案(Xilinx 2011A)。

在比较器块中,仅直接实现两个比较器就足够了,例如“大于”和“等于”。剩下的比较器输出可以用简单的逻辑关系很容易地生成,例如“小于”等于“大于”而不是“等于”。定点和浮点数的比较略有不同,浮点编码是基于符号数量概念的。如果输入参数正确,浮点比较器也执行检查。

合成的乘法和分子不简单。有几种执行定点乘法的算法。合成软件通常不能直接合成乘法,设计者必须在较低的抽象层次上指定选择的算法。然而,用于合成的ISE软件,如果目标结构包含专用的乘法块,就能够实现乘法电路。幸运的是,今天它是相当普遍的,新的FPGA设备都配备了特殊的结构(通常称为DSP,或乘块)促进定点乘法的实现(Xilinx 2011b)。设计假定,目标结构将包含某种乘法块,乘法运算以类似的方式描述,如加法和减法,即通过包含适当的算术包,并使用乘法运算符“*”。如果使用这样的描述样式,合成软件使用专用的乘法块实现乘法运算。该解决方案是在资源使用方面都有效,并且很快(Kulisz出2013)。

图3 ALU的模块结构

最难实现的定点操作是除法运算。与乘法一样,文献中描述了几种划分算法,到目前为止,综合软件不能直接对除法进行综合。

在硬件中实现除法的最简单的方法可能是使用适当的ip核发生器。然而,在这种情况下,我们获得了一个“黑匣子”解决方案,它不可移植到其他FPGA体系结构,或ASIC技术。作为项目的目标之一是准备一个便携式HDL描述,这种方法被放弃了。最后,分支路采用流行的数字递推算法描述(Deschamps等人。2006)迭代的空间,即结构组成的级联加法器/减法器。

由于浮点数表示结构的异构性,在硬件中实现浮点运算是一个比较复杂的问题。实际操作(即加法,乘法,等)必须在尾数包含一个数的值,而且指数必须要考虑的,因为他们携带的量级。对于浮点数乘法是最简单的操作来实现。

图4显示了一个简化的等效电路图块执行浮点乘法的过程。

图4 乘法浮点运算电路的结构

尾数和指数,在单独的通道处理。两个参数的指数相加,然后从结果中减去127的校正因子。尾数,辅以之前的数值,增加使用48位定点乘法器。如果固定点乘法的结果最有效位等于1,则“移位器”块进行检查。如果是这样的话,尾数需要由1位右移,指数也会有增加。

图5给出了对两个浮点数的求和的结构。评价的总和的两个浮点数,在数字至少有一个是非规范化的,即尾数必须转移,和指数必须相应地增加或减少,以获得数字相同的指数。

图5 加减法浮点运算电路的结构

在第一个块中,比较了两个数字。较大的数被转移到GT输出,较少的数被转移到LE输出。在“减法”块两指数相减,所不同的是发送到“三角洲”输出。“器”块转移的数量少的尾数,根据指数“三角洲”的区别。增加了这两个尾数(或减少)的“加法”块。最后一块(规范)负责正常化的结果,聚集数的所有部分一起,处理特殊情况,如无穷,和零点。用于此目的的二进制信号”pinf1”、“minf1”等。“规范”块产生最终结果(结果),而NaN标志指示不正确的参数。

在评估浮点运算的结果时,常常需要通过任意数目的比特移位临时结果(例如图4和5中的“移位器”块)。这是基于多路复用器的结构实现的。在图6中,使用以“右移”(SR)操作为例的电路来说明该思想。该结构是一个组合电路,它能够在一个时钟周期内执行移位操作。速度代价是移位块消耗的大量逻辑资源。

这一思想在几种情况下实现,用于浮点运算,也适用于转换器和移位/旋转指令。

图6 执行右移运算的概念

4.综合结果

利用Xilinx的ISE软件合成了ALU。合成了两个目标架构:流行的斯巴达3,和一个更现代的斯巴达6。这两种设备都属于Xilinx公司提供的低成本、中等性能的FPGA器件。

表1显示了两种体系结构设计所占用的逻辑资源。ALU消耗了大量的逻辑资源,但这是在硬件中实现不方便的算术运算的代价。细心的读者需要记住,斯巴达6包含更大的LUT块(5或6个输入),而不是斯巴达3(4个输入)。

表2列出了相关指令的执行时间。为斯巴达3设备获得的数据与斯巴达6设备获得的数据相似,因此斯巴达3的数据被省略了。执行时间获得了CPU与流行的商业解决方案,与西门子公司的SIMATIC S7-200相比:(西门子2008),SIMATIC S7-300(西门子2012a)。

然而,对于大多数已实现的操作来说,表第二列中的执行时间不是由ALU的延迟造成的,而是由CPU本身的操作引起的。CPU执行的指令在三个时钟周期(Chmiel等人。2013)。对于提出的原型解决方案,一个保守的假设是,将由50 MHz的时钟信号驱动的PLC。因此,对于大多数指令,执行时间等于60纳秒。为了给读者一个更真实的估计速度的ALU,总指令执行时间是伴随着实际的时间延迟的ALU本身,执行相关的操作。这些数字是用括号写的。

得到结果后的路线进行了模拟使用仿真工具进行数据(ISIM)内置的合成系统(Xilinx ISE的形式)。ALU本身被模拟为组合电路。表中列出的时间显示了获得相关操作有效结果所必需的时间延迟。

从制造商的数据手册(西门子2008,2012a)得到的S7-200和S7-300 CPU的数据,。在许多情况下,指令执行时间取决于寻址模式或内存区域,在这些位置上操作数被放置。可能从某些内存区域处理数据,或者使用某些寻址模式,需要一些额外的内存访问。这可以模糊对ALU自身速度的实际数据,我们想要比较。为了避免可能的最大程度的效果,并得到了ALU速度的最佳逼近,最短的执行时间是从制造商的数据手册,并列入表。

不幸的是,关于西门子S7-1200 PLC执行,即新时代的准确数据,在S7 1500不可用。在西门子(2012b)可以发现,对于CPU的1215,即家庭最快的S7-1200 CPU,2.3我们执行浮点运算指令。同样,对S7 1500发现一个整数运算指令的执行时间等于0.016美元,和浮点运算–0.064(西门子2013)。

可以看出,在建议的解决方案中,大多数实现的操作计算非常快。所提出的ALU与市面上大部分可编程控制器相比比较好。在大

全文共6136字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[16453],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。