CN102298352A - 高性能可编程控制器专用处理器体系结构及其实现方法 - Google Patents
高性能可编程控制器专用处理器体系结构及其实现方法 Download PDFInfo
- Publication number
- CN102298352A CN102298352A CN2010102100398A CN201010210039A CN102298352A CN 102298352 A CN102298352 A CN 102298352A CN 2010102100398 A CN2010102100398 A CN 2010102100398A CN 201010210039 A CN201010210039 A CN 201010210039A CN 102298352 A CN102298352 A CN 102298352A
- Authority
- CN
- China
- Prior art keywords
- instruction
- redirect
- functional block
- data
- registers group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Programmable Controllers (AREA)
Abstract
本发明涉及一种高性能可编程控制器专用处理器体系结构及其实现方法,体系结构包括PLC专用指令集处理器、通用处理器,其中PLC专用指令集处理器通过PLC专用集处理器与通用处理器的接口与通用处理器相连;实现方法按照该可编程控制器专用指令集处理器采用四级流水线,包括取指阶段、译码阶段、执行阶段、以及回写阶段。本发明通过设计符合PLC指令特征的PLC专用指令集,减少PLC处理器执行的指令数,加快可编程控制器程序的执行速度,提高了PLC处理器对功能块指令的处理性能。
Description
技术领域
本发明涉及一种应用于自动控制领域中的处理器,具体的说是一种高性能可编程控制器的处理器体系结构及其实现方法。
背景技术
可编程控制器(PLC)是以微处理器为核心,把自动化技术、通信技术融为一体的新型工业自动控制装置。可编程控制器以其可靠性高、抗干扰能力强、实时性强、控制程序可变、体积小、功耗低、使用方便、易维护等特点,广泛应用于工业行业的各个领域,如钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输等。
随着可编程控制器国际标准IEC_61131-3的颁布,可编程控制器在***结构上,从传统的单机向多处理器发展;在控制***组态上,从单机控制***到分布式及过程控制***发展;在编程语言上,呈多样化及简易化发展,创造了符合控制要求及通信能力的编程环境。由于信息技术的迅猛发展,可编程控制器对工业网络通信能力及实时性要求越来越高。这不仅要求可编程控制器通信能力的提高,而且需求可编程控制器的核心处理器提高其处理性能。
现有自主研发的可编程控制器微处理器,大多采用通用微处理器或者通用处理器和布尔协处理器相结合的形式。通用处理器主要面向字节、字的处理,而可编程控制器指令主要面向比特位操作,占可编程控制器指令使用频率的69%。这就迫切需要推出适合于可编程控制器处理特征的处理器。
发明内容
针对现有技术中存在的处理器速度不能充分满足工业自动控制领域有关实时性的要求,本发明要解决的技术问题是提供一种能够很好的满足实时性要求的高性能可编程控制器的处理器体系结构及其实现方法。
为解决上述技术问题,本发明采用的技术方案是:
本发明一种高性能可编程控制器的处理器体系结构,包括PLC专用指令集处理器、通用处理器,其中PLC专用指令集处理器通过PLC专用集处理器与通用处理器的接口与通用处理器相连;
所述PLC专用指令集处理器具有以下结构:指令存储器、指令计数器、指令寄存器、指令译码器、控制单元、功能块单元、功能块寄存器组、数据存储器、寄存器组、位处理器、跳转调用指令及存取指令处理单元、I\O数据存储器、状态寄存器,其中:
指令存储器,存储通用处理器并行编译后的指令,在指令计数器的控 制下,将指令发送至指令寄存器;
指令计数器,计算下一条指令地址,实现指令地址的自增,并在跳转调用指令及存取指令处理单元的控制下,按照跳转调用指令中指令地址偏移需求,改变指令地址;在位处理器的控制下,按照可跳转位逻辑运算指令指令地址偏移需求,改变指令地址;将自增后的指令地址、执行跳转调用指令后改变的指令地址及执行可跳转位逻辑运算指令后改变的指令地址,通过指令计数器中指令地址选择,将指令存储器中对应的指令输出至指令寄存器;
指令寄存器,接收指令计数器选择的指令存储器中的指令,输出该指令至指令译码器;
指令译码器,将从指令寄存器输入的指令进行译码后,将操作码输出至位处理器、跳转调用指令及存取指令处理单元、功能块单元,将操作数地址输出至寄存器组、功能块寄存器组、数据存储器及I\O存储器;
控制单元,向指令计数器、指令寄存器、指令译码器发送控制指令;接收指令译码器操作码中的组码,分别对位处理器、跳转调用指令及存取指令处理单元和功能块单元进行控制;并控制与通用处理器进行中断信号的接收或发送;
功能块单元,接收控制单元的控制信号和指令译码器的操作码,与功能块寄存器组进行数据的存取操作;
功能块寄存器组,存储来自功能块单元的执行结果,根据来自跳转调用指令及存取指令处理单元的控制信号及指令译码器对其的操作数地址的选择信号,存取数据存储器的数据,或取出功能块寄存器组的数据,并通过多路选择器送至寄存器组中的累加器堆栈中;
数据存储器,通过跳转调用指令及存取指令处理单元的控制及指令译码器对其操作数地址的选择,存取寄存器组、功能块寄存器组的数据;
寄存器组,通过跳转调用指令及存取指令处理单元的控制及指令译码器传来的操作数地址,选择寄存器组中的寄存器,将该寄存器中的操作数输出至位处理器进行处理;或存取数据存储器及I\O数据存储器中的数据;
位处理器,通过指令译码器的操作码,对来自寄存器组的操作数以及通过多路选择器选择的来自功能块寄存器组、数据存储器、I\O数据存储器并存储在寄存器组累加器堆栈中的数据进行相应处理,并将处理结果存储到寄存器组、状态寄存器、数据存储器或I\O数据存储器中;
跳转调用指令及存取指令处理单元,接收来自控制单元的控制信号,根据指令译码器传来的操作码,分别对指令计数器进行操作,对寄存器组、功能块寄存器组、数据存储器、I\O数据存储器进行存取操作控制;
I\O数据存储器,接收来自跳转调用指令及存取指令处理单元的控制信号以及指令译码器的操作数地址选择信号,与寄存器组、功能块寄存器组以及I\O数据存储器进行数据存取;
状态寄存器,保存位处理器执行后的状态结果,并通过中断方式,将状态信号发送至通用处理器。
功能块单元中每类功能块并行扩展1~16个同类功能块单元,每个功能块具有自己的功能块寄存器组。
所述指令译码器译码使用的指令格式为位逻辑运算指令格式、可跳转位逻辑运算指令格式、跳转调用及存取指令格式以及功能块指令格式,其中:
位逻辑运算指令格式,第31~30位为组码;第29~26位为操作码;第25位用于判断当前位逻辑运算指令的操作数是否存储在累加器堆栈当中;第24位为条件位,用于对通用处理器运算的条件使能,其值决定于存储在状态寄存器中的状态结果;第23~16位,用于存储保存位逻辑运算结果的寄存器地址,其寄存器地址编码位数为8位;第15~8位,用于存储保存位逻辑运算操作数之一的寄存器地址;第7~0位,用于存储保存位逻辑运算另一操作数的寄存器地址。
可跳转位逻辑运算指令格式,第31~30位为组码;第29~26位为操作码;第25位决定是否跳转的条件位;第24位为条件位,用于对通用处理器运算的条件使能,其值决定于状态寄存器的状态结果;第23~8位,为跳转偏移位,其跳转偏移量为该可跳转位逻辑运算指令跳转到可跳转位逻辑运算指令跳转结束符或累加器堆栈中的操作数出栈并求或指令的偏移量;第7~0位,为存储累加器堆栈指针寄存器保存的当前累加器堆栈值的地址;
跳转调用及存取指令格式,第31~30位为组码;第29~26位为操作码;第25位,用于区分跳转调用指令及存取指令,当I=0时,代表跳转调用指令,当I=1时,代表存取指令;第24位,为条件位,用于基于条件位跳转偏移的跳转调用指令,其条件位的值来自于累加器堆栈当前值或功能块单元输出值或来自通用处理器的运算结果,如通用处理器执行比较指令后的比较结果;第23~16位,表示累加器堆栈栈顶地址或寄存器地址;第15~0位,表示跳转调用偏移位或操作数存取地址;
功能块指令格式,第31~30位为组码;第29~26位为操作码;第25位,表示复位优先位或加计数器输入的上升沿触发位;第24位,表示置位优先位或减计数器输入的上升沿触发位;第23位表示复位或时钟电平;第22位,表示装入加减计数器初始值使能位或计时器使能位;第21~11位,表示计数器当前值或计时器当前值;第10~0位,表示计数器予置值或计时器予置值。
所述指令译码器译码使用的指令格式中组码及操作码表示的指令集为位逻辑运算指令集、可跳转位逻辑运算指令集、跳转调用指令集、存取指令集、功能块指令集,其中:
位逻辑运算指令集包括:位与操作指令、位与非操作指令、位或操作 指令、位异或操作指令以及位异或非操作指令;
可跳转位逻辑运算指令集包括:位累与操作指令、位累与非操作指令、位累或操作指令、位累或非操作指令、可跳转位逻辑运算指令跳转结束符、累加器堆栈栈顶操作数出栈并求或指令;
跳转调用指令集包括:无条件跳转指令、符合条件跳转指令、不符合条件跳转指令、无条件功能块调用指令、符合条件功能块调用指令、不符合条件功能块调用指令、无条件从功能或功能块返回指令、符合条件功能或功能块返回指令、不符合条件功能或功能块返回指令。
存取指令集包括:
LOADQBIT:取功能块单元的布尔输出值到累加器堆栈中;
STOREQBIT:将功能块单元的布尔输出值存储到功能块寄存器组中;
LOADNQBIT:取功能块单元的输出值后取反输出到累加器堆栈中;
STORENQBIT:将功能块单元的输出值取反存储到功能块寄存器组中;
LOADMBIT:从存储器单元取操作数到寄存器组或功能块寄存器组中;
STOREMBIT:将寄存器组或功能块寄存器组的数据直接存储到存储器单元中;
LOADNMBIT:从存储器单元取操作数取反后存储到寄存器组或功能块寄存器组中;
STORENMBIT:将寄存器组或功能块寄存器组的数据取反后存储到存储器单元中;
LOADIOBIT:从I\O数据存储器直接取数到寄存器组中;
STOREIOBIT:将寄存器组数据直接送到I\O数据存储器中;
LOADNIOBIT:从I\O数据存储器取的数据取反后存储到寄存器组中;
STORENIOBIT:将寄存器组数据取反后送到从I\O数据存储器中;
LOADRMBIT:将寄存器组的内部寄存器的值压栈到累加器堆栈中;
STORERMBIT:将累加器堆栈中的值出栈到寄存器组的内部寄存器中;
LOADNRMBIT:将寄存器组的内部寄存器的值取反压栈到累加器堆栈中;
STORENRMBIT:将累加器堆栈中的值取反出栈到寄存器组的内部寄存器中;
功能块指令集包括:置位优先功能块指令、复位优先功能块指令、上升沿检测功能块指令、下降沿检测功能块指令、加计数器功能块指令、减计数器功能块指令、加减计数器功能块指令、脉冲功能块指令、接通延时功能块指令、断开延时功能块指令、实时时钟功能块指令。
本发明一种高性能可编程控制器专用指令集处理器体系结构的实现方法,按照该可编程控制器专用指令集处理器采用四级流水线,包括以下步骤:
取指阶段:依据指令计数器计算的指令地址,从指令存储器取指令至 指令寄存器当中;
译码阶段:从指令寄存器取出指令送入指令译码器进行译码,通过指令中操作数地址,取出操作数;并依据指令中组码,将相应的操作码及操作数送至对应的处理单元中;
执行阶段:依据指令译码器发出的操作码及操作数,位处理器、功能块单元、跳转调用指令及存取指令处理单元给予相应处理;如执行的指令不是可编程控制器专用指令集处理器的指令时,则由控制单元向通用处理器发出中断请求,该可编程控制器专用指令集处理器可继续执行与通用处理器指令无依赖关系的指令,当通用处理器向可编程控制器专用指令集处理器发送中断请求时,可编程控制器专用指令集处理器将保存通用处理器的执行结果到状态寄存器中;将存储器访问阶段与执行阶段,合为执行阶段;存储器访问由跳转调用指令及存取指令处理单元执行;
回写阶段:将可编程控制器专用指令集处理器的结果,依据存取指令类型写回累加器堆栈、内部寄存器、数据存储器内部寄存器或I\O存储器当中。
所述位处理器处理位逻辑运算指令及可跳转位逻辑运算指令:
当位处理器执行位逻辑运算指令时,从累加器堆栈栈顶和寄存器组中取操作数后,进行位逻辑运算操作,将运算结果存储到累加器堆栈栈顶或寄存器组中;
执行完成后存储位处理器的运算结果。
当位处理器执行可跳转位逻辑运算指令时,按可跳转位逻辑运算指令的执行过程执行,执行完成后存储位处理器的运算结果;
所述可跳转位逻辑运算指令的执行过程为:
由位处理器判断该可跳转位逻辑指令为位累与操作指令、位累与非操作指令、位累或操作指令还是位累或非操作指令;
若为位累与操作指令或位累与非操作指令,且累加器堆栈的栈顶值为0,则执行与操作或与非操作,将执行结果存储在累加器堆栈的栈顶,并设置指令格式中跳转条件位为1,并设置跳转偏移量值为可跳转位逻辑运算指令跳转结束符与该可跳转位逻辑运算指令的偏移量,执行跳转;一次执行过程结束。
如果不满足“位累与操作指令或位累与非操作指令,且累加器堆栈的栈顶值为0”条件,则不执行跳转,只执行位累与操作或位累与非操作,并设置指令格式中跳转条件位为0。
若为位累或操作指令或位累或非操作指令,且累加器堆栈的栈顶值为1,则执行位累或操作或位累或非操作,将执行结果存储存储在累加器堆栈的栈顶,并设置指令格式中跳转条件位为1,设置跳转偏移量值为可跳转位逻辑运算跳转结束符指令或累加器堆栈中的操作数出栈并求或指令到该位累或操作指令的偏移量;执行跳转;一次执行过程结束。
如果不满足“位累或操作指令或位累或非操作指令,且累加器堆栈的栈顶值为“1”条件,则不执行跳转,只执行位累或操作或位累或非操作,并设置指令格式中跳转条件位为0。
所述可跳转位逻辑运算指令中的位累与操作指令、位累与非操作指令、位累或操作指令、位累或非操作指令,其执行过程与累加器堆栈的值相关,为区别于位逻辑运算指令中的与操作指令、与非操作指令、或操作指令、或非操作指令而命名。
本发明具有以下有益效果及优点:
1.本发明通过设计符合PLC指令特征的PLC专用指令集,减少PLC处理器执行的指令数,加快可编程控制器程序的执行速度。
2.本发明通过设计嵌入在PLC专用指令集处理器中的功能块单元及功能块寄存器组,提高了PLC处理器对功能块指令的处理性能。
3.本发明通过设计PLC专用指令集处理器中符合PLC高频数据访问特征的寄存器组、数据存储器、I\O数据存储器的直接存取方式,加快了PLC数据的存取速度。
4.本发明通过设计针对PLC大多采用位数据类型的特征,对寄存器组、数据存储器按位编址,提高了PLC专用指令集处理器对位数据存取的速度,相应地提高了PLC专用指令集处理器的处理性能。
附图说明
图1为本发明中可编程控制器专用处理器的体系结构框图;
图2为本发明中可编程控制器专用指令集处理器的体系结构框图;
图3为本发明中可编程控制器专用指令集处理器的位处理器框图;
图4为本发明中可编程控制器专用指令集处理器的位处理器执行过程图;
图5为本发明中可编程控制器专用指令集处理器的可跳转位逻辑运算流程图;
图6为本发明中可编程控制器专用指令集处理器的指令计数器;
图7为本发明中可编程控制器专用指令集处理器工作流程图。
具体实施方式
本高性能可编程控制器专用处理器,拥有符合可编程控制器特征的专用指令集,并能够实现硬件加速。通过分析可编程控制器指令,设计出专用的可编程控制器指令集,和其相对应的可编程控制器专用处理器的体系结构,使其处理器能够快速处理可编程控制器程序,从而提高的可编程控制器处理性能。
如图1所示,可编程控制器处理器所在片上***体系结构包括:在高速总线上的可编程控制器处理器、Ethernet MAC 10/100M及高速总线仲裁器;并通过高速/低速总线桥,连接低速总线上的外设,如AD、DA转换器,通用型输入输出接口,计时器,计数器及中断控制器。其中该可编程控制 器处理器包括:通用处理器与PLC专用指令集处理器,其接口主要通过中断方式,利用缓冲器实现数据交换。其可编程控制器处理器实施过程如下:通用处理器通过可编程控制器并行编译器,将编译好的数据存储到SRAM中。待PLC专用指令集处理器初始化后,将SRAM中PLC专用指令集处理器的相关数据传输到PLC专用指令集处理器中的指令RAM和数据RAM中。当PLC专用指令集处理器执行到非PLC专用指令集中的指令时,向通用处理器发出中断,并将数据通过缓冲器发送给通用处理器。若PLC专用指令集处理器中的下一条指令与通用处理器将要执行的指令无关时,两处理器可并行执行;否则PLC专用指令集处理器将等待通用处理器执行结果。待通用处理器执行完成后,向PLC专用指令集处理器发出中断,并将数据传输到缓冲器中。
如图2所示,所述PLC专用指令集处理器具有以下结构:指令存储器、指令计数器、指令寄存器、指令译码器、控制单元、功能块单元、功能块寄存器组、数据存储器、寄存器组、位处理器、跳转调用指令及存取指令处理单元、I\O数据存储器、状态寄存器,其中:
指令存储器,存储通用处理器并行编译后的指令,在指令计数器的控制下,将指令发送至指令寄存器;
指令计数器,计算下一条指令地址,实现指令地址的自增,并在跳转调用指令及存取指令处理单元的控制下,按照跳转调用指令中指令地址偏移需求,改变指令地址;在位处理器的控制下,按照可跳转位逻辑运算指令指令地址偏移需求,改变指令地址;将自增后的指令地址、执行跳转调用指令后改变的指令地址及执行可跳转位逻辑运算指令后改变的指令地址,通过指令计数器中指令地址选择,将指令存储器中对应的指令输出至指令寄存器;
指令寄存器,接收指令计数器选择的指令存储器中的指令,输出该指令至指令译码器;
指令译码器,将从指令寄存器输入的指令进行译码后,将操作码输出至位处理器、跳转调用指令及存取指令处理单元、功能块单元,将操作数地址输出至寄存器组、功能块寄存器组、数据存储器及I\O存储器;
控制单元,向指令计数器、指令寄存器、指令译码器发送控制指令;接收指令译码器操作码中的组码,分别对位处理器、跳转调用指令及存取指令处理单元和功能块单元进行控制;并控制与通用处理器进行中断信号的接收或发送;
功能块单元,接收控制单元的控制信号和指令译码器的操作码,与功能块寄存器组进行数据的存取操作;
功能块寄存器组,存储来自功能块单元的执行结果,根据来自跳转调用指令及存取指令处理单元的控制信号及指令译码器对其的操作数地址的选择信号,存取数据存储器的数据,或取出功能块寄存器组的数据,并通 过多路选择器送至寄存器组中的累加器堆栈中;
数据存储器,通过跳转调用指令及存取指令处理单元的控制及指令译码器对其操作数地址的选择,存取寄存器组、功能块寄存器组的数据;
寄存器组,通过跳转调用指令及存取指令处理单元的控制及指令译码器传来的操作数地址,选择寄存器组中的寄存器,将该寄存器中的操作数输出至位处理器进行处理;或存取数据存储器及I\O数据存储器中的数据;
位处理器,通过指令译码器的操作码,对来自寄存器组的操作数以及通过多路选择器选择的来自功能块寄存器组、数据存储器、I\O数据存储器并存储在寄存器组累加器堆栈中的数据进行相应处理,并将处理结果存储到寄存器组、状态寄存器、数据存储器或I\O数据存储器中;
跳转调用指令及存取指令处理单元,接收来自控制单元的控制信号,根据指令译码器传来的操作码,分别对指令计数器进行操作,对寄存器组、功能块寄存器组、数据存储器、I\O数据存储器进行存取操作控制。
I\O数据存储器,接收来自跳转调用指令及存取指令处理单元的控制信号以及指令译码器的操作数地址选择信号,与寄存器组、功能块寄存器组以及I\O数据存储器进行数据存取;
状态寄存器,保存位处理器执行后的状态结果,并通过中断方式,将状态信号发送至通用处理器。
为了实现PLC专用指令集处理器,本发明设计了符合可编程控制器特征的专用指令格式和指令集,其中指令格式为位逻辑运算指令格式、可跳转位逻辑运算指令格式、跳转调用及存取指令格式以及功能块指令格式共四种,具体为:
(1)位逻辑运算指令格式(表1),第31~30位为组码;第29~26位为操作码,操作码有四位,其可编程控制器指令表语言中的位逻辑运算指令有AND、ANDN、OR、ORN、XOR、XORN,对应的可编程控制器专用指令集处理器指令集中的指令为ANDBIT、ANDNBIT、ORBIT、ORNBIT、XORBIT、XORNBIT;第25位用于判断当前位逻辑运算指令的操作数是否存储在累加器堆栈当中,若不在累加器堆栈中,一般此指令为可跳转位逻辑运算指令后一个位逻辑运算指令,其运算结果将保存在累加器堆栈中;第24位为条件位,用于对通用处理器相关运算的条件使能,其值决定于状态寄存器的状态值;第23~16位,用于存储保存位逻辑运算结果的寄存器地址,其寄存器地址编码位数为8位;第15~8位,用于存储保存位逻辑运算操作数之一的寄存器地址(可以为寄存器组中的内部寄存器地址、累加器堆栈指针中保存的累加器堆栈地址);第7~0位,用于存储保存位逻辑运算另一操作数的寄存器地址(可以为寄存器组中的内部寄存器地址、累加器堆栈指针中保存的累加器堆栈地址)。
(2)可跳转位逻辑运算指令格式(表2),其组码为01,其可编程控制器指令表语言中的指令包括:AND(、OR、ANDN(、ORN(、)、ORLD, 对应的可编程控制器专用指令集处理器指令集中的指令为ANDCRBIT、ORCRBIT、ANDNCRBIT、ORNCRBIT、CR、PUSHOR;第25位为跳转条件位,即该可跳转位逻辑运算指令满足跳转条件,如指令为ANDCRBIT时,且累加器堆栈当前值为0时,ANDCRBIT指令后的位逻辑运算不用执行,并跳转到、可跳转位逻辑运算指令跳转结束符CR指令,其可跳转位逻辑运算流程图(图5)表明了详细执行流程;第24位为条件位,用于对通用处理器相关运算的条件使能,其值决定于状态寄存器的状态信号;第23~8位,为跳转偏移量,即偏移到可编程控制器专用指令集中CR及PUSHOR指令;第7~0位,为存储累加器堆栈指针寄存器保存的当前累加器堆栈值的地址。
(3)跳转调用及存取指令格式(表3),第31~30位为组码,其组码为10;第29~26位为操作码;第25位,用于区分跳转调用指令及存取指令,当I=0时,代表指令为跳转调用指令,其可编程控制器指令表语言中的指令包括JMP、JMPC、JMPCN、CALL、CALLC、CALLCN、RET、RETC、RETCN,对应的可编程控制器专用指令集处理器指令集中的指令为JMPBIT、JMPCBIT、JMPCNBIT、CALBIT、CALCBIT、CALCNBIT、RETBIT、RETCBIT、RETCNBIT;当I=1时,其可编程控制器指令表语言中的指令包括:LD、LDN、ST、STN,对应的可编程控制器专用指令集处理器指令集中的指令依据存取类型分为LOADBIT、LOADNBIT、STOREBIT、STORENBIT、LOADMBIT、STOREMBIT、LOADNMBIT、STORENMBIT、LOADIOBIT、STOREIOBIT、LOADNIOBIT、STORENIOBIT、LOADRMBIT、LOADNRMBIT、STORERMBIT、STORENRMBIT;第24位,为条件位,用于基于条件位跳转偏移的跳转调用指令,其条件位的值来自于累加器堆栈当前值或功能块单元输出值或来自通用处理器的运算结果,如通用处理器执行比较指令后的比较结果;第23~16位,表示累加器堆栈栈顶地址或寄存器地址;第15~0位,表示跳转调用偏移位或操作数存取地址;
(4)功能块指令格式(表4)。功能块分为触发器、边沿检测、计数器、定时器,它有自身的功能块单元寄存器组。第31~30位为组码,其指令的组码为11;第29~26位为操作码,其可编程控制器指令表语言中的指令包括SR、RS、R_TRIG、F_TRIG、CTU、CTD、CTUD、TP、TON、TOF、RTC,对应的可编程控制器专用指令集处理器指令集中的指令为FB SR、FBRS、FB R_TRIG、FB F_TRIG、FB CTU、FB CTD、FB CTUD、FB TP、FB TON、FB TOF、FB RTC;第25位,表示复位优先位或加计数器输入的上升沿触发位;第24位,表示置位优先位或减计数器输入的上升沿触发位;第23位表示复位或时钟电平;第22位,表示装入加减计数器初始值使能位或计时器使能位;第21~11位,表示计数器当前值或计时器当前值;第10~0位,表示计数器予置值或计时器予置值。
指令集共五种,具体如下:
(1)位逻辑运算指令集包括:位与操作指令、位与非操作指令、位或操作指令、位异或操作指令以及位异或非操作指令;该指令集依据操作数来源分为两类:第一、操作数有一方是来自累加器堆栈,另一方来自寄存器组,如ANDBIT CR,RS,Rm;第二、操作数两方都来自寄存器组,此位逻辑运算指令主要位于可跳转位逻辑运算后的第一个位逻辑运算,如ANDBIT RS1,RS2,Rm。该指令集依据指令结果存储地址分为两类:第一、结果存储在累加器堆栈中,如ANDBIT RS1,R2,CR;第二、结果存储在寄存器组的内部寄存器当中,如ANDBIT RS1,RS2,Rm。
(2)可跳转位逻辑运算指令集(表6),位累与操作指令、位累与非操作指令、位累或操作指令、位累或非操作指令、可跳转位逻辑运算指令跳转结束符、累加器堆栈栈顶操作数出栈并求或指令;依据是否为位逻辑运算指令,分两类,第一类、位逻辑运算指令:ANDCRBIT、ANDNCRBIT、ORCRBIT、ORNCRBIT;第二类、可跳转位逻辑运算指令的结束符——CR或PUSHOR。依据符合IEC_61131-3标准的可编程控制器指令表编程语言指令-ORLD,对应的可编程控制器专用指令集指令为PUSHOR,用于对前几项操作数输入指令LD或LDN输入到累加器堆栈中的值进行或运算,并将运算的值输入返回累加器堆栈当中。
(3)跳转调用指令集(表7),包括无条件跳转指令、符合条件跳转指令、不符合条件跳转指令、无条件功能块调用指令、符合条件功能块调用指令、不符合条件功能块调用指令、无条件从功能或功能块返回指令、符合条件功能或功能块返回指令、不符合条件功能或功能块返回指令。依据是否带条件位分为两类,第一类、带条件位,包括JMPCBIT、JMPCNBIT、CALCBIT、CALCNBIT、RETCBIT、RETCNBIT;第二类、不带条件位,包括JMPBIT、CALBIT、RETBIT。
(4)存取指令(表8),依据存取地址分为三类,第一类、取数地址为功能块存储单元,其指令包括:LOADQBIT、LOADNQBIT、STOREQBIT、STORENQBIT;第二类、存取数地址为存储器,其指令包括:LOADMBIT、STOREMBIT、LOADNMBIT、STORENMBIT;第三类、存取数地址为I\O端口,其指令包括:LOADIOBIT、STOREIOBIT、LOADNIOBIT、STORENIOBIT;第四类、存取数地址为内部寄存器,其指令包括:LOADRMBIT、LOADNRMBIT、STORERMBIT、STORENRMBIT。
存取指令集包括:
LOADQBIT:取功能块单元的布尔输出值到累加器堆栈中;
STOREQBIT:将功能块单元的布尔输出值存储到功能块寄存器组中;
LOADNQBIT:取功能块单元的输出值后取反输出到累加器堆栈中;
STORENQBIT:将功能块单元的输出值取反存储到功能块寄存器组中;
LOADMBIT:从存储器单元取操作数到寄存器组或功能块寄存器组中;
STOREMBIT:将寄存器组或功能块寄存器组的数据直接存储到存储器单元中;
LOADNMBIT:从存储器单元取操作数取反后存储到寄存器组或功能块寄存器组中;
STORENMBIT:将寄存器组或功能块寄存器组的数据取反后存储到存储器单元中;
LOADIOBIT:从I\O数据存储器直接取数到寄存器组中;
STOREIOBIT:将寄存器组数据直接送到I\O数据存储器中;
LOADNIOBIT:从I\O数据存储器取的数据取反后存储到寄存器组中;
STORENIOBIT:将寄存器组数据取反后送到从I\O数据存储器中;
LOADRMBIT:将寄存器组的内部寄存器的值压栈到累加器堆栈中;
STORERMBIT:将累加器堆栈中的值出栈到寄存器组的内部寄存器中;
LOADNRMBIT:将寄存器组的内部寄存器的值取反压栈到累加器堆栈中;
STORENRMBIT:将累加器堆栈中的值取反出栈到寄存器组的内部寄存器中;
(5)功能块指令集(表9),包括置位优先功能块指令、复位优先功能块指令、上升沿检测功能块指令、下降沿检测功能块指令、加计数器功能块指令、减计数器功能块指令、加减计数器功能块指令、脉冲功能块指令、接通延时功能块指令、断开延时功能块指令、实时时钟功能块指令;按功能分为三大类,第一类、置位复位功能;第二类、边沿检测功能;第三类、计数器功能;第四类、计时器功能。
为提高可编程控制器程序执行速度,本发明设计的可编程控制器专用指令集处理器体系结构,通过对可跳转位逻辑运算指令的处理,可加速可编程控制器专用指令集处理器对位逻辑运算指令的操作;并可在处理器内执行功能块指令,节省了对其输入输出数据的存取时间,提高了可编程控制器专用指令集处理器的实时性与精确度;其寄存器组,针对该可编程控制器专用指令集处理器处理开关量数据的特点,采用位编址方式,能够加快数据存取的速度;针对功能块指令数据的特征,另外设计了功能块寄存器组;数据存储器针对该可编程控制器专用指令集处理器的数据特征,分别对开关量数据及功能块数据进行编址。该可编程控制器专用指令集处理器包括:指令存储器、指令计数器、指令寄存器、指令译码器、控制单元、功能块单元、功能块寄存器组、数据存储器、寄存器组、位处理器、跳转调用指令及存取指令处理单元、I\O数据存储器;该处理器采用四级流水线,取指、译码、执行、回写。
(1)指令存储器,其指令存储容量设定为64KB;因指令格式采用32位,则一条指令需要一个字的单元存储,该指令存储器则可存储211条指令;该指令存储器采用小端方式存储,即低地址存储低端数据,高地址存储高 端数据。
(2)指令计数器(图6),该指令计数器中当前PC值分为三类:第一,当前PC值为下一条指令地址,即当前PC值=上一条指令地址+4;第二,当遇到可跳转位逻辑运算指令,则当前PC值=上一条指令地址+跳转偏移量;第三,当遇到跳转调用指令时,则当前PC值=上一条指令地址+跳转调用偏移量。其可跳转位逻辑指令的处理流程图如图5所示,由指令译码器向位处理器输入组码,位处理器通过组码识别是否为可跳转位逻辑指令;
(3)控制单元,控制可编程控制专用指令集处理器的四个流水阶段,即在取指阶段,控制指令计数器的操作;在译码阶段,控制指令译码器的操作;在执行阶段,接收指令译码器操作码中的组码,分别对位处理器、跳转调用指令及存取指令处理单元和功能块单元进行控制;并控制与通用处理器进行中断信号的接收或发送;在回写阶段,控制跳转调用指令及存取指令处理单元和功能块单元中存取指令的回写操作。
(4)功能块单元,该功能块单元主要处理功能块指令,如置位优先功能块指令、复位优先功能块指令、上升沿检测功能块指令、下降沿检测功能块指令、加计数器功能块指令、减计数器功能块指令、加减计数器功能块指令、脉冲功能块指令、接通延时功能块指令、断开延时功能块指令、实时时钟功能块指令;其功能块单元中每类功能块可并行处理1~16个相同功能块,符合可编程控制器程序需执行多个功能块指令的特征;功能块单元与功能块寄存器组相连,可节约数据存取时间,提高可编程控制器计时器的准确度及可编程控制器程序执行速度;该功能块单元输入信号有来自控制单元的控制信号;及来自指令译码器的信号,包括:操作码OP[3:0],置位优先的信号S1、复位优先信号R1、置位信号S、复位信号R、时钟信号CLK、加计数器上升沿触发信号CU、减计数器上升沿触发信号CD、装入加计数器LDU初始数使能信号、减计数器初始数使能信号LDD、加减计数器初始数使能信号LDUD、脉冲功能块使能信号INTP、接通延时功能块使能信号INTON、断开延时功能块使能信号INTOF、实时时钟功能块使能信号INRTC;有来自功能块寄存器组的信号,包括:计数器予置值PV[7:0]、计时器予置值PT[7:0]、实时时钟予置值PDT[7:0];其功能块输出信号为输出到功能块寄存器组的信号,信号包括:当前计数器值CV[7:0]、计时器结束时间ET[7:0]、实时时钟当前日期和时间CDT[7:0]。
(5)功能块寄存器组,该寄存器组分为四类,包括触发器功能块寄存器、边沿检测功能块寄存器、计数器功能块寄存器、计时器功能块寄存器;每类功能块可最多并行存储十六个同类功能块数据;该寄存器组可存储的数据包括:各功能块的输入信号与输出信号;该寄存器组可以以位或字节的方式存取数据;当该寄存器组有一功能块寄存器数据满时,可以请求外设功能块单元执行,并与数据存储器进行数据传输;其编址方式,如表10所示,共用11位对寄存器组进行编址,通过第10~9位寻址功能块类型, 第8~5位寻址第几个功能块单元,第4位用于对寄存器组数据存取方式编址,第3~0位寻址输入输出数据。
(6)数据存储器,其存储总容量为64KB,分为输入存储器、输出存储器、内部存储器及功能块存储器。该存储器通过十六位编址对这四种存储器寻址。输入、输出、内部存储器主要存储位数据,功能块存储器主要存储内部及外设功能块的输入输出数据,每类功能块数据可并行存储256个。下面是对输入、输出及内部存储器的编址方式:第15位用于区别输入、输出、内部存储器和功能块存储器,其值为零是则为输入、输出、内部存储器;第14~13位用于对输入、输出及内部存储器编址,输入存储器编码为00、输出存储器编码为01、内部存储器编码为10;第12~3位用于对各存储器字节寻址,第2~0位用于对存储器位寻址。对功能块存储器编址(表11),第15位,其值为1,表示对功能块存储器寻址;第14~13位用于对四类功能块的寻址,触发器编址为00、边沿检测编址为01、计数器编址为10、计时器编址为11;第12~5位主要对指定第几个功能块数据寻址;第4位主要表示对存储数据的寻址方式,如为位数据时,则对一个字节的位进行寻址;第3~0位表示要各输入输出数据的编址。
(7)寄存器组,该寄存器组分为输入寄存器、内部寄存器、状态寄存器、累加器堆栈、累加器堆栈指针寄存器、指令寄存器。将寄存器组分为三类进行编址,第一类为输入、内部寄存器;第二类为状态寄存器、累加器堆栈及累加器指针寄存器;第三类为指令寄存器。对第一类寄存器编址如下:第7~6位表示对三类寄存器的编址,第一类寄存器编址为00;第5位表示对输入、内部寄存器的编址,输入寄存器编址为0,内部寄存器编址为1;第4~3表示对字节寻址;第2~0表示对位寻址。对第二类寄存器编址如下:第7~6位,第二类寄存器编址为01;第5位表示对状态寄存器、累加器堆栈的编址,累加器堆栈编址为0,状态寄存器编址为1;第4~3表示对字节寻址;第2~0表示对位寻址。特别地规定该第二类寄存器编址中第4~3位编址为00的字节存放累加器堆栈指针寄存器数据,即为累加器堆栈指针寄存器,则累加器堆栈指针寄存器地址为01000000。对第三类寄存器编址如下:第7~6位,第三类寄存器编址为01;第5~0表示对字节寻址,即可寻址32个字节,又指令格式为32位,占4个字节,则指令寄存器可存储八条指令;
(8)位处理器(如图3所示),该位处理器特征是采用累加器堆栈的形式存储操作数,由于位处理器经常要用到前一次甚至前几次累加器堆栈中的操作数,采用符合位处理器执行特征的堆栈形式保存操作数,并通过累加器堆栈指针寄存器中的地址来区别当前操作数与前几次操作数。该位处理器处理位逻辑运算指令及可跳转位逻辑运算指令;采用累加器堆栈的形式存储位处理器所需操作数及其运算结果;其累加器堆栈栈顶值来自寄存器组、功能块寄存器组、I\O数据存储器及位处理器运算结果;当位处理 器执行位逻辑运算指令时,从累加器堆栈栈顶或寄存器组中取操作数后,进行位逻辑运算操作,将运算结果存储到累加器堆栈栈顶或寄存器组中。当位处理器执行可跳转位逻辑运算指令时,若该可跳转位逻辑运算指令为位累与运算指令、位累与非运算指令、位累或运算指令、位累或非运算指令,且满足跳转条件时,位处理器将跳转偏移量发送至指令计数器中,并执行相应的位逻辑运算,将运算结果保存在累加器堆栈栈顶。位处理器的运算结果,经跳转调用指令及存取指令处理单元执行存取指令后,分别存储在状态寄存器、数据存储器、寄存器组中的内部寄存器以及I\O数据存储器当中。
如图4所示,位处理器处理位逻辑运算指令及可跳转位逻辑运算指令包括以下步骤:
位处理器处理位逻辑运算指令及可跳转位逻辑运算指令;采用累加器堆栈的形式存储位处理器所需操作数及其运算结果;其累加器堆栈栈顶值来自寄存器组、功能块寄存器组、I\数据存储器及位处理器运算结果;
当位处理器执行位逻辑运算指令时,从累加器堆栈栈顶或寄存器组中取操作数后,进行位逻辑运算操作,将运算结果存储到累加器堆栈栈顶或寄存器组中;
执行完成后存储位处理器的运算结果;
当位处理器执行可跳转位逻辑运算指令时,按可跳转位逻辑运算指令的执行过程执行,执行完成后存储位处理器的运算结果;
如图5所示,跳转位逻辑运算指令的执行过程为:
如果是可跳转位逻辑指令,则指令译码器向位处理器输入操作码;
由位处理器器判断该可跳转位逻辑指令是否为位累与操作指令、位累与非操作指令、位累或操作指令、位累或非操作指令;
若为位累与操作指令,且累加器堆栈的栈顶值为0,则执行与操作,将与运算结果“0”存储在累加器堆栈的栈顶,并设置指令格式中jump condition跳转条件位为1,设置jump offset跳转偏移量值为可跳转位逻辑运算指令跳转结束符与该位累与操作指令的偏移量;若为位累与操作指令,但不满足累加器堆栈的栈顶值为0,则只执行与操作,将执行结果存储在累加器堆栈中,其跳转条件位为0,不执行跳转操作。
若为位累与非操作指令,且累加器堆栈的栈顶值为0,则执行与非操作,将与非运算结果“1”存储在累加器堆栈的栈顶,并设置指令格式中jumpcondition跳转条件位为1,设置jump offset跳转偏移量值为可跳转位逻辑运算指令跳转结束符到该位累与非操作指令的偏移量;若为位累与非操作指令,但不满足累加器堆栈的栈顶值为0,则只执行与非操作,将执行结果存储在累加器堆栈中,其跳转条件位为0,不执行跳转操作。
若为位累或操作指令,且累加器堆栈的栈顶值为1,则执行或操作,将或运算结果“1”存储在累加器堆栈的栈顶,并设置指令格式中jump condition 跳转条件位为1,设置jump offset跳转偏移量值为可跳转位逻辑运算跳转结束符指令或累加器堆栈中的操作数出栈并求或指令到该位累或操作指令的偏移量;若为位累与操作指令,但不满足累加器堆栈的栈顶值为1,则只执行或操作,将执行结果存储在累加器堆栈中,其跳转条件位为0,不执行跳转操作。
若为位累或非操作指令,且累加器堆栈的栈顶值为1,则执行或非操作,将或非运算结果“0”存储在累加器堆栈的栈顶,并设置指令格式中jumpcondition跳转条件位为1,设置jump offset跳转偏移量值为可编程控制器可跳转位逻辑运算跳转结束符到该位累或非操作指令的偏移量;若为位累与操作指令,但不满足累加器堆栈的栈顶值为1,则只执行或非操作,将执行结果存储在累加器堆栈中,其跳转条件位为0,不执行跳转操作。
如图7所示,本发明高性能可编程控制器专用指令集处理器体系结构的实现方法按照该可编程控制器指令集处理器的四级流水线方式,包括以下步骤:
取指阶段:依据指令计数器计算的指令地址,从指令存储器取指令至指令寄存器当中;
译码阶段:从指令寄存器取出指令送入指令译码器进行译码,通过指令中操作数地址,取出操作数;并依据指令中组码,将相应的操作码及操作数送至对应的处理单元中;
执行阶段:依据指令译码器发出的操作码及操作数,位处理器、功能块单元、跳转调用指令及存取指令处理单元给予相应处理;如执行的指令不是可编程控制器专用指令集处理器的指令时,则由控制单元向通用处理器发出中断请求,该可编程控制器专用指令集处理器可继续执行与通用处理器指令无依赖关系的指令,当通用处理器向可编程控制器专用指令集处理器发送中断请求时,可编程控制器专用指令集处理器将保存通用处理器的执行结果到状态寄存器中;另外存储器访问阶段与执行阶段合为一个流水线阶段,由跳转调用指令及存取指令处理单元执行存储器访问;
回写阶段:将可编程控制器专用指令集处理器的结果,依据存取指令类型写回累加器堆栈、内部寄存器、数据存储器内部寄存器或I\O存储器当中。
GP | OP | CRYN | condtion | Rm\CR | CR | Rs2\Rm |
组码 2位 (00) | 操作码 4位 | 1位 | 1位 | Address占1字节 | Address 1字节 | Address占1字节 |
31…30 | 29…26 | 25 | 24 | 23…16 | 15……8 | 7……0 |
表1
GP | OP | Jump condition | condition | Jump offset | CR |
组码 2位 (01) | 操作码 4位 | 1位 | 1位 | 16位 | Address占1字节 |
31…30 | 29…26 | 25 | 24 | 23………8 | 7……0 |
表2
表3
GP | OP | R1/CU | S1/CD | R/CLK | S/LD/IN | Rd1 | Rs1 |
组码 2位 (11) | 操作码 4位 | 复位优先/ 加计数器 输入的上 升沿触发 | 置位优先/ 减计数器 输入的上 升沿触发 | 时钟 | 装入加减 计数器初 始数使能 /计时器 使能 | CV\CDT\ET计 数器当前值 INT\当前的 日期和时间 DT | PV\PT\PDT\ 予置计数器、 计时器值INT |
31..30 | 29…26 | 25 | 24 | 23 | 22 | 21……11 | 10……0 |
表4
操作符 | 操作码编码 | 描述 | 举例 |
ANDBIT | 000000 | 位与操作 | ANDBIT CR,RS,Rm ANDBIT RS1,RS2,Rm/*将该指令结果保 存在累加器堆栈中*/ ANDBIT RS1,RS2,CR/*该指令为可跳转 位逻辑指令后的位逻辑运算指令,其计 算结果保存在累加器堆栈中*/ ANDBIT RS1,CR/*操作数来自累加器堆 栈,结果保存在累加器堆栈中*/ |
ANDNBIT | 000001 | 位与非操作 | ANDNBIT CR,RS,Rm ANDNBIT RS1,RS2,Rm ANDNBIT RS1,RS2,CR/*该指令为可跳转 位逻辑指令后的位逻辑运算指令,其计 算结果保存在累加器堆栈中*/ ANDNBIT RS1,CR |
ORBIT | 000010 | 位或操作 | ORBIT CR,RS,Rm ORBIT RS1,RS2,Rm ORBIT RS1,RS2,CR/*该指令为可跳转位 逻辑指令后的位逻辑运算指令,其计算 结果保存在累加器堆栈中*/ ORBIT RS1,CR/*操作数来自累加器堆 栈,结果保存在累加器堆栈中*/ |
ORNBIT | 000011 | 位或非操作 | ORNBIT CR,RS,Rm ORNBIT RS1,RS2,Rm ORNBIT RS1,RS2,CR/*该指令为可跳转 位逻辑指令后的位逻辑运算指令,其计 算结果保存在累加器堆栈中*/ ORNBIT RS1,CR |
XORBIT | 000100 | 异或操作 | XORBIT CR,RS,Rm XORBIT RS1,RS2,Rm XORBIT RS1,RS2,CR/*该指令为可跳转 位逻辑指令后的位逻辑运算指令,其计 算结果保存在累加器堆栈中*/ XORBIT RS1,CR/*操作数来自累加器堆 栈,结果保存在累加器堆栈中*/ |
XORNBIT | 000101 | 位异或非操作 | XORNBIT CR,RS,Rm XORNBIT RS1,RS2,Rm XORNBIT RS1,RS2,CR/*该指令为可跳转 位逻辑指令后的位逻辑运算指令,其计 算结果保存在累加器堆栈中*/ XORNBIT RS1,CR |
表5
操作符 | 操作码编码 | 描述 | 举例 |
ANDCRBIT | 010000 | 位累与操作 | ANDCRBIT |
ANDNCRBIT | 010001 | 位累与非操作 | ANDNCRBIT |
ORCRBIT | 010010 | 位累或操作 | ORCRBIT |
ORNCRBIT | 010011 | 位累或非操作 | ORNCRBIT |
CR | 010100 | ANDCRBIT等可跳转位 逻辑运算指令跳转结 束符 | CR |
PUSHOR | 010101 | 累加器堆栈栈顶操作 数出栈并求或 | PUSHOR |
表6
操作符 | 操作码编码 | 描述 | 举例 |
JMPBIT | 1000000 | 无条件跳转指令 | JMPBIT STATE/*无条件跳转到哪个状 态*/ |
JMPCBIT | 1000010 | 符合条件跳转指令 | JMPCBIT STATE/*符合某个条件则跳 转到哪个状态*/ |
JMPCNBIT | 1000100 | 不符合条件跳转指令 | JMPCNBIT STATE/*不符合某个条件则 跳转到哪个状态*/ |
CALBIT | 1000110 | 无条件功能块调用指令 | CALBIT Counter/*无条件调用计数器 功能块*/ |
CALCBIT | 1001000 | 符合条件功能块调用指令 | CALCBIT Counter/*符合条件则调用 计数器功能块*/ |
CALCNBIT | 1001010 | 不符合条件功能块调用指令 | CALCNBIT Counter/*不符合条件则调 用计数器功能块*/ |
RETBIT | 1001100 | 无条件从功能或功能块返回指 令 | RET |
RETCBIT | 1001110 | 符合条件功能或功能块返回指 令 | RETC |
RETCNBIT | 1010000 | 不符合条件功能或功能块返回 指令 | RETCN |
表7
操作符 | 操作码编码 | 描述 | 举例 |
LOADQBIT | 1000001 | 取功能块单元的布尔输出值到累加 器堆栈中 | LOADQBIT Q,CR |
STOREQEBIT | 1000011 | 将功能块单元的输出值存储到寄存 器组中; | STOREQBIT Q,[mem]/Rm |
LOADNQBIT | 1000101 | 取功能块单元的输出值后取反到累 加器堆栈中 | LOADNQBIT Q,CR |
STORENQBIT | 1000111 | 将功能块单元的输出值取反存储到 寄存器组中; | STORENQBIT Q,[mem]/Rm |
LOADMBIT | 1001001 | 从存储器单元取操作数到寄存器组 中 | LOADMBIT[mem],Rs1/CR/*从 存储器中获取操作数*/ |
STOREMBIT | 1001011 | 将寄存器数据直接存储到存储器单 元中 | STOREMBIT Rm/CR,[mem]/*数 据存储到存储器当中*/ |
LOADNMBIT | 1001101 | 从存储器单元取操作数取反后存储 到寄存器组中 | LOADNMBIT[mem],CR/*从存储 器中获取操作数*/ |
STORENMBIT | 1001111 | 将寄存器数据取反后存储到存储器 单元中 | STORENMBIT Rm/CR,[mem]/* 数据存储到存储器当中*/ |
LOADIOBIT | 1010001 | 从I\O数据存储器直接取数到寄存 器组中 | LOADIOBIT[I/O],CR/*取IO数 据到寄存器*/ |
STOREIOBIT | 1010011 | 将寄存器组数据直接送到I\O数据 存储器中 | STOREIOBIT Rm/CR,[I/O]/* 取寄存器数据到IO端口*/ |
LOADNIOBIT | 1010101 | 从I\O数据存储器取的数据取反后 存储到寄存器组中 | LOADNIOBIT[I/O],Rs1/*取IO 数据到寄存器*/ |
STORENIOBIT | 1010111 | 将寄存器组数据取反后送到从I\O 数据存储器中 | STORENIOBIT Rm/CR,[I/O]/* 取寄存器数据到IO端口*/ |
LOADRMBIT | 1011001 | 将寄存器组的内部寄存器的值压栈 到累加器堆栈中 | LOADRMBIT Rm,CR |
STORERMBIT | 1011011 | 将累加器堆栈中的值出栈到寄存器 组的内部寄存器中 | STORERMBIT CR,Rm |
LOADNRMBIT | 1011101 | 将寄存器组的内部寄存器的值取反 压栈到累加器堆栈中 | LOADNRMBIT Rm,CR |
STORENRMBIT | 1011111 | 将累加器堆栈中的值取反出栈到寄 存器组的内部寄存器中 | STORENRMBIT CR,Rm |
表8
操作符 | 操作码编码 | 描述 | 举例 |
FB SR | 110000 | 置位优先功能块指令 | FB SR function block name.S |
FB RS | 110001 | 复位优先功能块指令 | FB RS function block name.S |
FB R_TRIG | 110010 | 上升沿检测功能块指令 | FB R_TRTG function block name.clk |
FB F_TRIG | 110011 | 下降沿检测功能块指令 | FB F_TRIG function block name.clk |
FB CTU | 110100 | 加计数器功能块指令 | FB CTU function block name.PV |
FB CTD | 110101 | 减计数器功能块指令 | FB CTD function block name.PV |
FB CTUD | 110110 | 加减计数器功能块指令 | FB CTUD function block name.PV |
FB TP | 110111 | 脉冲功能块指令 | FB TP function block name.PT |
FB TON | 111000 | 接通延时功能块指令 | FB TON function block name.PT |
FB TOF | 111001 | 断开延时功能块指令 | FB TOF function block name.PT |
FB RTC | 111010 | 实时时钟功能块指令 | FB RTC function block name.PT |
表9
表10
表11
Claims (11)
1.一种高性能可编程控制器的处理器体系结构,其特征在于:包括PLC专用指令集处理器、通用处理器,其中PLC专用指令集处理器通过PLC专用集处理器与通用处理器的接口与通用处理器相连;
所述PLC专用指令集处理器具有以下结构:指令存储器、指令计数器、指令寄存器、指令译码器、控制单元、功能块单元、功能块寄存器组、数据存储器、寄存器组、位处理器、跳转调用指令及存取指令处理单元、I\O数据存储器、状态寄存器,其中:
指令存储器,存储通用处理器并行编译后的指令,在指令计数器的控制下,将指令发送至指令寄存器;
指令计数器,计算下一条指令地址,实现指令地址的自增,并在跳转调用指令及存取指令处理单元的控制下,按照跳转调用指令中指令地址偏移需求,改变指令地址;在位处理器的控制下,按照可跳转位逻辑运算指令指令地址偏移需求,改变指令地址;将自增后的指令地址、执行跳转调用指令后改变的指令地址及执行可跳转位逻辑运算指令后改变的指令地址,通过指令计数器中指令地址选择,将指令存储器中对应的指令输出至指令寄存器;
指令寄存器,接收指令计数器选择的指令存储器中的指令,输出该指令至指令译码器;
指令译码器,将从指令寄存器输入的指令进行译码后,将操作码输出至位处理器、跳转调用指令及存取指令处理单元、功能块单元,将操作数地址输出至寄存器组、功能块寄存器组、数据存储器及I\O存储器;
控制单元,向指令计数器、指令寄存器、指令译码器发送控制指令;接收指令译码器操作码中的组码,分别对位处理器、跳转调用指令及存取指令处理单元和功能块单元进行控制;并控制与通用处理器进行中断信号的接收或发送;
功能块单元,接收控制单元的控制信号和指令译码器的操作码,与功能块寄存器组进行数据的存取操作;
功能块寄存器组,存储来自功能块单元的执行结果,根据来自跳转调用指令及存取指令处理单元的控制信号及指令译码器对其的操作数地址的选择信号,存取数据存储器的数据,或取出功能块寄存器组的数据,并通过多路选择器送至寄存器组中的累加器堆栈中;
数据存储器,通过跳转调用指令及存取指令处理单元的控制及指令译码器对其操作数地址的选择,存取寄存器组、功能块寄存器组的数据;
寄存器组,通过跳转调用指令及存取指令处理单元的控制及指令译码器传来的操作数地址,选择寄存器组中的寄存器,将该寄存器中的操作数输出至位处理器进行处理;或存取数据存储器及I\O数据存储器中的数据;
位处理器,通过指令译码器的操作码,对来自寄存器组的操作数以及通过多路选择器选择的来自功能块寄存器组、数据存储器、I\O数据存储器并存储在寄存器组累加器堆栈中的数据进行相应处理,并将处理结果存储到寄存器组、状态寄存器、数据存储器或I\O数据存储器中;
跳转调用指令及存取指令处理单元,接收来自控制单元的控制信号,根据指令译码器传来的操作码,分别对指令计数器进行操作,对寄存器组、功能块寄存器组、数据存储器、I\O数据存储器进行存取操作控制;
I\O数据存储器,接收来自跳转调用指令及存取指令处理单元的控制信号以及指令译码器的操作数地址选择信号,与寄存器组、功能块寄存器组以及I\O数据存储器进行数据存取;
状态寄存器,保存位处理器执行后的状态结果,并通过中断方式,将状态信号发送至通用处理器。
2.按权利要求1所述的高性能可编程控制器的处理器体系结构,其特征在于:功能块单元中每类功能块并行扩展1~16个同类功能块单元,每个功能块具有自己的功能块寄存器组。
3.按权利要求1所述的高性能可编程控制器的处理器体系结构,其特征在于:所述指令译码器译码使用的指令格式为位逻辑运算指令格式、可跳转位逻辑运算指令格式、跳转调用及存取指令格式以及功能块指令格式,其中:
位逻辑运算指令格式,第31~30位为组码;第29~26位为操作码;第25位用于判断当前位逻辑运算指令的操作数是否存储在累加器堆栈当中;第24位为条件位,用于对通用处理器运算的条件使能,其值决定于存储在状态寄存器中的状态结果;第23~16位,用于存储保存位逻辑运算结果的寄存器地址,其寄存器地址编码位数为8位;第15~8位,用于存储保存位逻辑运算操作数之一的寄存器地址;第7~0位,用于存储保存位逻辑运算另一操作数的寄存器地址。
可跳转位逻辑运算指令格式,第31~30位为组码;第29~26位为操作码;第25位决定是否跳转的条件位;第24位为条件位,用于对通用处理器运算的条件使能,其值决定于状态寄存器的状态结果;第23~8位,为跳转偏移位,其跳转偏移量为该可跳转位逻辑运算指令跳转到可跳转位逻辑运算指令跳转结束符或累加器堆栈中的操作数出栈并求或指令的偏移量;第7~0位,为存储累加器堆栈指针寄存器保存的当前累加器堆栈值的地址;
跳转调用及存取指令格式,第31~30位为组码;第29~26位为操作码;第25位,用于区分跳转调用指令及存取指令,当I=0时,代表跳转调用指令,当I=1时,代表存取指令;第24位,为条件位,用于基于条件位跳转偏移的跳转调用指令,其条件位的值来自于累加器堆栈当前值或功能块单元输出值或来自通用处理器的运算结果,如通用处理器执行比较指令后的比较结果;第23~16位,表示累加器堆栈栈顶地址或寄存器地址;第15~0位,表示跳转调用偏移位或操作数存取地址;
功能块指令格式,第31~30位为组码;第29~26位为操作码;第25位,表示复位优先位或加计数器输入的上升沿触发位;第24位,表示置位优先位或减计数器输入的上升沿触发位;第23位表示复位或时钟电平;第22位,表示装入加减计数器初始值使能位或计时器使能位;第21~11位,表示计数器当前值或计时器当前值;第10~0位,表示计数器予置值或计时器予置值。
4.按权利要求3所述的高性能可编程控制器的处理器体系结构,其特征在于:所述指令译码器译码使用的指令格式中组码及操作码表示的指令集为位逻辑运算指令集、可跳转位逻辑运算指令集、跳转调用指令集、存取指令集、功能块指令集,其中:
位逻辑运算指令集包括:位与操作指令、位与非操作指令、位或操作指令、位异或操作指令以及位异或非操作指令;
可跳转位逻辑运算指令集包括:位累与操作指令、位累与非操作指令、位累或操作指令、位累或非操作指令、可跳转位逻辑运算指令跳转结束符、累加器堆栈栈顶操作数出栈并求或指令;
跳转调用指令集包括:无条件跳转指令、符合条件跳转指令、不符合条件跳转指令、无条件功能块调用指令、符合条件功能块调用指令、不符合条件功能块调用指令、无条件从功能或功能块返回指令、符合条件功能或功能块返回指令、不符合条件功能或功能块返回指令。
存取指令集包括:
LOADQBIT:取功能块单元的布尔输出值到累加器堆栈中;
STOREQBIT:将功能块单元的布尔输出值存储到功能块寄存器组中;
LOADNQBIT:取功能块单元的输出值后取反输出到累加器堆栈中;
STORENQBIT:将功能块单元的输出值取反存储到功能块寄存器组中;
LOADMBIT:从存储器单元取操作数到寄存器组或功能块寄存器组中;
STOREMBIT:将寄存器组或功能块寄存器组的数据直接存储到存储器单元中;
LOADNMBIT:从存储器单元取操作数取反后存储到寄存器组或功能块寄存器组中;
STORENMBIT:将寄存器组或功能块寄存器组的数据取反后存储到存储器单元中;
LOADIOBIT:从I\O数据存储器直接取数到寄存器组中;
STOREIOBIT:将寄存器组数据直接送到I\O数据存储器中;
LOADNIOBIT:从I\O数据存储器取的数据取反后存储到寄存器组中;
STORENIOBIT:将寄存器组数据取反后送到从I\O数据存储器中;
LOADRMBIT:将寄存器组的内部寄存器的值压栈到累加器堆栈中;
STORERMBIT:将累加器堆栈中的值出栈到寄存器组的内部寄存器中;
LOADNRMBIT:将寄存器组的内部寄存器的值取反压栈到累加器堆栈中;
STORENRMBIT:将累加器堆栈中的值取反出栈到寄存器组的内部寄存器中;
功能块指令集包括:置位优先功能块指令、复位优先功能块指令、上升沿检测功能块指令、下降沿检测功能块指令、加计数器功能块指令、减计数器功能块指令、加减计数器功能块指令、脉冲功能块指令、接通延时功能块指令、断开延时功能块指令、实时时钟功能块指令。
5.一种高性能可编程控制器专用指令集处理器体系结构的实现方法,其特征在于:按照该可编程控制器专用指令集处理器采用四级流水线,包括以下步骤:
取指阶段:依据指令计数器计算的指令地址,从指令存储器取指令至指令寄存器当中;
译码阶段:从指令寄存器取出指令送入指令译码器进行译码,通过指令中操作数地址,取出操作数;并依据指令中组码,将相应的操作码及操作数送至对应的处理单元中;
执行阶段:依据指令译码器发出的操作码及操作数,位处理器、功能块单元、跳转调用指令及存取指令处理单元给予相应处理;如执行的指令不是可编程控制器专用指令集处理器的指令时,则由控制单元向通用处理器发出中断请求,该可编程控制器专用指令集处理器可继续执行与通用处理器指令无依赖关系的指令,当通用处理器向可编程控制器专用指令集处理器发送中断请求时,可编程控制器专用指令集处理器将保存通用处理器的执行结果到状态寄存器中;将存储器访问阶段与执行阶段,合为执行阶段;存储器访问由跳转调用指令及存取指令处理单元执行;
回写阶段:将可编程控制器专用指令集处理器的结果,依据存取指令类型写回累加器堆栈、内部寄存器、数据存储器内部寄存器或I\O存储器当中。
6.按权利要求5所述的高性能可编程控制器专用指令集处理器体系结构的实现方法,其特征在于:所述位处理器处理位逻辑运算指令及可跳转位逻辑运算指令:
当位处理器执行位逻辑运算指令时,从累加器堆栈栈顶和寄存器组中取操作数后,进行位逻辑运算操作,将运算结果存储到累加器堆栈栈顶或寄存器组中;
执行完成后存储位处理器的运算结果。
7.按权利要求6所述的高性能可编程控制器专用指令集处理器体系结构的实现方法,其特征在于:
当位处理器执行可跳转位逻辑运算指令时,按可跳转位逻辑运算指令的执行过程执行,执行完成后存储位处理器的运算结果;
所述可跳转位逻辑运算指令的执行过程为:
由位处理器判断该可跳转位逻辑指令为位累与操作指令、位累与非操作指令、位累或操作指令还是位累或非操作指令;
若为位累与操作指令或位累与非操作指令,且累加器堆栈的栈顶值为0,则执行与操作或与非操作,将执行结果存储在累加器堆栈的栈顶,并设置指令格式中跳转条件位为1,并设置跳转偏移量值为可跳转位逻辑运算指令跳转结束符与该可跳转位逻辑运算指令的偏移量,执行跳转;一次执行过程结束。
8.按权利要求7所述的高性能可编程控制器专用指令集处理器体系结构的实现方法,其特征在于:
如果不满足“位累与操作指令或位累与非操作指令,且累加器堆栈的栈顶值为0”条件,则不执行跳转,只执行位累与操作或位累与非操作,并设置指令格式中跳转条件位为0。
9.按权利要求7所述的高性能可编程控制器专用指令集处理器体系结构的实现方法,其特征在于:若为位累或操作指令或位累或非操作指令,且累加器堆栈的栈顶值为1,则执行位累或操作或位累或非操作,将执行结果存储存储在累加器堆栈的栈顶,并设置指令格式中跳转条件位为1,设置跳转偏移量值为可跳转位逻辑运算跳转结束符指令或累加器堆栈中的操作数出栈并求或指令到该位累或操作指令的偏移量;执行跳转;一次执行过程结束。
10.按权利要求9所述的高性能可编程控制器专用指令集处理器体系结构的实现方法,其特征在于:
如果不满足“位累或操作指令或位累或非操作指令,且累加器堆栈的栈顶值为“1”条件,则不执行跳转,只执行位累或操作或位累或非操作,并设置指令格式中跳转条件位为0。
11.按权利要求7所述的高性能可编程控制器专用指令集处理器体系结构的实现方法,其特征在于:
所述可跳转位逻辑运算指令中的位累与操作指令、位累与非操作指令、位累或操作指令、位累或非操作指令,其执行过程与累加器堆栈的值相关,为区别于位逻辑运算指令中的与操作指令、与非操作指令、或操作指令、或非操作指令而命名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102100398A CN102298352B (zh) | 2010-06-25 | 2010-06-25 | 高性能可编程控制器专用处理器体系结构及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102100398A CN102298352B (zh) | 2010-06-25 | 2010-06-25 | 高性能可编程控制器专用处理器体系结构及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102298352A true CN102298352A (zh) | 2011-12-28 |
CN102298352B CN102298352B (zh) | 2012-11-28 |
Family
ID=45358823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102100398A Active CN102298352B (zh) | 2010-06-25 | 2010-06-25 | 高性能可编程控制器专用处理器体系结构及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102298352B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102903001A (zh) * | 2012-09-29 | 2013-01-30 | 上海复旦微电子集团股份有限公司 | 指令的处理方法和智能卡 |
CN102930322A (zh) * | 2012-09-29 | 2013-02-13 | 上海复旦微电子集团股份有限公司 | 智能卡和指令的处理方法 |
CN102968108A (zh) * | 2012-11-28 | 2013-03-13 | 中国科学院长春光学精密机械与物理研究所 | 基于紧凑型外设部件互联总线的伺服控制*** |
CN103207771A (zh) * | 2013-03-19 | 2013-07-17 | 浙江中控研究院有限公司 | 一种plc程序执行器ip核 |
CN105404496A (zh) * | 2015-11-06 | 2016-03-16 | 深圳国微技术有限公司 | 数据传输的控制方法和控制装置及具有其的微处理器 |
CN106990747A (zh) * | 2017-02-28 | 2017-07-28 | 深圳市麦格米特控制技术有限公司 | 一种plc指令执行器 |
CN107003840A (zh) * | 2014-12-23 | 2017-08-01 | 英特尔公司 | 用于执行检查以优化指令流的装置和方法 |
CN107844321A (zh) * | 2016-09-21 | 2018-03-27 | 上海芯旺微电子技术有限公司 | 一种mcu处理*** |
CN113946539A (zh) * | 2021-10-09 | 2022-01-18 | 深圳市创成微电子有限公司 | 一种dsp处理器及其循环跳转指令的处理方法 |
WO2022127441A1 (zh) * | 2020-12-16 | 2022-06-23 | 广东赛昉科技有限公司 | 一种并行提取指令的方法与可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731346A (zh) * | 2005-08-15 | 2006-02-08 | 中国航天时代电子公司第七七一研究所 | 微处理器的整数单元中五级容错流水结构的实现方法 |
CN201716564U (zh) * | 2010-06-25 | 2011-01-19 | 中国科学院沈阳自动化研究所 | 高性能可编程控制器专用处理器体系结构 |
-
2010
- 2010-06-25 CN CN2010102100398A patent/CN102298352B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731346A (zh) * | 2005-08-15 | 2006-02-08 | 中国航天时代电子公司第七七一研究所 | 微处理器的整数单元中五级容错流水结构的实现方法 |
CN201716564U (zh) * | 2010-06-25 | 2011-01-19 | 中国科学院沈阳自动化研究所 | 高性能可编程控制器专用处理器体系结构 |
Non-Patent Citations (3)
Title |
---|
KYEONGHOON KOO: "Architectual design of a RISC processor for programmable logic controllers", 《JOURNAL OF SYSTEMS ARCHITECTURE》 * |
XU MEIHUA, ET AL: "IP core design of PLC microprocessor with boolean module", 《HIGH DENSITY MICROSYSTEM DESIGN》 * |
冉峰: "IP复用的FSPLC微处理器SOC设计", 《微电子学与计算机》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102903001B (zh) * | 2012-09-29 | 2015-09-30 | 上海复旦微电子集团股份有限公司 | 指令的处理方法和智能卡 |
CN102930322A (zh) * | 2012-09-29 | 2013-02-13 | 上海复旦微电子集团股份有限公司 | 智能卡和指令的处理方法 |
CN102903001A (zh) * | 2012-09-29 | 2013-01-30 | 上海复旦微电子集团股份有限公司 | 指令的处理方法和智能卡 |
CN102930322B (zh) * | 2012-09-29 | 2015-08-26 | 上海复旦微电子集团股份有限公司 | 智能卡和指令的处理方法 |
CN102968108A (zh) * | 2012-11-28 | 2013-03-13 | 中国科学院长春光学精密机械与物理研究所 | 基于紧凑型外设部件互联总线的伺服控制*** |
CN103207771B (zh) * | 2013-03-19 | 2015-10-07 | 浙江中控研究院有限公司 | 一种plc程序执行器ip核 |
CN103207771A (zh) * | 2013-03-19 | 2013-07-17 | 浙江中控研究院有限公司 | 一种plc程序执行器ip核 |
CN107003840A (zh) * | 2014-12-23 | 2017-08-01 | 英特尔公司 | 用于执行检查以优化指令流的装置和方法 |
CN105404496A (zh) * | 2015-11-06 | 2016-03-16 | 深圳国微技术有限公司 | 数据传输的控制方法和控制装置及具有其的微处理器 |
CN105404496B (zh) * | 2015-11-06 | 2018-11-16 | 深圳国微技术有限公司 | 数据传输的控制方法和控制装置及具有其的微处理器 |
CN107844321A (zh) * | 2016-09-21 | 2018-03-27 | 上海芯旺微电子技术有限公司 | 一种mcu处理*** |
CN106990747A (zh) * | 2017-02-28 | 2017-07-28 | 深圳市麦格米特控制技术有限公司 | 一种plc指令执行器 |
WO2022127441A1 (zh) * | 2020-12-16 | 2022-06-23 | 广东赛昉科技有限公司 | 一种并行提取指令的方法与可读存储介质 |
CN113946539A (zh) * | 2021-10-09 | 2022-01-18 | 深圳市创成微电子有限公司 | 一种dsp处理器及其循环跳转指令的处理方法 |
CN113946539B (zh) * | 2021-10-09 | 2024-02-13 | 深圳市创成微电子有限公司 | 一种dsp处理器及其循环跳转指令的处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102298352B (zh) | 2012-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102298352B (zh) | 高性能可编程控制器专用处理器体系结构及其实现方法 | |
CN201716564U (zh) | 高性能可编程控制器专用处理器体系结构 | |
EP3602277B1 (en) | Systems, methods, and apparatuses for dot production operations | |
CN100545804C (zh) | 一种基于cisc结构的微控制器及其指令集的实现方法 | |
CN117349584A (zh) | 实行16位浮点矩阵点积指令的***和方法 | |
CN1327340C (zh) | 处理器和编译器 | |
CN110879724A (zh) | 用于深度学习和其它算法的fp16-s7e8混合精度 | |
US7346881B2 (en) | Method and apparatus for adding advanced instructions in an extensible processor architecture | |
CN101438235B (zh) | 将硬件结束循环信息编码到指令上 | |
CN101116053A (zh) | 适用于高效数字信号处理的数据处理器及其方法 | |
TWI455024B (zh) | 唯一封裝資料元件識別處理器,方法,系統,及指令 | |
EP3757769A1 (en) | Systems and methods to skip inconsequential matrix operations | |
CN102184092A (zh) | 基于流水线结构的专用指令集处理器 | |
CN110321159A (zh) | 用于实现链式区块操作的***和方法 | |
WO2012151331A1 (en) | Methods and apparatus for constant extension in a processor | |
CN104395876A (zh) | 没有算术和逻辑单元的计算机处理器和*** | |
CN110909882A (zh) | 用于执行水平铺块操作的***和方法 | |
CN102141903B (zh) | 用于16/32位混合指令的对称编码装置与译码装置 | |
CN116860334A (zh) | 用于计算两个区块操作数中的半字节的数量积的***和方法 | |
CN100444107C (zh) | 优化的处理器和指令对准 | |
CN101133390A (zh) | 单循环低功率中央处理单元架构 | |
CN108733412A (zh) | 一种运算装置和方法 | |
CN108351780A (zh) | 邻接数据元素成对交换处理器、方法、***和指令 | |
CN111752533A (zh) | 用于矩阵运算的加速器***和方法 | |
CN101216755B (zh) | Risc处理器及其浮点寄存器的非对齐访存方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |