8_第8章+狀態(tài)機(jī)設(shè)計.ppt_第1頁
8_第8章+狀態(tài)機(jī)設(shè)計.ppt_第2頁
8_第8章+狀態(tài)機(jī)設(shè)計.ppt_第3頁
8_第8章+狀態(tài)機(jī)設(shè)計.ppt_第4頁
8_第8章+狀態(tài)機(jī)設(shè)計.ppt_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、EDA 技術(shù)實用教程,第 8 章 狀態(tài)機(jī)設(shè)計,8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.1.1 數(shù)據(jù)類型定義語句,TYPE語句的用法如下: TYPE 數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義 OF 基本數(shù)據(jù)類型 ; 或 TYPE 數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義 ;,TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ; TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;,8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.1.1 數(shù)據(jù)類型定義語句,TYPE m_state IS ( st0,st1,st2,st3,st4,st5 )

2、; SIGNAL present_state,next_state : m_state ;,TYPE BOOLEAN IS (FALSE,TRUE) ;,TYPE my_logic IS ( 1 ,Z ,U ,0 ) ; SIGNAL s1 : my_logic ; s1 = Z ;,SUBTYPE 子類型名 IS 基本數(shù)據(jù)類型 RANGE 約束范圍;,SUBTYPE digits IS INTEGER RANGE 0 to 9 ;,8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.1.2 為什么要使用狀態(tài)機(jī),8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.1.3 一般有限狀態(tài)機(jī)的設(shè)計,1. 說明部

3、分,ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; .,8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.1.3 一般有限狀態(tài)機(jī)的設(shè)計,2. 主控時序進(jìn)程,圖8-1 一般狀態(tài)機(jī)結(jié)構(gòu)框圖,8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.1.3 一般有限狀態(tài)機(jī)的設(shè)計,3. 主控組合進(jìn)程,4. 輔助進(jìn)程,【例8-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine IS PORT ( clk,reset :

4、 IN STD_LOGIC; state_inputs : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine; ARCHITECTURE behv OF s_machine IS TYPE FSM_ST IS (s0, s1, s2, s3); -數(shù)據(jù)類型定義,狀態(tài)符號化 SIGNAL current_state, next_state: FSM_ST;-將現(xiàn)態(tài)和次態(tài)定義為新的數(shù)據(jù)類型 BEGIN REG: PROCESS (reset,clk) -主控時序進(jìn)程 (接下

5、頁),KX康芯科技,BEGIN IF reset = 1 THEN current_state comb_outputs comb_outputs comb_outputs comb_outputs = 14; IF state_inputs = 11 THEN next_state = s3; ELSE next_state = s0; END IF; END case; END PROCESS; END behv;,8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.1.3 一般有限狀態(tài)機(jī)的設(shè)計,圖8-2a 例8-1狀態(tài)機(jī)的工作時序,4. 輔助進(jìn)程,8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.

6、1.3 一般有限狀態(tài)機(jī)的設(shè)計,圖8-2b 打開QuartusII狀態(tài)圖觀察器,4. 輔助進(jìn)程,8.1 一般有限狀態(tài)機(jī)設(shè)計,KX康芯科技,8.1.3 一般有限狀態(tài)機(jī)的設(shè)計,圖8-2c 例8-1的狀態(tài)圖,4. 輔助進(jìn)程,8.2 Moore型有限狀態(tài)機(jī)設(shè),KX康芯科技,8.2.1 多進(jìn)程有限狀態(tài)機(jī),圖8-3 ADC0809工作時序,8.2 Moore型有限狀態(tài)機(jī)設(shè),KX康芯科技,8.2.1 多進(jìn)程有限狀態(tài)機(jī),圖8-4 控制ADC0809采樣狀態(tài)圖,KX康芯科技,8.2.1 多進(jìn)程有限狀態(tài)機(jī),圖8-5 采樣狀態(tài)機(jī)結(jié)構(gòu)框圖,KX康芯科技,【例8-2】 LIBRARY IEEE; USE IEEE.STD

7、_LOGIC_1164.ALL; ENTITY ADCINT IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -來自0809轉(zhuǎn)換好的8位數(shù)據(jù) CLK : IN STD_LOGIC; -狀態(tài)機(jī)工作時鐘 EOC : IN STD_LOGIC; -轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換 ALE : OUT STD_LOGIC; -8個模擬信號通道地址鎖存信號 START : OUT STD_LOGIC; -轉(zhuǎn)換開始信號 OE : OUT STD_LOGIC; -數(shù)據(jù)輸出3態(tài)控制信號 ADDA : OUT STD_LOGIC; -信號通道最低位控制信號 LOCK0

8、: OUT STD_LOGIC; -觀察數(shù)據(jù)鎖存時鐘 Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -8位數(shù)據(jù)輸出 END ADCINT; ARCHITECTURE behav OF ADCINT IS TYPE states IS (st0, st1, st2, st3,st4) ; -定義各狀態(tài)子類型 SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; - 轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時鐘

9、信號 BEGIN ADDA ALE=0;START=0;LOCK=0;OE=0; next_state = st1; -0809初始化 (接下頁),KX康芯科技,WHEN st1=ALE ALE ALE ALE next_state = st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN current_state=next_state; END IF; END PROCESS REG ;- 由信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG LATCH1:

10、PROCESS (LOCK) - 此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL = D ; END IF; END PROCESS LATCH1 ; END behav;,KX康芯科技,【例8-3】 COM1: PROCESS(current_state,EOC) BEGIN CASE current_state IS WHEN st0= next_state next_state IF (EOC=1) THEN next_state next_state next_state next_state ALEAL

11、EALEALEALE ALE=0;START=0;LOCK=0; END CASE ; END PROCESS COM2 ;,8.2 Moore型有限狀態(tài)機(jī)設(shè),KX康芯科技,8.2.1 多進(jìn)程有限狀態(tài)機(jī),圖8-6 ADC0809采樣狀態(tài)機(jī)工作時序,8.2 Moore型有限狀態(tài)機(jī)設(shè),KX康芯科技,8.2.2 單進(jìn)程Moore型有限狀態(tài)機(jī),【例8-4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MOORE1 IS PORT (DATAIN :IN STD_LOGIC_VECTOR(1 DOWNTO 0); CLK,RST : IN STD_

12、LOGIC; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END MOORE1; ARCHITECTURE behav OF MOORE1 IS TYPE ST_TYPE IS (ST0, ST1, ST2, ST3,ST4); SIGNAL C_ST : ST_TYPE ; BEGIN PROCESS(CLK,RST) BEGIN IF RST =1 THEN C_ST = ST0 ; Q= 0000 ; ELSIF CLKEVENT AND CLK=1 THEN (接下頁),KX康芯科技,CASE C_ST IS WHEN ST0 = IF DATAIN =

13、10 THEN C_ST IF DATAIN =11 THEN C_ST IF DATAIN =01 THEN C_ST IF DATAIN =00 THEN C_ST IF DATAIN =11 THEN C_ST C_ST = ST0; END CASE; END IF; END PROCESS; END behav;,8.2 Moore型有限狀態(tài)機(jī)設(shè),KX康芯科技,8.2.2 單進(jìn)程Moore型有限狀態(tài)機(jī),圖8-7 例8-4狀態(tài)機(jī)綜合后的部分主要RTL電路模塊(Synplify綜合),8.2 Moore型有限狀態(tài)機(jī)設(shè),KX康芯科技,8.2.2 單進(jìn)程Moore型有限狀態(tài)機(jī),圖8-8 例8

14、-4單進(jìn)程狀態(tài)機(jī)工作時序,8.2 Moore型有限狀態(tài)機(jī)設(shè),KX康芯科技,8.2.2 單進(jìn)程Moore型有限狀態(tài)機(jī),圖8-9 對應(yīng)于例8-4的二進(jìn)程狀態(tài)機(jī)工作時序圖,8.3 Mealy型有限狀態(tài)機(jī)設(shè)計,KX康芯科技,【例8-5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY1 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END MEALY1; ARCHITECTURE behav OF MEALY1 IS TY

15、PE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; BEGIN COMREG : PROCESS(CLK,RESET) BEGIN -決定轉(zhuǎn)換狀態(tài)的進(jìn)程 IF RESET =1 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX = st2; END IF; (接下頁),KX康芯科技,WHEN st2 = IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DATAIN

16、 = 1 THEN Q IF DATAIN = 0 THEN Q IF DATAIN = 1 THEN Q IF DATAIN = 0 THEN Q IF DATAIN = 1 THEN Q Q=00000 ; END CASE ; END PROCESS COM1 ; END behav;,8.3 Mealy型有限狀態(tài)機(jī)設(shè)計,KX康芯科技,圖8-10 例8-5狀態(tài)機(jī)工作時序圖,8.3 Mealy型有限狀態(tài)機(jī)設(shè)計,KX康芯科技,圖8-11 例8-6狀態(tài)機(jī)工作時序圖,8.3 Mealy型有限狀態(tài)機(jī)設(shè)計,KX康芯科技,【例8-6】 LIBRARY IEEE; -MEALY FSM USE IEEE

17、.STD_LOGIC_1164.ALL; ENTITY MEALY2 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END MEALY2; ARCHITECTURE behav OF MEALY2 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN COMREG : PROCESS(CLK,RESET)

18、-決定轉(zhuǎn)換狀態(tài)的進(jìn)程 BEGIN IF RESET =1 THEN STX = ST0; ELSIF CLKEVENT AND CLK = 1 THEN CASE STX IS (接下頁),KX康芯科技,WHEN st0 = IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DATAIN=1 THEN Q2 :=10000; ELSE Q2:=01010; END IF; WHEN st1= IF DA

19、TAIN=0 THEN Q2 :=10111; ELSE Q2:=10100; END IF; WHEN st2= IF DATAIN=1 THEN Q2 :=10101; ELSE Q2:=10011; END IF; WHEN st3= IF DATAIN=0 THEN Q2 :=11011; ELSE Q2:=01001; END IF; WHEN st4= IF DATAIN=1 THEN Q2 :=11101; ELSE Q2:=01101; END IF; WHEN OTHERS = Q2:=00000 ; END CASE ; IF CLKEVENT AND CLK = 1 TH

20、EN Q1=Q2; END IF; END PROCESS COM1 ; Q = Q1 ; END behav;,8.4 狀態(tài)編碼,KX康芯科技,8.4.1 狀態(tài)位直接輸出型編碼,表8-1 控制信號狀態(tài)編碼表,8.4 狀態(tài)編碼,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_st

21、ate : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END AD0809; ARCHITECTURE behav OF AD0809 IS SIGNAL current_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO 0 ); CONSTANT st0 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00000 ; CONSTANT st1 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 11000 ; CON

22、STANT st2 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00001 ; CONSTANT st3 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00100 ; CONSTANT st4 : STD_LOGIC_VECTOR(4 DOWNTO 0) := 00110 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; (接下頁),KX康芯科技,BEGIN ADDA n

23、ext_state next_state IF (EOC=1) THEN next_state next_state next_state next_state = st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN current_state=next_state; END IF; END PROCESS REG ; - 由信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG LATCH1: PROCESS (LOCK) - 此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換

24、好的數(shù)據(jù)鎖入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL = D ; END IF; END PROCESS LATCH1 ; END behav;,8.4 狀態(tài)編碼,KX康芯科技,圖8-12 例8-7狀態(tài)機(jī)工作時序圖,8.4.1 狀態(tài)位直接輸出型編碼,8.4 狀態(tài)編碼,KX康芯科技,8.4.2 順序編碼,表8-2 編碼方式,8.4 狀態(tài)編碼,KX康芯科技,8.4.2 順序編碼,【例8-8】 . SIGNAL CRURRENT_STATE,NEXT_STATE: STD_LOGIC_VECTOR(2 DOWNTO 0 ); CONSTANT ST0 : ST

25、D_LOGIC_VECTOR(2 DOWNTO 0) := 000 ; CONSTANT ST1 : STD_LOGIC_VECTOR(2 DOWNTO 0) := 001 ; CONSTANT ST2 : STD_LOGIC_VECTOR(2 DOWNTO 0) := 010 ; CONSTANT ST3 : STD_LOGIC_VECTOR(2 DOWNTO 0) := 011 ; CONSTANT ST4 : STD_LOGIC_VECTOR(2 DOWNTO 0) := 100 ; .,KX康芯科技,圖8-13 一位熱碼編碼方式選擇對話框,8.4.3 一位熱碼編碼,8.5 非法狀態(tài)處理

26、,KX康芯科技,表8-3 剩余狀態(tài),(1) 在語句中對每一個非法狀態(tài)都作出明確的狀態(tài)轉(zhuǎn)換指示,如在原來的CASE語句中增加諸如以下語句: WHEN st_ilg1 = next_state next_state = st0; . (2) 如例8-9那樣,利用OTHERS語句中對未提到的狀態(tài)作統(tǒng)一處理。,8.5 非法狀態(tài)處理,KX康芯科技,【例8-9】 . TYPE states IS (st0, st1, st2, st3,st4, st_ilg1,st_ilg2 ,st_ilg3); SIGNAL current_state, next_state: states; . COM:PROCES

27、S(current_state, state_Inputs) - 組合邏輯進(jìn)程 BEGIN CASE current_state IS - 確定當(dāng)前狀態(tài)的狀態(tài)值 . WHEN OTHERS = next_state = st0; END case;,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 (

28、st3 AND (st0 OR st1 OR st2 OR st4 OR st5) OR (st4 AND (st0 OR st1 OR st2 OR st3 OR st5) OR (st5 AND (st0 OR st1 OR st2 OR st3 OR st4) ;,習(xí) 題,KX康芯科技,8-1. 仿照例8-1,將例8-4用兩個進(jìn)程,即一個時序進(jìn)程,一個組合進(jìn)程表達(dá)出來。 8-2. 為確保例8-5的狀態(tài)機(jī)輸出信號沒有毛刺,試用例8-4的方式構(gòu)成一個單進(jìn)程狀態(tài),使輸出信號得到可靠鎖存,在相同輸入信號條件下,給出兩程序的仿真波形。 8-3. 序列檢測器可用于檢測一組或多組由二進(jìn)制碼組成的脈沖序

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

30、64.ALL; ENTITY SCHK IS PORT(DIN,CLK,CLR : IN STD_LOGIC; -串行輸入數(shù)據(jù)位/工作時鐘/復(fù)位信號 AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -檢測結(jié)果輸出 END SCHK; ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 8 ; SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); -8位待檢測預(yù)置數(shù)(密碼=E5H) BEGIN D IF DIN = D(7) THEN Q = 1 ; ELSE Q = 0

31、 ; END IF ; (接下頁),習(xí) 題,KX康芯科技,WHEN 1= IF DIN = D(6) THEN Q IF DIN = D(5) THEN Q IF DIN = D(4) THEN Q IF DIN = D(3) THEN Q IF DIN = D(2) THEN Q IF DIN = D(1) THEN Q IF DIN = D(0) THEN Q Q = 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) -檢測結(jié)果判斷輸出 BEGIN IF Q = 8 THEN AB = 1010 ; -序列數(shù)檢測正確,輸出 “A” ELS

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

33、11100、111001、1110010、11100101 共9種狀態(tài)。,習(xí) 題,KX康芯科技,8-4. 根據(jù)圖8-14(a)所示的狀態(tài)圖,分別按照圖8-4(b)和圖8-14(c)寫出對應(yīng)結(jié)構(gòu)的VHDL狀態(tài)機(jī)。,8-5. 在不改變原代碼功能的條件下用兩種方法改寫例8-2,使其輸出的控制信號(ALE、START、OE、LOCK)沒有毛刺。方法1:將輸出信號鎖存后輸出;方法2:使用狀態(tài)碼直接輸出型狀態(tài)機(jī),并比較這三種狀態(tài)機(jī)的特點。,習(xí) 題,KX康芯科技,圖8-14 習(xí)題8-4狀態(tài)圖,實 驗 與 設(shè) 計,KX康芯科技,8-1. 序列檢測器設(shè)計 (1) 實驗?zāi)康模河脿顟B(tài)機(jī)實現(xiàn)序列檢測器的設(shè)計,了解一般

34、狀態(tài)機(jī)的設(shè)計與應(yīng)用。 (2) 實驗原理:序列檢測器的工作原理已在習(xí)題8-3中作了說明。 (3) 實驗內(nèi)容1:仔細(xì)完成習(xí)題8-3的全部內(nèi)容,利用QuartusII對例8-11進(jìn)行文本編輯輸入、仿真測試并給出仿真波形,了解控制信號的時序,最后進(jìn)行引腳鎖定并完成硬件測試實驗。 建議選擇電路模式No.8(附錄圖9),用鍵7(PIO11)控制復(fù)位信號CLR;鍵6(PIO9)控制狀態(tài)機(jī)工作時鐘CLK;待檢測串行序列數(shù)輸入DIN接PIO10(左移,最高位在前);指示輸出AB接PIO39PIO36(顯示于數(shù)碼管6)。下載后:按實驗板“系統(tǒng)復(fù)位”鍵;用鍵2和鍵1輸入2位十六進(jìn)制待測序列數(shù)“11100101”;按

35、鍵7復(fù)位(平時數(shù)碼6指示顯“B”);按鍵6(CLK) 8次,這時若串行輸入的8位二進(jìn)制序列碼(顯示于數(shù)碼2/1和發(fā)光管D8D0)與預(yù)置碼“11100101”相同,則數(shù)碼6應(yīng)從原來的B變成A,表示序列檢測正確,否則仍為B。,實 驗 與 設(shè) 計,KX康芯科技,8-1. 序列檢測器設(shè)計 (4) 實驗內(nèi)容2:根據(jù)習(xí)題8-3中的要求3提出的設(shè)計方案,重復(fù)以上實驗內(nèi)容(將8位待檢測預(yù)置數(shù)由鍵4/鍵3作為外部輸入,從而可隨時改變檢測密碼)。 (5) 實驗思考題:如果待檢測預(yù)置數(shù)必須以右移方式進(jìn)入序列檢測器,寫出該檢測器的VHDL代碼(兩進(jìn)程符號化有限狀態(tài)機(jī)),并提出測試該序列檢測器的實驗方案。 (6) 實驗

36、報告:根據(jù)以上的實驗內(nèi)容寫出實驗報告,包括設(shè)計原理、程序設(shè)計、程序分析、仿真分析、硬件測試和詳細(xì)實驗過程。,實 驗 與 設(shè) 計,KX康芯科技,8-2. ADC0809采樣控制電路實現(xiàn) (1) 實驗?zāi)康模簩W(xué)習(xí)用狀態(tài)機(jī)對A/D轉(zhuǎn)換器ADC0809的采樣控制電路的實現(xiàn)。 (2) 實驗原理:ADC0809的采樣控制原理已在8.2.1節(jié)中作了詳細(xì)說明(實驗程序用例8-2)。 ADC0809是CMOS的8位A/D轉(zhuǎn)換器,片內(nèi)有8路模擬開關(guān),可控制8個模擬量中的一個進(jìn)入轉(zhuǎn)換器中。轉(zhuǎn)換時間約100s,含鎖存控制的8路多路開關(guān),輸出有三態(tài)緩沖器控制,單5V電源供電。 主要控制信號如圖8-3所示:START是轉(zhuǎn)換

37、啟動信號,高電平有效;ALE是3位通道選擇地址(ADDC、ADDB、ADDA)信號的鎖存信號。當(dāng)模擬量送至某一輸入端(如IN1或IN2等),由3位地址信號選擇,而地址信號由ALE鎖存;EOC是轉(zhuǎn)換情況狀態(tài)信號,當(dāng)啟動轉(zhuǎn)換約100s 后,EOC產(chǎn)生一個負(fù)脈沖,以示轉(zhuǎn)換結(jié)束;在EOC的上升沿后,若使輸出使能信號OE為高電平,則控制打開三態(tài)緩沖器,把轉(zhuǎn)換好的8位數(shù)據(jù)結(jié)果輸至數(shù)據(jù)總線,至此ADC0809的一次轉(zhuǎn)換結(jié)束。實驗過程。,實 驗 與 設(shè) 計,KX康芯科技,8-2. ADC0809采樣控制電路實現(xiàn) (3) 實驗內(nèi)容:利用QuartusII對例8-2進(jìn)行文本編輯輸入和仿真測試;給出仿真波形。最后進(jìn)

38、行引腳鎖定并進(jìn)行測試,硬件驗證例8-2電路對ADC0809的控制功能。 測試步驟:建議選擇電路模式No.5,由對應(yīng)的電路圖可見,ADC0809的轉(zhuǎn)換時鐘CLK已經(jīng)事先接有750kHz的頻率,引腳鎖定為:START接PIO34,OE(ENABLE)接PIO35,EOC接PIO8,ALE接PIO33,狀態(tài)機(jī)時鐘CLK接clock0,ADDA接PIO32(ADDB和ADDC都接GND),ADC0809的8位輸出數(shù)據(jù)線接PIO23PIO16,鎖存輸出Q顯示于數(shù)碼8/數(shù)碼7(PIO47PIO40)。 (4) 實驗思考題:在不改變原代碼功能的條件下將例8-2表達(dá)成用狀態(tài)碼直接輸出型的狀態(tài)機(jī)。 (5) 實驗

39、報告:根據(jù)以上的實驗要求、實驗內(nèi)容和實驗思考題寫出實驗報告。,實 驗 與 設(shè) 計,KX康芯科技,8-3. 數(shù)據(jù)采集電路和簡易存儲示波器設(shè)計 (1) 實驗?zāi)康模赫莆誏PM RAM模塊VHDL元件定制、調(diào)用和使用方法;熟悉A/D和D/A與FPGA接口電路設(shè)計;了解HDL文本描述與原理圖混合設(shè)計方法。 (2) 實驗原理:主要內(nèi)容參考本章和7.2節(jié)。本設(shè)計項目是利用FPGA直接控制0809對模擬信號進(jìn)行采樣,然后將轉(zhuǎn)換好的8位二進(jìn)制數(shù)據(jù)迅速存儲到存儲器中,在完成對模擬信號一個或數(shù)個周期的采樣后,由外部電路系統(tǒng)(如單片機(jī))將存儲器中的采樣數(shù)據(jù)讀出處理。1. 元件ADCINT。ADCINT是控制0809的

40、采樣狀態(tài)機(jī),其VHDL描述以及其輸入輸出信號的含義與例8-2完全相同,工作方式可參考8.2.1節(jié);。 (3) 實驗內(nèi)容1:設(shè)ADDA=1;即模擬信號來自0809的IN1口(可用實驗系統(tǒng)右下角的電位器產(chǎn)生被測模擬信號)完成此項設(shè)計,給出仿真波形及其分析,將設(shè)計結(jié)果在Cyclone中硬件實現(xiàn),用QuartusII的在系統(tǒng)RAM/ROM數(shù)據(jù)編輯器了解采入RAM中的數(shù)據(jù)。 (4) 實驗內(nèi)容2:優(yōu)化設(shè)計。仿真設(shè)計電路圖8-15,檢查此項設(shè)計得START信號是否有毛刺,如果有,改進(jìn)ADCINT的設(shè)計(也可用其他方法),排除START的毛刺。,實 驗 與 設(shè) 計,KX康芯科技,圖8-15 ADC0809采樣

41、電路系統(tǒng):RSV.bdf,實 驗 與 設(shè) 計,KX康芯科技,8-3. 數(shù)據(jù)采集電路和簡易存儲示波器設(shè)計 (5) 實驗內(nèi)容3:對電路圖8-15完成設(shè)計和仿真后鎖定引腳,進(jìn)行硬件測試。參考實驗8-2和7-1對0809和0832的引腳鎖定:元件“ADCINT”引腳鎖定參考實驗8-2。WE用鍵1控制;為了實驗方便,CLK接clock0,頻率先選擇64Hz(選擇較慢的采樣時鐘),作狀態(tài)機(jī)工作時鐘。硬件實驗中,建議選擇電路模式No.5,打開+/-12V電源,首先使WE=1,即鍵1置高電平,允許采樣,由于這時的程序中設(shè)置ADDA = 1,模擬信號來自AIN1,即可通過調(diào)協(xié)實驗板上的電位器(此時的模擬信號是手

42、動產(chǎn)生的),將轉(zhuǎn)換好的數(shù)據(jù)采入RAM中;然后按鍵1,使WE=0,clock0的頻率選擇16384Hz(選擇較高時鐘),即能從示波器中看見被存于RAM中的數(shù)據(jù)(可以首先通過QuartusII的RAM在系統(tǒng)讀寫器觀察已采入RAM中的數(shù)據(jù))。,實 驗 與 設(shè) 計,KX康芯科技,8-3. 數(shù)據(jù)采集電路和簡易存儲示波器設(shè)計 (6) 實驗內(nèi)容4:程序中設(shè)置ADDA = 0,模擬信號將由AIN0進(jìn)入,即AIN0的輸入信號來自外部信號源的模擬連續(xù)信號。外部模擬信號可來自實驗箱,方法如下: 首先打開+/-12V電源,將GW48主系統(tǒng)板右側(cè)的“JL11”跳線座短路“L_F”端;跳線座“JP18”的“INPUT”端

43、與系統(tǒng)右下角的時鐘64Hz相接;并用一插線將插座“JP17”的“OUTPUT”端與實驗箱最左側(cè)的“JL10”坐的“AIN0”端相接,這樣就將64Hz待采樣的模擬信號接入了0809的IN0端(注意,這時例8-2/12程序中設(shè)置ADDA = 0)。試調(diào)節(jié)“JP18”上方的電位器,使得主系統(tǒng)右側(cè)的“WAVE OUT”端輸出正常信號波形(用示波器監(jiān)視,峰值調(diào)在4V以下)。注意,如果要將采入(用CLK=64Hz采樣)RAM中的數(shù)據(jù)掃描顯示到示波器上觀察,必須用高頻率時鐘才行(clock0接16384Hz)。 可以使鍵1高電平是對模擬信號采樣,低電平時示波器顯示已存入RAM的波形數(shù)據(jù)。,實 驗 與 設(shè) 計

44、,KX康芯科技,8-3. 數(shù)據(jù)采集電路和簡易存儲示波器設(shè)計 (6) 實驗內(nèi)容5:僅按照以上方法,會發(fā)現(xiàn)示波器顯示的波形并不理想,原因是從RAM中掃出的數(shù)據(jù)都不是一個完整的波形周期。試設(shè)計一個狀態(tài)機(jī),結(jié)合被鎖入RAM中的某些數(shù)據(jù),改進(jìn)元件CNT10B,使之存入RAM中的數(shù)據(jù)和通過D/A在示波器上掃出的數(shù)據(jù)都是一個或數(shù)個完整波形數(shù)據(jù)。 (7) 實驗內(nèi)容6:在圖8-15的電路中增加一個鋸齒波發(fā)生器,掃描時鐘與地址發(fā)生器的時鐘一致。鋸齒波數(shù)據(jù)通過另一個D/A輸出,控制示波器的X端(不用示波器內(nèi)的鋸齒波信號),而Y端由原來的D/A給出RAM中的采樣信息,由此完成一個比較完整的存儲示波器的顯示控制。,KX

45、康芯科技,8-3. 數(shù)據(jù)采集電路和簡易存儲示波器設(shè)計,【例8-12】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10B IS PORT (LOCK0,CLR : IN STD_LOGIC; CLK : IN STD_LOGIC; WE : IN STD_LOGIC; DOUT : OUT STD_LOGIC_VECTOR(8 DOWNTO 0); CLKOUT : OUT STD_LOGIC ); END CNT10B; ARCHITECTURE behav OF

46、CNT10B IS SIGNAL CQI : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL CLK0 : STD_LOGIC; BEGIN CLK0 = LOCK0 WHEN WE=1 ELSE CLK; PROCESS(CLK0,CLR,CQI) BEGIN IF CLR = 1 THEN CQI = 000000000; ELSIF CLK0EVENT AND CLK0 = 1 THEN CQI = CQI + 1; END IF; END PROCESS; DOUT = CQI; CLKOUT = CLK0; END behav;,實 驗 與 設(shè) 計,KX康芯

47、科技,8-4. 比較器和D/A器件實現(xiàn)A/D轉(zhuǎn)換功能的電路設(shè)計 (1) 實驗?zāi)康模簩W(xué)習(xí)較復(fù)雜狀態(tài)機(jī)的設(shè)計。 (2) 實驗原理:圖8-19是一個用比較器LM311和DAC0832構(gòu)成的8位A/D轉(zhuǎn)換器的電路框圖。其工作原理是:當(dāng)被測模擬信號電壓vi接于LM311的“+”輸入端時,由FPGA產(chǎn)生自小到大的搜索數(shù)據(jù)加于DAC0832后,LM311的“-”端將得到一個比較電壓vc;當(dāng)vcvi時,LM311輸出低電平。在LM311輸出由1到0的轉(zhuǎn)折點處,F(xiàn)PGA輸向0832數(shù)據(jù)必定與待測信號電壓vi成正比。由此數(shù)即可算得vi的大小。 (3) 實驗內(nèi)容1:例8-13是圖8-16中FPGA的一個簡單的示例性

48、程序。,實 驗 與 設(shè) 計,KX康芯科技,圖8-16 比較器和D/A構(gòu)成A/D電路框圖。,8-4. 比較器和D/A器件實現(xiàn)A/D轉(zhuǎn)換功能的電路設(shè)計,KX康芯科技,8-4. 比較器和D/A器件實現(xiàn)A/D轉(zhuǎn)換功能的電路設(shè)計,【例8-13】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DAC2ADC IS PORT ( CLK : IN STD_LOGIC; -計數(shù)器時鐘 LM311 : IN STD_LOGIC; -LM311輸出,由PIO37口進(jìn)入FPGA CLR : IN STD_LOGIC; -計數(shù)器復(fù)位 DD : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;-輸向0832的數(shù)據(jù) DISPDATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );-轉(zhuǎn)換數(shù)據(jù)顯示 END; ARCHITECTURE DACC OF DAC2ADC IS SIGNAL CQI : STD_LOGIC_VECTOR(7 DOWNTO 0) ; BEGIN DD = CQI ; PROCESS(CLK, C

溫馨提示

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

最新文檔

評論

0/150

提交評論