[发明专利]FPGA加速的有色Petri网仿真方法及Verilog HDL代码生成工具有效
申请号: | 202011500487.1 | 申请日: | 2020-12-18 |
公开(公告)号: | CN112613199B | 公开(公告)日: | 2022-05-24 |
发明(设计)人: | 张小军;陈成官;曾庆田;鲁法明;李恒忠;陈达;崔建明;王翀;刘辉;郭华;徐建建 | 申请(专利权)人: | 山东科技大学 |
主分类号: | G06F30/22 | 分类号: | G06F30/22;G06F30/34 |
代理公司: | 吉林省中玖专利代理有限公司 22219 | 代理人: | 李泉宏 |
地址: | 266590 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | fpga 加速 有色 petri 仿真 方法 verilog hdl 代码 生成 工具 | ||
1.FPGA加速的有色Petri网仿真方法,该方法主要步骤包括:
一、有色Petri网参数的分析;
二、有色Petri网描述文档的编写;
三、生成有色Petri网的Verilog HDL设计文件;
四、将生成的Verilog描述文件经过综合、布局布线生成FPGA配置文件后,通过下载器将其配置到FPGA中进行仿真;
其中,步骤一、有色Petri网参数的分析,包括以下步骤:
(1)确定库所与变迁的个数;
(2)确定每个库所包含的不同的token的颜色的个数;
(3)确定每个变迁的发生颜色的个数;
(4)确定库所与变迁之间的流关系,并用库所的全局关联矩阵表示;
(5)确定库所对token的容限;
(6)确定每个库所中token的初始数量,即确定有色Petri网的初状态;
步骤一中,所述的库所的全局关联矩阵是为了描述有色Petri网的流关系而定义的,分为“库所的前向全局关联矩阵”与“库所的后向全局关联矩阵”两类,有色Petri网中每个库所都对应有一个前向矩阵和一个后向矩阵;Petri网中前向与后向表示的是流关系的方向,前向指流关系从库所指向变迁,后向值流关系从变迁指向库所;本申请中定义的全局关联矩阵不是数学意义上的矩阵,而是有一定行数列数的表格,每个矩阵的“单元格”中存放的是一组具有特殊含义的文本;“库所的全局关联矩阵”中每一项对应变迁的一种发生颜色;其由基本元素构成,每个基本元素对应库所中的一种token,基本元素为字符串“颜色标识符:权值”,颜色标识符是流关系对应库所token的颜色,权值表示此流关系发生时对相应颜色token数量的影响;每一项的不同基本元素之间用符号“+”相连;如果矩阵中某项对应的变迁的发生颜色与该库所之间没有流关系,直接用字符串“0:0”表示;
任何一个库所的全局关联矩阵表示为如下的矩阵形式:
其中Co1:Cot表示该库所包含的t种token的颜色,表示变迁Tn在发生颜色cm下对颜色为Cot的token的数量的影响,即弧的权值,如果变迁Tn在发生颜色cm下对颜色为Cot的token的数量的影响为零,即变迁Tn在发生颜色cm下对Cot-token的流关系不存在,则用“+”连接的该项不写;但如果变迁Tn在发生颜色cm下对库所的所有token都不产生影响,此时这一整项需用0:0填写,以表示流关系不存在;n是变迁的个数,m是变迁发生颜色的个数最大值;
二、有色Petri网描述文档的编写;
所述的描述文档包括:库所与变迁的个数描述部分、变迁发生颜色的个数描述部分、库所中token颜色的个数描述部分、库所的前向流关系描述部分、库所的后向流关系描述部分、库所的token容限描述部分和有色Petri网的初状态描述文档部分;
其中,库所与变迁的个数描述部分中包含库所的个数和变迁的个数表达式;
变迁发生颜色的个数描述部分为各个变迁发生颜色个数的列表;
库所中token颜色的个数描述部分为各个库所中token颜色的个数的列表;
库所的前向流关系描述部分为各个库所前向全局关联矩阵的列表;
库所的后向流关系描述部分为各个库所后向全局关联矩阵的列表;
库所的token容限描述部分为各个库所对各个颜色token的最大容量值的列表,其由颜色标识符区分颜色;
有色Petri网的初状态描述部分为初始状态下各个库所中各颜色token的数量的列表,其由颜色标识符区分颜色;
三、生成有色Petri网的Verilog HDL设计文件;
根据有色Petri网描述文档进行参数分析和整理,将上述描述文档中的参数更新至对应的库所、变迁和单色弧链表及定义的常量与变量中,所述的库所、变迁和单色弧链表及定义的常量与变量具体包括:
(1)定义常量:库所最大扇入扇出单色弧个数
(2)定义常量:库所变迁数量最大个数
(3)定义常量:每个库所颜色个数的最大值
(4)定义常量:变迁发生规则的最大个数
(5)定义常量:每个变迁发生规则中条件个数的最大值
(6)定义常量:默认token容量
(7)定义变量:库所的个数
(8)定义变量:变迁的个数
(9)单色弧结构体链表包括:
弧的编号;
与弧连接的库所编号;
与弧连接的变迁编号;
表征弧的方向0:库所变迁,1:变迁库所;
该弧的颜色对应于变迁所有发生规则的编号;
该弧的颜色在库所所有颜色中的编号;
保存弧的颜色字符串;
库所对与弧同颜色的token的容限;
库所中与弧同颜色的token的初始数量;
弧的权值;
(10)库所结构体链表包括:
库所的编号;
库所的包含token的颜色数;
库所对每种颜色token的容限;
库所中每种token的初始数;
库所前置弧的个数;
库所后置弧的个数;
库所前置弧的编号数组;
库所前置弧的颜色在库所token颜色中的编号;
库所前置弧对库所的影响数;
库所后置弧的编号数;
库所后置弧所对应颜色在库所token颜色中的编号;
库所后置弧对库所的影响数;
(11)变迁结构体的链表包括:
变迁的编号;
变迁发生规则的个数;
每个变迁规则下前置弧的个数;
每个变迁规则下后置弧的个数;
每个变迁规则对应的前置弧的编号;
每个变迁规则对应的后置弧的编号;
每个变迁规则下对相应前置弧的影响数;
每个变迁规则下对相应后置弧的影响数组;
每个变迁规则下前置弧所连库所的对与该规则相关的token的最大容量;
每个变迁规则下,后置弧所连库所对与该规则相关的token的最大容量;
分析和整理的过程具体如下:
(1)读取描述文档的库所与变迁的个数描述部分,并将库所个数赋值给全局变量库所的个数,变迁个数赋值给全局变量变迁的个数;然后分别为每一个库所和变迁创建一个节点的空链表;
(2)读取描述文档的变迁发生颜色的个数描述部分,将值依次赋给变迁链表中每个结构体的变迁发生规则的个数变量;
(3)读取描述文档的库所中token颜色的个数描述部分,将值依次赋给库所链表中每个结构体的库所包含token的颜色数变量;
(4)读取描述文档的库所的后向流关系描述部分,对全局关联矩阵中元素的组成格式进行字符串解析,得到所有从库所指向变迁的单色弧及弧的权值,并对所有单色弧进行编号,更新到弧链表的弧节点中的“弧的编号”中,弧的权值更新到弧节点中的“弧的权值”中;同时将此弧的编号和权值分别更新到库所链表的“库所后置弧的编号数”列表、“库所后置弧对库所的影响数”列表及变迁链表的“每个变迁规则对应的前置弧的编号”列表、“每个变迁规则下对相应前置弧的影响数组”列表中;
(5)读取描述文档的库所的前向流关系描述部分,对全局关联矩阵中元素的组成格式进行字符串解析,根据解析结果进行库所、变迁及弧链表的更新,即将得到所有从变迁指向库所的单色弧的编号及权值分别更新到库所链表的“库所前置弧的编号数”列表、“库所前置弧对库所的影响数”列表及变迁链表的“每个变迁规则对应的后置弧的编号”列表、“每个变迁规则下对相应后置弧的影响数组”列表中;
(6)读取描述文档的“库所的token容限描述”部分,将该部分下每个库所颜色标识符对应的token的最大容量值保存到库所结构体的库所对每种颜色token的容限数组中;
(7)读取描述文档的“有色Petri网的初状态描述”部分,将该部分下每个库所颜色标识符对应的值保存到库所结构体的库所中每种token的初始数列表中;
(8)经过上述7步,得到了包含有色Petri网所有信息的库所、变迁和单色弧链表,根据这些信息进一步打印硬件设计文件;
(9)编写顶层模块实现库所与变迁模块间的互联与调度,具体如下:将token定义为库所模块中的output reg类型的变量,位宽由库所的token容限描述确定,将库所与变迁间的流关系映射为顶层模块中wire类型的变量,连接库所与变迁模块;将流关系的权值定义为库所模块中的parameter参量;变迁使能的条件判断用组合逻辑实现;库所中token数量的更新用时序逻辑实现。
2.一种FPGA加速的有色Petri网Verilog HDL代码生成工具,其特征在于,该工具按照以下步骤运行完成Verilog HDL代码生成,
根据有色Petri网描述文档进行参数分析和整理,将上述描述文档中的参数更新至对应的库所、变迁和单色弧链表及定义的常量与变量中,所述的库所、变迁和单色弧链表及定义的常量与变量具体包括:
(1)定义常量:库所最大扇入扇出单色弧个数
(2)定义常量:库所变迁数量最大个数
(3)定义常量:每个库所颜色个数的最大值
(4)定义常量:变迁发生规则的最大个数
(5)定义常量:每个变迁发生规则中条件个数的最大值
(6)定义常量:默认托肯容量
(7)定义变量:库所的个数
(8)定义变量:变迁的个数
(9)单色弧结构体链表包括:
弧的编号;
与弧连接的库所编号;
与弧连接的变迁编号;
表征弧的方向0:库所变迁,1:变迁库所;
该弧的颜色对应于变迁所有发生规则的编号;
该弧的颜色在库所所有颜色中的编号;
保存弧的颜色字符串;
库所对与弧同颜色的token的容限;
库所中与弧同颜色的token的初始数量;
弧的权值;
(10)库所结构体链表包括:
库所的编号;
库所的包含token的颜色数;
库所对每种颜色token的容限;
库所中每种token的初始数;
库所前置弧的个数;
库所后置弧的个数;
库所前置弧的编号数组;
库所前置弧的颜色在库所token颜色中的编号;
库所前置弧对库所的影响数;
库所后置弧的编号数;
库所后置弧所对应颜色在库所token颜色中的编号;
库所后置弧对库所的影响数;
(11)变迁结构体的链表包括:
变迁的编号;
变迁发生规则的个数;
每个变迁规则下前置弧的个数;
每个变迁规则下后置弧的个数;
每个变迁规则对应的前置弧的编号;
每个变迁规则对应的后置弧的编号;
每个变迁规则下对相应前置弧的影响数;
每个变迁规则下对相应后置弧的影响数组;
每个变迁规则下前置弧所连库所的该色托肯最大容量;
每个变迁规则下后置弧所连库所的该色托肯最大容量;
分析和整理的过程具体如下:
(1)读取描述文档的库所与变迁的个数描述部分,并将库所个数赋值给全局变量库所的个数,变迁个数赋值给全局变量变迁的个数;然后分别为每一个库所和变迁创建一个节点的空链表;
(2)读取描述文档的变迁发生颜色的个数描述部分,将值依次赋给变迁链表中每个结构体的变迁发生规则的个数变量;
(3)读取描述文档的库所中token颜色的个数描述部分,将值依次赋给库所链表中每个结构体的库所包含token的颜色数变量;
(4)读取描述文档的库所的后向流关系描述部分,对全局关联矩阵中元素的组成格式进行字符串解析,得到所有从库所指向变迁的单色弧及弧的权值,并对所有单色弧进行编号,更新到弧链表的弧节点中的“弧的编号”中,弧的权值更新到弧节点中的“弧的权值”中;同时将此弧的编号和权值分别更新到库所链表的“库所后置弧的编号数”列表、“库所后置弧对库所的影响数”列表及变迁链表的“每个变迁规则对应的前置弧的编号”列表、“每个变迁规则下对相应前置弧的影响数组”列表中;
(5)读取描述文档的库所的前向流关系描述部分,对全局关联矩阵中元素的组成格式进行字符串解析,根据解析结果进行库所、变迁及弧链表的更新,即将得到所有从变迁指向库所的单色弧的编号及权值分别更新到库所链表的“库所前置弧的编号数”列表、“库所前置弧对库所的影响数”列表及变迁链表的“每个变迁规则对应的后置弧的编号”列表、“每个变迁规则下对相应后置弧的影响数组”列表中;
(6)读取描述文档的“库所的token容限描述”部分,将该部分下每个库所颜色标识符对应的token的最大容量值保存到库所结构体的库所对每种颜色token的容限数组中;
(7)读取描述文档的“有色Petri网的初状态描述”部分,将该部分下每个库所颜色标识符对应的值保存到库所结构体的库所中每种token的初始数列表中;
(8)经过上述7步,得到了包含有色Petri网所有信息的库所、变迁和单色弧链表,根据这些信息进一步打印硬件设计文件;
(9)编写顶层模块实现库所与变迁模块间的互联与调度,具体如下:将token定义为库所模块中的output reg类型的变量,位宽由库所的token容限描述确定,将库所与变迁间的流关系映射为顶层模块中wire类型的变量,连接库所与变迁模块;将流关系的权值定义为库所模块中的parameter参量;变迁使能的条件判断用组合逻辑实现;库所中token数量的更新用时序逻辑实现;
所述的库所的全局关联矩阵是为了描述有色Petri网的流关系而定义的,分为“库所的前向全局关联矩阵”与“库所的后向全局关联矩阵”两类,有色Petri网中每个库所都对应有一个前向矩阵和一个后向矩阵;Petri网中前向与后向表示的是流关系的方向,前向指流关系从库所指向变迁,后向值流关系从变迁指向库所;本申请中定义的全局关联矩阵不是数学意义上的矩阵,而是有一定行数列数的表格,每个矩阵的“单元格”中存放的是一组具有特殊含义的文本;“库所的全局关联矩阵”中每一项对应变迁的一种发生颜色;其由基本元素构成,每个基本元素对应库所中的一种token,基本元素为字符串“颜色标识符:权值”,颜色标识符是流关系对应库所token的颜色,权值表示此流关系发生时对相应颜色token数量的影响;每一项的不同基本元素之间用符号“+”相连;如果矩阵中某项对应的变迁的发生颜色与该库所之间没有流关系,直接用字符串“0:0”表示;
任何一个库所的全局关联矩阵表示为如下的矩阵形式:
其中Co1:Cot表示该库所包含的t种token的颜色,表示变迁Tn在发生颜色cm下对颜色为Cot的token的数量的影响,即弧的权值,如果变迁Tn在发生颜色cm下对颜色为Cot的token的数量的影响为零,即变迁Tn在发生颜色cm下对Cot-token的流关系不存在,则用“+”连接的该项不写;但如果变迁Tn在发生颜色cm下对库所的所有token都不产生影响,此时这一整项需用0:0填写,以表示流关系不存在;n是变迁的个数,m是变迁发生颜色的个数最大值;
所述的描述文档包括:库所与变迁的个数描述部分、变迁发生颜色的个数描述部分、库所中token颜色的个数描述部分、库所的前向流关系描述部分、库所的后向流关系描述部分、库所的token容限描述部分和有色Petri网的初状态描述文档部分;
其中,库所与变迁的个数描述部分中包含库所的个数和变迁的个数表达式;
变迁发生颜色的个数描述部分为各个变迁发生颜色个数的列表;
库所中token颜色的个数描述部分为各个库所中token颜色的个数的列表;
库所的前向流关系描述部分为各个库所前向全局关联矩阵的列表;
库所的后向流关系描述部分为各个库所后向全局关联矩阵的列表;
库所的token容限描述部分为各个库所对各个颜色token的最大容量值的列表,其由颜色标识符区分颜色;
有色Petri网的初状态描述部分为初始状态下各个库所中各颜色token的数量的列表,其由颜色标识符区分颜色。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东科技大学,未经山东科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011500487.1/1.html,转载请声明来源钻瓜专利网。