EDA技術(shù)第5章:VHDL狀態(tài)機(jī)_第1頁
EDA技術(shù)第5章:VHDL狀態(tài)機(jī)_第2頁
EDA技術(shù)第5章:VHDL狀態(tài)機(jī)_第3頁
EDA技術(shù)第5章:VHDL狀態(tài)機(jī)_第4頁
EDA技術(shù)第5章:VHDL狀態(tài)機(jī)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

EDA技術(shù)與VHDL第5章VHDL狀態(tài)機(jī)

5.1狀態(tài)機(jī)設(shè)計(jì)相關(guān)語句

5.1.1類型定義語句TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義OF基本數(shù)據(jù)類型;或TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義;TYPEst1ISARRAY(0TO15)OFSTD_LOGIC;TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);

TYPEm_stateIS(st0,st1,st2,st3,st4,st5);SIGNALpresent_state,next_state:m_state;

TYPEBOOLEANIS(FALSE,TRUE);

5.1狀態(tài)機(jī)設(shè)計(jì)相關(guān)語句

5.1.1類型定義語句TYPEmy_logicIS('1','Z','U','0');SIGNALs1:my_logic;s1<='Z';SUBTYPE子類型名

IS基本數(shù)據(jù)類型

RANGE約束范圍;

SUBTYPEdigitsISINTEGERRANGE0to9;

5.1狀態(tài)機(jī)設(shè)計(jì)相關(guān)語句

5.1.2狀態(tài)機(jī)的優(yōu)勢1.狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn);2.由于狀態(tài)機(jī)的結(jié)構(gòu)相對簡單,設(shè)計(jì)方案相對固定;3、狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊;4、與VHDL的其他描述方式相比,狀態(tài)機(jī)的VHDL表述豐富多樣、程序?qū)哟畏置?,結(jié)構(gòu)清晰,易讀易懂;在排錯(cuò)、修改和模塊移植方面也有其獨(dú)到的好處;5、在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢。6、高可靠性。5.1狀態(tài)機(jī)設(shè)計(jì)相關(guān)語句

5.1.3狀態(tài)機(jī)結(jié)構(gòu)1.說明部分

ARCHITECTURE...ISTYPEFSM_STIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:FSM_ST;...5.1狀態(tài)機(jī)設(shè)計(jì)相關(guān)語句

5.1.3狀態(tài)機(jī)結(jié)構(gòu)2.主控時(shí)序進(jìn)程

圖5-1一般狀態(tài)機(jī)結(jié)構(gòu)框圖

5.1狀態(tài)機(jī)設(shè)計(jì)相關(guān)語句

5.1.3狀態(tài)機(jī)結(jié)構(gòu)3.主控組合進(jìn)程

4.輔助進(jìn)程

【例5-1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYs_machineISPORT(clk,reset:INSTD_LOGIC;state_inputs:INSTD_LOGIC_VECTOR(0TO1);comb_outputs:OUTINTEGERRANGE0TO15);ENDs_machine;ARCHITECTUREbehvOFs_machineISTYPEFSM_STIS(s0,s1,s2,s3);--數(shù)據(jù)類型定義,狀態(tài)符號(hào)化

SIGNALcurrent_state,next_state:FSM_ST;--將現(xiàn)態(tài)和次態(tài)定義為新的數(shù)據(jù)類型BEGINREG:PROCESS(reset,clk)--主控時(shí)序進(jìn)程

BEGINIFreset='1'THENcurrent_state<=s0;--檢測異步復(fù)位信號(hào)

ELSIFclk='1'ANDclk'EVENTTHENcurrent_state<=next_state;ENDIF;ENDPROCESS;COM:PROCESS(current_state,state_Inputs)--主控組合進(jìn)程

(接下頁)BEGINCASEcurrent_stateISWHENs0=>comb_outputs<=5;IFstate_inputs="00"THENnext_state<=s0;ELSEnext_state<=s1;ENDIF;WHENs1=>comb_outputs<=8;IFstate_inputs="00"THENnext_state<=s1;ELSEnext_state<=s2;ENDIF;WHENs2=>comb_outputs<=12;IFstate_inputs="11"THENnext_state<=s0;ELSEnext_state<=s3;ENDIF;WHENs3=>comb_outputs<=14;IFstate_inputs="11"THENnext_state<=s3;ELSEnext_state<=s0;ENDIF;ENDcase;ENDPROCESS;ENDbehv;

5.1狀態(tài)機(jī)設(shè)計(jì)相關(guān)語句

5.1.3狀態(tài)機(jī)結(jié)構(gòu)圖5-2例5-1狀態(tài)機(jī)的工作時(shí)序

5.2Moore狀態(tài)機(jī)

5.2.1多進(jìn)程狀態(tài)機(jī)圖5-3ADC0809工作時(shí)序

5.2Moore狀態(tài)機(jī)

5.2.1多進(jìn)程狀態(tài)機(jī)圖5-4控制ADC0809采樣狀態(tài)圖

5.2Moore狀態(tài)機(jī)

5.2.1多進(jìn)程狀態(tài)機(jī)圖5-5采樣狀態(tài)機(jī)結(jié)構(gòu)框圖

【例5-2】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYADCINTISPORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);--來自0809轉(zhuǎn)換好的8位數(shù)據(jù)CLK:INSTD_LOGIC;--狀態(tài)機(jī)工作時(shí)鐘EOC:INSTD_LOGIC;--轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換ALE:OUTSTD_LOGIC;--8個(gè)模擬信號(hào)通道地址鎖存信號(hào)START:OUTSTD_LOGIC;--轉(zhuǎn)換開始信號(hào)OE:OUTSTD_LOGIC;--數(shù)據(jù)輸出3態(tài)控制信號(hào)ADDA:OUTSTD_LOGIC;--信號(hào)通道最低位控制信號(hào)LOCK0:OUTSTD_LOGIC;--觀察數(shù)據(jù)鎖存時(shí)鐘Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位數(shù)據(jù)輸出ENDADCINT;ARCHITECTUREbehavOFADCINTISTYPEstatesIS(st0,st1,st2,st3,st4);--定義各狀態(tài)子類型

SIGNALcurrent_state,next_state:states:=st0;SIGNALREGL :STD_LOGIC_VECTOR(7DOWNTO0);SIGNALLOCK :STD_LOGIC;--轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號(hào)

BEGINADDA<='1';--當(dāng)ADDA<='0',模擬信號(hào)進(jìn)入通道IN0;當(dāng)ADDA<='1',則進(jìn)入通道IN1Q<=REGL;LOCK0<=LOCK;COM:PROCESS(current_state,EOC)BEGIN--規(guī)定各狀態(tài)轉(zhuǎn)換方式

CASEcurrent_stateIS

(接下頁)WHENst0=>ALE<='0';START<='0';LOCK<='0';OE<='0';next_state<=st1;--0809初始化

WHENst1=>ALE<='1';START<='1';LOCK<='0';OE<='0';next_state<=st2;--啟動(dòng)采樣

WHENst2=>ALE<='0';START<='0';LOCK<='0';OE<='0';IF(EOC='1')THENnext_state<=st3;--EOC=1表明轉(zhuǎn)換結(jié)束

ELSEnext_state<=st2;;--轉(zhuǎn)換未結(jié)束,繼續(xù)等待ENDIFWHENst3=>ALE<='0';START<='0';LOCK<='0';OE<='1';next_state<=st4;--開啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)

WHENst4=>ALE<='0';START<='0';LOCK<='1';OE<='1';next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM;REG:PROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;ENDPROCESSREG;--由信號(hào)current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REGLATCH1:PROCESS(LOCK)--此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入

BEGINIFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;ENDIF;ENDPROCESSLATCH1;ENDbehav;5.2Moore狀態(tài)機(jī)

5.2.1多進(jìn)程狀態(tài)機(jī)圖5-6ADC0809采樣狀態(tài)機(jī)工作時(shí)序

【例5-3】COM1:PROCESS(current_state,EOC)BEGINCASEcurrent_stateISWHENst0=>next_state<=st1;WHENst1=>next_state<=st2;WHENst2=>IF(EOC='1')THENnext_state<=st3; ELSEnext_state<=st2;ENDIF;WHENst3=>next_state<=st4;--開啟OEWHENst4=>next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM1;COM2:PROCESS(current_state)BEGINCASEcurrent_stateISWHENst0=>ALE<='0';START<='0';LOCK<='0';OE<='0';WHENst1=>ALE<='1';START<='1';LOCK<='0';OE<='0';WHENst2=>ALE<='0';START<='0';LOCK<='0';OE<='0';WHENst3=>ALE<='0';START<='0';LOCK<='0';OE<='1';WHENst4=>ALE<='0';START<='0';LOCK<='1';OE<='1';WHENOTHERS=>ALE<='0';START<='0';LOCK<='0';ENDCASE;

ENDPROCESSCOM2;

5.2Moore狀態(tài)機(jī)

5.2.2單進(jìn)程Moore狀態(tài)機(jī)【例5-4】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMOORE1ISPORT(DATAIN:INSTD_LOGIC_VECTOR(1DOWNTO0);CLK,RST:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDMOORE1;ARCHITECTUREbehavOFMOORE1ISTYPEST_TYPEIS(ST0,ST1,ST2,ST3,ST4);SIGNALC_ST:ST_TYPE;BEGIN

PROCESS(CLK,RST)

BEGINIFRST='1'THENC_ST<=ST0;Q<="0000";ELSIFCLK'EVENTANDCLK='1'THEN(接下頁)5.2Moore狀態(tài)機(jī)

5.2.2單進(jìn)程Moore狀態(tài)機(jī)

CASEC_STISWHENST0=>IFDATAIN="10"THENC_ST<=ST1;ELSEC_ST<=ST0;ENDIF;Q<="1001";WHENST1=>IFDATAIN="11"THENC_ST<=ST2;ELSEC_ST<=ST1;ENDIF;Q<="0101";WHENST2=>IFDATAIN="01"THENC_ST<=ST3;ELSEC_ST<=ST0;ENDIF;Q<="1100";WHENST3=>IFDATAIN="00"THENC_ST<=ST4;ELSEC_ST<=ST2;ENDIF;Q<="0010";WHENST4=>IFDATAIN="11"THENC_ST<=ST0;ELSEC_ST<=ST3;ENDIF;Q<="1001";WHENOTHERS=>C_ST<=ST0;ENDCASE;ENDIF;ENDPROCESS;ENDbehav;

5.2Moore狀態(tài)機(jī)

5.2.2單進(jìn)程Moore狀態(tài)機(jī)圖5-7例5-4狀態(tài)機(jī)綜合后的部分主要RTL電路模塊(Synplify綜合)

5.2Moore狀態(tài)機(jī)

5.2.2單進(jìn)程Moore狀態(tài)機(jī)圖5-8例5-4單進(jìn)程狀態(tài)機(jī)工作時(shí)序

5.2Moore狀態(tài)機(jī)

5.2.2單進(jìn)程Moore狀態(tài)機(jī)圖5-9對應(yīng)于例5-4的二進(jìn)程狀態(tài)機(jī)工作時(shí)序圖

5.3Mealy狀態(tài)機(jī)

【例5-5】

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMEALY1ISPORT(CLK,DATAIN,RESET:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDMEALY1;ARCHITECTUREbehavOFMEALY1ISTYPEstatesIS(st0,st1,st2,st3,st4);SIGNALSTX:states;BEGINCOMREG:PROCESS(CLK,RESET)BEGIN--決定轉(zhuǎn)換狀態(tài)的進(jìn)程

IFRESET='1'THENSTX<=ST0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>IFDATAIN='1'THENSTX<=st1;ENDIF;WHENst1=>IFDATAIN='0'THENSTX<=st2;ENDIF;WHENst2=>IFDATAIN='1'THENSTX<=st3;ENDIF;WHENst3=>IFDATAIN='0'THENSTX<=st4;ENDIF;WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;WHENOTHERS=>STX<=st0;ENDCASE;(接下頁)5.3Mealy狀態(tài)機(jī)

ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX,DATAIN)BEGIN--輸出控制信號(hào)的進(jìn)程

CASESTXISWHENst0=>IFDATAIN='1'THENQ<="10000";ELSEQ<="01010";ENDIF;WHENst1=>IFDATAIN='0'THENQ<="10111";ELSEQ<="10100";ENDIF;WHENst2=>IFDATAIN='1'THENQ<="10101";ELSEQ<="10011";ENDIF;WHENst3=>IFDATAIN='0'THENQ<="11011";ELSEQ<="01001";ENDIF;WHENst4=>IFDATAIN='1'THENQ<="11101";ELSEQ<="01101";ENDIF;WHENOTHERS=>Q<="00000";ENDCASE;ENDPROCESSCOM1;ENDbehav;

5.3Mealy狀態(tài)機(jī)

【例5-6】LIBRARYIEEE;--MEALYFSMUSEIEEE.STD_LOGIC_1164.ALL;ENTITYMEALY2ISPORT(CLK,DATAIN,RESET:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDMEALY2;ARCHITECTUREbehavOFMEALY2ISTYPEstatesIS(st0,st1,st2,st3,st4);SIGNALSTX:states;SIGNALQ1:STD_LOGIC_VECTOR(4DOWNTO0);BEGINCOMREG:PROCESS(CLK,RESET)--決定轉(zhuǎn)換狀態(tài)的進(jìn)程

BEGINIFRESET='1'THENSTX<=ST0;ELSIFCLK'EVENTANDCLK='1'THENCASESTXISWHENst0=>IFDATAIN='1'THENSTX<=st1;ENDIF;WHENst1=>IFDATAIN='0'THENSTX<=st2;ENDIF;WHENst2=>IFDATAIN='1'THENSTX<=st3;ENDIF;WHENst3=>IFDATAIN='0'THENSTX<=st4;ENDIF;WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;WHENOTHERS=>STX<=st0;ENDCASE;(接下頁)

5.3Mealy狀態(tài)機(jī)

ENDIF;ENDPROCESSCOMREG;COM1:PROCESS(STX,DATAIN,CLK)--輸出控制信號(hào)的進(jìn)程

VARIABLEQ2:STD_LOGIC_VECTOR(4DOWNTO0);BEGINCASESTXISWHENst0=>IFDATAIN='1'THENQ2:="10000";ELSEQ2:="01010";ENDIF;WHENst1=>IFDATAIN='0'THENQ2:="10111";ELSEQ2:="10100";ENDIF;WHENst2=>IFDATAIN='1'THENQ2:="10101";ELSEQ2:="10011";ENDIF;WHENst3=>IFDATAIN='0'THENQ2:="11011";ELSEQ2:="01001";ENDIF;WHENst4=>IFDATAIN='1'THENQ2:="11101";ELSEQ2:="01101";ENDIF;WHENOTHERS=>Q2:="00000";ENDCASE;IFCLK'EVENTANDCLK='1'THENQ1<=Q2;ENDIF;ENDPROCESSCOM1;Q<=Q1;ENDbehav;

5.3Mealy狀態(tài)機(jī)

圖5-10例5-5狀態(tài)機(jī)工作時(shí)序圖

5.3Mealy狀態(tài)機(jī)

圖5-11例5-6狀態(tài)機(jī)工作時(shí)序圖

5.4狀態(tài)編碼

表5-1控制信號(hào)狀態(tài)編碼表

5.4.1直接輸出型編碼

狀態(tài)

態(tài)

碼STARTALEOELOCKB功

明ST000000初始態(tài)ST111000啟動(dòng)轉(zhuǎn)換ST200001若測得EOC=1時(shí),轉(zhuǎn)下一狀態(tài)ST3ST300100輸出轉(zhuǎn)換好的數(shù)據(jù)ST400110利用LOCK的上升沿將轉(zhuǎn)換好的數(shù)據(jù)鎖存5.4狀態(tài)編碼

5.4.1直接輸出型編碼

【例5-7】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYAD0809IS...PORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);CLK,EOC:INSTD_LOGIC;ALE,START,OE,ADDA:OUTSTD_LOGIC;c_state:OUTSTD_LOGIC_VECTOR(4DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDAD0809;ARCHITECTUREbehavOFAD0809ISSIGNALcurrent_state,next_state:STD_LOGIC_VECTOR(4DOWNTO0);CONSTANTst0:STD_LOGIC_VECTOR(4DOWNTO0):="00000";CONSTANTst1:STD_LOGIC_VECTOR(4DOWNTO0):="11000";CONSTANTst2:STD_LOGIC_VECTOR(4DOWNTO0):="00001";CONSTANTst3:STD_LOGIC_VECTOR(4DOWNTO0):="00100";CONSTANTst4:STD_LOGIC_VECTOR(4DOWNTO0):="00110";SIGNALREGL:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALLOCK:STD_LOGIC;BEGINADDA<='1';Q<=REGL;START<=current_state(4);ALE<=current_state(3);OE<=current_state(2);LOCK<=current_state(1);c_state<=current_state;COM:PROCESS(current_state,EOC)BEGIN--規(guī)定各狀態(tài)轉(zhuǎn)換方式

(接下頁)5.4狀態(tài)編碼

表5-1控制信號(hào)狀態(tài)編碼表

5.4.1直接輸出型編碼

CASEcurrent_stateISWHENst0=>next_state<=st1;--0809初始化

WHENst1=>next_state<=st2;--啟動(dòng)采樣

WHENst2=>IF(EOC='1')THENnext_state<=st3;--EOC=1表明轉(zhuǎn)換結(jié)束

ELSEnext_state<=st2;--轉(zhuǎn)換未結(jié)束,繼續(xù)等待

ENDIF;WHENst3=>next_state<=st4;--開啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)

WHENst4=>next_state<=st0;WHENOTHERS=>next_state<=st0;ENDCASE;ENDPROCESSCOM;REG:PROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENcurrent_state<=next_state;ENDIF;ENDPROCESSREG;--由信號(hào)current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REGLATCH1:PROCESS(LOCK)--此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入

BEGINIFLOCK='1'ANDLOCK'EVENTTHENREGL<=D;ENDIF;ENDPROCESSLATCH1;ENDbehav;

5.4狀態(tài)編碼

圖5-12例5-7狀態(tài)機(jī)工作時(shí)序圖

5.4.1直接輸出型編碼

5.4狀態(tài)編碼

表5-2編碼方式

5.4.2順序編碼

態(tài)順序編碼一位熱碼編碼STATE0000100000STATE1001010000STATE2010001000STATE3011000100STATE4100000010STATE51010000015.4狀態(tài)編碼

5.4.2順序編碼

【例5-8】...SIGNALCRURRENT_STATE,NEXT_STATE:STD_LOGIC_VECTOR(2DOWNTO0);CONSTANTST0:STD_LOGIC_VECTOR(2DOWNTO0):="000";CONSTANTST1:STD_LOGIC_VECTOR(2DOWNTO0):="001";CONSTANTST2:STD_LOGIC_VECTOR(2DOWNTO0):="010";CONSTANTST3:STD_LOGIC_VECTOR(2DOWNTO0):="011";CONSTANTST4:STD_LOGIC_VECTOR(2DOWNTO0):="100";...5.4.3一位熱碼編碼

圖8-13一位熱碼編碼方式選擇對話框

5.5非法狀態(tài)處理

態(tài)st0St1St2St3St4st_ilg1st_ilg2st_ilg3順序編碼00000101001110010111011表5-3剩余狀態(tài)

WHENst_ilg1=>next_state<=st0;WHENst_ilg2=>next_state<=st0;5.5非法狀態(tài)處理

【例5-9】...TYPEstatesIS(st0,st1,st2,st3,st4,

st_ilg1,st_ilg2,st_ilg3);SIGNALcurrent_state,next_state:states;...COM:PROCESS(current_state,state_Inputs)--組合邏輯進(jìn)程BEGINCASEcurrent_stateIS

--確定當(dāng)前狀態(tài)的狀態(tài)值

...

WHENOTHERS=>next_state<=st0;ENDcase;

5.5非法狀態(tài)處理

【例5-10】...alarm<=(st0AND(st1ORst2ORst3ORst4ORst5))OR(st1AND(st0ORst2ORst3ORst4ORst5))OR(st2AND(st0ORst1ORst3ORst4ORst5))OR(st3AND(st0ORst1ORst2ORst4ORst5))OR(st4AND(st0ORst1ORst2ORst3ORst5))OR

(st5AND(st0ORst1ORst2ORst3ORst4));

習(xí)題5-1.

仿照例5-1,將例5-4用兩個(gè)進(jìn)程,即一個(gè)時(shí)序進(jìn)程,一個(gè)組合進(jìn)程表達(dá)出來。5-2.

為確保例5-5的狀態(tài)機(jī)輸出信號(hào)沒有毛刺,試用例5-4的方式構(gòu)成一個(gè)單進(jìn)程狀態(tài),使輸出信號(hào)得到可靠鎖存,在相同輸入信號(hào)條件下,給出兩程序的仿真波形。

5-3.

序列檢測器可用于檢測一組或多組由二進(jìn)制碼組成的脈沖序列信號(hào),當(dāng)序列檢測器連續(xù)收到一組串行二進(jìn)制碼后,如果這組碼與檢測器中預(yù)先設(shè)置的碼相同,則輸出1,否則輸出0。由于這種檢測的關(guān)鍵在于正確碼的收到必須是連續(xù)的,這就要求檢測器必須記住前一次的正確碼及正確序列,直到在連續(xù)的檢測中所收到的每一位碼都與預(yù)置數(shù)的對應(yīng)碼相同。在檢測過程中,任何一位不相等都將回到初始狀態(tài)重新開始檢測。例5-11描述的電路完成對序列數(shù)“11100101”的檢測,當(dāng)這一串序列數(shù)高位在前(左移)串行進(jìn)入檢測器后,若此數(shù)與預(yù)置的密碼數(shù)相同,則輸出“A”,否則仍然輸出“B”。

習(xí)題【例5-11】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSCHKISPORT(DIN,CLK,CLR:INSTD_LOGIC;--串行輸入數(shù)據(jù)位/工作時(shí)鐘/復(fù)位信號(hào)

AB:OUTSTD_LOGIC_VECTOR(3DOWNTO0));--檢測結(jié)果輸出ENDSCHK;ARCHITECTUREbehavOFSCHKISSIGNALQ:INTEGERRANGE0TO8;SIGNALD:STD_LOGIC_VECTOR(7DOWNTO0);--8位待檢測預(yù)置數(shù)(密碼=E5H)BEGIND<="11100101";--8位待檢測預(yù)置數(shù)

PROCESS(CLK,CLR)BEGINIFCLR='1'THENQ<=0;ELSIFCLK'EVENTANDCLK='1'THEN--時(shí)鐘到來時(shí),判斷并處理當(dāng)前輸入的位

CASEQISWHEN0=>IFDIN=D(7)THENQ<=1;ELSEQ<=0;ENDIF;WHEN1=>IFDIN=D(6)THENQ<=2;ELSEQ<=0;ENDIF;WHEN2=>IFDIN=D(5)THENQ<=3;ELSEQ<=0;ENDIF;WHEN3=>IFDIN=D(4)THENQ<=4;ELSEQ<=0;ENDIF;WHEN4=>IFDIN=D(3)THENQ<=5;ELSEQ<=0;ENDIF;WHEN5=>IFDIN=D(2)THENQ<=6;ELSEQ<=0;ENDIF;WHEN6=>IFDIN=D(1)THENQ<=7;ELSEQ<=0;ENDIF;WHEN7=>IFDIN=D(0)THENQ<=8;ELSEQ<=0;ENDIF;WHENOTHERS=>Q<=0;ENDCASE;ENDIF;ENDPROCESS;PROCESS(Q)--檢測結(jié)果判斷輸出

BEGINIFQ=8THENAB<="1010";--序列數(shù)檢測正確,輸出

“A”ELSEAB<="1011";--序列數(shù)檢測錯(cuò)誤,輸出

“B”ENDIF;ENDPROCESS;ENDbehav;

習(xí)題要求1:說明例5-11的代碼表達(dá)的是什么類型的狀態(tài)機(jī),它的優(yōu)點(diǎn)是什么?詳述其功能和對序列數(shù)檢測的邏輯過程。要求2:根據(jù)例5-11寫出由兩個(gè)主控進(jìn)程構(gòu)成的相同功能的符號(hào)化Moore型有限狀態(tài)機(jī),畫出狀態(tài)圖,并給出其仿真測試波形。要求3:將8位待檢測預(yù)置數(shù)作為外部輸入信號(hào),即可以隨時(shí)改變序列檢測器中的比較數(shù)據(jù)。寫出此程序的符號(hào)化單進(jìn)程有限狀態(tài)機(jī)。提示:對于D<=“11100101”,電路需分別不間斷記憶:初始狀態(tài)、1、11、111、

1110、11100、111001、1110010、11100101共9種狀態(tài)。

習(xí)題5-4.

根據(jù)圖5-14(a)所示的狀態(tài)圖,分別按照圖5-14(b)和圖5-14(c)寫出對應(yīng)結(jié)構(gòu)的VHDL狀態(tài)機(jī)。

圖5-14習(xí)題5-4狀態(tài)圖

習(xí)題5-5.

在不改變原代碼功能的條件下用兩種方法改寫例5-2,使其輸出的控制信號(hào)(ALE、START、OE、LOCK)沒有毛刺。方法1:將輸出信號(hào)鎖存后輸出;方法2:使用狀態(tài)碼直接輸出型狀態(tài)機(jī),并比較這三種狀態(tài)機(jī)的特點(diǎn)。

實(shí)驗(yàn)與設(shè)計(jì)實(shí)驗(yàn)5-1.

序列檢測器設(shè)計(jì)實(shí)驗(yàn)5-2.

ADC0809采樣控制電路實(shí)現(xiàn)

實(shí)驗(yàn)5-3.

數(shù)據(jù)采集電路和簡易存儲(chǔ)示波器設(shè)計(jì)

實(shí)驗(yàn)與設(shè)計(jì)圖5-15ADC0809采樣電路系統(tǒng):RSV.bdf實(shí)驗(yàn)與設(shè)計(jì)【例5-12】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10BISPORT(LOCK0,CLR:INSTD_LOGIC;CLK:INSTD_LOGIC;WE:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(8DOWNTO0);CLKOUT:OUTSTD_LOGIC);ENDCNT10B;ARCHITECTUREbehavOFCNT10BISSIGNALCQI:STD_LOGIC_VECTOR(8DOWNTO0);SIGNALCLK0:STD_LOGIC;BEGINCLK0<=LOCK0WHENWE='1'ELSECLK;PROCESS(CLK0,CLR,CQI)BEGINIFCLR='1'THENCQI<="000000000";ELSIFCLK0'EVENTANDCLK0='1'THENCQI<=CQI+1;ENDIF;ENDPROCESS;DOUT<=CQI;CLKOUT<=CLK0;ENDbehav;

實(shí)驗(yàn)與設(shè)計(jì)實(shí)驗(yàn)5-4.

比較器和D/A器件實(shí)現(xiàn)A/D轉(zhuǎn)換功能的電路設(shè)計(jì)

【例5-13】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDAC2ADCISPORT(CLK:INSTD_LOGIC;--計(jì)數(shù)器時(shí)鐘

LM311:INSTD_LOGIC;--LM311輸出,由PIO37口進(jìn)入FPGACLR:INSTD_LOGIC;--計(jì)數(shù)器復(fù)位

DD:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--輸向0832的數(shù)據(jù)

DISPDATA:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--轉(zhuǎn)換數(shù)據(jù)顯示END;ARCHITECTUREDACCOFDAC2ADCISSIGNALCQI:STD_LOGIC_VECTOR(7DOWNTO0);BEGINDD<=CQI;PROCESS(CLK,CLR,LM311)BEGINIFCLR='1'THENCQI<="00000000";ELSIFCLK'EVENTANDCLK='1'THENIFLM311='1'THENCQI<=CQI+1;ENDIF;--如果是高電平,繼續(xù)搜索

ENDIF;--如果出現(xiàn)低電平,即可停止搜索,保存計(jì)數(shù)值于CQI中

ENDPROCESS;DISPDATA<=CQIWHENLM311='0'ELSE"00000000";--將保存于CQI中的數(shù)輸出

END;

實(shí)驗(yàn)與設(shè)計(jì)圖5-16比較器和D/A構(gòu)成A/D電路框圖

實(shí)驗(yàn)5-4.

比較器和D/A器件實(shí)現(xiàn)A/D轉(zhuǎn)換功能的電路設(shè)計(jì)

KX康芯科技實(shí)驗(yàn)與設(shè)計(jì)(4)實(shí)驗(yàn)內(nèi)容2:引腳鎖定及硬件測試。建議選GW48系統(tǒng)的實(shí)驗(yàn)電路模式6(參考附錄圖6),用數(shù)碼8顯示譯碼輸出(PIO46-PIO40),鍵8、鍵7、鍵6和鍵5四位控制輸入,硬件驗(yàn)證譯碼器的工作性能。(5)實(shí)驗(yàn)內(nèi)容3:用第3章介紹的例化語句,按圖5-19的方式連接成頂層設(shè)計(jì)電路(用VHDL表述),圖中的CNT4B是一個(gè)4位二進(jìn)制加法計(jì)數(shù)器,可以由例3-22修改獲得;模塊DECL7S即為例5-18實(shí)體元件,重復(fù)以上實(shí)驗(yàn)過程。注意圖5-20中的tmp是4位總線,led是7位總線。對于引腳鎖定和實(shí)驗(yàn),建議選電路模式6,用數(shù)碼8顯示譯碼輸出,用鍵3作為時(shí)鐘輸入(每按2次鍵為1個(gè)時(shí)鐘脈沖),或直接接時(shí)鐘信號(hào)clock0。(8)實(shí)驗(yàn)報(bào)告:根據(jù)以上的實(shí)驗(yàn)內(nèi)容寫出實(shí)驗(yàn)報(bào)告,包括程序設(shè)計(jì)、軟件編譯、仿真分析、硬件測試和實(shí)驗(yàn)過程;設(shè)計(jì)程序、程序分析報(bào)告、仿真波形圖及其分析報(bào)告。

實(shí)驗(yàn)與設(shè)計(jì)圖5-18共陰數(shù)碼管及其電路

實(shí)驗(yàn)與設(shè)計(jì)圖5-19計(jì)數(shù)器和譯碼器連接電路的頂層文件原理圖

實(shí)驗(yàn)與設(shè)計(jì)5-2.8位數(shù)碼掃描顯示電路設(shè)計(jì)(1)實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)硬件掃描顯示電路的設(shè)計(jì)。(2)實(shí)驗(yàn)原理:圖5-20所示的是8位數(shù)碼掃描顯示電路,其中每個(gè)數(shù)碼管的8個(gè)段:h、g、f、e、d、c、b、a(h是小數(shù)點(diǎn))都分別連在一起,8個(gè)數(shù)碼管分別由8個(gè)選通信號(hào)k1、k2、…k8來選擇。被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。如在某一時(shí)刻,k3為高電平,其余選通信號(hào)為低電平,這時(shí)僅k3對應(yīng)的數(shù)碼管顯示來自段信號(hào)端的數(shù)據(jù),而其它7個(gè)數(shù)碼管呈現(xiàn)關(guān)閉狀態(tài)。根據(jù)這種電路狀況,如果希望在8個(gè)數(shù)碼管顯示希望的數(shù)據(jù),就必須使得8個(gè)選通信號(hào)k1、k2、…k8分別被單獨(dú)選通,并在此同時(shí),在段信號(hào)輸入口加上希望在該對應(yīng)數(shù)碼管上顯示的數(shù)據(jù),于是隨著選通信號(hào)的掃變,就能實(shí)現(xiàn)掃描顯示的目的。

實(shí)驗(yàn)與設(shè)計(jì)圖5-208位數(shù)碼掃描顯示電路

【例5-19】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCAN_LEDISPORT(CLK:INSTD_LOGIC;SG:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--段控制信號(hào)輸出

BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--位控制信號(hào)輸出

END;ARCHITECTUREoneOFSCAN_LEDISSIGNALCNT8:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALA:INTEGERRANGE0TO15;BEGINP1:PROCESS(CNT8)BEGINCASECNT8ISWHEN"000"=>BT<="00000001";A<=1;WHEN"001"=>BT<="00000010";A<=3;WHEN"010"=>BT<="00000100";A<=5;WHEN"011"=>BT<="00001000";A<=7;WHEN"100"=>BT<="00010000";A<=9;WHEN"101"=>BT<="00100000";A<=11;WHEN"110"=>BT<="01000000";A<=13;WHEN"111"=>BT<="10000000";A<=15;WHENOTHERS=>NULL;ENDCASE;ENDPROCESSP1;

接下頁P(yáng)2:PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENCNT8<=CNT8+1;ENDIF; ENDPROCESSP2;P3:PROCESS(A)–-譯碼電路

BEGINCASEAISWHEN0=>SG<="0111111";WHEN1=>SG<="0000110";WHEN2=>SG<="1011011";WHEN3=>SG<="1001111";WHEN4=>SG<="1100110";WHEN5=>SG<="1101101";WHEN6=>SG<="1111101";WHEN7=>SG<="0000111";WHEN8=>SG<="1111111";WHEN9=>SG<="1101111";WHEN10=>SG<="1110111";WHEN11=>SG<="1111100";WHEN12=>SG<="0111001";WHEN13=>SG<="1011110";WHEN14=>SG<="1111001";WHEN15=>SG<="1110001";WHENOTHERS=>NULL;ENDCASE;ENDPROCESSP3;END;實(shí)驗(yàn)與設(shè)計(jì)(3)實(shí)驗(yàn)內(nèi)容1:說明例5-19中各語句的含義,以及該例的整體功能。對該例進(jìn)行編輯、編譯、綜合、適配、仿真,給出仿真波形。實(shí)驗(yàn)方式:若考慮小數(shù)點(diǎn),SG的8個(gè)段分別與PIO49、PIO48、…、PIO42(高位在左)、BT的8個(gè)位分別與PIO34、PIO35、…、PIO41(高位在左);電路模式不限,引腳圖參考附錄圖10。將GW48EDA系統(tǒng)左下方的撥碼開關(guān)全部向上撥,這時(shí)實(shí)驗(yàn)系統(tǒng)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論