版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
多狀態(tài)機(jī)的協(xié)同設(shè)計(jì)
隨著微電子技術(shù)的迅速發(fā)展,人們對(duì)數(shù)字系統(tǒng)的需求也在提高[1]。不僅要有完善的功能,而且對(duì)速度也提出了很高的要求。對(duì)于大部分?jǐn)?shù)字系統(tǒng),都可以劃分為控制單元和數(shù)據(jù)單元兩個(gè)組成部分。通常,控制單元的主體是一個(gè)有限狀態(tài)機(jī),它接收外部信號(hào)以及數(shù)據(jù)單元產(chǎn)生的狀態(tài)信息,產(chǎn)生控制信號(hào)序列。有限狀態(tài)機(jī)設(shè)計(jì)的關(guān)鍵是如何把一個(gè)實(shí)際的時(shí)序邏輯關(guān)系抽象成一個(gè)時(shí)序邏輯函數(shù),傳統(tǒng)的電路圖輸入法通過(guò)直接設(shè)計(jì)寄存器組來(lái)實(shí)現(xiàn)各個(gè)狀態(tài)之間的轉(zhuǎn)換,而用硬件描述語(yǔ)言來(lái)描述有限狀態(tài)機(jī),往往是通過(guò)充分發(fā)揮硬件描述語(yǔ)言的抽象建模能力,通過(guò)對(duì)系統(tǒng)在系統(tǒng)級(jí)或寄存器傳輸級(jí)進(jìn)行描述來(lái)建立有限狀態(tài)機(jī)。EDA工具的快速發(fā)展,使通過(guò)CAD快速設(shè)計(jì)有限狀態(tài)機(jī)自動(dòng)化成為可能。
傳統(tǒng)上在系統(tǒng)級(jí)和寄存器傳輸級(jí)完成VHDL的描述主要分以下幾步:
(1)分析控制器設(shè)計(jì)指標(biāo),建立系統(tǒng)算法模型圖;
(2)分析被控對(duì)象的時(shí)序狀態(tài),確定控制器有限狀態(tài)機(jī)的各個(gè)狀態(tài)及輸入.輸出條件;
(3)應(yīng)用VHDL語(yǔ)言完成描述。
使用XILINX的軟件包的輔助工具STATECAD能加速有限狀態(tài)機(jī)設(shè)計(jì),大大簡(jiǎn)化狀態(tài)機(jī)的設(shè)計(jì)過(guò)程,實(shí)現(xiàn)狀態(tài)機(jī)設(shè)計(jì)的自動(dòng)化。使用STATECAD進(jìn)行狀態(tài)機(jī)設(shè)計(jì)的流程
(1)分析控制器設(shè)計(jì)指標(biāo),建立系統(tǒng)算法模型圖;
(2)分析被控對(duì)象的時(shí)序狀態(tài),確定控制器有限狀態(tài)機(jī)的各個(gè)狀態(tài)及輸入.輸出條件;
(3)在STATECAD中輸入有限狀態(tài)機(jī)狀態(tài)圖,自動(dòng)產(chǎn)生VHDL模型描述,使用STATEBENCH進(jìn)行狀態(tài)轉(zhuǎn)移分析,分析無(wú)誤后使用導(dǎo)出VHDL模型塊到ISE中進(jìn)行仿真后綜合,實(shí)現(xiàn)到CPLD或FPGA的映射。
設(shè)計(jì)人員的主要工作在第一步。第二步,第三步基本上可以通過(guò)STATECAD完成有限狀態(tài)機(jī)的自動(dòng)生成和分析,還可以利用分析結(jié)果來(lái)對(duì)被控對(duì)象的邏輯進(jìn)行分析,改進(jìn),完善系統(tǒng)控制邏輯。
在需要并行處理的場(chǎng)合,往往需要采用多狀態(tài)機(jī)來(lái)完成系統(tǒng)的控制任務(wù),這時(shí)狀態(tài)機(jī)之間的同步問(wèn)題往往是設(shè)計(jì)者需要仔細(xì)考慮的問(wèn)題。如果采用完全人工輸入代碼的方法來(lái)設(shè)計(jì),往往力不從心。采用STATECAD完成整個(gè)控制邏輯的設(shè)計(jì)并對(duì)設(shè)計(jì)結(jié)果進(jìn)行驗(yàn)證更能體現(xiàn)CAD設(shè)計(jì)方法的優(yōu)勢(shì),加速產(chǎn)品開(kāi)發(fā)進(jìn)度,提高設(shè)計(jì)生產(chǎn)率。
下面以一個(gè)雙狀態(tài)機(jī)設(shè)計(jì)過(guò)程來(lái)介紹如何使用STATECAD進(jìn)行多狀態(tài)機(jī)的協(xié)同設(shè)計(jì)。
有二個(gè)狀態(tài)機(jī),一個(gè)負(fù)責(zé)對(duì)M0寫,一個(gè)負(fù)責(zé)對(duì)M0讀操作,為了簡(jiǎn)單起見(jiàn),系統(tǒng)已經(jīng)盡量簡(jiǎn)化了。
負(fù)責(zé)對(duì)M0寫的狀態(tài)機(jī)包括四個(gè)狀態(tài):
STATE0:寫狀態(tài)機(jī)復(fù)位后初始化;
write0:對(duì)M0寫,寫滿4個(gè)轉(zhuǎn)到m0full;
m0full:M0滿狀態(tài);
m0writewait:等待。M0滿時(shí)轉(zhuǎn)入write0狀態(tài)。
負(fù)責(zé)對(duì)M0讀的狀態(tài)機(jī)包括四個(gè)狀態(tài):
STATE1:讀狀態(tài)機(jī)復(fù)位后初始化
read0:對(duì)M0讀,讀4個(gè)轉(zhuǎn)到m0empty
m0empty:M0空狀態(tài)
m0readwait:等待。M0空時(shí)轉(zhuǎn)入read0狀態(tài)
負(fù)責(zé)對(duì)M0寫的狀態(tài)機(jī)必須知道M0是空的,而負(fù)責(zé)對(duì)M0讀的狀態(tài)機(jī)必須知道M0是滿的才能讀。讀完了通知負(fù)責(zé)對(duì)M0寫的狀態(tài)機(jī)M0是空的,可以寫了。二個(gè)狀態(tài)機(jī)同時(shí)并行工作。M0寫的狀態(tài)機(jī)在寫操作完了,就等待M0空。M0讀的狀態(tài)機(jī)在讀操作完了,就等待M0滿。在STATECAD中,狀態(tài)本身可以作為其他狀態(tài)機(jī)的轉(zhuǎn)移條件。這也正是在進(jìn)行多狀態(tài)機(jī)的協(xié)同設(shè)計(jì)中最需要的功能,能大大方便多狀態(tài)機(jī)的設(shè)計(jì)。
輸入完?duì)顟B(tài)圖,就基本完成了狀態(tài)機(jī)的設(shè)計(jì)過(guò)程。進(jìn)行邏輯優(yōu)化后,使用STATEBENCH進(jìn)行狀態(tài)轉(zhuǎn)移分析。以下是自動(dòng)狀態(tài)轉(zhuǎn)移模擬波形。
由以上的波形看到狀態(tài)機(jī)的工作過(guò)程符合設(shè)計(jì)邏輯。對(duì)單獨(dú)的器件操作也許不需要采用多狀態(tài)機(jī)的設(shè)計(jì)方法,但在多器件需要并行工作時(shí),多狀態(tài)機(jī)的協(xié)同設(shè)計(jì)就顯得必要了。導(dǎo)出VHDL模型塊到ISE中進(jìn)行仿真后綜合,這里就不多講了,以下是產(chǎn)生的代碼:
--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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淺談我國(guó)精密儀器與裝備的現(xiàn)狀和發(fā)展
- 腸道微生態(tài)行業(yè)發(fā)展趨勢(shì)
- 石河子大學(xué)《醫(yī)藥數(shù)理統(tǒng)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《試驗(yàn)設(shè)計(jì)與數(shù)據(jù)分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《解析幾何》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《健康評(píng)估》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《阿拉伯國(guó)家歷史與文化常識(shí)》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《室外空間設(shè)計(jì)方法》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《矩陣分析》2021-2022學(xué)年第一學(xué)期期末試卷
- 父親的病閱讀題
- 2024年山東省公務(wù)員考試《行測(cè)》真題及答案解析
- (一模)寧波市2024學(xué)年第一學(xué)期高考模擬考試 歷史試卷(含答案)
- 山東省棗莊市滕州市2024-2025學(xué)年九年級(jí)上學(xué)期11月期中物理試題(無(wú)答案)
- 天津市河?xùn)|區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期中數(shù)學(xué)試卷(含答案)
- 2024新版(粵教滬教版)三年級(jí)英語(yǔ)上冊(cè)單詞帶音標(biāo)
- 拆違服務(wù)合同模板
- 2025屆高三聽(tīng)力技巧指導(dǎo)-預(yù)讀、預(yù)測(cè)
- GB/T 31486-2024電動(dòng)汽車用動(dòng)力蓄電池電性能要求及試驗(yàn)方法
- 國(guó)企兩書一協(xié)議參考范本
- 2024年安徽省滁州市瑯琊區(qū)城市管理行政執(zhí)法局招聘15人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 生成式人工智能數(shù)據(jù)安全風(fēng)險(xiǎn)及其應(yīng)對(duì)
評(píng)論
0/150
提交評(píng)論