【教学课件】第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,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;,7.1 一般有限状态机的设计,7.1.1 用户自定义数据类型定义语句,子类型SUBTYPE的语句格式如下:SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;,SUBTYPE digits IS INTEGER RANGE 0 to 9;,7.1.2 为什么要使用状态机,7.1 一般有限状态机的设计,有限状态机克
3、服了纯硬件数字系统顺序方式控制不灵活的缺点。,状态机的结构模式相对简单。,状态机容易构成性能良好的同步时序逻辑模块。,状态机的VHDL表述丰富多样。,在高速运算和控制方面,状态机更有其巨大的优势。,就可靠性而言,状态机的优势也是十分明显的。,7.1.3 一般有限状态机的设计,7.1 一般有限状态机的设计,1.说明部分,ARCHITECTURE.IS TYPE FSM_ST IS(s0,s1,s2,s3);SIGNAL current_state,next_state:FSM_ST;.,7.1.3 一般有限状态机的设计,7.1 一般有限状态机的设计,2.主控时序进程,图7-1 一般状态机结构框图
4、工作示意图,3.主控组合进程,7.1.3 一般有限状态机的设计,控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。,7.1 一般有限状态机的设计,4.辅助进程,【例7-1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine IS PORT(clk,reset:IN STD_LOGIC;state_inp
5、uts: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);SIGNAL current_state,next_state:FSM_ST;BEGIN REG:PROCESS(reset,clk)BEGIN IF reset=1 THEN current_state=s0;ELSIF clk=1 AND clkEVENT THEN current_state=ne
6、xt_state;END IF;END PROCESS;COM:PROCESS(current_state,state_Inputs),接下页,BEGIN CASE current_state IS WHEN s0=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;,接上页,7.1.3 一般有限状态机的设计,7.1 一般有限状态机的设计,4.辅助进程
7、,图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_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK,EOC:IN STD_LOGIC;ALE,STAR
8、T,OE,ADDA,LOCK0:OUT STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ADCINT;ARCHITECTURE behav OF ADCINT ISTYPE states IS(st0,st1,st2,st3,st4);-定义各状态子类型 SIGNAL current_state,next_state:states:=st0;SIGNAL REGL:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK:STD_LOGIC;-转换后数据输出锁存时钟信号 BEGIN ADDA=1;-当ADDA=0,模拟信
9、号进入0809通道0;当ADDA=1,则进入通道1Q=REGL;LOCK0=LOCK;COM:PROCESS(current_state,EOC)BEGIN-规定各状态转换方式 接下页,7.2.1 三进程有限状态机,CASE current_state IS WHEN st0=ALEALE 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;-由信号c
10、urrent_state将当前状态值带出此进程:REGLATCH1:PROCESS(LOCK)-此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL=D;END IF;END PROCESS LATCH1;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_st
11、ate 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.1 三进程有限状态机,7.2.2 单进程Moore型有限状态机,7.2 Moore型有限状态机的设计,【例7-4】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 IS PORT(DATAIN:IN STD_LOGIC_VECTOR(1 DOWNTO 0);CLK,RST:IN
12、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: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;,接上
13、页WHEN ST3=IF DATAIN=00 THEN C_ST IF DATAIN=11 THEN C_ST C_ST=ST0;END CASE;END 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 Mea
14、ly型有限状态机的设计,【例7-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,st2,st3,st4);SIGNAL STX:states;BEGIN COMREG:PROCESS(CLK,RESET)BEGIN-决定转换状态的进程 IF RESET=1
15、THEN STX=ST0;ELSIF CLKEVENT AND CLK=1 THEN CASE 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=
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;,【例7-6】MEALY2 LIBRARY IEEE;-MEALY FSMUSE IEEE.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
17、 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)-决定转换状态的进程,接上页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 DATAIN=1 THEN STX STX=st0;END CASE;
18、END IF;END PROCESS COMREG;COM1:PROCESS(STX,DATAIN,CLK)-输出控制信号的进程 VARIABLE Q2:STD_LOGIC_VECTOR(4 DOWNTO 0);,接上页BEGIN CASE 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 IF;WHEN st2=IF DATAIN=1 THEN Q2:=10101;ELSE Q2:=10011;END I
19、F;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;Q=Q1;END behav;,7.3 Mealy型有限状态机的设计,图7-10 例7-5状态机工作时序图,7.3 Mealy型有限状态机的设计,图7-11 例7-6状态机工作时序图,7.
20、4.1 状态位直接输出型编码,7.4 状态编码,表7-1 控制信号状态编码表,【例7-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_state:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END AD0809;ARCHITECTURE behav
21、 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_VECTOR(4 DOWNTO 0):=00100;,CONSTANT st4:STD_LOGIC_VECTOR
22、(4 DOWNTO 0):=00110;SIGNAL REGL:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK:STD_LOGIC;BEGIN ADDA next_state next_state IF(EOC=1)THEN next_state next_state next_state=st0;,WHEN OTHERS=next_state=st0;END CASE;END PROCESS COM;REG:PROCESS(CLK)BEGIN IF(CLKEVENT AND CLK=1)THEN current_state=next_state;END IF
23、;END PROCESS REG;-由信号current_state将当前状态值带出此进程:REG LATCH1:PROCESS(LOCK)-此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL=D;END IF;END PROCESS LATCH1;END behav;,7.4.1 状态位直接输出型编码,7.4 状态编码,图7-12 例7-7状态机工作时序图,7.4 状态编码,7.4.2 顺序编码,表7-2 编码方式,7.4.2 顺序编码,7.4 状态编码,【例7-8】.SIGNAL CRURRENT_STATE,N
24、EXT_STATE:STD_LOGIC_VECTOR(2 DOWNTO 0);CONSTANT ST0:STD_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;.,7.4.3 一位热码编码(One-hot enc
25、oding),7.4 状态编码,图7-13 一位热码编码方式选择对话框,7.5 状态机剩余状态处理,表7-3 剩余状态,WHEN st_ilg1=next_state next_state=st0;,7.5 状态机剩余状态处理,【例7-9】.TYPE states IS(st0,st1,st2,st3,st4,st_ilg1,st_ilg2,st_ilg3);SIGNAL current_state,next_state:states;.COM:PROCESS(current_state,state_Inputs)-组合逻辑进程BEGIN CASE current_state IS-确定当前状
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 有限状态机 设计 LPM 应用

链接地址:https://www.31ppt.com/p-5659378.html