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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、EDA 技術實用教程,第 8 章 狀態(tài)機設計,8.1 一般有限狀態(tài)機設計,KX康芯科技,8.1.1 數(shù)據類型定義語句,TYPE語句的用法如下: TYPE 數(shù)據類型名 IS 數(shù)據類型定義 OF 基本數(shù)據類型 ; 或 TYPE 數(shù)據類型名 IS 數(shù)據類型定義 ;,TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ; TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;,8.1 一般有限狀態(tài)機設計,KX康芯科技,8.1.1 數(shù)據類型定義語句,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ù)據類型 RANGE 約束范圍;,SUBTYPE digits IS INTEGER RANGE 0 to 9 ;,8.1 一般有限狀態(tài)機設計,KX康芯科技,8.1.2 為什么要使用狀態(tài)機,8.1 一般有限狀態(tài)機設計,KX康芯科技,8.1.3 一般有限狀態(tài)機的設計,1. 說明部

3、分,ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; .,8.1 一般有限狀態(tài)機設計,KX康芯科技,8.1.3 一般有限狀態(tài)機的設計,2. 主控時序進程,圖8-1 一般狀態(tài)機結構框圖,8.1 一般有限狀態(tài)機設計,KX康芯科技,8.1.3 一般有限狀態(tài)機的設計,3. 主控組合進程,4. 輔助進程,【例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ù)據類型定義,狀態(tài)符號化 SIGNAL current_state, next_state: FSM_ST;-將現(xiàn)態(tài)和次態(tài)定義為新的數(shù)據類型 BEGIN REG: PROCESS (reset,clk) -主控時序進程 (接下

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)機設計,KX康芯科技,8.1.3 一般有限狀態(tài)機的設計,圖8-2a 例8-1狀態(tài)機的工作時序,4. 輔助進程,8.1 一般有限狀態(tài)機設計,KX康芯科技,8.

6、1.3 一般有限狀態(tài)機的設計,圖8-2b 打開QuartusII狀態(tài)圖觀察器,4. 輔助進程,8.1 一般有限狀態(tài)機設計,KX康芯科技,8.1.3 一般有限狀態(tài)機的設計,圖8-2c 例8-1的狀態(tài)圖,4. 輔助進程,8.2 Moore型有限狀態(tài)機設,KX康芯科技,8.2.1 多進程有限狀態(tài)機,圖8-3 ADC0809工作時序,8.2 Moore型有限狀態(tài)機設,KX康芯科技,8.2.1 多進程有限狀態(tài)機,圖8-4 控制ADC0809采樣狀態(tài)圖,KX康芯科技,8.2.1 多進程有限狀態(tài)機,圖8-5 采樣狀態(tài)機結構框圖,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轉換好的8位數(shù)據 CLK : IN STD_LOGIC; -狀態(tài)機工作時鐘 EOC : IN STD_LOGIC; -轉換狀態(tài)指示,低電平表示正在轉換 ALE : OUT STD_LOGIC; -8個模擬信號通道地址鎖存信號 START : OUT STD_LOGIC; -轉換開始信號 OE : OUT STD_LOGIC; -數(shù)據輸出3態(tài)控制信號 ADDA : OUT STD_LOGIC; -信號通道最低位控制信號 LOCK0

8、: OUT STD_LOGIC; -觀察數(shù)據鎖存時鐘 Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -8位數(shù)據輸出 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; - 轉換后數(shù)據輸出鎖存時鐘

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將當前狀態(tài)值帶出此進程:REG LATCH1:

10、PROCESS (LOCK) - 此進程中,在LOCK的上升沿,將轉換好的數(shù)據鎖入 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)機設,KX康芯科技,8.2.1 多進程有限狀態(tài)機,圖8-6 ADC0809采樣狀態(tài)機工作時序,8.2 Moore型有限狀態(tài)機設,KX康芯科技,8.2.2 單進程Moore型有限狀態(tài)機,【例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)機設,KX康芯科技,8.2.2 單進程Moore型有限狀態(tài)機,圖8-7 例8-4狀態(tài)機綜合后的部分主要RTL電路模塊(Synplify綜合),8.2 Moore型有限狀態(tài)機設,KX康芯科技,8.2.2 單進程Moore型有限狀態(tài)機,圖8-8 例8

14、-4單進程狀態(tài)機工作時序,8.2 Moore型有限狀態(tài)機設,KX康芯科技,8.2.2 單進程Moore型有限狀態(tài)機,圖8-9 對應于例8-4的二進程狀態(tài)機工作時序圖,8.3 Mealy型有限狀態(tài)機設計,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 -決定轉換狀態(tài)的進程 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)機設計,KX康芯科技,圖8-10 例8-5狀態(tài)機工作時序圖,8.3 Mealy型有限狀態(tài)機設計,KX康芯科技,圖8-11 例8-6狀態(tài)機工作時序圖,8.3 Mealy型有限狀態(tài)機設計,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、-決定轉換狀態(tài)的進程 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將當前狀態(tài)值帶出此進程:REG LATCH1: PROCESS (LOCK) - 此進程中,在LOCK的上升沿,將轉換

24、好的數(shù)據鎖入 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)機工作時序圖,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)轉換指示,如在原來的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) - 組合邏輯進程 BEGIN CASE current_state IS - 確定當前狀態(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) ;,習 題,KX康芯科技,8-1. 仿照例8-1,將例8-4用兩個進程,即一個時序進程,一個組合進程表達出來。 8-2. 為確保例8-5的狀態(tài)機輸出信號沒有毛刺,試用例8-4的方式構成一個單進程狀態(tài),使輸出信號得到可靠鎖存,在相同輸入信號條件下,給出兩程序的仿真波形。 8-3. 序列檢測器可用于檢測一組或多組由二進制碼組成的脈沖序

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

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

31、 ; END IF ; (接下頁),習 題,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 ) -檢測結果判斷輸出 BEGIN IF Q = 8 THEN AB = 1010 ; -序列數(shù)檢測正確,輸出 “A” ELS

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

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

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

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

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

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

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

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

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

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

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

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

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

45、康芯科技,8-3. 數(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;,實 驗 與 設 計,KX康芯

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

48、程序。,實 驗 與 設 計,KX康芯科技,圖8-16 比較器和D/A構成A/D電路框圖。,8-4. 比較器和D/A器件實現(xiàn)A/D轉換功能的電路設計,KX康芯科技,8-4. 比較器和D/A器件實現(xiàn)A/D轉換功能的電路設計,【例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口進入FPGA CLR : IN STD_LOGIC; -計數(shù)器復位 DD : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;-輸向0832的數(shù)據 DISPDATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );-轉換數(shù)據顯示 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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論