一种plc程序执行器ip核的制作方法

文档序号:6400515阅读:246来源:国知局
专利名称:一种plc程序执行器ip核的制作方法
技术领域
本发明涉及一种片上实现的程序执行模块,特别是一种PLC程序执行器IP核。
背景技术
随着自动控制技术的发展,可编程逻辑控制器(PLC)已经越来越多的应用在各个行业领域中,标准化水平越来越高。目前,已形成了 PLC控制器典型结构、编程语言、通信、用户使用导则等系列国际标准(IEC61131)。其中,以编程语言标准(IEC61131-3)最为广泛应用,所有可编程控制器均需要支持该标准支持的五种语言,包括IL、ST、LD、FBD和SFC。其中IL语言即指令表语句,最接近PLC机器语言的语言(类似汇编语言),其它四种为高级语言。普遍的,组态编程软件在编译以该五种语言编成的程序时,会将程序均转换成以IL语言为描述的中间代码。可以将中间代码下载到PLC中按句进行解释并执行(解释型),也可以将中间代码直接编译成PLC的本地代码下载运行。对于解释执行方式,它的每一条PLC程序在执行前都需要进行复杂的软件解释工作,一条IL指令需要约5句 20句C语言程序来进行解释,进一步需要约20条 100条精减指令集指令(以ARM指令集为例)。所以解释型执行方式运行速度慢,只能用于中、低档PLC。对于编译执行方式,PLC的编程者需要提前将PLC程序针对指定的CPU处理器型号用指定的编译器和编译环境参数进行编译方能正确下载运行,即只能用特定的编程软件才能对PLC进行编程。替换一种MCU处理器芯片,或仅升级一个PLC内部组件,原有的组态编程软件可能就无法再适用。所以其通用性差,产品的应用和升级成本高。此外,与解释执行方式类似的是,编译型执行方式虽然将PLC程序编译为本地代码,但仍需要采用通用处理器的精减指令集格式,每一条IL指令可能需要3-10条本地汇编指令;即使由其它PLC语言(如FBD、ST)直接编译为本地汇编指令(不经由IL中间代码),本地汇编毕竟非面向PLC程序的指令集结构,仍不可避免地有效率的损失。另一方面,在以MCU为处理核心的PLC控制器结构中,无论解释型还是编译型,都需要占用大量MCU的工作,而MCU通常还需要完成其它重要任务(如通讯、显示),PLC任务的执行和响应速度也因此受MCU其它工作的影响,难以保障其实时性和可靠性。

发明内容
为了克服现有技术的缺陷,本发明提供了一种PLC程序执行器IP核,其通过总线接口挂接在片上总线上,所述片上总线上同时挂接有MCU和存储器,包括总线接口模块、程序计数模块、取指令模块、寻址模块、取数据模块、执行模块以及程序栈,所述总线接口模块分别与所述程序计数模块、读指令模块、寻址模块、取数据模块以及执行模块连接,所述总线接口模块包括多个寄存器;
其中,所述总线接口模块通过所述多个寄存器接收所述MCU写入的程序执行信息; 所述程序计数模块更新程序的执行指令地址并交由所述取指令模块;
所述取指令模块根据所述执行指令地址从所述存储器中获取执行指令并分析和处理所述执行指令;
所述寻址模块用于获取所述执行指令的实际地址;
所述取数据模块用于获取所述执行指令的被操作数;
所述指令执行模块完成对所述执行指令的执行,所述执行指令包括跳转指令;
所述程序栈用于保存所述跳转指令的地址。较佳地,所述PLC程序为与IL语言直接对应的指令集程序。较佳地,所述多个寄存器包括代码段首地址寄存器、数据段首地址寄存器、程序计数寄存器、指令寄存器、控制寄存器以及状态寄存器。较佳地,所述代码段首地址寄存器与所述数据段首地址寄存器分别接收所述MCU写入的需要执行的程序的代码段首地址与该代码段对应的数据段首地址,所述控制寄存器接收所述MCU写入的启动程序的命令。较佳地,所述取指令模块将所述代码段首地址载入所述程序计数寄存器,所述程序计数模块将所述代码段首地址交由所述取指令模块,所述取指令模块根据所述地址通过片上总线在所述存储器中取出指令存入所述指令寄存器并分析该指令。较佳地,所述执行指令的被操作数为立即数或无操作数时,所述取指令模块将所述执行指令交由所述指令执行模块;所述执行指令的被操作数以偏移量的形式需要寻址获得时,所述取指令模块将该执行指令的被操作数交由所述寻址模块。较佳地,所述寻址模块通过该执行指令段表和偏移量信息寻得被操作数的实际地址,并交由所述取数据模块;所述取数据模块取出被操作数,并同该指令一同交由所述指令执行模块。较佳地,所述指令执行单元根据该执行指令的类型进行处理:当所述指令执行模块完成的是单条指令的执行时,则在所述状态寄存器中设置指令完成标志,并向程序计数模块发送完成信号,程序计数寄存器自加I;当所述指令执行模块无法完成指令的执行时,则在所述状态寄存器中设置对应错误标志,执行停止,同时发送中断信号;当所述指令寄存器中的指令为跳转指令(JMP)时,所述寻址模块所寻得地址为跳转点地址,将该跳转地址载入到所述程序计数寄存器中,完成跳转指令的执行;当所述指令寄存器中的指令为调用指令(CAL)时,所述寻址模块所寻得地址为调用点地址,此时所述程序计数模块将所述程序计数寄存器的值压入所述程序栈中,并将所述寻址模块寻得的跳转地址载入到所述程序计数寄存器中,完成该调用指令的执行。较佳地,所述PLC程序为与IL语言直接对应的指令集程序。较佳地,所述PLC程序为与IL语言直接对应的指令集程序。较佳地,其顺序读取程序的IL指令。较佳地,其通过所述片上总线主动访问或配置其它IP核或接受其它IP核的访问或配置,所述片上总线为AMBA、CoreConnect> Wishbone、OCP、Avalon片上总线中的一种。较佳地,一种PLC程序执行器IP核的工作方法,该IP核通过总线接口挂接在片上总线上,所述片上总线上同时挂接有MCU和存储器,其特征在于,包括总线接口模块、程序计数模块、取指令模块、寻址模块、取数据模块、执行模块以及程序栈,所述总线接口模块分别与所述程序计数模块、读指令模块、寻址模块、取数据模块以及执行模块连接,所述总线接口模块包括代码段首地址寄存器、数据段首地址寄存器、程序计数寄存器、指令寄存器、控制寄存器以及状态寄存器;
该IP核的工作方法为:
(1)(MCU)向所述代码段首地址寄存器、数据段首地址寄存器内分别写入需要执行的程序的代码段首地址与该代码段对应的数据段首地址,并向所述控制寄存器写入启动程序的命令;
(2)所述程序计数寄存器载入所述代码段首地址,所述程序计数模块将所述代码段首地址交由所述取指令模块;
(3)所述取指令模块根据所述地址通过片上总线在所述存储器中取出指令并存入所述指令寄存器并分析该指令;
(4)当该指令的被操作数为立即数或无操作数,则所述取指令模块将该指令交由所述指令执行模块;当该指令的被操作数以偏移量的形式需要寻址获得,所述指令寄存器将该指令的操作数信息交由所述寻址模块,所述寻址模块通过该指令段表和偏移量信息寻得被操作数的实际地址,并交由所述取数据模块;
(5)所述取数据模块取出被操作数,并同该指令一同交由所述指令执行模块;
(6)所述指令执行单元根据该指令的类型进行处理:当所述指令执行模块完成的是单条指令的执行时,则在所述状态寄存器中设置指令完成标志,并向程序计数模块发送完成信号,程序计数寄存器自加1,重复(2广(6)步骤;当所述指令执行模块无法完成指令的执行时,则在所述状态寄存器中设置对应错误标志,执行停止,同时发送中断信号;当所述指令寄存器中的指令为跳转指令(JMP)时,所述寻址模块所寻得地址为跳转点地址,将该跳转地址载入到所述程序计数寄存器中,继续(2) (6)步骤;当所述指令寄存器中的指令为调用指令(CAL)时,所述寻址模块所寻得地址为调用点地址,此时所述程序计数模块将所述程序计数寄存器的值压入所述程序栈中,并将所述寻址模块寻得的跳转地址载入到所述程序计数寄存器中,继续(2) (6)步骤;
(7)在完成一个代码段的执行后,所述程序计数模块查询所述程序栈是否为空,如仍有内容,说明已完成的代码段是被调用的程序,弹出栈顶地址到所述程序计数寄存器,继续(2广(6)步骤;如所述程序栈已空,则程序完全结束,在所述状态寄存器中设置程序完成标志,同时发送中断信号。与现有技术相比,本发明的有益效果如下:
1.以片上IP核的方式实现了可自主运行的IL程序执行器,使得PLC控制器对PLC程序的执行可以不再受制于MCU的型号、性能和软件,同时以IP核形式存在的结构可以不作任何修改地集成到SoC芯片中。2.1P核执行32位定长的指令,与IEC61131-3中标范的IL指令直接对应,I条IL指令只要对应I条32位指令,在一个执行周期内完成执行,在同样的工作频率下,速度明显高于基于MCU设计的PLC数倍。3.1P核以流水线的方式直接执行IL程序,提高了 IL程序的绝对速度,且与MCU的其它工作互不影响,实时性高。4.由于IL语言已标准化,与IL语言完全对应的指令集格式通用性高,可以极方便地实现PLC编程编译软件,其它各种编程语言可通过上位机的编程软件编译为IL指令并交由本IP核执行,提高了 PLC整体CPU模块的执行速度。当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。


图1为本发明实施例的结构示意图。
具体实施例方式下方结合附图和具体实施例对本发明做进一步的描述。本发明提供了一种PLC程序执行器IP核,其通过总线接口挂接在片上总线上,所述片上总线上同时挂接有MCU和存储器,包括总线接口模块、程序计数模块、取指令模块、寻址模块、取数据模块、执行模块以及程序栈,所述总线接口模块分别与所述程序计数模块、读指令模块、寻址模块、取数据模块以及执行模块连接,所述总线接口模块包括多个寄存器。
实施例如图1所示,为本发明的一较佳实施例,在本例中总线接口模块为AHB接口模块,其通过所述片上总线主动访问或配置其它IP核或接受其它IP核的访问或配置,所述片上总线可以是AMBA、CoreConnect> Wishbone、OCP、Avalon等SoC片上总线的一种,此处仅具此5例总线,本发明并不局限于本例中的5中总线,此处仅距离说明。本例以AMBA总线为例。本发明实施例提供了一种PLC程序执行器IP核,该IP核作为片上实现的集成电路IP核挂接在SoC芯片的AMBA总线2上,其通过AHB接口模块I挂接在AMBA总线2上,AMBA总线2上同时挂接有MCU3和存储器模块4,该IP核包括AHB接口模块1、程序计数模块6、取指令模块5、寻址模块9、取数据模块10与指令执行模块8,AHB接口模块I分别与程序计数模块6、取指令模块5、寻址模块9、取数据模块10以及指令执行模块8连接,AHB接口模块I包括代码段首地址寄存器、数据段首地址寄存器、程序计数寄存器、指令寄存器、控制寄存器以及状态寄存器;
该IP核的工作流程为:
(OMCU3向代码段首地址寄存器、数据段首地址寄存器内分别写入需要执行的程序的代码段首地址与该代码段对应的数据段首地址,并向所述控制寄存器写入启动程序的命令;
(2)所述程序计数寄存器载入所述代码段首地址,程序计数模块6将所述代码段首地址交由取指令模块5 ;
(3)取指令模块5根据所述地址通过AMBA总线2在存储器模块4中取出指令并存入指令寄存器并分析该指令;
(4)当该指令的被操作数为立即数或无操作数,则取指令模块5将该指令交由指令执行模块8;当该指令的被操作数以偏移量的形式需要寻址获得,所述指令寄存器将该指令的操作数信息交由所述寻址模块9,寻址模块9通过该指令段表和偏移量信息寻得被操作数的实际地址,并交由取数据模块10 ;
(5)取数据模块10取出数据,并同该指令一同交由指令执行模块8;
(6)指令执行模块8根据该指令的类型进行处理:当指令执行模块8完成的是单条指令的执行时,则在所述状态寄存器中设置指令完成标志,并向程序计数模块6发送完成信号,程序计数寄存器自加1,重复(2广(6)步骤;当指令执行模块8无法完成指令的执行时,则在所述状态寄存器中设置对应错误标志,执行停止,同时发送中断信号;当所述指令寄存器中的指令为跳转指令(JMP)时,寻址模块9所寻得地址为跳转点地址,将该跳转地址载入到所述程序计数寄存器中,继续(2广(6)步骤;当所述指令寄存器中的指令为调用指令(CAL)时,寻址模块9所寻得地址为调用点地址,此时程序计数模块6将所述程序计数寄存器的值压入程序栈7中,并将寻址模块9寻得的跳转地址载入到所述程序计数寄存器中,继续(2) (6)步骤;
(7)在完成一个代码段的执行后,程序计数模块6查询程序栈7是否为空,如仍有内容,说明已完成的代码段是被调用的程序,弹出栈顶地址到所述程序计数寄存器,继续(2广(6)步骤;如程序栈7已空,则程序完全结束,在所述状态寄存器中设置程序完成标志,同时发送中断信号。其中,本IP核所执行程序的指令集是与IL指令直接对应的32位定长指令集,IL语言程序执行器IP核可以自主的顺序读取并执行整段IL指令程序;其中高8位用与表征IL指令码,另24位用于表征该指令码的具体参数(如被操作数类型)和被操作数,被操作数可以是立即数,也可以是存放在存储器中以段号和段内偏移量为表征的命令码或数据。在具体实现中,指令执行模块还可以分为解码、运算等子级流水线,寻址模块还可以分为段地址寻址、目标地址寻址等子级流水线。如下列表举例说明各种指令的具体格式定义:
权利要求
1.一种PLC程序执行器IP核,其通过总线接口挂接在片上总线上,所述片上总线上同时挂接有MCU和存储器,其特征在于,包括总线接口模块、程序计数模块、取指令模块、寻址模块、取数据模块、执行模块以及程序栈,所述总线接口模块分别与所述程序计数模块、读指令模块、寻址模块、取数据模块以及执行模块连接,所述总线接口模块包括多个寄存器; 其中,所述总线接口模块通过所述多个寄存器接收所述MCU写入的程序执行信息; 所述程序计数模块更新程序的执行指令地址并交由所述取指令模块; 所述取指令模块根据所述执行指令地址从所述存储器中获取执行指令并分析和处理所述执行指令; 所述寻址模块用于获取所述执行指令的实际地址; 所述取数据模块用于获取所述执行指令的被操作数; 所述指令执行模块完成对所述执行指令的执行,所述执行指令包括跳转指令; 所述程序栈用于保存所述跳转指令的地址。
2.如权利要求1所述的PLC程序执行器IP核,其特征在于,所述多个寄存器包括代码段首地址寄存器、数据段首地址寄存器、程序计数寄存器、指令寄存器、控制寄存器以及状态寄存器。
3.如权利要求2所述的PLC程序执行器IP核,其特征在于,所述代码段首地址寄存器与所述数据段首地址寄存器分别接收所述MCU写入的需要执行的程序的代码段首地址与该代码段对应的数据段首地址,所述控制寄存器接收所述MCU写入的启动程序的命令。
4.如权利要求2所述的PLC程序执行器IP核,其特征在于,所述取指令模块将所述代码段首地址载入所述程序计数寄存器,所述程序计数模块将所述代码段首地址交由所述取指令模块,所述取指令模块根据所述地址通过所述片上总线在所述存储器中取出指令存入所述指令寄存器并分析该指令。
5.如权利要求4所述的PLC程序执行器IP核,其特征在于,所述执行指令的被操作数为立即数或无操作数时,所述取指令模块将所述执行指令交由所述指令执行模块;所述执行指令的被操作数以偏移量的形式需要寻址获得时,所述取指令模块将该执行指令的被操作数交由所述寻址模块。
6.如权利要求5所述的PLC程序执行器IP核,其特征在于,所述寻址模块通过该执行指令段表和偏移量信息寻得被操作数的实际地址,并交由所述取数据模块;所述取数据模块取出被操作数,并同该指令一同交由所述指令执行模块。
7.如权利要求6所述的PLC程序执行器IP核,其特征在于,所述指令执行单元根据该执行指令的类型进行处理:当所述指令执行模块完成的是单条指令的执行时,则在所述状态寄存器中设置指令完成标志,并向程序计数模块发送完成信号,程序计数寄存器自加I ;当所述指令执行模块无法完成指令的执行时,则在所述状态寄存器中设置对应错误标志,执行停止,同时发送中断信号;当所述指令寄存器中的指令为跳转指令JMP时,所述寻址模块所寻得地址为跳转点地址,将该跳转地址载入到所述程序计数寄存器中,完成跳转指令的执行;当所述指令寄存器中的指令为调用指令CAL时,所述寻址模块所寻得地址为调用点地址,此时所述程序计数模块将所述程序计数寄存器的值压入所述程序栈中,并将所述寻址模块寻得的跳转地址载入到所述程序计数寄存器中,完成该调用指令的执行。
8.如权利要求1所述的PLC程序执行器IP核, 其特征在于,所述PLC程序为与IL语言直接对应的指令集程序。
9.如权利要求8所述的PLC程序执行器IP核,其特征在于,所述指令是与IL指令直接对应的32位定长指令,其中高8位用于表征指令码,另24位表征该指令码的具体参数和被操作数。
10.如权利要求8所述的PLC程序执行器IP核,其特征在于,其顺序读取程序的IL指令。
11.如权利要求1所述的PLC程序执行器IP核,其特征在于,其通过所述片上总线主动访问或配置其它IP核或接受其它IP核的访问或配置,所述片上总线为AMBA、CoreConnect、Wishbone、OCP、Avalon片上总线中的一种。
12.—种PLC程序执行器IP核,其通过总线接口挂接在片上总线上,所述片上总线上同时挂接有MCU和存储器,其特征在于,包括总线接口模块、程序计数模块、取指令模块、寻址模块、取数据模块、执行模块以及程序栈,所述总线接口模块分别与所述程序计数模块、读指令模块、寻址模块、取数据模块以及执行模块连接,所述总线接口模块包括代码段首地址寄存器、数据段首地址寄存器、程序计数寄存器、指令寄存器、控制寄存器以及状态寄存器; 该IP核的工作方法为: (1)MCU向所述代码段首地址寄存器、数据段首地址寄存器内分别写入需要执行的程序的代码段首地址与该代码段对应的数据段首地址,并向所述控制寄存器写入启动程序的命令; (2)所述程序计数寄存器载入所述代码段首地址,所述程序计数模块将所述代码段首地址交由所述取指令模块; (3)所述取指令模块根据所述地址通过片上总线在所述存储器中取出指令并存入所述指令寄存器并分析该指令; (4)当该指令的被操作数为立即数或无操作数,则所述取指令模块将该指令交由所述指令执行模块;当该指令的被操作数以偏移量的形式需要寻址获得,所述指令寄存器将该指令的操作数信息交由所述寻址模块,所述寻址模块通过该指令段表和偏移量信息寻得被操作数的实际地址,并交由所述取数据模块; (5)所述取数据模块取出被操作数,并同该指令一同交由所述指令执行模块; (6)所述指令执行单元根据该指令的类型进行处理:当所述指令执行模块完成的是单条指令的执行时,则在所述状态寄存器中设置指令完成标志,并向程序计数模块发送完成信号,程序计数寄存器自加1,重复(2广(6)步骤;当所述指令执行模块无法完成指令的执行时,则在所述状态寄存器中设置对应错误标志,执行停止,同时发送中断信号;当所述指令寄存器中的指令为跳转指令JMP时,所述寻址模块所寻得地址为跳转点地址,将该跳转地址载入到所述程序计数寄存器中,继续(2) (6)步骤;当所述指令寄存器中的指令为调用指令CAL时,所述寻址模块所寻得地址为调用点地址,此时所述程序计数模块将所述程序计数寄存器的值压入所述程序栈中,并将所述寻址模块寻得的跳转地址载入到所述程序计数寄存器中,继续(2) (6)步骤; (7)在完成一个代码段的执行后,所述程序计数模块查询所述程序栈是否为空,如仍有内容,说明已完成的代码段是被调用的程序,弹出栈顶地址到所述程序计数寄存器,继续(2广(6)步骤;如所述程序栈已空,则程序完全结束,在所述状态寄存器中设置程序完成标志,同时发送中断信号。
13.如权利要求12所述的方法,其特征在于,其通过所述片上总线主动访问或配置其它IP核或接受其它IP核的访问或配置,所述片上总线为AMBA、CoreConnect> Wishbone、OCP、Avalon片上 总线中的一种。
全文摘要
本发明公开了一种PLC程序执行器IP核,其通过总线接口挂接在片上总线上,所述片上总线上同时挂接有MCU和存储器,其包括总线接口模块、程序计数模块、读指令模块、寻址模块、取数据模块与执行模块,所述总线接口模块包括多个寄存器,PLC程序为IL语言程序,以32位定长指令集格式存储,该IP通过总线接口挂接在片上总线上,通过寄存器接收控制信号,从同样挂接在片上总线上的存储器中读取IL指令并通过各模块与寄存器配合执行指令。本发明以更快的速度和更高的效率进行PLC程序的执行,同时IP核结构的设计避免了依靠MCU执行而带来的性能影响和硬件相关等缺点,接口开放易移植。
文档编号G06F9/30GK103207771SQ20131008780
公开日2013年7月17日 申请日期2013年3月19日 优先权日2013年3月19日
发明者杨大胜, 潘再生, 张伟宁 申请人:浙江中控研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1