有限状态机设计.ppt
文本预览下载声明
状态机设计小结 记得使用others来包含所有的“无效态”,以保证状态机的安全运作。 任何状态,任何条件下,都应该对“次态”和所有的输出z赋值,以避免生成锁存 作业 P210,(1)、(2)、(3)、(4)、 (5)、(6)、(7) BEGIN IF ( clkEVENT AND clk=1) THEN current_state = next_state; END IF; END PROCESS REG; LATCH1 : PROCESS (lock) -- 数据锁存器进程 BEGIN IF lock=1 AND lockEVENT THEN regl = d ; END IF; END PROCESS ; q = regl; END behave; 2. Moore型有限状态机设 图:ADC0809工作时序 二、一般有限状态机的设计 【例 6-3 】Moore状态机设计 同步输出Moore型状态机 组合逻辑 寄 存 器 寄 存 器 组合逻辑 inputs outputs clk clk reset reset 当前状态 例1 两进程有限状态机 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MOORE2 IS PORT (DATAIN : IN STD_LOGIC_VECTOR(1 DOWNTO 0); CLK,RST : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END MOORE2; ARCHITECTURE behav OF MOORE2 IS TYPE ST_TYPE IS (ST0, ST1, ST2, ST3,ST4); SIGNAL current_state,next_state : ST_TYPE ; BEGIN shi_xu: process(clk,rst) begin if rst=1 then current_state=st0; elsif clkevent and clk=1 then current_state=next_state; end if; end process; PROCESS(clk,datain) BEGIN CASE current_state IS WHEN ST0 = IF DATAIN =10 THEN next_state = ST1 ; ELSE next_state = ST0 ; END IF; Q = 1001 ; WHEN ST1 = IF DATAIN =11 THEN next_state = ST2 ; ELSE next_state = ST1 ;END IF; Q = 0101 ; WHEN ST2 = IF DATAIN =01 THEN next_state = ST3 ; ELSE next_state = ST0 ;END IF; Q = 1100 ; WHEN ST3 = IF DATAIN =00 THEN next_state = ST4 ; ELSE next_state = ST2 ;END IF; Q = 0010 ; WHEN ST4 = IF DATAIN =11 TH
显示全部