版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、vhdlvhdl與與edaeda5.1 狀態(tài)機(jī)設(shè)計(jì)相關(guān)語(yǔ)句 5.1.1 5.1.1 類型定義語(yǔ)句類型定義語(yǔ)句 type 數(shù)據(jù)類型名數(shù)據(jù)類型名 is 數(shù)據(jù)類型定義數(shù)據(jù)類型定義 of 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 ;或或 type 數(shù)據(jù)類型名數(shù)據(jù)類型名 is 數(shù)據(jù)類型定義數(shù)據(jù)類型定義 ; type st1 is array ( 0 to 15 ) of std_logic ;type week is (sun,mon,tue,wed,thu,fri,sat) ; type m_state is ( st0,st1,st2,st3,st4,st5 ) ; signal present_state,nex
2、t_state : m_state ; type boolean is (false,true) ; 第第5 5章章 type my_logic is ( 1 ,z ,u ,0 ) ; signal s1 : my_logic ; s1 = z ; subtype 子類型名子類型名 is 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 range 約束范圍約束范圍; subtype digits is integer range 0 to 9 ; 1高級(jí)教育vhdlvhdl與與edaeda5.1.2 5.1.2 狀態(tài)機(jī)的優(yōu)勢(shì)狀態(tài)機(jī)的優(yōu)勢(shì) 1狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn);狀態(tài)機(jī)克服了純硬件數(shù)字系
3、統(tǒng)順序方式控制不靈活的缺點(diǎn);2 2由于狀態(tài)機(jī)的結(jié)構(gòu)相對(duì)簡(jiǎn)單,設(shè)計(jì)方案相對(duì)固定;由于狀態(tài)機(jī)的結(jié)構(gòu)相對(duì)簡(jiǎn)單,設(shè)計(jì)方案相對(duì)固定;3 3、狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊;、狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊;4 4、與、與vhdlvhdl的其他描述方式相比,狀態(tài)機(jī)的的其他描述方式相比,狀態(tài)機(jī)的vhdlvhdl表述豐富多樣、表述豐富多樣、程序?qū)哟畏置?,結(jié)構(gòu)清晰,易讀易懂;在排錯(cuò)、修改和模塊移程序?qū)哟畏置?,結(jié)構(gòu)清晰,易讀易懂;在排錯(cuò)、修改和模塊移植方面也有其獨(dú)到的好處;植方面也有其獨(dú)到的好處;5 5、在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢(shì)。、在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)
4、勢(shì)。 6 6、高可靠性。、高可靠性。 5.1 狀態(tài)機(jī)設(shè)計(jì)相關(guān)語(yǔ)句 2高級(jí)教育vhdlvhdl與與edaeda2. 主控時(shí)序進(jìn)程主控時(shí)序進(jìn)程 comb_outputsstate_inputsresetclkfsm:s_machinecomnext_statecurrent_stateprocessregprocess圖圖5-1 一般狀態(tài)機(jī)結(jié)構(gòu)框圖一般狀態(tài)機(jī)結(jié)構(gòu)框圖 5.1 狀態(tài)機(jī)設(shè)計(jì)相關(guān)語(yǔ)句 5.1.3 5.1.3 狀態(tài)機(jī)結(jié)構(gòu)狀態(tài)機(jī)結(jié)構(gòu) 1. 說(shuō)明部分說(shuō)明部分 architecture .is type fsm_st is (s0,s1,s2,s3); signal current_state,
5、 next_state: fsm_st; . ;3. 主控組合進(jìn)程主控組合進(jìn)程 4. 輔助進(jìn)程輔助進(jìn)程 3高級(jí)教育vhdlvhdl與與edaeda【例例5-1】library ieee;use ieee.std_logic_1164.all;entity s_machine is port ( clk,reset : 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_m
6、achine is type fsm_st is (s0, s1, s2, s3); -數(shù)據(jù)類型定義,狀態(tài)符號(hào)化數(shù)據(jù)類型定義,狀態(tài)符號(hào)化 signal current_state, next_state: fsm_st;-將現(xiàn)態(tài)和次態(tài)定義為新將現(xiàn)態(tài)和次態(tài)定義為新的數(shù)據(jù)類型的數(shù)據(jù)類型begin reg: process (reset,clk) -主控時(shí)序進(jìn)程主控時(shí)序進(jìn)程 begin if reset = 1 then current_state = s0;-檢測(cè)異步復(fù)位信號(hào)檢測(cè)異步復(fù)位信號(hào) elsif clk=1 and clkevent then current_state comb_outp
7、uts= 5; if state_inputs = 00 then next_state=s0; else next_state comb_outputs= 8; if state_inputs = 00 then next_state=s1; else next_state comb_outputs= 12; if state_inputs = 11 then next_state = s0; else next_state comb_outputs = 14; if state_inputs = 11 then next_state = s3; else next_state = s0;
8、end if; end case; end process; end behv; 5.1.3 5.1.3 狀態(tài)機(jī)結(jié)構(gòu)狀態(tài)機(jī)結(jié)構(gòu) 5高級(jí)教育vhdlvhdl與與edaeda圖圖5-2 例例5-1狀態(tài)機(jī)的工作時(shí)序狀態(tài)機(jī)的工作時(shí)序 5.1.3 5.1.3 狀態(tài)機(jī)結(jié)構(gòu)狀態(tài)機(jī)結(jié)構(gòu) 6高級(jí)教育vhdlvhdl與與edaeda5.2 moore狀態(tài)機(jī) 5.2.1 5.2.1 多進(jìn)程狀態(tài)機(jī)多進(jìn)程狀態(tài)機(jī) 圖圖5-3 adc0809工作時(shí)序工作時(shí)序 7高級(jí)教育vhdlvhdl與與edaeda5.2.1 5.2.1 多進(jìn)程狀態(tài)機(jī)多進(jìn)程狀態(tài)機(jī) 圖圖5-4 控制控制adc0809采樣狀態(tài)圖采樣狀態(tài)圖 5.2 moore
9、狀態(tài)機(jī) 8高級(jí)教育vhdlvhdl與與edaeda圖圖5-5 采樣狀態(tài)機(jī)結(jié)構(gòu)框圖采樣狀態(tài)機(jī)結(jié)構(gòu)框圖 5.2.1 5.2.1 多進(jìn)程狀態(tài)機(jī)多進(jìn)程狀態(tài)機(jī) 9高級(jí)教育vhdlvhdl與與edaeda【例例5-2】library ieee;use ieee.std_logic_1164.all;entity adcint isport(d : in std_logic_vector(7 downto 0);-來(lái)自來(lái)自0809轉(zhuǎn)換好的轉(zhuǎn)換好的8位數(shù)據(jù)位數(shù)據(jù) clk : in std_logic; -狀態(tài)機(jī)工作時(shí)鐘狀態(tài)機(jī)工作時(shí)鐘 eoc : in std_logic; -轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換轉(zhuǎn)
10、換狀態(tài)指示,低電平表示正在轉(zhuǎn)換 ale : out std_logic; -8個(gè)模擬信號(hào)通道地址鎖存信號(hào)個(gè)模擬信號(hào)通道地址鎖存信號(hào) start : out std_logic; -轉(zhuǎn)換開(kāi)始信號(hào)轉(zhuǎn)換開(kāi)始信號(hào) oe : out std_logic; -數(shù)據(jù)輸出數(shù)據(jù)輸出3態(tài)控制信號(hào)態(tài)控制信號(hào) adda : out std_logic; -信號(hào)通道最低位控制信號(hào)信號(hào)通道最低位控制信號(hào) lock : out std_logic; -觀察數(shù)據(jù)鎖存時(shí)鐘觀察數(shù)據(jù)鎖存時(shí)鐘 q : out std_logic_vector(7 downto 0); -8位數(shù)據(jù)輸出位數(shù)據(jù)輸出end adcint;architect
11、ure behav of adcint is type states is (st0, st1, st2, st3,st4) ; -定義各狀態(tài)子類型定義各狀態(tài)子類型 signal current_state, next_state: states :=st0 ; signal regl : std_logic_vector(7 downto 0); signal lock0 : std_logic; - 轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號(hào)轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號(hào)beginadda = 1; -當(dāng)當(dāng)adda=0,模擬信號(hào)進(jìn)入通道,模擬信號(hào)進(jìn)入通道in0;當(dāng);當(dāng)adda=1,則進(jìn)入通道,則進(jìn)入通道in1
12、q = regl; lock ale=0;start=0;lock0=0;oe=0; next_state ale=1;start=1;lock0=0;oe=0; next_state ale=0;start=0;lock0=0;oe=0; if (eoc=1) then next_state = st3; -eoc=1表明轉(zhuǎn)換結(jié)束表明轉(zhuǎn)換結(jié)束 else next_state ale=0;start=0;lock0=0;oe=1; next_state ale=0;start=0;lock0=1;oe=1;next_state next_state = st0; end case ;end p
13、rocess com ;reg: process (clk) begin if (clkevent and clk=1) then current_state=next_state; end if;end process reg ; - 由信號(hào)由信號(hào)current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程將當(dāng)前狀態(tài)值帶出此進(jìn)程latch1: process (lock0) - 此進(jìn)程中,在此進(jìn)程中,在lock的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入 begin if lock0=1 and lock0event then regl next_state next_state if (e
14、oc=1) then next_state = st3; else next_state next_state next_state next_state ale=0;start=0;lock=0;oeale=1;start=1;lock=0;oeale=0;start=0;lock=0;oeale=0;start=0;lock=0;oeale=0;start=0;lock=1;oe ale=0;start=0;lock=0; end case ;end process com2 ; 5.2.1 5.2.1 多進(jìn)程狀態(tài)機(jī)多進(jìn)程狀態(tài)機(jī) 13高級(jí)教育vhdlvhdl與與edaeda5.2.2 5.
15、2.2 單進(jìn)程單進(jìn)程mooremoore狀態(tài)機(jī)狀態(tài)機(jī) 【例例5-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_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 : s
16、t_type ; begin process(clk,rst) begin if rst =1 then c_st = st0 ; q if datain =10 then c_st = st1 ; else c_st = st0 ; end if; q if datain =11 then c_st = st2 ; else c_st = st1 ;end if; q if datain =01 then c_st = st3 ; else c_st = st0 ;end if; q if datain =00 then c_st = st4 ; else c_st = st2 ;end i
17、f; q if datain =11 then c_st = st0 ; else c_st = st3 ;end if; q c_st = st0; end case; end if; end process;end behav; 15高級(jí)教育vhdlvhdl與與edaeda圖圖5-7 例例5-4狀態(tài)機(jī)綜合后的部分主要狀態(tài)機(jī)綜合后的部分主要rtl電路模塊(電路模塊(synplify綜合)綜合) 5.2.2 5.2.2 單進(jìn)程單進(jìn)程mooremoore狀態(tài)機(jī)狀態(tài)機(jī) 16高級(jí)教育vhdlvhdl與與edaeda圖圖5-8 例例5-4單進(jìn)程狀態(tài)機(jī)工作時(shí)序單進(jìn)程狀態(tài)機(jī)工作時(shí)序 5.2.2 5.2.2
18、 單進(jìn)程單進(jìn)程mooremoore狀態(tài)機(jī)狀態(tài)機(jī) 圖圖5-9 對(duì)應(yīng)于例對(duì)應(yīng)于例5-4的二進(jìn)程狀態(tài)機(jī)工作時(shí)序圖的二進(jìn)程狀態(tài)機(jī)工作時(shí)序圖 17高級(jí)教育vhdlvhdl與與edaeda【例例5-5】 library ieee; use ieee.std_logic_1164.all;entity mealy1 isport ( clk ,datain,reset : in std_logic; q : out std_logic_vector(4 downto 0);end mealy1;architecture behav of mealy1 is type states is (st0, st1,
19、 st2, st3,st4); signal stx : states ; begin comreg : process(clk,reset) begin -決定轉(zhuǎn)換狀態(tài)的進(jìn)程決定轉(zhuǎn)換狀態(tài)的進(jìn)程 if reset =1 then stx 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 q = 10000 ; else q if datain = 0 then q = 1
20、0111 ; else q if datain = 1 then q = 10101 ; else q if datain = 0 then q = 11011 ; else q if datain = 1 then q = 11101 ; else q q=00000 ; end case ; end process com1 ;end behav; 5.3 mealy狀態(tài)機(jī) 19高級(jí)教育vhdlvhdl與與edaeda【例例5-6】library ieee; -mealy fsmuse ieee.std_logic_1164.all;entity mealy2 is port ( clk
21、,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) -決定轉(zhuǎn)換狀態(tài)的進(jìn)程決定轉(zhuǎn)換狀態(tài)的進(jìn)程 begin if reset =1 then stx if d
22、atain = 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 datain=0 then q2 :=10111; else q2:=10100; end if; when st2= if datain=1 then q2 :=10101; else q2:=10011; end if; when s
23、t3= 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 then q1=q2; end if; end process com1 ; q = q1 ;end behav; 5.3 mealy狀態(tài)機(jī) 21高級(jí)教育vhdlvhdl與與edaeda圖圖5-10 例例5-5狀態(tài)機(jī)工作時(shí)序圖狀態(tài)機(jī)工作時(shí)
24、序圖 5.3 mealy狀態(tài)機(jī) 圖圖5-11 例例5-6狀態(tài)機(jī)工作時(shí)序圖狀態(tài)機(jī)工作時(shí)序圖 22高級(jí)教育vhdlvhdl與與edaeda5.4 狀態(tài)編碼 5.4.1 5.4.1 直接輸出型編碼直接輸出型編碼 表表5-1 控制信號(hào)狀態(tài)編碼表控制信號(hào)狀態(tài)編碼表 狀態(tài)狀態(tài) 狀狀 態(tài)態(tài) 編編 碼碼startaleoelockb功功 能能 說(shuō)說(shuō) 明明st0 00000初始態(tài)初始態(tài)st111000啟動(dòng)轉(zhuǎn)換啟動(dòng)轉(zhuǎn)換st200001若測(cè)得若測(cè)得eoc=1時(shí),轉(zhuǎn)下一狀態(tài)時(shí),轉(zhuǎn)下一狀態(tài)st3st300100輸出轉(zhuǎn)換好的數(shù)據(jù)輸出轉(zhuǎn)換好的數(shù)據(jù)st400110利用利用lock的上升沿將轉(zhuǎn)換好的數(shù)據(jù)鎖存的上升沿將轉(zhuǎn)換好的數(shù)
25、據(jù)鎖存23高級(jí)教育vhdlvhdl與與edaeda5.4.1 5.4.1 直接輸出型編碼直接輸出型編碼 【例例5-7】library ieee;use ieee.std_logic_1164.all;entity ad0809 isport (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_vector(4 downto 0); q : out std_logic_vector(7 downto
26、0);end ad0809;architecture behav of ad0809 issignal 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 ; constant st2 : std_logic_vector(4 downto 0) := 00001 ; constant st3 : std_logic_
27、vector(4 downto 0) := 00100 ; constant st4 : std_logic_vector(4 downto 0) := 00110 ; signal regl : std_logic_vector(7 downto 0); signal lock : std_logic; begin (接下頁(yè))(接下頁(yè))24高級(jí)教育vhdlvhdl與與edaeda表表5-1 控制信號(hào)狀態(tài)編碼表控制信號(hào)狀態(tài)編碼表 5.4.1 5.4.1 直接輸出型編碼直接輸出型編碼 adda = 1; q = regl; start=current_state(4); ale=current_
28、state(3);oe=current_state(2); lock=current_state(1);c_state next_state next_state if (eoc=1) then next_state = st3; -eoc=1表明轉(zhuǎn)換結(jié)束表明轉(zhuǎn)換結(jié)束 else 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;
29、end if; end process reg ; - 由信號(hào)由信號(hào)current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程將當(dāng)前狀態(tài)值帶出此進(jìn)程:reg latch1: process (lock) - 此進(jìn)程中,在此進(jìn)程中,在lock的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入 begin if lock=1 and lockevent then regl next_state next_state next_state = st0; end case; 29高級(jí)教育vhdlvhdl與與edaeda【例例5-10】.alarm = (st0 and (st1 or st2 or st3
30、 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 or st3 or st5) or (st5 and (st0 or st1 or st2 or st3 or st4) ; 5.5 非法狀態(tài)處理 30高級(jí)教育vhdlvhdl與與edaeda5-1. 仿照例仿照例5-1,將例,將
31、例5-4用兩個(gè)進(jìn)程,即一個(gè)時(shí)序進(jìn)程,一個(gè)組合進(jìn)用兩個(gè)進(jìn)程,即一個(gè)時(shí)序進(jìn)程,一個(gè)組合進(jìn)程表達(dá)出來(lái)。程表達(dá)出來(lái)。5-2. 為確保例為確保例5-5的狀態(tài)機(jī)輸出信號(hào)沒(méi)有毛刺,試用例的狀態(tài)機(jī)輸出信號(hào)沒(méi)有毛刺,試用例5-4的方式構(gòu)成的方式構(gòu)成一個(gè)單進(jìn)程狀態(tài),使輸出信號(hào)得到可靠鎖存,在相同輸入信號(hào)條件下,一個(gè)單進(jìn)程狀態(tài),使輸出信號(hào)得到可靠鎖存,在相同輸入信號(hào)條件下,給出兩程序的仿真波形。給出兩程序的仿真波形。 5-3. 序列檢測(cè)器可用于檢測(cè)一組或多組由二進(jìn)制碼組成的脈沖序列信序列檢測(cè)器可用于檢測(cè)一組或多組由二進(jìn)制碼組成的脈沖序列信號(hào),當(dāng)序列檢測(cè)器連續(xù)收到一組串行二進(jìn)制碼后,如果這組碼與檢測(cè)器號(hào),當(dāng)序列檢測(cè)器
32、連續(xù)收到一組串行二進(jìn)制碼后,如果這組碼與檢測(cè)器中預(yù)先設(shè)置的碼相同,則輸出中預(yù)先設(shè)置的碼相同,則輸出1,否則輸出,否則輸出0。由于這種檢測(cè)的關(guān)鍵在于。由于這種檢測(cè)的關(guān)鍵在于正確碼的收到必須是連續(xù)的,這就要求檢測(cè)器必須記住前一次的正確碼正確碼的收到必須是連續(xù)的,這就要求檢測(cè)器必須記住前一次的正確碼及正確序列,直到在連續(xù)的檢測(cè)中所收到的每一位碼都與預(yù)置數(shù)的對(duì)應(yīng)及正確序列,直到在連續(xù)的檢測(cè)中所收到的每一位碼都與預(yù)置數(shù)的對(duì)應(yīng)碼相同。在檢測(cè)過(guò)程中,任何一位不相等都將回到初始狀態(tài)重新開(kāi)始檢碼相同。在檢測(cè)過(guò)程中,任何一位不相等都將回到初始狀態(tài)重新開(kāi)始檢測(cè)。例測(cè)。例5-11描述的電路完成對(duì)序列數(shù)描述的電路完成對(duì)
33、序列數(shù)“11100101”的檢測(cè),當(dāng)這一串的檢測(cè),當(dāng)這一串序列數(shù)高位在前序列數(shù)高位在前(左移左移)串行進(jìn)入檢測(cè)器后,若此數(shù)與預(yù)置的密碼數(shù)相同,串行進(jìn)入檢測(cè)器后,若此數(shù)與預(yù)置的密碼數(shù)相同,則輸出則輸出“a”,否則仍然輸出,否則仍然輸出“b”。 31高級(jí)教育vhdlvhdl與與edaeda【例例5-11】library ieee ;use ieee.std_logic_1164.all;entity schk is port(din,clk,clr : in std_logic; -串行輸入數(shù)據(jù)位串行輸入數(shù)據(jù)位/工作時(shí)鐘工作時(shí)鐘/復(fù)位信號(hào)復(fù)位信號(hào) ab : out std_logic_vector
34、(3 downto 0); -檢測(cè)結(jié)果輸出檢測(cè)結(jié)果輸出end schk;architecture behav of schk is signal q : integer range 0 to 8 ; signal d : std_logic_vector(7 downto 0); -8位待檢測(cè)預(yù)置數(shù)位待檢測(cè)預(yù)置數(shù)(密碼密碼=e5h)begin d = 11100101 ; -8位待檢測(cè)預(yù)置數(shù)位待檢測(cè)預(yù)置數(shù) process( clk, clr ) begin if clr = 1 then q if din = d(7) then q = 1 ; else q if din = d(6) the
35、n q = 2 ; else q if din = d(5) then q = 3 ; else q if din = d(4) then q = 4 ; else q if din = d(3) then q = 5 ; else q if din = d(2) then q = 6 ; else q if din = d(1) then q = 7 ; else q if din = d(0) then q = 8 ; else q q = 0 ; end case ; end if ; end process ; process( q ) -檢測(cè)結(jié)果判斷輸出檢測(cè)結(jié)果判斷輸出 begin
36、if q = 8 then ab = 1010 ; -序列數(shù)檢測(cè)正確,輸出序列數(shù)檢測(cè)正確,輸出 “a” else ab = 1011 ; -序列數(shù)檢測(cè)錯(cuò)誤,輸出序列數(shù)檢測(cè)錯(cuò)誤,輸出 “b” end if ; end process ;end behav ; 32高級(jí)教育vhdlvhdl與與edaeda要求要求1:說(shuō)明例說(shuō)明例5-11的代碼表達(dá)的是什么類型的狀態(tài)機(jī),它的優(yōu)點(diǎn)是什的代碼表達(dá)的是什么類型的狀態(tài)機(jī),它的優(yōu)點(diǎn)是什么?詳述其功能和對(duì)序列數(shù)檢測(cè)的邏輯過(guò)程。么?詳述其功能和對(duì)序列數(shù)檢測(cè)的邏輯過(guò)程。要求要求2:根據(jù)例根據(jù)例5-11寫(xiě)出由兩個(gè)主控進(jìn)程構(gòu)成的相同功能的符號(hào)化寫(xiě)出由兩個(gè)主控進(jìn)程構(gòu)成的相
37、同功能的符號(hào)化moore型有限狀態(tài)機(jī),畫(huà)出狀態(tài)圖,并給出其仿真測(cè)試波形。型有限狀態(tài)機(jī),畫(huà)出狀態(tài)圖,并給出其仿真測(cè)試波形。要求要求3:將將8位待檢測(cè)預(yù)置數(shù)作為外部輸入信號(hào),即可以隨時(shí)改變序列檢位待檢測(cè)預(yù)置數(shù)作為外部輸入信號(hào),即可以隨時(shí)改變序列檢測(cè)器中的比較數(shù)據(jù)。寫(xiě)出此程序的符號(hào)化單進(jìn)程有限狀態(tài)機(jī)。測(cè)器中的比較數(shù)據(jù)。寫(xiě)出此程序的符號(hào)化單進(jìn)程有限狀態(tài)機(jī)。提示:對(duì)于提示:對(duì)于d=“11100101”,電路需分別不間斷記憶:初始狀態(tài)、,電路需分別不間斷記憶:初始狀態(tài)、1、11、111 、 1110 、11100、111001、1110010、11100101 共共9種狀態(tài)。種狀態(tài)。 33高級(jí)教育vhdl
38、vhdl與與edaeda5-4. 根據(jù)圖根據(jù)圖5-14(a)所示的狀態(tài)圖,分別按照?qǐng)D所示的狀態(tài)圖,分別按照?qǐng)D5-14(b)和圖和圖5-14(c)寫(xiě)出對(duì)應(yīng)結(jié)構(gòu)的寫(xiě)出對(duì)應(yīng)結(jié)構(gòu)的vhdl狀態(tài)機(jī)。狀態(tài)機(jī)。 圖圖5-14 習(xí)題習(xí)題5-4狀態(tài)圖狀態(tài)圖 34高級(jí)教育vhdlvhdl與與edaeda5-5. 在不改變?cè)a功能的條件下用兩種方法改寫(xiě)例在不改變?cè)a功能的條件下用兩種方法改寫(xiě)例5-2,使其輸出的控,使其輸出的控制信號(hào)制信號(hào)(ale、start、oe、lock)沒(méi)有毛刺。沒(méi)有毛刺。方法方法1:將輸出信號(hào)鎖存后輸出;將輸出信號(hào)鎖存后輸出;方法方法2:使用狀態(tài)碼直接輸出型狀態(tài)機(jī),并比較這三種狀態(tài)機(jī)的特
39、點(diǎn)。:使用狀態(tài)碼直接輸出型狀態(tài)機(jī),并比較這三種狀態(tài)機(jī)的特點(diǎn)。 實(shí)驗(yàn)實(shí)驗(yàn)5-1.5-1. 序列檢測(cè)器設(shè)計(jì)序列檢測(cè)器設(shè)計(jì) 實(shí)驗(yàn)實(shí)驗(yàn)5-2.5-2. adc0809 adc0809采樣控制電路實(shí)現(xiàn)采樣控制電路實(shí)現(xiàn) 實(shí)驗(yàn)實(shí)驗(yàn)5-3.5-3. 數(shù)據(jù)采集電路和簡(jiǎn)易存儲(chǔ)示波器設(shè)計(jì)數(shù)據(jù)采集電路和簡(jiǎn)易存儲(chǔ)示波器設(shè)計(jì) 35高級(jí)教育vhdlvhdl與與edaeda圖圖5-15 adc0809采樣電路系統(tǒng):采樣電路系統(tǒng):rsv.bdf 36高級(jí)教育vhdlvhdl與與edaeda【例例5-12】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_un
40、signed.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 cnt10b is signal cqi : std_logic_vector(8 downto 0); signal clk0 : std_logic;beginclk0 = lock0 when w
41、e=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; 37高級(jí)教育vhdlvhdl與與edaeda實(shí)驗(yàn)實(shí)驗(yàn)5-4. 比較器和比較器和d/a器件實(shí)現(xiàn)器件實(shí)現(xiàn)a/d轉(zhuǎn)換功能的電路設(shè)計(jì)轉(zhuǎn)換功能的電路設(shè)計(jì) 【例例5-13】library ieee;use ieee.std_logic_1164.a
42、ll;use ieee.std_logic_unsigned.all;entity dac2adc is port ( clk : in std_logic; -計(jì)數(shù)器時(shí)鐘計(jì)數(shù)器時(shí)鐘 lm311 : in std_logic; -lm311輸出,由輸出,由pio37口進(jìn)入口進(jìn)入fpga clr : in std_logic; -計(jì)數(shù)器復(fù)位計(jì)數(shù)器復(fù)位 dd : out std_logic_vector(7 downto 0) ;-輸向輸向0832的數(shù)據(jù)的數(shù)據(jù) dispdata : out std_logic_vector(7 downto 0) );-轉(zhuǎn)換數(shù)據(jù)顯示轉(zhuǎn)換數(shù)據(jù)顯示end;archit
43、ecture dacc of dac2adc is signal cqi : std_logic_vector(7 downto 0) ; begin dd = cqi ;process(clk, clr, lm311) begin if clr = 1 then cqi = 00000000; elsif clkevent and clk = 1 then if lm311 = 1 then cqi = cqi + 1; end if;-如果是高電平,繼續(xù)搜索如果是高電平,繼續(xù)搜索 end if; -如果出現(xiàn)低電平,即可停止搜索,保存計(jì)數(shù)值于如果出現(xiàn)低電平,即可停止搜索,保存計(jì)數(shù)值于cqi中
44、中 end process; dispdata bt = 00000001 ; a bt = 00000010 ; a bt = 00000100 ; a bt = 00001000 ; a bt = 00010000 ; a bt = 00100000 ; a bt = 01000000 ; a bt = 10000000 ; a null ; end case ; end process p1; 接下頁(yè)接下頁(yè)44高級(jí)教育vhdlvhdl與與edaedap2:process(clk) begin if clkevent and clk = 1 then cnt8 sg sg sg sg sg
45、 sg sg sg sg sg sg sg sg sg sg sg null ; end case ; end process p3; end;45高級(jí)教育vhdlvhdl與與edaeda實(shí) 驗(yàn) 與 設(shè) 計(jì) (3) 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容1:說(shuō)明例說(shuō)明例5-19中各語(yǔ)句的含義,以及該例的整體功能。對(duì)中各語(yǔ)句的含義,以及該例的整體功能。對(duì)該例進(jìn)行編輯、編譯、綜合、適配、仿真,給出仿真波形。實(shí)驗(yàn)方式:該例進(jìn)行編輯、編譯、綜合、適配、仿真,給出仿真波形。實(shí)驗(yàn)方式:若考慮小數(shù)點(diǎn),若考慮小數(shù)點(diǎn),sg的的8個(gè)段分別與個(gè)段分別與pio49、pio48、pio42(高位在(高位在左)、左)、bt的的8個(gè)位分別與個(gè)位
46、分別與pio34、pio35、pio41(高位在左);電(高位在左);電路模式不限,引腳圖參考附錄圖路模式不限,引腳圖參考附錄圖10。將。將gw48eda系統(tǒng)左下方的撥碼開(kāi)系統(tǒng)左下方的撥碼開(kāi)關(guān)全部向上撥,這時(shí)實(shí)驗(yàn)系統(tǒng)的關(guān)全部向上撥,這時(shí)實(shí)驗(yàn)系統(tǒng)的8個(gè)數(shù)碼管構(gòu)成圖個(gè)數(shù)碼管構(gòu)成圖5-20的電路結(jié)構(gòu),時(shí)鐘的電路結(jié)構(gòu),時(shí)鐘clk可選擇可選擇clock0,通過(guò)跳線選擇,通過(guò)跳線選擇16384hz信號(hào)。引腳鎖定后進(jìn)行編譯、信號(hào)。引腳鎖定后進(jìn)行編譯、下載和硬件測(cè)試實(shí)驗(yàn)。將實(shí)驗(yàn)過(guò)程和實(shí)驗(yàn)結(jié)果寫(xiě)進(jìn)實(shí)驗(yàn)報(bào)告。下載和硬件測(cè)試實(shí)驗(yàn)。將實(shí)驗(yàn)過(guò)程和實(shí)驗(yàn)結(jié)果寫(xiě)進(jìn)實(shí)驗(yàn)報(bào)告。(4) 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容2:修改例修改例5-19的進(jìn)
47、程的進(jìn)程p1中的顯示數(shù)據(jù)直接給出的方式,增中的顯示數(shù)據(jù)直接給出的方式,增加加8個(gè)個(gè)4位鎖存器,作為顯示數(shù)據(jù)緩沖器,使得所有位鎖存器,作為顯示數(shù)據(jù)緩沖器,使得所有8個(gè)顯示數(shù)據(jù)都必須來(lái)個(gè)顯示數(shù)據(jù)都必須來(lái)自緩沖器。緩沖器中的數(shù)據(jù)可以通過(guò)不同方式鎖入,如來(lái)自自緩沖器。緩沖器中的數(shù)據(jù)可以通過(guò)不同方式鎖入,如來(lái)自a/d采樣的采樣的數(shù)據(jù)、來(lái)自分時(shí)鎖入的數(shù)據(jù)、來(lái)自串行方式輸入的數(shù)據(jù),或來(lái)自單片機(jī)數(shù)據(jù)、來(lái)自分時(shí)鎖入的數(shù)據(jù)、來(lái)自串行方式輸入的數(shù)據(jù),或來(lái)自單片機(jī)等。等。 46高級(jí)教育vhdlvhdl與與edaeda實(shí) 驗(yàn) 與 設(shè) 計(jì) 5-3. 數(shù)控分頻器的設(shè)計(jì)數(shù)控分頻器的設(shè)計(jì)(1) 實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模簩W(xué)習(xí)數(shù)控分頻
48、器的設(shè)計(jì)、分析和測(cè)試方法。學(xué)習(xí)數(shù)控分頻器的設(shè)計(jì)、分析和測(cè)試方法。(2) 實(shí)驗(yàn)原理:實(shí)驗(yàn)原理:數(shù)控分頻器的功能就是當(dāng)在輸入端給定不同輸入數(shù)據(jù)時(shí),數(shù)控分頻器的功能就是當(dāng)在輸入端給定不同輸入數(shù)據(jù)時(shí),將對(duì)輸入的時(shí)鐘信號(hào)有不同的分頻比,數(shù)控分頻器就是用計(jì)數(shù)值可并行將對(duì)輸入的時(shí)鐘信號(hào)有不同的分頻比,數(shù)控分頻器就是用計(jì)數(shù)值可并行預(yù)置的加法計(jì)數(shù)器設(shè)計(jì)完成的,方法是將計(jì)數(shù)溢出位與預(yù)置數(shù)加載輸入預(yù)置的加法計(jì)數(shù)器設(shè)計(jì)完成的,方法是將計(jì)數(shù)溢出位與預(yù)置數(shù)加載輸入信號(hào)相接即可,詳細(xì)設(shè)計(jì)程序如例信號(hào)相接即可,詳細(xì)設(shè)計(jì)程序如例5-20所示。所示。(3) 分析:分析:根據(jù)圖根據(jù)圖5-21的波形提示,分析例的波形提示,分析例5-20中的各語(yǔ)句功能、設(shè)計(jì)原中的各語(yǔ)句功能、設(shè)計(jì)原理及邏輯功能,詳述進(jìn)程理及邏輯功能,詳述進(jìn)程p_reg和和p_div的作用,并畫(huà)出該程序的的作用,并畫(huà)出該程序的rtl電路圖。電路圖。圖圖5-21 當(dāng)給出不同輸入值當(dāng)給出不同輸入值d時(shí),時(shí),fout輸出不同頻率輸出不同頻率(clk周期周期=50ns) 47高級(jí)教育vhdlvhdl與與edaeda實(shí) 驗(yàn) 與 設(shè) 計(jì) (4) 仿真:仿真:輸入不同的輸入不同的clk頻率和預(yù)置值頻率和預(yù)置值d,給出如圖,給出如圖5-21的時(shí)序波形。的時(shí)序
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年浙科版選擇性必修3歷史下冊(cè)階段測(cè)試試卷
- 2025年外研版選修3地理下冊(cè)階段測(cè)試試卷含答案
- 2025年滬科新版六年級(jí)語(yǔ)文上冊(cè)階段測(cè)試試卷
- 二零二五年度美容院?jiǎn)T工持股計(jì)劃股份購(gòu)買合同4篇
- 2025年度木模板木方綠色認(rèn)證與采購(gòu)合同4篇
- 二零二五年度圍欄行業(yè)規(guī)范制定與實(shí)施合同2篇
- 二零二五版跨境電商進(jìn)口商品質(zhì)量保證實(shí)務(wù)合同范本3篇
- 2025版寧波慈溪編制城市社區(qū)規(guī)劃與建設(shè)合同4篇
- 二零二五版嬰幼兒奶粉行業(yè)培訓(xùn)與專業(yè)人才培養(yǎng)合同3篇
- 樂(lè)器采購(gòu)合同標(biāo)準(zhǔn)版可打印
- 湖北省黃石市陽(yáng)新縣2024-2025學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末考試題 含答案
- 硝化棉是天然纖維素硝化棉制造行業(yè)分析報(bào)告
- 央視網(wǎng)2025亞冬會(huì)營(yíng)銷方案
- 《00541語(yǔ)言學(xué)概論》自考復(fù)習(xí)題庫(kù)(含答案)
- 《無(wú)砟軌道施工與組織》 課件 第十講雙塊式無(wú)砟軌道施工工藝
- 江蘇省南京市、鹽城市2023-2024學(xué)年高三上學(xué)期期末調(diào)研測(cè)試+英語(yǔ)+ 含答案
- 2024新版《藥品管理法》培訓(xùn)課件
- 《阻燃材料與技術(shù)》課件 第7講 阻燃橡膠材料
- 爆炸物運(yùn)輸安全保障方案
- 借名買車的協(xié)議書(shū)范文范本
- 江蘇省南京市2025屆高三學(xué)業(yè)水平調(diào)研考試數(shù)學(xué)試卷(解析版)
評(píng)論
0/150
提交評(píng)論