




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、KX康芯科技EDA技術(shù)與VHDL第8章有限狀態(tài)機(jī)設(shè)計(jì)技術(shù)KX康芯科技8.1.1類(lèi)型定義語(yǔ)句TYPETYPE或TYPE數(shù)據(jù)類(lèi)型名IS數(shù)據(jù)類(lèi)型定義OF 基本數(shù)據(jù)類(lèi)型;數(shù)據(jù)類(lèi)型名 IS 數(shù)據(jù)類(lèi)型定義 ;TYPE st1 IS ARRAY ( 0 TO 15 ) OFSTD_LOGIC ;TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;TYPE m_state IS( st0,st1,st2,st3,st4,st5 ) ;SIGNAL present_state,next_state:m_state;8.1 VHDL一般狀態(tài)機(jī)KX康芯科技8.1.1類(lèi)型定義語(yǔ)句T
2、YPETYPE BOOLEANIS (FALSE,TRUE);TYPE my_logic IS( '1' ,'Z','U','0' ) ;SIGNAL s1 : my_logic ;s1 <='Z' ;SUBTYPE子類(lèi)型名 IS 基本數(shù)據(jù)類(lèi)型RANGE約束范圍;SUBTYPE digits IS INTEGER RANGE 0 to9 ;8.1 VHDL一般狀態(tài)機(jī)KX康芯科技8.1.2實(shí)用狀態(tài)機(jī)的優(yōu)勢(shì)1、狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式缺點(diǎn)。2、由于狀態(tài)機(jī)的結(jié)構(gòu)相對(duì)簡(jiǎn)單,設(shè)計(jì)方案相對(duì)固定。不靈活的3、狀態(tài)
3、機(jī)容易性能良好的同步時(shí)序邏輯模塊。4、狀態(tài)機(jī)的VHDL表述豐富多樣、有其獨(dú)到的好處。5、在高速運(yùn)算和6、高可靠性。方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢(shì)。8.1 VHDL一般狀態(tài)機(jī)KX康芯科技8.1.3一般狀態(tài)機(jī)的結(jié)構(gòu)1. 說(shuō)明部分說(shuō)明部分一般放在結(jié)構(gòu)體的ARCHITECTURE 間,例如:ARCHITECTURE .ISTYPE FSM_ST IS (s0,s1,s2,s3);和BEGIN之SIGNAL current_state, next_state: FSM_ST;.8.1 VHDL一般狀態(tài)機(jī)KX康芯科技8.1VHDL一般狀態(tài)機(jī)8.1.3一般狀態(tài)機(jī)的結(jié)構(gòu)2. 主控時(shí)序進(jìn)程FSM:s_machin
4、ecurrent_statePROCESSCOMPROCESSREGclkcomb_outputsnext_stateresetstate_inputs圖8-1 一般狀態(tài)機(jī)結(jié)構(gòu)框圖KX康芯科技8.1.3一般狀態(tài)機(jī)的結(jié)構(gòu)3. 主控組合進(jìn)程4. 輔助進(jìn)程圖8-2例8-1狀態(tài)機(jī)的工作時(shí)序8.1 VHDL一般狀態(tài)機(jī)KX康芯科技【例8-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine ISPORT ( clk,resetstate_inputs comb_outputsEND s_machine;: IN STD_LOGIC;: IN
5、 STD_LOGIC_VECTOR: OUT INTEGER RANGE 0(0TOTO 151););ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS (s0, s1, s2, s3);-數(shù)據(jù)類(lèi)型定義,狀態(tài)符號(hào)化SIGNAL current_state, next_state: FSM_ST;-將現(xiàn)態(tài)和次態(tài)定義為新的數(shù)據(jù)類(lèi)型接下頁(yè)KX康芯科技BEGINREG: PROCESS (reset,clk) BEGIN-主控時(shí)序進(jìn)程END PROCESS;COM:PROCESS(current_state, state_Inputs) BEGINCAS
6、E current_state ISWHEN s0 => comb_outputs<= 5;-主控組合進(jìn)程IF state_inputs = "00" THEN ELSE next_state<=s1;END IF;next_state<=s0;WHEN s1 =>comb_outputs<= 8;IF state_inputs = "00" THENnext_state<=s1;ELSEnext_state<=s2;END IF;WHEN s2 =>comb_outputs<= 12;IF s
7、tate_inputs = "11" THENnext_state <= s0;ELSEnext_state <= s3;END IF;WHEN s3 =>comb_outputs <= 14;IF state_inputs = "11" THENnext_state <= s3;ELSEnext_state <= s0;END IF;END case;END PROCESS;END behv;IF reset = '1' THENcurrent_state <= s0;-檢測(cè)異步復(fù)位信號(hào)ELSI
8、F clk='1' AND clk'EVENT THENcurrent_state <= next_state;END IF;KX康芯科技8.2.1多進(jìn)程狀態(tài)機(jī)設(shè)計(jì)圖8-3 ADC0809工作時(shí)序8.2 Moore狀態(tài)機(jī)設(shè)計(jì)KX康芯科技8.2.1多進(jìn)程狀態(tài)機(jī)設(shè)計(jì)圖8-4ADC0809采樣狀態(tài)圖8.2 Moore狀態(tài)機(jī)設(shè)計(jì)KX康芯科技8.2.1多進(jìn)程狀態(tài)機(jī)設(shè)計(jì)圖8-5 采樣狀態(tài)機(jī)結(jié)構(gòu)框圖8.2 Moore狀態(tài)機(jī)設(shè)計(jì)KX康芯科技LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADCINT ISPORT(D: IN ST
9、D_LOGIC_VECTOR(7 DOWNTO 0);-來(lái)自0809轉(zhuǎn)換好的8位數(shù)據(jù)-狀態(tài)機(jī)工作時(shí)鐘-轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換-8個(gè)模擬信號(hào)通道地址鎖存信號(hào)-轉(zhuǎn)換開(kāi)始信號(hào)CLK EOC ALE:IN STD_LOGIC; IN STD_LOGIC;OUT STD_LOGIC;START: OUT STD_LOGIC;-數(shù)據(jù)輸出3態(tài)-信號(hào)通道最低位信號(hào)信號(hào)OE ADDA:OUT STD_LOGIC;: OUT STD_LOGIC;: OUT STD_LOGIC;LOCK0-觀察數(shù)據(jù)鎖存時(shí)鐘Q: OUT STD_LOGIC_VECTOR(7DOWNTO 0); -8位數(shù)據(jù)輸出END ADC
10、INT;ARCHITECTURE behav OF ADCINT ISTYPE states IS (st0, st1, st2, st3,st4) ; -定義各狀態(tài)子類(lèi)型SIGNAL SIGNAL SIGNALcurrent_state, next_state: states :=st0 ;REGL LOCK: STD_LOGIC_VECTOR(7 DOWNTO 0);: STD_LOGIC; - 轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號(hào)接下頁(yè)【例8-2】KX康芯科技BEGINADDA <= '1'-當(dāng)ADDA<='0',模擬信號(hào)進(jìn)入通道IN0;當(dāng)ADDA<
11、;='1',則進(jìn)入通道IN1Q<= REGL; LOCK0 <= LOCK ;COM: PROCESS(current_state,EOC)BEGIN-規(guī)定各狀態(tài)轉(zhuǎn)換方式CASE current_state ISWHEN st0=>ALE<='0'START<='0'LOCK<='0'OE<='0'next_state <= st1; -0809初始化WHEN st1=>ALE<='1'START<='1'LOCK&l
12、t;='0'OE<='0'next_state <= st2; -啟動(dòng)采樣WHEN st2=> ALE<='0'START<='0'LOCK<='0'OE<='0'IF (EOC='1') THEN next_state <= st3; -EOC=1表明轉(zhuǎn)換結(jié)束ELSE next_state <= st2;END IF ;-轉(zhuǎn)換未結(jié)束,繼續(xù)等待WHEN st3=>next_state <= WHEN st4=>A
13、LE<='0'START<='0'LOCK<='0'OE<='1'st4;-開(kāi)啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)ALE<='0'START<='0'LOCK<='1'OE<='1' next_state<= st0;WHEN OTHERS => next_state <= st0; END CASE ;END PROCESS COM ;REG: PROCESS (CLK) BEGINIF (CLK'EVE
14、NT AND CLK='1') THEN current_state<=next_state;END IF;END PROCESS REG ;- 由信號(hào)current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REGLATCH1: PROCESS (LOCK) - 此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入BEGINIF LOCK='1' AND LOCK'EVENT THEN END PROCESS LATCH1 ;END behav;REGL <= D ; END IF;KX康芯科技8.2.1多進(jìn)程狀態(tài)機(jī)設(shè)計(jì)圖8-6 ADC0809采樣狀態(tài)
15、機(jī)工作時(shí)序8.2 Moore狀態(tài)機(jī)設(shè)計(jì)KX康芯科技【例8-3】COM1: PROCESS(current_state,EOC)BEGINCASEcurrent_state ISWHENst0=> st1=>next_state <= st1; next_state <= st2;WHENWHENst2=>IF (EOC='1') THEN next_state<= st3;ELSE next_state <= st2; END next_state <= st4;-開(kāi)啟OE next_state <= st0;IF ;WHE
16、N WHEN WHENst3=> st4=>OTHERS => next_state <= st0;END CASE ;END PROCESS COM1 ;COM2: PROCESS(current_state)BEGINCASE WHEN WHEN WHEN WHEN WHEN WHENcurrent_state IS st0=>ALE<='0'START<='0'LOCK<='0'OE<='0' st1=>ALE<='1'START<=
17、39;1'LOCK<='0'OE<='0' st2=>ALE<='0'START<='0'LOCK<='0'OE<='0' st3=>ALE<='0'START<='0'LOCK<='0'OE<='1' st4=>ALE<='0'START<='0'LOCK<='1'OE<=
18、9;1' OTHERS => ALE<='0'START<='0'LOCK<='0'END CASE ;END PROCESS COM2 ;KX康芯科技8.2.2單進(jìn)程Moore狀態(tài)機(jī)設(shè)計(jì)圖8-7 例8-4狀態(tài)機(jī)綜合后的部分主要RTL電路模塊(Synplify綜合)8.2 Moore狀態(tài)機(jī)設(shè)計(jì)技【例8-4】康芯科LIBRARY IEEE;KXUSE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 ISPORT (DATAIN :IN STD_LOGIC_VECTOR(1 DOWNTO 0
19、);CLK,RST : IN STD_LOGIC;Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END MOORE1;ARCHITECTURE behav OF MOORE1 ISTYPE ST_TYPE IS (ST0, ST1, ST2, ST3,ST4);SIGNAL C_ST : ST_TYPE ;BEGIN PROCESS(CLK,RST)BEGINIF RST ='1' THEN C_ST <= ST0 ; Q<= "0000" ; ELSIF CLK'EVENT AND CLK='1
20、9; THENCASE C_ST ISWHEN ST0 => IF DATAIN ="10" THEN C_ST <= ST1 ; ELSE C_ST <= ST0 ; END IF;Q <= "1001" ;WHEN ST1 => IF DATAIN ="11" THEN C_ST <= ST2 ; ELSE C_ST <= ST1 ;END IF;Q <= "0101" ;WHEN ST2 => IF DATAIN ="01" THEN
21、C_ST <= ST3 ; ELSE C_ST <= ST0 ;END IF;Q <= "1100" ;WHEN ST3 => IF DATAIN ="00" THEN C_ST <= ST4 ; ELSE C_ST <= ST2 ;END IF;Q <= "0010" ;WHEN ST4 => IF DATAIN ="11" THEN C_ST <= ST0 ; ELSE C_ST <= ST3 ;END IF;Q <= "1001&qu
22、ot; ;WHEN OTHERS => C_ST <= ST0; END CASE;END IF; END PROCESS;END behav;KX康芯科技8.2.2單進(jìn)程Moore狀態(tài)機(jī)設(shè)計(jì)圖8-8 例8-4單進(jìn)程狀態(tài)機(jī)工作時(shí)序8.2 Moore狀態(tài)機(jī)設(shè)計(jì)KX康芯科技8.2.2單進(jìn)程Moore狀態(tài)機(jī)設(shè)計(jì)圖8-9 對(duì)應(yīng)于例8-4的二進(jìn)程狀態(tài)機(jī)工作時(shí)序圖8.2 Moore狀態(tài)機(jī)設(shè)計(jì)KX康芯科技圖8-10 例8-5狀態(tài)機(jī)工作時(shí)序圖8.3 Mealy狀態(tài)機(jī)設(shè)計(jì)KX康芯科技【例8-5】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEAL
23、Y1 ISPORT ( CLK ,DATAIN,RESET: IN STD_LOGIC;YGNAL STX : states;BEGINCOMREG : PROCESS(CLK,RESET)BEGIN -決定轉(zhuǎn)換狀態(tài)的進(jìn)程<= ST0;IF RESET ='1' THENSTXELSIF CLK'EVENTAND CLK ='1' THENCASE STX ISWHEN WHEN WHEN WHEN WHEN WHENst0 st1 st2=>=>=>IF IF IF IF IF=>DATAIN DATAIN DATAIN
24、DATAIN DATAIN STX <='1''0''1''0''1'THEN THEN THEN THEN THENSTX STX STX STX STX<=<=<=<=<=st1; st2; st3; st4; st0;END END END END ENDIF;IF;IF;IF;IF;st3=> st4=>OTHERSst0;END CASE ; END IF;END PROCESS COMREG;COM1: PROCESS(STX,DATAIN) BEGIN
25、-輸出信號(hào)的進(jìn)程CASE STX ISWHEN st0 => IF DATAIN = '1' THEN Q <= "10000" ;ELSE ELSE ELSEQ<="01010" Q<="10100" Q<="10011"END END ENDIF IF IF;WHEN WHEN WHENst1 => st2 => st3=>IF DATAIN = '0' THEN Q <= IF DATAIN = '1' TH
26、EN Q <= IF DATAIN = '0' THEN Q <="10111""10101""11011"ELSE Q<="01001" ; END IF ;WHENst4=>IF DATAIN = '1' THEN Q <= "11101" ELSE Q<="01101" ; END IF ;=> Q<="00000" ;WHENOTHERSEND CASE ;END PR
27、OCESS COM1 ;END behav;EN ARQ : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);D MEALY1;CHITECTURE behav OF MEALY1 ISPE states IS (st0, st1, st2, st3,st4);TSI康芯科技KX【例8-6】LIBRARY IEEE; -MEALY FSM USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY2 ISPORT ( CLK ,DATAIN,RESET : IN STD_LOGIC;SIGNAL Q1 : STD_LOGIC_VECTOR(4 DOWN
28、TO 0); BEGINCOMREG : PROCESS(CLK,RESET) BEGINIF RESET ='1' THENSTX-決定轉(zhuǎn)換狀態(tài)的進(jìn)程<= ST0; '1' THENELSIF CLK'EVENT CASE STX ISWHEN st0 => WHEN st1 => WHEN st2 => WHEN st3=> WHEN st4=> WHEN OTHERSEND CASE ; END IF;AND CLK =IF IF IF IF IF=>DATAIN DATAIN DATAIN DATAIN
29、DATAIN STX <= '1' THEN STX <= st1; END IF;= '0' THEN STX <= st2; END IF;= '1' THEN STX <= st3; END IF;= '0' THENSTX <= '1' THENSTX <=st0;st4; END IF; st0; END IF;END PROCESS COMREG ; COM1: PROCESS(STX,DATAIN,CLK)-輸出信號(hào)的進(jìn)程VARIABLE Q2 BEGIN: STD
30、_LOGIC_VECTOR(4 DOWNTO 0);CASE WHEN WHEN WHEN WHEN WHEN WHENSTX ISst0=> st1=> st2=> st3=> st4=>IF IF IF IF IFDATAIN='1' DATAIN='0' DATAIN='1' DATAIN='0' DATAIN='1'THEN THEN THEN THEN THENQ2 Q2 Q2 Q2 Q2:="10000":="10111":=&quo
31、t;10101":="11011":="11101"ELSE ELSE ELSE ELSE ELSEQ2:="01010"Q2:="10100"Q2:="10011"Q2:="01001"Q2:="01101"END END END END ENDIF;IF;IF;IF;IF;OTHERS => Q2:="00000" ;END CASE ;IF CLK'EVENT AND CLK = '1' T
32、HEN END PROCESS COM1 ;Q1<=Q2; END IF;Q <= Q1 ;END behav;Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY2;ARCHITECTURE behav OF MEALY2 ISTYPE states IS (st0, st1, st2, st3,st4);SIGNAL STX : states ;KX康芯科技圖8-11 例8-6狀態(tài)機(jī)工作時(shí)序圖8.3 Mealy狀態(tài)機(jī)設(shè)計(jì)KX康芯科技8.4狀態(tài)機(jī)的狀態(tài)編碼8.4.1狀態(tài)位直接輸出型編碼表8-1信號(hào)狀態(tài)編碼表狀態(tài)狀態(tài)編碼 STARTALEOE
33、LOCKB功能說(shuō)明 ST000000初始態(tài)ST111000啟動(dòng)轉(zhuǎn)換ST200001若測(cè)得EOC=1時(shí),轉(zhuǎn)下一狀態(tài)ST3ST300100輸出轉(zhuǎn)換好的數(shù)據(jù)ST400110利用LOCK的上升沿將轉(zhuǎn)換好的數(shù)據(jù)鎖存康芯科技KX【例8-7】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS.PORT (D: IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK ,EOC : IN STD_LOGIC;ALE, START, OE, ADDA: OUT STD_LOGIC;c_state: OUT STD_LOGIC_VECT
34、OR(4 DOWNTO 0);Q END AD0809;:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ARCHITECTUREbehav OF AD0809 ISSIGNALcurrent_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO0);CONSTANT CONSTANT CONSTANT CONSTANT CONSTANTst0 st1 st2 st3 st4:STD_LOGIC_VECTOR(4 STD_LOGIC_VECTOR(4 STD_LOGIC_VECTOR(4 STD_LOGIC_VECTOR(4 STD_LOG
35、IC_VECTOR(4DOWNTO DOWNTO DOWNTO DOWNTO DOWNTO0)0)0)0)0):=:=:=:=:="00000""11000""00001""00100""00110"SIGNAL REGL SIGNAL LOCKBEGINADDA <= '1': STD_LOGIC_VECTOR(7 DOWNTO 0);: STD_LOGIC;Q <= REGL;START<=current_state(4);ALE<=current_s
36、tate(3);OE<=current_state(2); LOCK<=current_state(1);c_state <=current_state;COM: PROCESS(current_state,EOC) CASE current_state ISBEGIN-規(guī)定各狀態(tài)轉(zhuǎn)換方式接下頁(yè)KX康芯科技WHEN st0=> next_state <= st1; -0809初始化WHEN WHENst1=> st2=>next_state <= st2; -啟動(dòng)采樣IF (EOC='1') THEN next_state <
37、;= st3; -EOC=1表明轉(zhuǎn)換結(jié)束-轉(zhuǎn)換未結(jié)束,繼續(xù)等待ELSE next_state <= st2;END WHEN WHEN WHENIF ;st3=> st4=>next_state <= st4;-開(kāi)啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)next_state <= st0;OTHERS => next_state <= st0;END CASE ;END PROCESS COM ; REG: PROCESS (CLK)BEGINIF (CLK'EVENT AND END IF;END PROCESS REG ; LATCH1: PROCESS
38、(LOCK)BEGINCLK='1') THEN current_state<=next_state;- 由信號(hào)current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG- 此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入IF LOCK='1' AND LOCK'EVENT THEN END IF;END PROCESS LATCH1 ;END behav;REGL <= D ;KX康芯科技8.4.1狀態(tài)位直接輸出型編碼圖8-12 例8-7狀態(tài)機(jī)工作時(shí)序圖8.4 狀態(tài)機(jī)的狀態(tài)編碼KX康芯科技8.4狀態(tài)機(jī)的狀態(tài)編碼8.4.2順序編碼表8-2 編碼
39、方式狀態(tài) 順序編碼一位熱碼編碼STATE0000100000STATE1001010000STATE2010001000STATE3011000100STATE4100000010STATE5101000001KX康芯科技8.4.2順序編碼【例8-8】.SIGNAL CRURRENT_STATE,NEXT_STATE:STD_LOGIC_VECTOR(2DOWNTO 0 );CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT.ST0 ST1 ST2 ST3 ST4:STD_LOGIC_VECTOR(2 STD_LOGIC_VECTOR(2 STD_LOGI
40、C_VECTOR(2 STD_LOGIC_VECTOR(2 STD_LOGIC_VECTOR(2DOWNTO DOWNTO DOWNTO DOWNTO DOWNTO0)0)0)0)0):=:=:=:=:="000""001""010""011""100"8.4 狀態(tài)機(jī)的狀態(tài)編碼KX康芯科技8.4.3一位熱碼編碼圖8-13 一位熱碼編碼方式選擇框8.4 狀態(tài)機(jī)的狀態(tài)編碼KX康芯科技8.5狀態(tài)處理表8-3剩余狀態(tài)WHEN WHEN.st_ilg1 =>st_ilg2 =>next_sta
41、tenext_state<= st0;<= st0;狀 態(tài)st0St1St2St3St4st_ilg1st_ilg2st_ilg3順序編碼000001010011100101110111KX康芯科技【例8-9】.TYPE states IS (st0, st1, st2, st3,st4, st_ilg1,st_ilg2 ,st_ilg3); SIGNAL current_state, next_state: states;.COM:PROCESS(current_state, state_Inputs)BEGIN- 組合邏輯進(jìn)程CASE current_state IS.WHEN
42、 OTHERS =>END case;- 確定當(dāng)前狀態(tài)的狀態(tài)值next_state <= st0;8.5狀態(tài)處理KX康芯科技【例8-10】.alarm <= (st0 AND (st1 OR st2 OR st3 OR st4 OR st5) OR (st1 AND (st0 OR st2 OR st3 OR st4 OR st5) OR (st2 AND (st0 OR st1 OR st3 OR st4 OR st5) OR (st3 AND (st0 OR st1 OR st2 OR st4 OR st5) OR (st4 AND (st0 OR st1 OR st2
43、OR st3 OR st5) OR (st5 AND (st0 OR st1 OR st2 OR st3 OR st4) ;8.5狀態(tài)處理KX康芯科技8-1. 仿照例8-1,將例8-4用兩個(gè)進(jìn)程,即一個(gè)時(shí)序進(jìn)程,一個(gè)組合進(jìn)程表達(dá)出來(lái)。8-2. 為確保例8-5的狀態(tài)機(jī)輸出信號(hào)沒(méi)有毛刺,試用例8-4的方式一個(gè)單進(jìn)程狀態(tài),使輸出信號(hào)得到可靠鎖存,在相同輸入信號(hào)條件下,給出兩程序的波形。8-3. 序列檢測(cè)器可用于檢測(cè)一組或多組由二進(jìn)制碼組成的脈沖序列信號(hào),當(dāng)序列檢測(cè)器連續(xù)收到一組串行二進(jìn)制碼后,如果這組碼與檢測(cè)器中預(yù)先設(shè)置的碼相同,則輸出1,否則輸出0。由于這種檢測(cè)的關(guān)鍵在于正確碼的收到必須是連續(xù)的,
44、這就要求檢測(cè)器必須記住前一次的正確碼及正確序列,直到在連續(xù)的檢測(cè)中所收到的每一位碼都與預(yù)置數(shù)的對(duì)應(yīng)碼相同。在檢測(cè)過(guò)程中,任何一位不相等都將回到初始狀態(tài)重新開(kāi)始檢測(cè)。例8-11描述的電路完成對(duì)序列數(shù)“11100101”的檢測(cè),當(dāng)這一串序在前(左移)串行進(jìn)入檢測(cè)器后,若此數(shù)與預(yù)置的列數(shù)數(shù)相同,則輸出“A”,否則仍然輸出“B”。習(xí)題KX康芯科技【例8-11】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL; ENTITY SCHK ISSIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); -8位待檢測(cè)預(yù)置數(shù)(=E5H)BEGIN"
45、; ; -8位待檢測(cè)預(yù)置數(shù)D <= "11100101PROCESS( CLK, CLR ) BEGINIF CLR = '1' THENQ <= 0 ;ELSIF CLK'EVENT CASE Q ISAND CLK='1'THEN-時(shí)鐘到來(lái)時(shí),并處理當(dāng)前輸入的位WHEN WHEN WHEN WHEN WHEN WHEN WHEN WHEN WHEN0=>1=>2=>3=>4=>5=>6=>7=>IF IF IF IF IF IF IF IFDIN DIN DIN DIN DIN D
46、IN DIN DIN=D(7)D(6)D(5)D(4)D(3)D(2)D(1)D(0)THEN THEN THEN THEN THEN THEN THEN THENQ Q Q Q Q Q Q Q<=<=<=<=<=<=<=<=12345678;ELSE ELSE ELSE ELSE ELSE ELSE ELSE ELSEQ Q Q Q Q Q Q Q<=<=<=<=<=<=<=<=00000000;END END END END END END END ENDIF IF IF IF IF IF IF
47、 IF;OTHERS =>Q <= 0;END CASE;END IF ;END PROCESS ;PROCESS( BEGINIF Q ELSEQ)-檢測(cè)結(jié)果輸出=8THENAB<= "1010" ;-序列數(shù)檢測(cè)正確,輸出 “A”-序列數(shù)檢測(cè)錯(cuò)誤,輸出 “B”AB <= "1011" ;END IF;END PROCESS ;END behav ;PORT(DIN,CLK,CLR : IN STD_LOGIC; -串行輸入數(shù)據(jù)位/工作時(shí)鐘/復(fù)位信號(hào)AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -檢
48、測(cè)結(jié)果輸出END SCHK;ARCHITECTURE behav OF SCHK ISSIGNAL Q : INTEGER RANGE 0 TO 8 ;KX康芯科技8-4. 根據(jù)圖8-14(a)所示的狀態(tài)圖,分別按照?qǐng)D8-4(b)和圖8-14(c) 寫(xiě)出對(duì)應(yīng)結(jié)構(gòu)的VHDL狀態(tài)機(jī)。圖8-14 習(xí)題8-4狀態(tài)圖習(xí)題KX康芯科技8-5. 在不改變?cè)a功能的條件下用兩種方法改寫(xiě)例8-2,使信號(hào)(ALE、START、OE、LOCK)沒(méi)有毛刺。方其輸出的法1:將輸出信號(hào)鎖存后輸出;方法2:使用狀態(tài)碼直接輸出型狀態(tài)機(jī),并比較這三種狀態(tài)機(jī)的特點(diǎn)。習(xí)題KX康芯科技8-1. 序列檢測(cè)器設(shè)計(jì)(1) 實(shí)驗(yàn)?zāi)康模河脿?/p>
49、態(tài)機(jī)實(shí)現(xiàn)序列檢測(cè)器的設(shè)計(jì),了解一般狀態(tài)機(jī)的設(shè)計(jì)與應(yīng)用。(2) 實(shí)驗(yàn)原理:序列檢測(cè)器的工作原理已在習(xí)題8-3中作了說(shuō)明。(3) 實(shí)驗(yàn)內(nèi)容1:仔細(xì)完成習(xí)題8-3的全部?jī)?nèi)容,利用QuartusII對(duì)例8-11進(jìn)行文本編輯輸入、測(cè)試并給出波形,了解信號(hào)的時(shí)序,最后進(jìn)行引腳鎖定并完成硬件測(cè)試實(shí)驗(yàn)。(4) 實(shí)驗(yàn)內(nèi)容2:根據(jù)習(xí)題8-3中的要求3提出的設(shè)計(jì)方案,重復(fù)以上實(shí)驗(yàn)內(nèi)容(將8位待檢測(cè)預(yù)置數(shù)由鍵4/鍵3作為外部輸入,從而可隨時(shí)改變檢測(cè))。(5) 實(shí)驗(yàn)思考題:如果待檢測(cè)預(yù)置數(shù)必須以右移方式進(jìn)入序列檢測(cè)器,寫(xiě)出該檢測(cè)器的VHDL代碼(兩進(jìn)程符號(hào)化有限狀態(tài)機(jī)),并提出測(cè)試該序列檢測(cè)器的實(shí)驗(yàn)方案。(6) 實(shí)驗(yàn)報(bào)
50、告:根據(jù)以上的實(shí)驗(yàn)內(nèi)容寫(xiě)出實(shí)驗(yàn)報(bào)告,包括設(shè)計(jì)原理、程序設(shè)計(jì)、程序分析、分析、硬件測(cè)試和詳細(xì)實(shí)驗(yàn)過(guò)程。實(shí)驗(yàn)與設(shè)計(jì)KX康芯科技8-2. ADC0809采樣電路實(shí)現(xiàn)(1) 實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)用狀態(tài)機(jī)對(duì)A/D轉(zhuǎn)換器ADC0809的采樣電路的實(shí)現(xiàn)。(2) 實(shí)驗(yàn)原理:ADC0809的采樣用例8-2)。原理已在8.2.1節(jié)中作了詳細(xì)說(shuō)明(實(shí)驗(yàn)程序(3) 實(shí)驗(yàn)內(nèi)容:利用QuartusII對(duì)例8-2進(jìn)行文本編輯輸入和測(cè)試;給出試,硬件驗(yàn)證例8-2電路對(duì)ADC0809的波形。最后進(jìn)行引腳鎖定并進(jìn)能。功(4) 實(shí)驗(yàn)思考題:在不改變?cè)a功能的條件下將例8-2表達(dá)成用狀態(tài)碼直接輸出型的狀態(tài)機(jī)。(5) 實(shí)驗(yàn)報(bào)告:根據(jù)以上的
51、實(shí)驗(yàn)要求、實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)思考題寫(xiě)出實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)與設(shè)計(jì)KX康芯科技8-3.電路和簡(jiǎn)易示波器設(shè)計(jì)(1) 實(shí)驗(yàn)?zāi)康模赫莆誏PM RAM模塊VHDL元件定制、調(diào)用和使用方法;熟悉A/D和D/A與FPGA接口電路設(shè)計(jì);了解HDL文本描述與原理圖混合設(shè)計(jì)方法。(2)(3)實(shí)驗(yàn)原理:主要內(nèi)容參考本章和7.2節(jié)。實(shí)驗(yàn)內(nèi)容1:設(shè)ADDA=1;即模擬信號(hào)來(lái)自0809的IN1口(可用實(shí)驗(yàn)系統(tǒng)右下角的電位器產(chǎn)生被測(cè)模擬信號(hào))完成此項(xiàng)設(shè)計(jì),給出波形及其分析,將設(shè)計(jì)結(jié)果在Cyclone中硬件實(shí)現(xiàn),用QuartusII的在系統(tǒng)RAM/ROM數(shù)據(jù)編輯器了解采入RAM中的數(shù)據(jù)。(4)實(shí)驗(yàn)內(nèi)容2:優(yōu)化設(shè)計(jì)。設(shè)計(jì)電路圖8-15,
52、檢查此項(xiàng)設(shè)計(jì)得START信號(hào)是否有毛刺,如果有,改進(jìn)ADCINT的設(shè)計(jì)(也可用其他方法),排除START的毛刺。實(shí)驗(yàn)與設(shè)計(jì)KX康芯科技圖8-15 ADC0809采樣電路系統(tǒng):RSV.bdf實(shí)驗(yàn)與設(shè)計(jì)KX康芯科技(5) 實(shí)驗(yàn)內(nèi)容3:對(duì)電路圖8-15完成設(shè)計(jì)和后鎖定引腳,進(jìn)行硬件測(cè)試。參考實(shí)驗(yàn)8-2和7-1對(duì)0809和0832的引腳鎖定:元件“ADCINT”引腳鎖定參考實(shí)驗(yàn)8-2。WE用鍵1;為了實(shí)驗(yàn)方便,CLK接clock0,頻率先選擇64Hz(選擇較慢的采樣時(shí)鐘),作狀態(tài)機(jī)工作時(shí)鐘。硬件實(shí)驗(yàn)中,建議選擇電路模式No.5,打開(kāi)+/-12V電源,首先使WE=1,即鍵1置高電平,采樣,由于這時(shí)的程序
53、中設(shè)置ADDA <= '1',模擬信號(hào)來(lái)自AIN1,即可通過(guò)調(diào)協(xié)實(shí)驗(yàn)板上的電位器(此時(shí)的模擬信號(hào)是手動(dòng)產(chǎn)生的),將轉(zhuǎn)換好的數(shù)據(jù)采入RAM中;然后按鍵1,使WE=0,clock0的頻率選擇16384Hz(選擇較高時(shí)鐘),即能從示波器中看見(jiàn)被存于RAM中的數(shù)據(jù)(可以首先通過(guò)QuartusII的RAM在觀察已采入RAM中的數(shù)據(jù))。系統(tǒng)實(shí)驗(yàn)與設(shè)計(jì)KX康芯科技(6) 實(shí)驗(yàn)內(nèi)容4:程序中設(shè)置ADDA <= '0',模擬信號(hào)將由AIN0進(jìn)入,即AIN0的輸入信號(hào)來(lái)自外部信號(hào)源的模擬連續(xù)信號(hào)。外部模擬信號(hào)可來(lái)自實(shí)驗(yàn)箱, 方法如下:首先打開(kāi)+/-12V電源,將GW48
54、主系統(tǒng)板右側(cè)的“JL11”跳線(xiàn)座短路“L_F”端; 跳線(xiàn)座“JP18”的“INPUT”端與系統(tǒng)右下角的時(shí)鐘64Hz相接;并用一插線(xiàn)將插 座“JP17”的“OUTPUT”端與實(shí)驗(yàn)箱最左側(cè)的“JL10”坐的“AIN0”端相接,這樣 就將64Hz待采樣的模擬信號(hào)接入了0809的IN0端(注意,這時(shí)例8-2/12程序 中設(shè)置ADDA <= '0')。試調(diào)節(jié)“JP18”上方的電位器,使得主系統(tǒng)右側(cè)的“WAVE OUT”端輸出正常信號(hào)波形(用示波器監(jiān)視,峰值調(diào)在4V以下)。注意,如果要將采入(用CLK=64采樣)RAM中的數(shù)據(jù)掃描顯示到示波器上觀察,必須用高頻率時(shí)鐘才行(clock0接16384Hz)。可以使鍵1高電平是對(duì)模擬信號(hào)采樣,低電數(shù)據(jù)。示波器顯示已存入RAM的波形實(shí)驗(yàn)與設(shè)計(jì)KX康芯科技(7) 實(shí)驗(yàn)內(nèi)容5:僅按照以上方發(fā)現(xiàn)示波器顯示的波形并不理想,是從RAM中掃出的數(shù)據(jù)都不是一個(gè)完整的波形周期。試設(shè)計(jì)一個(gè)狀態(tài)機(jī),結(jié)合被鎖入RAM中的某些數(shù)據(jù),改進(jìn)元件CNT10B,使之存入RAM中的數(shù)據(jù)和通過(guò)D/A在示波器上掃出的數(shù)據(jù)都是一個(gè)或數(shù)個(gè)完整波形數(shù)據(jù)。(8) 實(shí)驗(yàn)內(nèi)容6:在圖8-15的電路中增加一個(gè)鋸齒波發(fā)生器,掃
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京舞蹈學(xué)院《女裝紙樣設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東商務(wù)職業(yè)學(xué)院《跨文化交流與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 音樂(lè)腦科學(xué)探索-洞察及研究
- 云南理工職業(yè)學(xué)院《拉丁美洲文學(xué)史》2023-2024學(xué)年第一學(xué)期期末試卷
- 安吉cs團(tuán)建活動(dòng)方案
- 宣傳板凳活動(dòng)策劃方案
- 小學(xué)牛奶促銷(xiāo)活動(dòng)方案
- 尋寶樂(lè)園活動(dòng)方案
- 家裝活動(dòng)特惠活動(dòng)方案
- 尋找影子活動(dòng)方案
- 2025年新疆維吾爾阿克蘇地區(qū)沙雅縣小升初數(shù)學(xué)檢測(cè)卷含解析
- 《道路交通重大事故隱患排查指引(試行)》知識(shí)培訓(xùn)
- 關(guān)于八段錦的英語(yǔ)對(duì)話(huà)
- 眼部換藥標(biāo)準(zhǔn)流程
- 長(zhǎng)R-P的SVT鑒別診斷常用的電刺激方法
- 核心制度:安全輸血制度
- 《中華人民共和國(guó)職業(yè)分類(lèi)大典》(2022年版)各行業(yè)職業(yè)表格統(tǒng)計(jì)版(含數(shù)字職業(yè))
- 露天煤礦施工方案
- 《銀行業(yè)金融機(jī)構(gòu)安全評(píng)估標(biāo)準(zhǔn)》
- 非新生兒破傷風(fēng)診療規(guī)范(2024年版)解讀
- 企業(yè)內(nèi)部培訓(xùn)體系搭建及實(shí)施效果評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論