




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
多狀態機的協同設計
隨著微電子技術的迅速發展,人們對數字系統的需求也在提高[1]。不僅要有完善的功能,而且對速度也提出了很高的要求。對于大部分數字系統,都可以劃分為控制單元和數據單元兩個組成部分。通常,控制單元的主體是一個有限狀態機,它接收外部信號以及數據單元產生的狀態信息,產生控制信號序列。有限狀態機設計的關鍵是如何把一個實際的時序邏輯關系抽象成一個時序邏輯函數,傳統的電路圖輸入法通過直接設計寄存器組來實現各個狀態之間的轉換,而用硬件描述語言來描述有限狀態機,往往是通過充分發揮硬件描述語言的抽象建模能力,通過對系統在系統級或寄存器傳輸級進行描述來建立有限狀態機。EDA工具的快速發展,使通過CAD快速設計有限狀態機自動化成為可能。
傳統上在系統級和寄存器傳輸級完成VHDL的描述主要分以下幾步:
(1)分析控制器設計指標,建立系統算法模型圖;
(2)分析被控對象的時序狀態,確定控制器有限狀態機的各個狀態及輸入.輸出條件;
(3)應用VHDL語言完成描述。
使用XILINX的軟件包的輔助工具STATECAD能加速有限狀態機設計,大大簡化狀態機的設計過程,實現狀態機設計的自動化。使用STATECAD進行狀態機設計的流程
(1)分析控制器設計指標,建立系統算法模型圖;
(2)分析被控對象的時序狀態,確定控制器有限狀態機的各個狀態及輸入.輸出條件;
(3)在STATECAD中輸入有限狀態機狀態圖,自動產生VHDL模型描述,使用STATEBENCH進行狀態轉移分析,分析無誤后使用導出VHDL模型塊到ISE中進行仿真后綜合,實現到CPLD或FPGA的映射。
設計人員的主要工作在第一步。第二步,第三步基本上可以通過STATECAD完成有限狀態機的自動生成和分析,還可以利用分析結果來對被控對象的邏輯進行分析,改進,完善系統控制邏輯。
在需要并行處理的場合,往往需要采用多狀態機來完成系統的控制任務,這時狀態機之間的同步問題往往是設計者需要仔細考慮的問題。如果采用完全人工輸入代碼的方法來設計,往往力不從心。采用STATECAD完成整個控制邏輯的設計并對設計結果進行驗證更能體現CAD設計方法的優勢,加速產品開發進度,提高設計生產率。
下面以一個雙狀態機設計過程來介紹如何使用STATECAD進行多狀態機的協同設計。
有二個狀態機,一個負責對M0寫,一個負責對M0讀操作,為了簡單起見,系統已經盡量簡化了。
負責對M0寫的狀態機包括四個狀態:
STATE0:寫狀態機復位后初始化;
write0:對M0寫,寫滿4個轉到m0full;
m0full:M0滿狀態;
m0writewait:等待。M0滿時轉入write0狀態。
負責對M0讀的狀態機包括四個狀態:
STATE1:讀狀態機復位后初始化
read0:對M0讀,讀4個轉到m0empty
m0empty:M0空狀態
m0readwait:等待。M0空時轉入read0狀態
負責對M0寫的狀態機必須知道M0是空的,而負責對M0讀的狀態機必須知道M0是滿的才能讀。讀完了通知負責對M0寫的狀態機M0是空的,可以寫了。二個狀態機同時并行工作。M0寫的狀態機在寫操作完了,就等待M0空。M0讀的狀態機在讀操作完了,就等待M0滿。在STATECAD中,狀態本身可以作為其他狀態機的轉移條件。這也正是在進行多狀態機的協同設計中最需要的功能,能大大方便多狀態機的設計。
輸入完狀態圖,就基本完成了狀態機的設計過程。進行邏輯優化后,使用STATEBENCH進行狀態轉移分析。以下是自動狀態轉移模擬波形。
由以上的波形看到狀態機的工作過程符合設計邏輯。對單獨的器件操作也許不需要采用多狀態機的設計方法,但在多器件需要并行工作時,多狀態機的協同設計就顯得必要了。導出VHDL模型塊到ISE中進行仿真后綜合,這里就不多講了,以下是產生的代碼:
--D:“XILINXTUTORIAL“
LIBRARYieee;
USE_logic_;
LIBRARYieee;
USE_logic_;
ENTITYSHELL_DUOZTJIIS
PORT(CLK,RESET:INstd_logic;
dcounter0,dcounter1:OUTstd_logic);
SIGNALBP_dcounter0,BP_dcounter1,readcounter0,readcounter1:std_logic;
END;
ARCHITECTUREBEHAVIOROFSHELL_DUOZTJIIS
SIGNALsreg:std_logic_vector(1DOWNTO0);
SIGNALnext_sreg:std_logic_vector(1DOWNTO0);
CONSTANTm0full:std_logic_vector(1DOWNTO0):="00";
CONSTANTm0writewait:std_logic_vector(1DOWNTO0):="01";
CONSTANTSTATE0:std_logic_vector(1DOWNTO0):="10";
CONSTANTwrite0:std_logic_vector(1DOWNTO0):="11";
SIGNALsreg1:std_logic_vector(1DOWNTO0);
SIGNALnext_sreg1:std_l
ogic_vector(1DOWNTO0);
CONSTANTm0empty:std_logic_vector(1DOWNTO0):="00";
CONSTANTm0readwait:std_logic_vector(1DOWNTO0):="01";
CONSTANTread0:std_logic_vector(1DOWNTO0):="10";
CONSTANTSTATE1:std_logic_vector(1DOWNTO0):="11";
SIGNALnext_BP_dcounter0,next_BP_dcounter1,next_readcounter0,
next_readcounter1:std_logic;
SIGNALBP_dcounter:std_logic_vector(1DOWNTO0);
SIGNALdcounter:std_logic_vector(1DOWNTO0);
SIGNALreadcounter:std_logic_vector(1DOWNTO0);
BEGIN
PROCESS(CLK,next_sreg,next_BP_dcounter1,next_BP_dcounter0)
BEGIN
IFCLK=‘1‘ANDCLK‘eventTHEN
sreg=next_sreg;
BP_dcounter1=next_BP_dcounter1;
BP_dcounter0=next_BP_dcounter0;
ENDIF;
ENDPROCESS;
PROCESS(CLK,next_sreg1,next_readcounter1,next_readcounter0)
BEGIN
IFCLK=‘1‘ANDCLK‘eventTHEN
sreg1=next_sreg1;
readcounter1=next_readcounter1;
readcounter0=next_readcounter0;
ENDIF;
ENDPROCESS;
PROCESS(sreg,sreg1,BP_dcounter0,BP_dcounter1,readcounter0,readcounter1,
RESET,BP_dcounter,readcounter)
BEGIN
next_BP_dcounter0=BP_dcounter0;next_BP_dcounter1=BP_dcounter1;
next_readcounter0=readcounter0;next_readcounter1=readcounter1;
BP_dcounter=((std_logic_vector‘(BP_dcounter1,BP_dcounter0)));
readcounter=((std_logic_vector‘(readcounter1,readcounter0)));
next_sreg=m0full;
next_sreg1=m0empty;
IF(RESET=‘1‘)THEN
next_sreg=STATE0;
BP_dcounter=(std_logic_vector‘("00"));
ELSE
CASEsregIS
WHENm0full=
next_sreg=m0writewait;
BP_dcounter=((std_logic_vector‘(BP_dcounter1,BP_dcounter0)));
WHENm0writewait=
IF((sreg1=m0empty))THEN
next_sreg=write0;
BP_dcounter=((std_logic_vector‘(BP_dcounter1,BP_dcounter0))+std_logic_vector‘("01"));
ELSE
next_sreg=m0writewait;
BP_dcounter=((std_logic_vector‘(BP_dcounter1,BP_dcounter0)));
ENDIF;
WHENSTATE0=
next_sreg=write0;
BP_dcounter=((std_logic_vector‘(BP_dcounter1,BP_dcounter0))+
std_logic_vector‘("01"));
WHENwrite0=
IF(BP_dcounter0=‘1‘ANDBP_dcounter1=‘1‘)THEN
next_sreg=m0full;
BP_dcounter=(std_logic_vector‘("00"));
ELSE
next_sreg=write0;
BP_dcounter=((std_logic_vector‘(BP_dcounter1,BP_dcounter0))+
std_logic_vector‘("01"));
ENDIF;
WHENOTHERS=
ENDCASE;
ENDIF;
IF(RESET=‘1‘)THEN
next_sreg1=STATE1;
readcounter=(std_logic_vector‘("00"));
ELSE
CASEsreg1IS
WHENm0empty=
next_sreg1=m0readwait;
readcounter=((std_logic_vector‘(readcounter1,readcounter0)));
WHENm0readwait=
IF((sreg
=m0full))THEN
next_sreg1=read0;
readcounter=((std_logic_vector‘(readcounter1,readcounter0))+
std_logic_vector‘("01"));
ELSE
next_sreg1=m0readwait;
readcounter=((std_logic_vector‘(readcounter1,readcounter0)));
ENDIF;
WHENread0=
IF(readcounter0=‘1‘ANDreadcounter1=‘1‘)THEN
next_sreg1=m0empty;
readcounter=(std_logic_vector‘("00"));
ELSE
next_sreg1=read0;
readcounter=((std_logic_vector‘(readcounter1,readcounter0))+
std_logic_vector‘("01"));
ENDIF;
WHENSTATE1=
IF((sreg=m0full))THEN
next_sreg1=read0;
readcounter=((std_logic_vector‘(readcounter1,readcounter0))+std_logic_vector‘("01"));
ELSE
next_sreg1=STATE1;
readcounter=((std_logic_vector‘(readcounter1,readcounter0)));
ENDIF;
WHENOTHERS=
ENDCASE;
ENDIF;
next_BP_dcounter1=BP_dcounter(1);
next_BP_dcounter0=BP_dcounter(0);
next_readcounter1=readcounter(1);
next_readcounter0=readcounter(0);
E
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校氣象園管理制度
- 學校維修處管理制度
- 學校防泄漏管理制度
- 學生灶員工管理制度
- 學院水電科管理制度
- 安全標識與管理制度
- 安寧照護室管理制度
- 安置點衛生管理制度
- 定制化班組管理制度
- 實施清單化管理制度
- 《食品經營許可證》撤銷申請書模板
- 智能化選煤廠建設技術規范
- 中華文化選講(吉林師范大學)智慧樹知到期末考試答案2024年
- 2024江蘇蘇州市昆山市惠民物業管理有限公司招聘筆試參考題庫附帶答案詳解
- 中華民族共同體概論課件專家版2第二講 樹立正確的中華民族歷史觀
- 【真題】2023年無錫市中考道德與法治試卷(含答案解析)
- 石油的形成與開采
- 3D打印技術與應用智慧樹知到期末考試答案2024年
- 天然氣安全周知卡
- 查經資料大全
- 人工智能對人力資源管理的改變
評論
0/150
提交評論