CN103699730A - 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法 - Google Patents
一种基于Petri网的组合逻辑FPGA系统可达图的生成方法 Download PDFInfo
- Publication number
- CN103699730A CN103699730A CN201310697453.XA CN201310697453A CN103699730A CN 103699730 A CN103699730 A CN 103699730A CN 201310697453 A CN201310697453 A CN 201310697453A CN 103699730 A CN103699730 A CN 103699730A
- Authority
- CN
- China
- Prior art keywords
- state
- transition
- gate circuit
- input
- enable
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000007704 transition Effects 0.000 claims abstract description 223
- 238000004422 calculation algorithm Methods 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 3
- 239000007787 solid Substances 0.000 claims description 3
- 230000006870 function Effects 0.000 abstract description 12
- 238000011160 research Methods 0.000 abstract description 2
- 238000012795 verification Methods 0.000 abstract description 2
- 230000008450 motivation Effects 0.000 abstract 1
- 239000007788 liquid Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 239000002994 raw material Substances 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000010304 firing Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000003317 industrial substance Substances 0.000 description 2
- 238000003756 stirring Methods 0.000 description 2
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Logic Circuits (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明一种基于Petri网的组合逻辑FPGA系统可达图的生成方法,在组合逻辑FPGA系统的Petri网建模方法的基础上,以电路逻辑功能为考虑对象,并以电路系统在一个稳定输入状态下所对应的稳定的门电路逻辑运算输出为研究条件,通过重新定义Petri网变迁激发规则,生成组合逻辑FPGA系统可达图,从该组合逻辑FPGA系统可达图中,FPGA系统的状态空间被清晰完整地呈现出来,因此,可以通过遍历搜索来检测系统是否存在违背控制目标的状态,这是验证VHDL程序逻辑错误最直接有力的方法,为VHDL程序形式化验证提供理论基础。
Description
技术领域
本发明涉及一种基于Petri网的组合逻辑FPGA系统可达图的生成方法。
背景技术
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半制定电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能。
由于FPGA内部集成锁项环,外部时钟倍频,核心频率可以到几百兆,所以运行速度很快;管脚多,有丰富的I/O资源,易实现大规模系统;其内部不同的逻辑可以并行执行,可以同时处理不同任务,所以工作效率较高;FPGA灵活性很强,有大量软核,可以方便进行二次修改;没有指令周期,时序控制能力强。正因为FPGA具有这些优势,所以被广泛应用于通信、军事、医疗、汽车电子、工业控制、消费产品等重要领域。
现在流行的FPGA设计方式是以VHDL或者Verilog语言作为硬件输入描述,再通过综合器综合使硬件描述语言映射到逻辑电路上,然后再采用FPGA产商提供的工具进行布线布局,将综合产生的逻辑电路快速烧录至FPGA上。这样的设计流程,综合以及后面的布线布局工作都是基于硬件描述语言,所以硬件语言描述的好坏直接影响了电路功能。但随着系统设计规模日渐复杂,系统状态数也随之增大,使得程序设计和调试的工作量变得更加繁琐和巨大,FPGA面临着高计算复杂性。目前的编程软件只能实现针对程序语法、语义上的测试,并不能发现整个程序中逻辑性质上的错误(如死锁、冲突),不能验证每个状态(状态数呈指数级增长),也就无法保证程序的准确性和可靠性。因此,在FPGA复杂系统设计过程中,保证硬件描述语言程序不存在逻辑错误,提高其可靠性,最大程度杜绝安全隐患,是开发人员不容忽视的一个重要问题。
为了解决上述问题,需要开发FPGA系统程序的软件验证技术,利用计算机仿真和验证程序的逻辑功能,即可降低程序开发成本,也可以保证程序的可靠性。在专利号201310010846.9《一种将FPGA硬件描述语言VHDL转化为普通Petri网的方法》罗继亮,叶丹丹提出了组合逻辑FPGA系统的Petri网建模方法,该方法实现了描述组合逻辑FPGA系统的VHDL程序与普通Petri网之间的自动转换。
Petri网是由德国科学家Carl.Adam.Petri于1962年在其博士论文《用自动机通信》中首次提出的。Petri网以图形和数学为基础,是一种研究系统性质和行为的形式化语言。Petri网适用于异步、并发系统的分析,具有很强的模拟能力,又有严谨的数学表达式,具有直观、易懂等特性。
从组合逻辑FPGA电路的Petri网建模算法上可以看出,FPGA系统的每一个状态都能对应于Petri网系统的一个标识,Petri网的动态行为包含了FPGA系统的行为,刻画组合逻辑FPGA系统工作过程中各个变量之间的逻辑关系和输出变量的变化过程。因此,利用Petri网的可达图分析法可以很好地分析和模拟程序的运行。但是,Petri网描述的是一个比FPGA系统更复杂的并发系统,理论上只要变迁满足使能条件就能被激发,因此它包含了更多的信息,这样就造成了状态空间爆炸的问题。为了避免这样的问题,我们基于所要研究的内容,定义了新的变迁激发规则来建立一个可以等价描述组合逻辑FPGA系统运行的可达图。
发明内容
本发明的目的在于在组合逻辑FPGA系统转换为普通Petri网的基础上,以组合逻辑电路输入量和门级输出之间的逻辑关系,即电路的逻辑功能为考虑对象,而电路内部的门延迟和线延长不作考虑,并且以电路在一个稳定输入量下所对应的稳定的门电路输出为研究条件,通过定义新的变迁激发规则,提出一种基于Petri网的组合逻辑FPGA系统可达图的生成方法,为VHDL程序的形式化验证建立理论基础,使得利用FPGA系统状态空间图来分析程序是否存在逻辑错误成为可能。
一种基于Petri网的组合逻辑FPGA系统可达图的生成方法,其组合逻辑FPGA系统是在一个稳定输入量下所对应的稳定的门电路输出,并且在门电路逻辑运算阶段,没有新的输入量进来;
假设Petri网(N,m0)是一个组合逻辑FPGA系统的Petri网模型,其中N=(P,T,F),P表示库所的有限集合,T表示变迁的有限集合,表示连接库所和变迁有向弧的集合,m0表示Petri网的初始标识,另外T=Tin∪Tout,Tin表示输入量变迁集合,Tout表示门电路输出变迁集合,Te,in是可使能的输入量变迁集合,Te,out是可使能的门电路输出变迁集合,并且 一个输入量变迁的激发表示其对应的输入变量状态变化,一个门电路输出变迁的激发表示其对应的门电路逻辑输出运算;
在所有可达电路状态R(m0)中,如果一个状态是由激发输入量变迁演变得到的,那么该状态称为该Petri网模型的电路输入状态;如果一个状态是由激发门电路变迁演变得到的,那么该状态称为该Petri网模型的门级输出状态;
组合逻辑FPGA系统可达图由一个三元组GFPGA=<M,E,W>,M=Min∪Mout,E=Ein∪Eout描述,集合M中的每个节点对应于系统状态空间的一个状态,其中Min和Mout分别表示输入状态集合和门电路逻辑运算输出状态集合,输入状态节点为实线圈,输出状态节点为虚线圈,E是一个节点指向另一个节点的有向边的集合,算法中<m,m'out>表示从状态m指向m'out的一条有向边,Ein和Eout分别表示标记为输入量变迁和门电路输出变迁的边的集合,Ein中的边为单箭头实线,Eout中的边为单箭头虚线,集合W中的元素是E到T的一个映射,即每条有向边上都有变迁标记,算法中W(<m,m'out>)=tout表示在状态m下激发变迁tout得到m'out,Mnew=Min∪Mout是未计算的系统状态集合,Mold=Min∪Mout是已计算获得的系统状态集合,当未计算的系统状态集合Mnew中某个状态的可达状态都已计算获得,则该状态便从未计算的系统状态集合Mnew中被剔除并添加到已计算获得的系统状态集合Mold中;当未计算的系统状态集合Mnew为空时,算法结束;由激发输入量变迁而获得的输入状态都放入集合Min中,激发门电路输出变迁而获得的门电路输出状态都放入集合Mout中,具体包括如下步骤:
步骤1、输入系统的Petri网模型,由于起始时不存在输入状态和门电路输出状态,即输入状态集合和门电路输出状态集合也不存在状态之间的有向边以及有向边上的变迁标记,即状态之间的有向边集合和有向边上的变迁集合
步骤2、将初始状态m0标记为“new”,并将{m0}→Mnew;
GFPGA=<M,E,W>,M=Min∪Mout,E=Ein∪Eout;
步骤4、从未计算的系统状态集合Mnew中任取一个标记为“new”的状态m;
步骤4.1如果状态m与可达图中已有的其他状态相同,则将其标记为“old”,已计算获得的系统状态集合Mold=Mold∪{m},然后转向步骤4;
步骤4.2如果在状态m下,没有可激发的输入变迁和门电路输出变迁,则将状态m标记为“dead end”,然后转向步骤4;
步骤4.3如果在状态m下存在使能变迁,此时会有两种情况:一种是既有可使能的输入变迁又有可使能的门电路输出变迁,则跳转到步骤5;另一种是只存在可使能的输入变迁,则跳转到步骤6;
步骤5.1从可使能的门电路输出变迁集合Te,out中任取一个门电路输出变迁tout,激发该变迁,生成门电路输出状态m'out;
步骤5.2将{m'out}→Mout,如果门电路输出状态m'out与可达图中已有的状态相同,则已计算获得的系统状态Mold=Mold∪{m'out};否则从状态m到门电路输出状态m'out之间画一条有向边虚线,则状态之间的有向边集合为Eout=Eout+{<m,m'out>};并在该虚线上标记门电路输出变迁tout,则有向边上的变迁集合为{W(<m,m'out>)=tout}→W,说明在状态m下通过激发门电路输出变迁tout会生成输出状态m'out;
步骤5.3因为从可使能的门电路输出变迁集合Te,out中取走了一个使能变迁tout,所以Te,out=Te,out-{tout},再判断可使能的门电路输出变迁集合Te,out是否为空集,如果即仍有可激发的输出变迁,那么返回步骤5.1;如果可使能的门电路输出变迁集合即没有可激发的输出变迁,则继续以下操作;
步骤5.4因为标记为“new”的状态m是从状态集合Mnew中取出的,所以未计算的系统状态集合Mnew=Mnew-{m},并返回步骤3;
步骤6.1从可使能的输入变迁集合Te,in中任取一个输入量变迁tin,激发该变迁,生成门电路输入状态m'in;
步骤6.2将{m'in}→Min,如果m'in与可达图中已有的状态相同,则已计算获得的系统状态集合Mold=Mold∪{m'in};否则从状态m到m'in之间画一条有向边实线,则状态之间的有向边集合为Ein=Ein+{<m,m'in>};并在该实线上标记输入量变迁tin,则有向边上的变迁集合为{W(<m,m'in>)=tin}→W,说明在状态m下通过激发输入量变迁tin会生成输入状态m'in;
步骤6.2.1判断输入状态m'in下是否存在可使能的输出变迁,如果m'in下存在可使能的输出变迁,则跳转到步骤6.2.2,否则跳转到步骤6.2.5;
步骤6.2.3将{m''out}→Mout,如果m''out与可达图中已有的状态相同,则已计算获得的系统状态集合Mold=Mold∪{m''out};否则从状态m'in到m''out之间画一条有向边虚线,则状态之间的有向边集合为Eout=Eout+{<m'in,m''out>};并在该虚线上标记门电路输出变迁tout,则有向边上的变迁集合为{W(<m'in,m''out>)=tout}→W,说明在门电路输入状态m'in下通过激发门电路输出变迁tout会生成输出状态m''out;
步骤6.2.4可使能的门电路输出变迁集合Te,out=Te,out-{tout},再判断门电路输入状态m'in下的可使能的门电路输出变迁集合Te,out是否为空集,如果可使能的门电路输出变迁集合即仍有可激发的输出变迁,那么返回步骤6.2.2;如果可使能的门电路输出变迁集合即没有可激发的输出变迁,则继续以下操作;
步骤6.2.5因为在状态m下从可使能的输入量变迁集合Te,in中取走了一个使能输入量变迁tin,所以Te,in=Te,in-{tin},再判断可使能的输入量变迁集合Te,in是否为空集,如果可使能的输入量变迁集合即仍有可激发的输入变迁,那么返回步骤6.1;如果可使能的输入量变迁集合即没有可激发的输入变迁,则继续以下操作;
步骤6.3未计算的系统状态集合Mnew=Mnew-{m},并返回步骤3。
本发明在组合逻辑FPGA系统的Petri网建模方法的基础上,以电路逻辑功能为考虑对象,并以电路系统在一个稳定输入状态下所对应的稳定的门电路逻辑运算输出为研究条件,通过重新定义Petri网变迁激发规则,提出了一种基于Petri网的组合逻辑FPGA系统可达图的生成方法,从组合逻辑FPGA系统可达图中,系统的状态空间被清晰完整地呈现出来,因此,可以通过遍历搜索来检测系统是否存在违背控制目标的状态,这是验证VHDL程序逻辑错误最直接有力的方法,为VHDL程序形式化验证提供理论基础。
附图说明
图1为实施例某化工原料生产流程示意图;
图2为实施例的组合逻辑FPGA系统的Petri网模型;
图3为实施例的组合逻辑FPGA系统状态空间图。
以下结合附图和具体实施例对本发明作进一步详述。
具体实施方式
本发明选择VHDL中7种基本逻辑操作符构成的组合逻辑电路为研究对象,在组合逻辑FPGA系统的Petri网建模方法的理论成果上,基于形式化语言--Petri网,进一步研究组合逻辑FPGA系统状态空间的计算方法。首先,需要找出传统可达图与组合逻辑FPGA系统之间的差异。从流水线设计的组合逻辑FPGA电路功能上看,K级流水线就是从组合逻辑的输入到输出恰好有K个寄存器组,上一级的输出是下一级的输入而又无反馈的电路,当有输入量进来时,电路就进入逻辑运算阶段。在运算期间,输入端新的输入量也会输入寄存器组,分级向下进行逻辑运算,但最终稳定的输出量会以一定的时间间隔运算出来。这样的运算原理类似于Petri网的动态行为,只要使能的变迁都可以被激发,即有输入量的变化,内部寄存器组就会分级运算。这将导致可达图的状态量比我们要研究的FPGA系统多很多,所以传统可达图中的某些状态是不必计算的。因为FPGA运行速度极快,本发明只涉及组合逻辑电路输入量与门级输出之间的逻辑功能关系,不考虑门延迟和线延迟以及电路内部的运算过程,这里本发明规定了组合逻辑FPGA系统是在一个稳定输入量下所对应的稳定的门电路输出,并且在门电路逻辑运算阶段,没有新的输入量进来为研究条件。
本发明一种基于Petri网的组合逻辑FPGA系统可达图的生成方法,其中组合逻辑FPGA系统是在一个稳定输入量下所对应的稳定的门电路输出,并且在门电路逻辑运算阶段,没有新的输入量进来;
假设Petri网(N,m0)是一个组合逻辑FPGA系统的Petri网模型,其中N=(P,T,F),P表示库所的有限集合,T表示变迁的有限集合,表示连接库所和变迁有向弧的集合,m0表示Petri网的初始标识,另外T=Tin∪Tout,Tin表示输入量变迁集合,Tout表示门电路输出变迁集合,Te,in是可使能的输入量变迁集合,Te,out是可使能的门电路输出变迁集合,并且 一个输入量变迁的激发表示其对应的输入变量状态变化,一个门电路输出变迁的激发表示其对应的门电路逻辑输出运算;
在所有可达电路状态R(m0)中,如果一个状态是由激发输入量变迁演变得到的,那么该状态称为该Petri网模型的电路输入状态;如果一个状态是由激发门电路变迁演变得到的,那么该状态称为该Petri网模型的门级输出状态;
组合逻辑FPGA系统可达图由一个三元组GFPGA=<M,E,W>,M=Min∪Mout,E=Ein∪Eout描述,集合M中的每个节点对应于系统状态空间的一个状态,其中Min和Mout分别表示输入状态集合和门电路逻辑运算输出状态集合,输入状态节点为实线圈,输出状态节点为虚线圈,E是一个节点指向另一个节点的有向边的集合,算法中<m,m'out>表示从状态m指向m'out的一条有向边,Ein和Eout分别表示标记为输入量变迁和门电路输出变迁的边的集合,Ein中的边为单箭头实线,Eout中的边为单箭头虚线,集合W中的元素是E到T的一个映射,即每条有向边上都有变迁标记,算法中W(<m,m'out>)=tout表示在状态m下激发变迁tout得到m'out,Mnew=Min∪Mout是未计算的系统状态集合,Mold=Min∪Mout是已计算获得的系统状态集合,当未计算的系统状态集合Mnew中某个状态的可达状态都已计算获得,则该状态便从未计算的系统状态集合Mnew中被剔除并添加到已计算获得的系统状态集合Mold中;当未计算的系统状态集合Mnew为空时,算法结束;由激发输入量变迁而获得的输入状态都放入集合Min中,激发门电路输出变迁而获得的门电路输出状态都放入集合Mout中,具体包括如下步骤:
步骤1、输入系统的Petri网模型,由于起始时不存在输入状态和门电路输出状态,即输入状态集合和门电路输出状态集合也不存在状态之间的有向边以及有向边上的变迁标记,即状态之间的有向边集合和有向边上的变迁集合
步骤2、将初始状态m0标记为“new”,并将{m0}→Mnew;
GFPGA=<M,E,W>,M=Min∪Mout,E=Ein∪Eout;
步骤4、从未计算的系统状态集合Mnew中任取一个标记为“new”的状态m;
步骤4.1如果状态m与可达图中已有的其他状态相同,则将其标记为“old”,已计算获得的系统状态集合Mold=Mold∪{m},然后转向步骤4;
步骤4.2如果在状态m下,没有可激发的输入变迁和门电路输出变迁,则将状态m标记为“dead end”(死锁),然后转向步骤4;
步骤4.3如果在状态m下存在使能变迁,此时会有两种情况:一种是既有可使能的输入变迁又有可使能的门电路输出变迁,则跳转到步骤5;另一种是只存在可使能的输入变迁,则跳转到步骤6;
步骤5.1从可使能的门电路输出变迁集合Te,out中任取一个门电路输出变迁tout,激发该变迁,生成门电路输出状态m'out;
步骤5.2将{m'out}→Mout,如果门电路输出状态m'out与可达图中已有的状态相同,则已计算获得的系统状态Mold=Mold∪{m'out};否则从状态m到门电路输出状态m'out之间画一条有向边虚线,则状态之间的有向边集合为Eout=Eout+{<m,m'out>};并在该虚线上标记门电路输出变迁tout,则有向边上的变迁集合为{W(<m,m'out>)=tout}→W,说明在状态m下通过激发门电路输出变迁tout会生成输出状态m'out;
步骤5.3因为从可使能的门电路输出变迁集合Te,out中取走了一个使能变迁,所以Te,out=Te,out-{tout},再判断可使能的门电路输出变迁集合Te,out是否为空集,如果即仍有可激发的输出变迁,那么返回步骤5.1;如果可使能的门电路输出变迁集合即没有可激发的输出变迁,则继续以下操作;
步骤5.4因为标记为“new”的状态m是从状态集合Mnew中取出的,所以未计算的系统状态集合Mnew=Mnew-{m},并返回步骤3;
步骤6.1从可使能的输入变迁集合Te,in中任取一个输入量变迁tin,激发该变迁,生成门电路输入状态m'in;
步骤6.2将{m'in}→Min,如果m'in与可达图中已有的状态相同,则已计算获得的系统状态集合Mold=Mold∪{m'in};否则从状态m到m'in之间画一条有向边实线,则状态之间的有向边集合为Ein=Ein+{<m,m'in>};并在该实线上标记输入量变迁tin,则有向边上的变迁集合为{W(<m,m'in>)=tin}→W,说明在状态m下通过激发输入量变迁tin会生成输入状态m'in;
步骤6.2.1判断输入状态m'in下是否存在可使能的输出变迁,如果m'in下存在可使能的输出变迁,则跳转到步骤6.2.2,否则跳转到步骤6.2.5;
步骤6.2.3将{m''out}→Mout,如果m''out与可达图中已有的状态相同,则已计算获得的系统状态集合Mold=Mold∪{m''out};否则从状态m'in到m''out之间画一条有向边虚线,则状态之间的有向边集合为Eout=Eout+{<m'in,m''out>};并在该虚线上标记门电路输出变迁tout,则有向边上的变迁集合为{W(<m'in,m''out>)=tout}→W,说明在门电路输入状态m'in下通过激发门电路输出变迁tout会生成输出状态m''out;
步骤6.2.4同理可使能的门电路输出变迁集合Te,out=Te,out-{tout},再判断门电路输入状态m'in下的可使能的门电路输出变迁集合Te,out是否为空集,如果可使能的门电路输出变迁集合即仍有可激发的输出变迁,那么返回步骤6.2.2;如果可使能的门电路输出变迁集合即没有可激发的输出变迁,则继续以下操作;
步骤6.2.5因为在状态m下从可使能的输入量变迁集合Te,in中取走了一个使能输入量变迁tin,所以Te,in=Te,in-{tin},再判断可使能的输入量变迁集合Te,in是否为空集,如果可使能的输入量变迁集合即仍有可激发的输入变迁,那么返回步骤6.1;如果可使能的输入量变迁集合即没有可激发的输入变迁,则继续以下操作;
步骤6.3未计算的系统状态集合Mnew=Mnew-{m},并返回步骤3。
本发明根据上述算法,便能获得组合逻辑FPGA系统在不考虑门延迟和线延迟,仅考虑逻辑功能的条件下,并且是一个稳定输入量下所对应的稳定输出的系统状态空间图,为叙述方便,我们把GFPGA简称FPGA可达图。
实施例:如图1所示为某化工原料生产示意图,其工艺流程简述:V1、V2和V3分别是原料A、B和C的进料阀,V4是产品出料阀。S1、S2和S3是三个液位传感器,用来监测容器中的液位是否达到目标值。M是搅拌器,L是外部定时开关。系统启动后,当液位低于S1时,V1阀打开,原料A注入容器;当液位到达S1,即传感器有信号时,V1阀关闭,同时V2阀打开,原料B注入容器;当液位到达S2时,V2阀关闭,搅拌器M开始搅拌,同时V3阀打开,原料C注入容器;液位到达S3时,M停止搅拌,V3阀关闭,在原料反应一段时间后,出料阀V4打开,外部定时开关L启动计时;当一段时间后,L关闭,V4阀关闭,系统回到最初状态。
根据上述的工作原理及生产要求,程序员给出了如下所示的VHDL程序。
library ieee;
use ieee.std_logic_1164.all;
entity example is
port(S1,S2,S3:in std_logic;
L:buffer std_logic;
V1,V2,V3,V4,M:out std_logic);
end example;
architecture a of example is
begin
V1<=S1;
V2<=S1and not S2;
V3<=S2and not S3;
M<=S2and not S3;
V4<=S3and L;
L<=S3;
end;
根据组合逻辑FPGA系统的Petri网建模方法,把上面的VHDL程序转换为如图2所示的Petri网模型。
由本发明算法可知,输入变迁集合以及输出变迁集合 并得到如图3所示的图2的组合逻辑FPGA系统状态空间图。其中,实线有向弧的标记为输入量变迁,弧指向的节点表示输入量状态;虚线有向弧的标记为门电路输出变迁,弧指向的节点为门电路逻辑运算输出状态。表1列出FPGA可达图中个节点所对应的电路状态,每个状态表示形式是:
为了阐述计算组合逻辑FPGA系统状态空间时的激发规则,以电路输入量状态m2为例,对于这样稳定的输入量状态下,应先判断是否存在可使能的门电路逻辑运算输出变迁,若存在,则优先激发m2下所有的门电路输出变迁;若m2下不存在可使能的门电路输出变迁,再激发使能的输入量变迁。很明显,输入状态m2下使能的门电路输出变迁有和因为FPGA是并行执行系统,所以这两个门电路输出变迁都应被激发,最终得到在一个稳定的输入状态m2下稳定的门电路输出状态m5。因此,我们可以发现每个状态都对应了组合逻辑FPGA系统的中的一个状态,状态沿着图中有向弧移动的轨迹反映了系统运行程序时可能出现的状态变化过程。
由实施例的组合逻辑FPGA系统状态空间图3可知,系统在一个稳定的输入量状态m0,m2,m6,m14和m30情况下分别得到最终稳定的门电路逻辑运算输出状态为m1,m5,m13,m29和m33。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (1)
1.一种基于Petri网的组合逻辑FPGA系统可达图的生成方法,其特征在于:组合逻辑FPGA系统是在一个稳定输入量下所对应的稳定的门电路输出,并且在门电路逻辑运算阶段,没有新的输入量进来;
假设Petri网(N,m0)是一个组合逻辑FPGA系统的Petri网模型,其中N=(P,T,F),P表示库所的有限集合,T表示变迁的有限集合,表示连接库所和变迁有向弧的集合,m0表示Petri网的初始标识,另外T=Tin∪Tout,Tin表示输入量变迁集合,Tout表示门电路输出变迁集合,Te,in是可使能的输入量变迁集合,Te,out是可使能的门电路输出变迁集合,并且 一个输入量变迁的激发表示其对应的输入变量状态变化,一个门电路输出变迁的激发表示其对应的门电路逻辑输出运算;
在所有可达电路状态R(m0)中,如果一个状态是由激发输入量变迁演变得到的,那么该状态称为该Petri网模型的电路输入状态;如果一个状态是由激发门电路变迁演变得到的,那么该状态称为该Petri网模型的门级输出状态;
组合逻辑FPGA系统可达图由一个三元组GFPGA=<M,E,W>,M=Min∪Mout,E=Ein∪Eout描述,集合M中的每个节点对应于系统状态空间的一个状态,其中Min和Mout分别表示输入状态集合和门电路逻辑运算输出状态集合,输入状态节点为实线圈,输出状态节点为虚线圈,E是一个节点指向另一个节点的有向边的集合,算法中<m,m'out>表示从状态m指向m'out的一条有向边,Ein和Eout分别表示标记为输入量变迁和门电路输出变迁的边的集合,Ein中的边为单箭头实线,Eout中的边为单箭头虚线,集合W中的元素是E到T的一个映射,即每条有向边上都有变迁标记,算法中W(<m,m'out>)=tout表示在状态m下激发变迁tout得到m'out,Mnew=Min∪Mout是未计算的系统状态集合,Mold=Min∪Mout是已计算获得的系统状态集合,当未计算的系统状态集合Mnew中某个状态的可达状态都已计算获得,则该状态便从未计算的系统状态集合Mnew中被剔除并添加到已计算获得的系统状态集合Mold中;当未计算的系统状态集合Mnew为空时,算法结束;由激发输入量变迁而获得的输入状态都放入集合Min中,激发门电路输出变迁而获得的门电路输出状态都放入集合Mout中,具体包括如下步骤:
步骤1、输入系统的Petri网模型,由于起始时不存在输入状态和门电路输出状态,即输入状态集合和门电路输出状态集合也不存在状态之间的有向边以及有向边上的变迁标记,即状态之间的有向边集合和有向边上的变迁集合
步骤2、将初始状态m0标记为“new”,并将{m0}→Mnew;
GFPGA=<M,E,W>,M=Min∪Mout,E=Ein∪Eout;
步骤4、从未计算的系统状态集合Mnew中任取一个标记为“new”的状态m;
步骤4.1如果状态m与可达图中已有的其他状态相同,则将其标记为“old”,已计算获得的系统状态集合Mold=Mold∪{m},然后转向步骤4;
步骤4.2如果在状态m下,没有可激发的输入变迁和门电路输出变迁,则将状态m标记为“deadend”,然后转向步骤4;
步骤4.3如果在状态m下存在使能变迁,此时会有两种情况:一种是既有可使能的输入变迁又有可使能的门电路输出变迁,则跳转到步骤5;另一种是只存在可使能的输入变迁,则跳转到步骤6;
步骤5.1从可使能的门电路输出变迁集合Te,out中任取一个门电路输出变迁tout,激发该变迁,生成门电路输出状态m'out;
步骤5.2将{m'out}→Mout,如果门电路输出状态m'out与可达图中已有的状态相同,则已计算获得的系统状态Mold=Mold∪{m'out};否则从状态m到门电路输出状态m'out之间画一条有向边虚线,则状态之间的有向边集合为Eout=Eout+{<m,m'out>};并在该虚线上标记门电路输出变迁tout,则有向边上的变迁集合为{W(<m,m'out>)=tout}→W,说明在状态m下通过激发门电路输出变迁tout会生成输出状态m'out;
步骤5.3因为从可使能的门电路输出变迁集合Te,out中取走了一个使能变迁tout,所以Te,out=Te,out-{tout},再判断可使能的门电路输出变迁集合Te,out是否为空集,如果即仍有可激发的输出变迁,那么返回步骤5.1;如果可使能的门电路输出变迁集合即没有可激发的输出变迁,则继续以下操作;
步骤5.4因为标记为“new”的状态m是从状态集合Mnew中取出的,所以未计算的系统状态集合Mnew=Mnew-{m},并返回步骤3;
步骤6.1从可使能的输入变迁集合Te,in中任取一个输入量变迁tin,激发该变迁,生成门电路输入状态m'in;
步骤6.2将{m'in}→Min,如果m'in与可达图中已有的状态相同,则已计算获得的系统状态集合Mold=Mold∪{m'in};否则从状态m到m'in之间画一条有向边实线,则状态之间的有向边集合为Ein=Ein+{<m,m'in>};并在该实线上标记输入量变迁tin,则有向边上的变迁集合为{W(<m,m'in>)=tin}→W,说明在状态m下通过激发输入量变迁tin会生成输入状态m'in;
步骤6.2.1判断输入状态m'in下是否存在可使能的输出变迁,如果m'in下存在可使能的输出变迁,则跳转到步骤6.2.2,否则跳转到步骤6.2.5;
步骤6.2.3将{m''out}→Mout,如果m''out与可达图中已有的状态相同,则已计算获得的系统状态集合Mold=Mold∪{m''out};否则从状态m'in到m''out之间画一条有向边虚线,则状态之间的有向边集合为Eout=Eout+{<m'in,m''out>};并在该虚线上标记门电路输出变迁tout,则有向边上的变迁集合为{W(<m'in,m''out>)=tout}→W,说明在门电路输入状态m'in下通过激发门电路输出变迁tout会生成输出状态m''out;
步骤6.2.4可使能的门电路输出变迁集合Te,out=Te,out-{tout},再判断门电路输入状态m'in下的可使能的门电路输出变迁集合Te,out是否为空集,如果可使能的门电路输出变迁集合即仍有可激发的输出变迁,那么返回步骤6.2.2;如果可使能的门电路输出变迁集合即没有可激发的输出变迁,则继续以下操作;
步骤6.2.5因为在状态m下从可使能的输入量变迁集合Te,in中取走了一个使能输入量变迁tin,所以Te,in=Te,in-{tin},再判断可使能的输入量变迁集合Te,in是否为空集,如果可使能的输入量变迁集合即仍有可激发的输入变迁,那么返回步骤6.1;如果可使能的输入量变迁集合即没有可激发的输入变迁,则继续以下操作;
步骤6.3未计算的系统状态集合Mnew=Mnew-{m},并返回步骤3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310697453.XA CN103699730B (zh) | 2013-12-18 | 2013-12-18 | 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310697453.XA CN103699730B (zh) | 2013-12-18 | 2013-12-18 | 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699730A true CN103699730A (zh) | 2014-04-02 |
CN103699730B CN103699730B (zh) | 2017-02-22 |
Family
ID=50361257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310697453.XA Expired - Fee Related CN103699730B (zh) | 2013-12-18 | 2013-12-18 | 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699730B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002601A (zh) * | 2018-07-06 | 2018-12-14 | 西安电子科技大学 | 一种基于Petri网的FPGA系统的验证模型建模方法 |
CN110033125A (zh) * | 2019-03-14 | 2019-07-19 | 山东科技大学 | 一种基于模糊逻辑Petri网的业务流程分析方法 |
CN110865586A (zh) * | 2019-07-26 | 2020-03-06 | 华侨大学 | 基于Petri网的无刷直流电机DSP逻辑控制程序设计方法 |
CN114144735A (zh) * | 2019-05-20 | 2022-03-04 | 马库斯·格鲁伯 | 用于控制和/或调节技术过程的可执行控制程序的计算机辅助生成的计算机实现的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833499A (zh) * | 2010-04-07 | 2010-09-15 | 南京航空航天大学 | 一种基于可达树的软件测试验证方法 |
CN103019233A (zh) * | 2012-12-21 | 2013-04-03 | 华侨大学 | 一种检测plc梯形图程序中是否存在竞态的方法 |
CN103093046A (zh) * | 2013-01-11 | 2013-05-08 | 华侨大学 | 一种将FPGA硬件描述语言VHDL转化为普通Petri网的方法 |
-
2013
- 2013-12-18 CN CN201310697453.XA patent/CN103699730B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833499A (zh) * | 2010-04-07 | 2010-09-15 | 南京航空航天大学 | 一种基于可达树的软件测试验证方法 |
CN103019233A (zh) * | 2012-12-21 | 2013-04-03 | 华侨大学 | 一种检测plc梯形图程序中是否存在竞态的方法 |
CN103093046A (zh) * | 2013-01-11 | 2013-05-08 | 华侨大学 | 一种将FPGA硬件描述语言VHDL转化为普通Petri网的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002601A (zh) * | 2018-07-06 | 2018-12-14 | 西安电子科技大学 | 一种基于Petri网的FPGA系统的验证模型建模方法 |
CN109002601B (zh) * | 2018-07-06 | 2020-09-08 | 西安电子科技大学 | 一种基于Petri网的FPGA系统的验证模型建模方法 |
CN110033125A (zh) * | 2019-03-14 | 2019-07-19 | 山东科技大学 | 一种基于模糊逻辑Petri网的业务流程分析方法 |
CN110033125B (zh) * | 2019-03-14 | 2023-04-18 | 山东科技大学 | 一种基于模糊逻辑Petri网的业务流程分析方法 |
CN114144735A (zh) * | 2019-05-20 | 2022-03-04 | 马库斯·格鲁伯 | 用于控制和/或调节技术过程的可执行控制程序的计算机辅助生成的计算机实现的方法 |
CN110865586A (zh) * | 2019-07-26 | 2020-03-06 | 华侨大学 | 基于Petri网的无刷直流电机DSP逻辑控制程序设计方法 |
CN110865586B (zh) * | 2019-07-26 | 2022-06-07 | 华侨大学 | 基于Petri网的无刷直流电机DSP逻辑控制程序设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103699730B (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552558B2 (en) | Conditional phase algebra for clock analysis | |
Jakšić et al. | From signal temporal logic to FPGA monitors | |
Mendler et al. | Constructive Boolean circuits and the exactness of timed ternary simulation | |
Große et al. | Quality-driven SystemC design | |
US6567959B2 (en) | Method and device for verification of VLSI designs | |
CN103699730A (zh) | 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法 | |
CN103761387B (zh) | 一种fpga组合逻辑系统顺序规范的形式化验证方法 | |
Balandin et al. | Co-Modeling of Embedded Networks Using SystemC and SDL | |
Keating | The simple art of SoC design: closing the gap between RTL and ESL | |
CN102254062A (zh) | 标准单元时序数据测试方法 | |
Venkataramani et al. | System-level retiming and pipelining | |
Lavagno et al. | Alberto L. Sangiovanni-Vincentelli | |
Kemper | SAT-based verification for timed component connectors | |
Cortés | Verification and scheduling techniques for real-time embedded systems | |
Dion | Correct-by-construction methods for the development of safety-critical applications | |
Ebeid et al. | Generation of VHDL code from UML/MARTE sequence diagrams for verification and synthesis | |
Koolen et al. | Using SMT for solving fragments of parameterised Boolean equation systems | |
Hein et al. | Rassp VHDL modeling terminology and taxonomy | |
Dahmoune et al. | An embedded reachability analyzer and invariant checker (eraic) | |
Huhn et al. | Next Generation Design For Testability, Debug and Reliability Using Formal Techniques | |
Pierre et al. | Dynamic Verification of SystemC Transactional Models. | |
Olivo et al. | A unified formal framework for analyzing functional and speed-path properties | |
Soto et al. | SystemC/TLM flow for SoC design and verification | |
Jamil | Evaluating the expressiveness of specification languages: for stochastic safety-critical systems | |
Skarvada et al. | Testability analysis based on the identification of testable blocks with predefined properties |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170222 |