基于FPGA的PLC高速脉冲计数实现系统及方法技术方案

技术编号:8884601 阅读:301 留言:0更新日期:2013-07-05 01:19
本发明专利技术提供了一种基于FPGA的PLC高速脉冲计数实现系统,包括FPGA,该FPGA包括有双端口块RAM、比较控制状态机以及计数器堆;其中所述双端口块RAM中包括有多组比较寄存器,所述计数器堆中包括多个用于对输入脉冲进行计数的计数器,所述计数器堆中的每一计数器对应所述双端口块RAM中的一组比较寄存器;所述比较控制状态机循环从所述双端口块RAM中读取每一个比较寄存器的值并与所述计数器堆中对应的计数器的值进行比较。本发明专利技术还提供一种对应的方法。本发明专利技术通过将比较数据存储于FPGA内部的双端口块RAM中,并使用比较控制状态机将双端口块RAM中的比较数据与计数器循环比较,从而实现PLC对高速脉冲的计数比较。

【技术实现步骤摘要】

本专利技术涉及PLC计数领域,更具体地说,涉及一种基于FPGA的PLC高速脉冲计数比较系统及方法。
技术介绍
PLC(Programmable Logic Controller,可编程逻辑控制器)广泛应用于各种自动化控制领域,PLC的主要功能之一是实现对不同形式高速脉冲的计数比较。为实现PLC的计数比较功能,目前大多是采用FPGA(Field-Programmable GateArray,现场可编程门阵列)来实现。在FPGA中设计多个计数器和比较寄存器,计数器根据用户的设置实现对不同模式的脉冲计数,通过比较器对比较寄存器中的值(将用户设置的比较数据存储于比较寄存器中)与计数器中的值进行比较,判断计数是否达到比较值。为了能满足用户设置比较数据值的大小,PLC中一般都将计数器和比较寄存器设置为32位,且为了能满足不同形式高速脉冲的计数比较功能,每个计数器都配置有两个比较寄存器。若设计8个32位计数器,则需配置16个32位比较寄存器,每个计数器需要与两个比较寄存器进行比较。这种实现方式会消耗大量的FPGA查找表资源,在FPGA资源有限的情况下,这种实现方式具有很大的缺陷性。
技术实现思路
本专利技术要解决的技术问题在于,针对上述PLC计数消耗大量的FPGA查找表资源的问题,提供一种基于FPGA的PLC高速脉冲计数实现系统及方法。本专利技术解决上述技术问题采用的技术方案是,提供一种基于FPGA的PLC高速脉冲计数实现系统,包括FPGA,所述FPGA包括有双端口块RAM、比较控制状态机以及计数器堆;其中所述双端口块RAM分别连接PLC的微控制单元和比较控制状态机;所述双端口块RAM中包括有多组比较寄存器,所述计数器堆中包括多个用于对输入脉冲进行计数的计数器,所述计数器堆中的每一计数器对应所述双端口块RAM中的一组比较寄存器;所述比较控制状态机循环从所述双端口块RAM中读取每一个比较寄存器的值并与所述计数器堆中对应的计数器的值进行比较。在本专利技术所述的基于FPGA的PLC高速脉冲计数实现系统中,所述FPGA还包括中断模块,所述中断模块用于对比较寄存器进行中断使能设置并根据所述中断使能设置和所述比较控制状态机的比较结果输出中断信号到所述PLC的微控制单元。在本专利技术所述的基于FPGA的PLC高速脉冲计数实现系统中,所述双端口块RAM根据所述PLC的微控制单元的输入设置比较寄存器的值。在本专利技术所述的基于FPGA的PLC高速脉冲计数实现系统中,其特征在于:所述比较控制状态机按状态转换时钟频率进行状态转换,所述比较控制状态机的状态转换的频率大于或等于输入脉冲最大频率的N倍,所述N为双端口块RAM中比较寄存器的数量。在本专利技术所述的基于FPGA的PLC高速脉冲计数实现系统中,每一组比较寄存器包括两个比较寄存器,每一个比较寄存器中存储有一个比较数据。 本专利技术还提供一种基于FPGA的PLC高速脉冲计数实现方法,所述FPGA包括有双端口块RAM、比较控制状态机以及计数器堆;其中所述双端口块RAM具有两个端口且该两个端口分别连接PLC的微控制单元和比较控制状态机;所述双端口块RAM中包括有多组比较寄存器,所述计数器堆中包括多个用于对输入脉冲进行计数的计数器,所述计数器堆中的每一计数器对应所述双端口块RAM中的一组比较寄存器,所述方法包括以下步骤:步骤(a),所述比较控制状态机状态跳转,并读取双端口块RAM的第一比较寄存器的值,将该第一比较寄存器的值与计数器堆中所述第一比较寄存器对应的计数器的值进行比较;步骤(b),所述比较控制状态机状态跳转,并按比较寄存器的顺序读取下一比较寄存器的值,并将该比较寄存器的值与计数器堆中该比较寄存器对应的计数器的值进行比较;步骤(C),判断所述比较寄存器是否为最末一个比较寄存器,若是则执行步骤(a),否则执行步骤(b)。在本专利技术所述的基于FPGA的PLC高速脉冲计数实现方法中,步骤(a)和步骤(b)之后分别包括:在所述比较寄存器的值与计速器的值匹配且中断使能有效时输出中断信号。在本专利技术所述的基于FPGA的PLC高速脉冲计数实现方法中,在步骤(a)之前包括:所述双端口块RAM根据所述PLC的微控制单元的输入设置比较寄存器的值。在本专利技术所述的基于FPGA的PLC高速脉冲计数实现方法中,所述比较控制状态机按状态转换时钟频率进行状态转换,所述比较控制状态机的状态转换的频率大于或等于输入脉冲最大频率的N倍,所述N为双端口块RAM中比较寄存器的数量。在本专利技术所述的基于FPGA的PLC高速脉冲计数实现方法中,每一组所述比较寄存器包括两个比较寄存器,每一个比较寄存器中存储有一个比较数据。本专利技术的基于FPGA的PLC高速脉冲计数实现方法,通过将比较数据存储于FPGA内部的双端口块RAM,并使用比较控制状态机将双端口块RAM中的比较数据与计数器循环比较,从而实现PLC对高速脉冲的计数比较。附图说明图1是本专利技术基于FPGA的PLC高速脉冲计数实现系统第一实施例的示意图。图2是本专利技术基于FPGA的PLC高速脉冲计数实现系统第二实施例的示意图。图3是比较控制状态机的工作原理图。图4是本专利技术基于FPGA的PLC高速脉冲计数实现方法实施例的流程图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。如图1所示,是本专利技术基于FPGA的PLC高速脉冲计数实现系统第一实施例的示意图。该系统包括FPGA 10,该FPGA 10包括有双端口块RAMl1、比较控制状态机12以及计数器堆13。上述的双端口块RAMll具有两个端口且该两个端口分别连接PLC的微控制单元和比较控制状态机12。双端口块RAMll中包括有多组比较寄存器。例如双端口块RAMll中可以包括8组比较寄存器,每组具有两个比较寄存器,每一个比较寄存器中存储有一个设定的比较数据。计数器堆13中包括多个用于对输入脉冲进行计数的计数器。上述计数器堆13中的每一计数器对应双端口块RAMll中的一组比较寄存器。此外,上述计数器堆13中的两个计数器还可共用一组比较寄存器。例如,为实现PLC的高速计数功能,计数器堆13中可设计至少8个32位计数器(O 7),每个计数器都配置两个32位比较寄存器(位于双端口块RAMll中),分别对应两个比较输出。比较控制状态机12循环地从双端口块RAMll中读取每一个比较寄存器的值,并将该读取的值与计数器堆13中对应的计数器(该计数器与比较寄存器对应)的值进行比较。具体地,比较控制状态机12每次从内部双端口块RAMll中取一个比较寄存器并读取比较数据,将该比较数据与相应计数器进行比较,每完成一次比较,状态机跳入下一个状态,不断循环,16个比较寄存器共需要16个状态就能完成一轮比较,然后再比较第一比较寄存器中的比较数据,如图3所示。如图2所示,是本专利技术基于FPGA的PLC高速脉冲计数实现系统第二实施例的示意图。在本实施例中,系统包括PLC的微控制单元(MCU) 30以及FPGA20,其中FPGA 20除了包括双端口块RAM21、比较状态控制器22以及计数器堆23外,还包括中断模块24。上述双端口块RAM21的两端分别连接PLC的微控制单元3本文档来自技高网...

【技术保护点】
一种基于FPGA的PLC高速脉冲计数实现系统,包括FPGA,其特征在于:所述FPGA包括有双端口块RAM、比较控制状态机以及计数器堆;其中所述双端口块RAM分别连接PLC的微控制单元和比较控制状态机;所述双端口块RAM中包括有多组比较寄存器,所述计数器堆中包括多个用于对输入脉冲进行计数的计数器,所述计数器堆中的每一计数器对应所述双端口块RAM中的一组比较寄存器;所述比较控制状态机循环从所述双端口块RAM中读取每一个比较寄存器的值并与所述计数器堆中对应的计数器的值进行比较。

【技术特征摘要】

【专利技术属性】
技术研发人员:郭福坤
申请(专利权)人:深圳市汇川控制技术有限公司深圳市汇川技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1