如何使用STATECAD進(jìn)行多狀態(tài)機(jī)設(shè)計(jì)實(shí)例分析
隨著微電子技術(shù)的迅速發(fā)展,人們對數(shù)字系統(tǒng)的需求也在提高。不僅要有完善的功能,而且對速度也提出了很高的要求。對于大部分?jǐn)?shù)字系統(tǒng),都可以劃分為控制單元和數(shù)據(jù)單元兩個組成部分。通常,控制單元的主體是一個有限狀態(tài)機(jī) ,它接收外部信號以及數(shù)據(jù)單元產(chǎn)生的狀態(tài)信息,產(chǎn)生控制信號序列。有限狀態(tài)機(jī)設(shè)計(jì)的關(guān)鍵是如何把一個實(shí)際的時序邏輯關(guān)系抽象成一個時序邏輯函數(shù),傳統(tǒng)的電路圖輸入法通過直接設(shè)計(jì)寄存器組來實(shí)現(xiàn)各個狀態(tài)之間的轉(zhuǎn)換, 而用硬件描述語言來描述有限狀態(tài)機(jī), 往往是通過充分發(fā)揮硬件描述語言的抽象建模能力,通過對系統(tǒng)在系統(tǒng)級或寄存器傳輸級進(jìn)行描述來建立有限狀態(tài)機(jī)。EDA 工具的快速發(fā)展,使通過CAD快速設(shè)計(jì)有限狀態(tài)機(jī)自動化成為可能。
傳統(tǒng)上在系統(tǒng)級和寄存器傳輸級完成VHDL 的描述主要分以下幾步:
(1) 分析控制器設(shè)計(jì)指標(biāo), 建立系統(tǒng)算法模型圖;
(2) 分析被控對象的時序狀態(tài), 確定控制器有限狀態(tài)機(jī)的各個狀態(tài)及輸入.輸出條件;
(3) 應(yīng)用VHDL 語言完成描述。
使用XILINX的ISE6.1軟件包的輔助工具STATECAD能加速有限狀態(tài)機(jī)設(shè)計(jì),大大簡化狀態(tài)機(jī)的設(shè)計(jì)過程,實(shí)現(xiàn)狀態(tài)機(jī)設(shè)計(jì)的自動化。使用STATECAD進(jìn)行狀態(tài)機(jī)設(shè)計(jì)的流程如下:
(1) 分析控制器設(shè)計(jì)指標(biāo), 建立系統(tǒng)算法模型圖;
(2) 分析被控對象的時序狀態(tài), 確定控制器有限狀態(tài)機(jī)的各個狀態(tài)及輸入.輸出條件;
(3) 在STATECAD中輸入有限狀態(tài)機(jī)狀態(tài)圖,自動產(chǎn)生VHDL模型描述,使用STATEBENCH進(jìn)行狀態(tài)轉(zhuǎn)移分析,分析無誤后使用導(dǎo)出VHDL模型塊到ISE中進(jìn)行仿真后綜合,實(shí)現(xiàn)到CPLD或FPGA的映射。
設(shè)計(jì)人員的主要工作在第一步。第二步,第三步基本上可以通過STATECAD完成有限狀態(tài)機(jī)的自動生成和分析,還可以利用分析結(jié)果來對被控對象的邏輯進(jìn)行分析,改進(jìn),完善系統(tǒng)控制邏輯。
在需要并行處理的場合,往往需要采用多狀態(tài)機(jī)來完成系統(tǒng)的控制任務(wù),這時狀態(tài)機(jī)之間的同步問題往往是設(shè)計(jì)者需要仔細(xì)考慮的問題。如果采用完全人工輸入代碼的方法來設(shè)計(jì),往往力不從心。采用STATECAD完成整個控制邏輯的設(shè)計(jì)并對設(shè)計(jì)結(jié)果進(jìn)行驗(yàn)證更能體現(xiàn)CAD設(shè)計(jì)方法的優(yōu)勢,加速產(chǎn)品開發(fā)進(jìn)度,提高設(shè)計(jì)生產(chǎn)率。
下面以一個雙狀態(tài)機(jī)設(shè)計(jì)過程來介紹如何使用STATECAD進(jìn)行多狀態(tài)機(jī)的協(xié)同設(shè)計(jì)。
有二個狀態(tài)機(jī),一個負(fù)責(zé)對M0寫,一個負(fù)責(zé)對M0讀操作,為了簡單起見,系統(tǒng)已經(jīng)盡量簡化了。
負(fù)責(zé)對M0寫的狀態(tài)機(jī)包括四個狀態(tài):
STATE0:寫狀態(tài)機(jī)復(fù)位后初始化;
Write0:對M0寫,寫滿4個轉(zhuǎn)到M0full;
M0full:M0滿狀態(tài);
評論