1、什么是狀態機建模
狀態機建模是使用狀態圖和方程式的手段,創建基于混合信號的有限狀態機模型的一種建模工具。
狀態圖具有強大的視覺特征,在設計的早期階段,使用狀態圖能夠將復雜的系統行為抽象為更高層次的模型,而狀態機建模工具具有將基于行為狀態模型與系統關聯起來的獨特功能。
狀態機建模工具可以生成基于MAST、VHDL-AMS和Verilog-A語言的仿真模型。使用狀態機建模工具不需要系統的訓練,不需要懂專業的建模語言語法,上手非常容易。
狀態機建模工具主要應用于:電源控制管理或電路控制、離散時間控制、事件控制等場合。
2、狀態機建模工具介紹
打開SaberRD,在Model標簽欄下單擊狀態機建模按鈕,進入建模界面。
如上圖所示,狀態機建模界面可分為三部分:拓撲編輯區,變量編輯區和狀態圖編輯區。
l 拓撲編輯區:定義模型接口及接口屬性;
l 變量編輯區:定義與模型相關的變量
l 狀態圖編輯區:定義模型內部各個變量之間的邏輯關系及使用公式對變量進行行為描述
2.1. 拓撲編輯區
進行狀態機建模首先需要定義狀態機拓撲,包括定義狀態機的接口,及接口屬性。
接口有三種類型:分支型,輸入型,輸出型。當定義的接口為輸入或輸出端口時,對應在右側變量區域會有相同名稱的變量生成;當接口定義為分支型接口時,該接口包含through和across型變量。
2.1.1. 分支型終端
分支型終端可以使得系統內部各元素之間進行能量的交換,遵循能量守恒定律。能量的端口類型包括:電,磁,機械,熱。每一種分支型端口包含一對跨接(across)和(導通)through型變量,如電類型端口包含電壓和電流兩種信息。電壓大小代表潛在驅動能力,而導通型變量電流表示流量的大小。分支型終端可以是差分形式或者是單端形式。
下圖是幾種分支型終端的類型定義。
2.1.2. 輸入/輸出端口定義
輸入端口和輸出端口功能類似,下文表述以輸入端口為例,對于輸出端口同樣適用。
輸入端口不包含能量守恒信息,用于多算法控制或者邏輯控制,變量類型分別對應Continuous和State,如下圖所示。Continuous變量是連續變量,用于基于時間的算法控制,State是狀態變量,用于基于事件驅動的控制。
輸入輸出端口的單位有多種類型,如下圖所示。對于控制類的,多使用無單位的。
輸入輸出端口定義好后,對應的在右側變量區會出現相同名稱的變量,如下圖所示:
2.2. 變量編輯
定義好接口拓撲后,下一步就是定義模型中需要用到的變量。包括靜態變量,連續型continuous和狀態型state變量。同時還可以定義數組,和函數。
2.2.1. 靜態變量 Static
靜態變量是指在整個瞬態仿真過程中,變量參數不變。定義靜態變量時,需要注意區分是模型參數還是內部參數。如下圖所示。
模型參數就相當于定義模型的外部參數,變量值在模型初始化時可以參量化設置。
而內部參數多是通過一個表達式由其他模型參數計算而來。
例如定義了一個模型變量a,再定義一個內部參數靜態變量b,b=a*100,定義式如下圖所示:
2.2.2. 連續型變量
連續型變量用在基于連續時間狀態的仿真應用中。一般使用等式進行賦值。狀態機變量中包括的類型有4種:
n 分支型連續變量(包含一對跨接(across)和(導通)through型變量)
n 輸入型連續變量(控制型輸入變量)
n 內部連續變量
n 輸出連續變量(控制型輸出變量)
2.2.3. 狀態型變量
狀態型變量用于基于事件驅動的離散時間仿真應用中。狀態型變量一般在state exit,state entry,initial actions時進行賦值。
2.3. 狀態機狀態圖編輯
狀態機狀態圖編輯包含:States、Transitions、Blocks、Clocks
2.3.1. States
states本質上說是一個布爾型變量,它的狀態可以是激活和非激活狀態。
? AnalogEquation:連續型變量的賦值或state變量賦值
可以賦值基于連續變量的公式continuous variable equation如:a=b+c等價于b+c;a=b*cos(a);b+c
可以賦值state equation
? Initial/Enty/Exit :state型變量賦值,只能給內部或輸出state variables賦值。Initial在做DC分析時使用,Entry:狀態激活時賦值;Exit:狀態退出時賦值內容。
賦值形式variable = expression。
允許使用if-else語句。例子:
Processes 進程
進程概念允許并發激活狀態。單個進程是一組不能同時激活的獨占狀態,但是處于不同進程的狀態可以同時激活。如下圖所示是一個2個進程狀態機。共有狀態3*4=12個狀態。
2.3.2. Transitions
定義狀態之間切換的條件及過程。條件是一個布爾型結果或變量
l Transition condition:>, <, <=, >=, &, |, ==, =, !=, timeout, active, event_on (note that == and = are equivalent)
n timeout function定義一個關于時間的公式,超過這個時間,就會觸發狀態變化。timeout(1)&&(a>b) becomes true whenever "a" becomes greater than "b" after one second has elapsed since state entry
n active function:使用states的名稱作為參數,用于進程之間的跳變
n event_on function:state變量作為參數,event_on(clk)&&(clk==’1’)
l Transition action:(after any state or block exit actions and before any state or block entry actions),規則同entry actions。
2.3.3. Blocks
允許多個states共享transition和actions
Block有Entry Action和Exit Action屬性。設計規則與state 中的Action是一樣的。如下,Block狀態切換發生在從S1的Exit Action之后,S2的Enter Action之前。
2.3.4. Clocks
Clock允許某些動作周期性的發生,但是與state是否激活無關。
-
VHDL語言
+關注
關注
1文章
113瀏覽量
18001 -
狀態機
+關注
關注
2文章
492瀏覽量
27529 -
邏輯控制
+關注
關注
0文章
39瀏覽量
12350 -
靜態變量
+關注
關注
0文章
13瀏覽量
6645
發布評論請先 登錄
相關推薦
評論