基于FPGA的Petri網的硬件實現(xiàn)
1、引言
本文引用地址:http://cafeforensic.com/article/201807/384193.htmPetri網是一種系統(tǒng)的、數(shù)學的和圖形的描述和分析工具,它具有強大的描述并發(fā)、異步、分布、并行、不確定/隨機性的信息處理系統(tǒng)的能力,目前已被廣泛應用于計算機通訊系統(tǒng)、實時多媒體系統(tǒng)及離散事件系統(tǒng)的研究中。而Petri網的硬件實現(xiàn)將為并行控制器的設計提供一條有效的途徑。因此,其硬件實現(xiàn)成為許多專家、學者研究的熱點。
現(xiàn)場可編程門陣列FPGA是美國Minx公司于1984年首先開發(fā)的一種通用型用戶可編程邏輯器件。它具有容量大、速度高、價格低的優(yōu)點,同時,硬件描述語言VHDL具有的強大的行為描述能力及與硬件行為無關的特性,實現(xiàn)了硬件電路設計的軟件化,這為Petri網的硬件實現(xiàn)提供了有力的工具。
本文探討了Petri網基于VHDL語言的FPGA實現(xiàn)。
2、Petri網基本類型的實現(xiàn)
2.1基本Petri網的實現(xiàn)
2.1.1基本Petri網簡介
定義1 六元組Z=(P,T,F,K,W,M0)稱為一個網系統(tǒng),其中N=(P,T,F)是一個有向網,滿足:
1)P∪T≠φ
2)P∪T=φ
3)F∈PxT∪TxP,只能從P->7或T->P,不準P->P或T->T.
4)Dom(F)∪cod(F)=P∪T
K,W,M0依次是N上的容量函數(shù),權函數(shù)和標識,M0稱為∑的初始標識?;綪etri網就是K=1,W=1,這時庫所內的標識數(shù)要么是0,要么是1,而且所有的弧權都是1。對于基本的Petri網,變遷的激發(fā)就是一個瞬時事件。
2.1.2基本Petri網的元件實現(xiàn)
圖1(a)是一個簡單的基本Petri網系統(tǒng),庫所P具有兩個輸入變遷和兩個輸出變遷,當庫所P中沒有托肯且?guī)焖鵓O或P1中有托肯時,變遷t0或11激發(fā),則托肯從庫所PO或P1移動到庫所P;當P中有托肯且?guī)焖鵓2或P3中沒有托肯時,變遷t2或0激發(fā),則托肯從庫所P移動到庫所P2或P3。
實現(xiàn)庫所P的模塊如圖1(b),元件幾M有兩個輸入變遷inl,in2和兩個輸出變遷。outl,out2,當變遷使能時,其值為邏輯1,否則為邏輯0;reset為復位信號,用來置庫所的初始狀態(tài)。clk為全局時鐘。P的值表示庫所中是否含義托肯,若含有托肯,取值為邏輯1,否則為邏輯。。元件PM是在EDA軟件Max+PlusII中采用VHDL語言描述,經過編譯、仿真后形成模塊。
用VHDL語言描述源程序如下:
entity p_mis
port(reset,clk:instdlogic;
inl,in2,outl,out2:instdlogic;
p:outstdlogic);
end p_m;
architecture beh ofp_m is()P
signal p0,np0:stdlogic;
begin
np0-not p0;
process(clk,reset)
variablefstdlogic;
begin
f:=((inlorin2)and
ifclk'eventandclk='1
ifreset='1'then
p0='1';
elsiff='1'then
(a).(b)
np0)or((outlorout2)andp0);
.then
PO=npO;
endif;
endif;
endprocess;p=p0;
end beh;
圖2(a)是一個簡單的基本Petri網系統(tǒng),其激發(fā)規(guī)則是當庫所PO和P1中有托肯,變遷T具有兩個輸入庫所PO和P1,P3,而庫所P2和P3中沒有托肯,且事件x兩個輸出庫所P2和發(fā)生時,變遷激發(fā)。圖2(b)是建立的變遷元件T_M,inl,in2,outl,out2分別表示輸入庫所和輸出庫所中含有托肯的狀態(tài),若含有托肯,則取值為邏輯1,否則為邏輯0,x是外部事件。T表示變遷的激發(fā)狀態(tài),若可激發(fā)則取值為邏輯1。
用VHDL語言描述源程序如下:
entityt_mis
port(inl,in2,outl,out2,x:in std_logic;
t:out stdlogic);,
end t_m;
architecture beh of t_m is
signal t0:stdlogic;
begin
t-x and in land in2 and (notoutl) and (notout2)end beh;
庫所元件P_M和變遷元件T_M均存放在Max+Plusll中建立的元件庫中,可以調用使用的。
2.2時EEPetriR的實IT
2.2.1時延Petri網的定義
定義2變遷時化Petri網(timed petri net)TN={P,T,F,I'],其中I':T->0∪R+,規(guī)定TPetri網中的每一個變遷的持續(xù)時間。{T,P,F}的定義與PN一致。
在變遷時化Petri網中,每個變遷均有一為零或任一正實數(shù)的持續(xù)時間。而庫所中沒有持續(xù)時間,只要和它相連的變遷發(fā)生,庫所就可失去或獲得托肯。當變遷的輸入庫所中含有托肯時,變遷是可激發(fā)的,但要真正激發(fā)需要經過一段持續(xù)時間。
2.2.2變遷時化Petri網元件的實現(xiàn)
變遷時化Petri網中庫所元件與基本Petri網一致。
變遷時化Petri網中變遷元件的實現(xiàn)是在基本Petri網中變遷元件的基礎上設計了一個計時器TIME,如圖3(b),clk為計時頻率,決定了計時的精度;en為其使能端,當變遷可激發(fā)時,en為1,計時器開始計時,計時結束時co輸出為t。圖3(a)是一個簡單的變遷時化Petri網,變遷T與時延D=n相連,當庫所PO和P1中各有一個托肯時,變遷T獲得發(fā)生權,但到T發(fā)生,需有n個單位的延時.調用元件幾M和計時元件TIME,建立邏輯電路如圖3(c)示,并經過編譯形成圖3(d)所示邏輯模塊時化變遷元件。
用VHDL語言實現(xiàn)計時器模塊源程序如下
if clk'event and clk='1'then
if en='l'then
if q=nthenq=0;co='1';
elseq=q+lco='0':
end if;
else q=0;co='0'
end if;
end process;
endbeh;
3、應用舉例
兩臺計算機使用一個公共存儲器,(a)不需要該存儲器,(b)需要存儲器但還沒有使用它;(c)正在使用存儲器。
則對其建立Petri網模型如圖5示。各庫所和變遷的含義解釋為:P1,P4分別表示CPI,CP2發(fā)出需要該存儲器請求;P2,P5分別表示CPI,CP2占用該存儲;P3,P6分別表示CPI,CP2不需要該存儲器;P7表示存儲器;變遷中與時間相關的是T2.T5,分別表示cp占用存儲器的時間。這是一個時延Petri網系統(tǒng)。分別調用元件庫中所形成的庫所元件、變遷元件和時延變遷元件,作出該系統(tǒng)的邏輯電路圖,并在EDA軟件Max+PlusI中對其編譯、仿真下載,仿真波形如圖示。
4、結論
Petri網是異步并發(fā)現(xiàn)象建模的重要工具,Petri網的硬件實現(xiàn)將為并行控制器的設計提供一種有效的途徑.這使Petri網的硬件實現(xiàn)顯得尤為重要。本文給出了基本Petri網系統(tǒng)的硬件實現(xiàn)方案,采用VHDL語言分模塊實現(xiàn),描述元件的功能并將元件存入WORK庫中,使設計具有很強的可讀性、可重復性、及可修改性,大大提高了系統(tǒng)的開發(fā)效率。
評論