第7章 有限状态机设计与LPM应用.ppt
《第7章 有限状态机设计与LPM应用.ppt》由会员分享,可在线阅读,更多相关《第7章 有限状态机设计与LPM应用.ppt(105页珍藏版)》请在麦多课文档分享上搜索。
1、第7章 有限状态机设计与LPM应用,EDA技术实用教程,7.1 一般有限状态机的设计,7.1.1 用户自定义数据类型定义语句,TYPE语句用法如下: TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ; 或 TYPE 数据类型名 IS 数据类型定义 ;,以下列出了两种不同的定义方式:TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ; TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;,7.1 一般有限状态机的设计,7.1.1 用户自定义数据类型定义语句,TYPE m_state IS ( st0,st1,s
2、t2,st3,st4,st5 ) ;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 ;,7.1 一般有限状态机的设计,7.1.1 用户自定义数据类型定义语句,子类型SUBTYPE的语句格式如下:SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;,SUBTYPE digits IS INTEGER RANGE 0 to 9 ;,7
3、.1.2 为什么要使用状态机,7.1 一般有限状态机的设计, 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。, 状态机的结构模式相对简单。, 状态机容易构成性能良好的同步时序逻辑模块。, 状态机的VHDL表述丰富多样。, 在高速运算和控制方面,状态机更有其巨大的优势。, 就可靠性而言,状态机的优势也是十分明显的。,7.1.3 一般有限状态机的设计,7.1 一般有限状态机的设计,1. 说明部分,ARCHITECTURE .ISTYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; .,7.1.3 一
4、般有限状态机的设计,7.1 一般有限状态机的设计,2. 主控时序进程,图7-1 一般状态机结构框图工作示意图,3. 主控组合进程,7.1.3 一般有限状态机的设计,控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。,7.1 一般有限状态机的设计,4. 辅助进程,【例7-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENT
5、ITY s_machine ISPORT ( 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_machine ISTYPE FSM_ST IS (s0, s1, s2, s3); SIGNAL current_state, next_state: FSM_ST; BEGINREG: PROCESS (reset,clk) BEGINIF res
6、et = 1 THEN current_state = s0; ELSIF clk=1 AND clkEVENT THEN current_state = next_state; END IF;END PROCESS; COM:PROCESS(current_state, state_Inputs),接下页,BEGINCASE current_state IS WHEN s0 = comb_outputs comb_outputs comb_outputs comb_outputs = 14;IF state_inputs = “11“ THEN next_state = s3; ELSE n
7、ext_state = s0; END IF;END case;END PROCESS; END behv;,接上页,7.1.3 一般有限状态机的设计,7.1 一般有限状态机的设计,4. 辅助进程,图7-2 例7-1状态机的工作时序图,7.2.1 多进程有限状态机,7.2 Moore型有限状态机的设计,图7-3 ADC0809工作时序,7.2.1 多进程有限状态机,7.2 Moore型有限状态机的设计,图7-4 控制ADC0809采样状态图,7.2.1 多进程有限状态机,图7-5 采样状态机结构框图,【例7-2】 LIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD
8、_LOGIC_1164.ALL; ENTITY ADCINT ISPORT (D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK ,EOC : IN STD_LOGIC;ALE, START, OE, ADDA,LOCK0 : OUT STD_LOGIC;Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END ADCINT; ARCHITECTURE behav OF ADCINT IS TYPE states IS (st0, st1, st2, st3,st4) ; -定义各状态子类型SIGNAL current_state, nex
9、t_state: states :=st0 ;SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK : STD_LOGIC; - 转换后数据输出锁存时钟信号BEGINADDA = 1;-当ADDA=0,模拟信号进入0809通道0;当ADDA=1,则进入通道1 Q = REGL; LOCK0 = LOCK ;COM: PROCESS(current_state,EOC) BEGIN -规定各状态转换方式 接下页,7.2.1 三进程有限状态机,CASE current_state IS WHEN st0=ALEALE ALE ALE ALE
10、next_state = st0; END CASE ;END PROCESS COM ;REG: PROCESS (CLK) BEGINIF (CLKEVENT AND CLK=1) THEN current_state=next_state;END IF;END PROCESS REG ; - 由信号current_state将当前状态值带出此进程:REG LATCH1: PROCESS (LOCK) - 此进程中,在LOCK的上升沿,将转换好的数据锁入BEGINIF LOCK=1 AND LOCKEVENT THEN REGL = D ;END IF;END PROCESS LATCH1
11、 ; END behav;,7.2.1 多进程有限状态机,7.2 Moore型有限状态机的设计,图7-6 ADC0809采样状态机工作时序,【例7-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 ALEALEALEALEALE ALE=0;START=0;LOCK=0; END CASE ;END PROCESS COM2 ;,7.2
12、.1 三进程有限状态机,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,【例7-4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MOORE1 ISPORT (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 ISTYPE ST_TYPE IS (ST0, ST1, ST2
13、, ST3,ST4); SIGNAL C_ST : ST_TYPE ;,接上页 BEGIN PROCESS(CLK,RST) BEGIN IF RST =1 THEN C_ST IF DATAIN =“10“ THEN C_ST IF DATAIN =“11“ THEN C_ST IF DATAIN =“01“ THEN C_ST = ST3 ;ELSE C_ST = ST0 ;END IF;Q = “1100“ ;,接上页 WHEN ST3 = IF DATAIN =“00“ THEN C_ST IF DATAIN =“11“ THEN C_ST C_ST = ST0;END CASE;EN
14、D IF;END PROCESS; END behav;,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,图7-7 例7-4状态机综合后的RTL电路模块,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,图7-8 例7-4单进程状态机工作时序,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,图7-9 对应于例7-4的2进程状态机工作时序图,7.3 Mealy型有限状态机的设计,【例7-5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY1
15、 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END MEALY1; ARCHITECTURE behav OF MEALY1 ISTYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; BEGIN COMREG : PROCESS(CLK,RESET) BEGIN -决定转换状态的进程IF RESET =1 THEN STX = ST0;ELSIF CLKEVENT AND CLK = 1 THEN CA
16、SE STX IS,接上页 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 = st0; END CASE ; END IF;END PROCESS COMREG ; COM1: PROCESS(STX,DATAIN) BEGIN -输出控制信号的进程CASE STX IS END behav;,接上页 WHEN st0 = IF DATAIN = 1 THEN Q IF DATAIN
17、 = 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 ;,【例7-6】 MEALY2 LIBRARY IEEE; -MEALY FSM USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY2 ISPORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); END MEALY2; ARCHITECT
18、URE behav OF MEALY2 ISTYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN COMREG : PROCESS(CLK,RESET) -决定转换状态的进程,接上页 BEGIN 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 DAT
19、AIN = 1 THEN STX STX = st0; END CASE ;END IF;END PROCESS COMREG ; COM1: PROCESS(STX,DATAIN,CLK) -输出控制信号的进程VARIABLE Q2 : STD_LOGIC_VECTOR(4 DOWNTO 0);,接上页 BEGINCASE STX IS WHEN st0= IF DATAIN=1 THEN Q2 :=“10000“; ELSE Q2:=“01010“; END IF;WHEN st1= IF DATAIN=0 THEN Q2 :=“10111“; ELSE Q2:=“10100“; END
20、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 THEN Q1=Q2; END IF; END PROCESS COM1
21、 ;Q = Q1 ; END behav;,7.3 Mealy型有限状态机的设计,图7-10 例7-5状态机工作时序图,7.3 Mealy型有限状态机的设计,图7-11 例7-6状态机工作时序图,7.4.1 状态位直接输出型编码,7.4 状态编码,表7-1 控制信号状态编码表,【例7-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 ST
22、D_LOGIC;c_state : 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) :=
23、“11000“ ;CONSTANT 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 LOCK : STD_LOGIC; BEGINADDA next_state next_state IF (EOC=1) THEN next_s
24、tate next_state next_state = st0;,WHEN OTHERS = next_state = st0; END CASE ;END PROCESS COM ;REG: PROCESS (CLK) BEGINIF (CLKEVENT AND CLK=1) THEN current_state=next_state;END IF;END PROCESS REG ; - 由信号current_state将当前状态值带出此进程:REGLATCH1: PROCESS (LOCK) - 此进程中,在LOCK的上升沿,将转换好的数据锁入BEGIN IF LOCK=1 AND LO
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限状态机 设计 LPM 应用 PPT
