版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、关于状态机第一张,PPT共四十五页,创作于2022年6月 状态机是由组合逻辑和寄存器组成的。包括组合逻辑部分和寄存器部分。寄存器部分用于存储状态机的内部状态;组合逻辑部分又分为状态译码器和输出译码器,状态译码器确定状态机的下一个状态,即确定状态机的激励方程,输出译码器确定状态机的输出状态,即确定状态机的输出方程。运行时状态机实现以下两种操作:1、状态机内部状态转换。状态机在所有状态中,下一个状态由状态译码器根据当前状态和输入条件决定。2、产生输出序列信号。输出信号由输出译码器根据当前状态和输入条件决定。状态机常常用来描述计数器、移位寄存器、循环寄存器等。状态译码器状态寄存器输入译码器状态反馈输
2、入输出状态机结构示意图第二张,PPT共四十五页,创作于2022年6月 状态机按照其输入、当前状态、下一次状态、输出信号的变化关系,可分成两大类: 摩尔状态机(Moore Machine) 米立状态机(Mealy Machine)Moore输出电位只与当前所处的状态有关,而与输入信号 无立即的关系。Mealy输出电位不仅与当前所处的状态有关,而且与输入 信号也有关。第三张,PPT共四十五页,创作于2022年6月TYPE m_state IS ( st0,st1,st2,st3,st4,st5 ) ; SIGNAL present_state,next_state : m_state ;布尔数据类
3、型的定义语句是: TYPE BOOLEAN IS (FALSE,TRUE) ;TYPE my_logic IS ( 1 ,Z ,0 ) ; SIGNAL s1 : my_logic ; s1 = Z ; 以下列出了两种不同的定义方式:TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_LOGIC ;TYPE week IS (sun,mon,tue,wed,thu,fri,sat) ;TYPE语句用法如下:1)TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ;2)TYPE 数据类型名 IS 数据类型定义 ;1. 用户自定义数据类型定义语句第四张,PPT共四十
4、五页,创作于2022年6月子类型SUBTYPE的语句格式如下:SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围; SUBTYPE digits IS INTEGER RANGE 0 to 9 ;2. 一般有限状态机的设计ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; . 1. 说明部分2. 主控时序进程3. 主控组合进程4. 辅助进程第五张,PPT共四十五页,创作于2022年6月图4-1 一般状态机结构框图工作示意图ProcessREGProces
5、sCOMFSM: s_machineCurrent_stateNext_stateComb_outputsclkresetState_inputs时序逻辑进程组合逻辑进程第六张,PPT共四十五页,创作于2022年6月3. 主控组合进程4.4.1 一般有限状态机的设计 主控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。4. 辅助进程 第七张,PPT共四十五页,创作于202
6、2年6月【例5-1】 P154LIBRARY 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_machine IS TYPE FSM_ST IS (s0, s1, s2, s3); -定义FSM_ST为枚举型数据类型 SIGNAL
7、 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 comb_outputs= “00”; -初态译码输出”00” IF state_inputs = “00” THEN -根据外部的状态控制输入”00” next_state=s0; -在下一CP后,进程REG的状态维持S0 ELSE ne
8、xt_statecomb_outputs= “01”; -对应状态S1的译码输出”01” IF state_inputs = 00 THEN -根据外部的状态控制输入”00” next_state=s1; -在下一CP后,进程REG的状态维持S1 ELSE next_state comb_outputs= “10”; -对应状态S2的译码输出”10” IF state_inputs = 11 THEN -根据外部的状态控制输入”11” next_state = s2; -在下一CP后,进程REG的状态维持S2 ELSE next_state comb_outputs = “11”; IF st
9、ate_inputs = 11 THEN next_state = s3; 接上页第九张,PPT共四十五页,创作于2022年6月图4-2 例4-1状态机的工作时序图ELSE next_state = s0; -否则在下一CP后,REG的状态返回S0 END IF; END case; END PROCESS; END behv;第十张,PPT共四十五页,创作于2022年6月用VHDL设计状态机 AD574A采样控制状态机 第十一张,PPT共四十五页,创作于2022年6月 VHDL综合器易于优化 易构成性能良好的时序逻辑模块 结构模式简单、层次分明、易读易懂、易排错 运行模式类似于CPU,易于进
10、行顺序控制 利用同步时序和全局时钟线可实现高速FSM 高可靠性,非法状态易控制 为什么要使用状态机?第十二张,PPT共四十五页,创作于2022年6月4.4.2 Moore型有限状态机的设计 在Moore机中,其输出只与当前的状态有关,而与输入信号无立即的关系,所以设计步骤简单。只要竟所要设计的动作状况一状态图绘出,然后以枚举方式定义出它可能出现的所有状态,再配合等process,ifthenelse,caseiswhen语句,将其动作状态以行为模式描述出来。例:某电路的方框图及状态图如图所示,利用VHDL语言设计此电路 ZCK输入信号XS00S11S21S3011110000第十三张,PPT共
11、四十五页,创作于2022年6月目前状态下一个状态输出ZX=0X=1S0S1S2S3S0S0S2S3S2S2S3S101104.4.2.1 Moore单进程有限状态机第十四张,PPT共四十五页,创作于2022年6月-*-* Parity Checker-* Filename : MOORE_2-*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE_2 IS PORT ( CLK : in STD_LOGIC; RESET : in STD_LOGIC; X: in STD_LOGIC; Z: out STD_LOGIC; ); END MO
12、ORE_2 ; ARCHITECTURE MOORE_2 _arch OF MOORE_2 IS type State is(S3,S2,S1,S0); -状态有S3,S2,S1,S0四种 signal Present_ State: State; -当前状态 signal Next_ State: State; -下一个状态 BEGIN if RESET=1 then Present_ State = S0 elsif CLKevent and CLK=1then Present_ State -处理以下语句 if X=0 then Next_State=S0; else Next_Stat
13、e=S2; end if; Z -行为模式加以描述。 if X=0 then Next_State=S2; else Next_State=S3; end if; Z if X=0 then Next_State=S3; else Next_State=S1; end if;Z if X=0 then Next_State=S0; else Next_State=S2; end if; Z=1 ; end case; End process; End MOORE_2 _arch 第十六张,PPT共四十五页,创作于2022年6月 单进程Moore型有限状态机【例5-4】 P160LIBRARY
14、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 : ST_TYPE ; BEGIN PROCESS(CLK,RST) BEGIN IF R
15、ST =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 IF; Q IF DATAIN =11 THEN C_ST = ST0 ; ELSE
16、C_ST = ST3 ;END IF; Q C_ST = ST0; END CASE; END IF; END PROCESS;END behav;接上页第十八张,PPT共四十五页,创作于2022年6月7.2.2 单进程Moore型有限状态机图7-8 例7-4单进程状态机工作时序第十九张,PPT共四十五页,创作于2022年6月4.4.2.1 三进程有限状态机CECS R/C K12/8 A0工 作 状 态0XXXX禁止X1XXX禁止100X0启动12位转换100X1启动8位转换1011X12位并行输出有效10100高8位并行输出有效10101低4位加上尾随4个0有效表4-1 AD574逻辑控制
17、真值表(X表示任意) 本例与例4-1基本一致,只是多了一个数据锁存进程”LATCH”,目的是将转换好的数据锁入12位锁存器REGL中,以便得到正确和稳定输出。在组合逻辑进程“COM”中,根据AD574的工作时序,对6种状态的转换方式和控制数据的输出作了设定,程序中详细注释。应注意,转换好的数据锁入寄存器的锁存时钟信号“LOCK”是在状态“ST3”向“ST4”转换的时候产生的,这有利于正确数据被稳定的锁入。第二十张,PPT共四十五页,创作于2022年6月AD574A12345678910111213142827262524232221201918171615STSDB11DB10DB9DB8DB
18、7DB6DB5DB4DB3DB2DB1DB0DGVL12/8CSA0R/CCEVCCRUTAGRINVEEBIF10IN20IN输出转换后的数据12位转换结束状态位数字地模拟信号输入单极性方式双极性方式片选端VCC-12V+12VR1RFAD574电路原理图A/D转换启动A/D数据输出控制12位或8位输出有效控制信号第二十一张,PPT共四十五页,创作于2022年6月4.4.2.1 二进程有限状态机图4-3 AD574工作时序 A/D转换和数据输出控制信号转换结束状态位A/D转换数据输出显示 第二十二张,PPT共四十五页,创作于2022年6月4.4.2.1 二进程有限状态机图4-4 AD574工
19、作时序第二十三张,PPT共四十五页,创作于2022年6月PROCESSREG时序进程PROCESSCOM组合进程PROCESSLATCH锁存器current_statenext_stateLOCK状态机FSMFPGA/CPLDCLK CS A0 RC K12/8 STATUSD11.0AD574Q11.0模拟信号输入采样数据输出第二十四张,PPT共四十五页,创作于2022年6月【例4-2】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574 IS PORT (D:IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK
20、,STATUS:IN STD_LOGIC;-状态机时钟CLK,转换结束状态信号STATUS LOCK0 :OUT STD_LOGIC; -内部锁存信号LOCK的测试信号 CS,A0,RC,K12X8:OUT STD_LOGIC; -A0转换启动信号和输出控制信号 -CS片选,RC转换和输出控制信号 -K12X8是12位或8位输出有效控制信号 Q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -锁存数据输出显示END AD574;ARCHITECTURE behav OF AD574 IS TYPE states IS (st0, st1, st2, st3,st4);-
21、定义状态子类型 SIGNAL current_state, next_state: states:=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(11 DOWNTO 0);-A/D转换数据锁存器 SIGNAL LOCK : STD_LOGIC; -转换后数据输出锁存时钟信号 BEGIN K12X8 = 1; -8位并行输出有效 LOCK0 CS =1;A0=0;RC =0;LOCK=0; next_state CS =0;A0=0;RC =0;LOCK=0; next_state CS =0;A0=0;RC =0;LOCK=0; IF (STATUS=1) THEN
22、 next_state = st2; -转换未结束,等待 ELSE next_state CS =0;A0=0;RC =1;LOCK=0; next_state CS =0;A0=0;RC =1;LOCK=1; next_state CS =1;A0=1;RC =1;LOCK=0; next_state next_state = st0; -所有闲置状态导入初始态 END CASE ; END PROCESS COM ; REG: PROCESS (CLK) - 时序进程 BEGIN IF ( CLKEVENT AND CLK=1) THEN current_state = next_stat
23、e; -在CLK上升沿,转换到下一状态 END IF; END PROCESS REG; -由信号current_state将当前状态值带出此进程,进入COM接上页第二十六张,PPT共四十五页,创作于2022年6月LATCH1 : PROCESS (LOCK) - 数据锁存器进程 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL = D ; END IF; END PROCESS ; -在此进程中,在LOCK上升沿,将转换好的数据锁入12位 锁存器REGL中,以便得到稳定显示 Q = REGL; -REGL的输出端口与目标器件的输出端口Q相连接 END behav
24、;接上页图4-6 AD574采样状态机工作时序状态2:等待第二十七张,PPT共四十五页,创作于2022年6月5.4 状态编码 P164状态状态编码STARTALEOELOCKB 功 能 说 明ST0 0 0 0 0 0初始态ST1 1 1 0 0 0启动转换ST2 0 0 0 0 1若测得EOC=1时,转下一状态ST3ST3 0 0 1 0 0输出转换好的数据ST4 0 0 1 1 0利用LOCK的上升沿将转换好的数据锁存第二十八张,PPT共四十五页,创作于2022年6月【例5-7】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574
25、IS PORT (D:IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK,STATUS:IN STD_LOGIC;-状态机时钟CLK,转换结束状态信号STATUS LOCK0 :OUT STD_LOGIC; -内部锁存信号LOCK的测试信号 CS,A0,RC,K12X8:OUT STD_LOGIC; -A0转换启动信号和输出控制信号 -CS片选,RC转换和输出控制信号 -K12X8是12位或8位输出有效控制信号 Q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -锁存数据输出显示END AD574;ARCHITECTURE behav OF AD
26、574 IS TYPE states IS (st0, st1, st2, st3,st4);-定义状态子类型 SIGNAL current_state, next_state: states:=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(11 DOWNTO 0);-A/D转换数据锁存器 SIGNAL LOCK : STD_LOGIC; -转换后数据输出锁存时钟信号 BEGIN K12X8 = 1; -8位并行输出有效 LOCK0 CS =1;A0=0;RC =0;LOCK=0; next_state CS =0;A0=0;RC =0;LOCK=0; next_s
27、tate CS =0;A0=0;RC =0;LOCK=0; IF (STATUS=1) THEN next_state = st2; -转换未结束,等待 ELSE next_state CS =0;A0=0;RC =1;LOCK=0; next_state CS =0;A0=0;RC =1;LOCK=1; next_state CS =1;A0=1;RC =1;LOCK=0; next_state next_state = st0; -所有闲置状态导入初始态 END CASE ; END PROCESS COM ; REG: PROCESS (CLK) - 时序进程 BEGIN IF ( CL
28、KEVENT AND CLK=1) THEN current_state = next_state; -在CLK上升沿,转换到下一状态 END IF; END PROCESS REG; -由信号current_state将当前状态值带出此进程,进入COM接上页第三十张,PPT共四十五页,创作于2022年6月LATCH1 : PROCESS (LOCK) - 数据锁存器进程 BEGIN IF LOCK=1 AND LOCKEVENT THEN REGL = D ; END IF; END PROCESS ; -在此进程中,在LOCK上升沿,将转换好的数据锁入12位 锁存器REGL中,以便得到稳定
29、显示 Q = REGL; -REGL的输出端口与目标器件的输出端口Q相连接 END behav;接上页图4-6 AD574采样状态机工作时序状态2:等待第三十一张,PPT共四十五页,创作于2022年6月4.4.2.2 三进程Moore型有限状态机【例5-4】一个摩尔机的模型,其中FUNC1和FUNC2是任意复杂的组合逻辑函数。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY system IS PORT ( a :IN STD_LOGIC; Clock: IN STD_LOGIC; d : OUT STD_LOGIC );END system ;A
30、RCHITECTURE moore OF system IS SIGNAL b,C : STD_LOGIC;BEGIN FUNC1: PROCESS(a,c) -第1组合逻辑进程,为时序逻辑进程提供反馈信息 BEGIN b=FUNC1(a,c); -C是反馈信号 END PROCESS; FUNC2: PROCESS(c) -第2组合逻辑进程,为状态机输出提供数据接下页第三十二张,PPT共四十五页,创作于2022年6月 BEGIN d=FUNC2(c); -输出信号D对所对应的FUNC2,是当前状态的函数 END PROCESS; REG:PROCESS(clock); -时序逻辑进程,负责状
31、态转换 BEGIN IF CLKEVENT AND CLK=1 THEN C=b; -b是反馈信号 END IF; END PROCESS; END moore;接上页进程FUNC1进程FUNC2进程REGabcdclock摩尔状态机示意图第三十三张,PPT共四十五页,创作于2022年6月在上例中使用了三个进程,为了简化,可将第一和第二进程合二为一,如果系统时序要求在寄存器和输出之间没有任何逻辑,即希望实现最短的输出延时,可以用例45所示的结构体。【例4-5】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY system IS PORT (Cloc
32、k: IN STD_LOGIC; a :IN STD_LOGIC; d : OUT STD_LOGIC);END system ;ARCHITECTURE moore2 OF system IS BEGIN REG:PROCESS(clock); BEGIN IF CLKEVENT AND CLK=1 THEN d=FUNC(a,d); END IF; END PROCESS;END moore2;组合逻辑功能块FUNC时序逻辑输出进程REGCLOCKAD直接反馈式摩尔状态机示意图第三十四张,PPT共四十五页,创作于2022年6月4.4.3 Mealy型有限状态机的设计【例4_6】 Mealy
33、机的VHDL的结构要求至少有两个进程,或是一个状态机进程加一个独立的并行赋值语句.LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT ( CLK,A: IN STD_LOGIC; d : OUT STD_LOGIC);END MEALY1;ARCHITECTURE behav OF MEALY1 IS SIGNAL c: STD_LOGIC ; BEGIN COM: PROCESS(a,c) -状态机输出进程BEGIN d = FUNC2(a,c); END PROCESS; REG: PROCESS(cLOCK) -时
34、序状态转换进程 BEGIN IF CLK=1 AND CLKEVENT THEN C =FUNC1(a,c); END IF; END PROCESS; END behav ; 接下页第三十五张,PPT共四十五页,创作于2022年6月【例4_7】米立机也可以用3个进程来描述,这样结构更清晰。LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MEALY1 IS PORT ( CLK,a: IN STD_LOGIC; d : OUT STD_LOGIC); END MEALY1; ARCHITECTURE behav OF MEALY1 IS SI
35、GNAL c: STD_LOGIC ; SIGNAL b: STD_LOGIC ; BEGIN REG: PROCESS(cLOCK) -时序状态转换进程 BEGIN IF CLK=1 AND CLKEVENT THEN C =b; END IF; END PROCESS;第三十六张,PPT共四十五页,创作于2022年6月图4-10 米立状态机示意图D QD_FFBAinputclkcndThree_ssMUX21OT11outputTransition: PROCESS(a,c) BEGIN -转换状态确定的进程 b = FUNC1(a,c); END PROCESS; outputs: P
36、ROCESS(a,c) BEGIN -状态机输出进程 d = FUNC2(a,c); END PROCESS; END behav ;第三十七张,PPT共四十五页,创作于2022年6月【例5-6】 MEALY2 P163 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 OF MEALY2 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 DO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西南林业大学《材料科学与工程基础》2022-2023学年第一学期期末试卷
- 西京学院《西京青曲课堂相声》2021-2022学年第一学期期末试卷
- 职称申报诚信承诺书(个人)附件4
- 西华师范大学《篆书技法》2021-2022学年第一学期期末试卷
- 西华师范大学《现代数学概论》2022-2023学年第一学期期末试卷
- 2024年职业资格-养老护理员养老基础知识模拟考试题库试卷
- 西华师范大学《人体解剖生理学》2021-2022学年第一学期期末试卷
- 西华师范大学《地理多媒体课件制作》2023-2024学年第一学期期末试卷
- 西昌学院《项目设计实训》2022-2023学年第一学期期末试卷
- 电力专项测试题附答案
- 安全风险分级管控清单
- OBE理念与人才培养方案制定PPT课件
- 离任审计工作方案 样稿
- 四大名著称四大小说三国演义西游记水浒传红楼梦中国古典章回小说PPT资料课件
- 港珠澳大桥项目管理案例分析PPT课件
- 员工入职体检表
- GB∕T 12810-2021 实验室玻璃仪器 玻璃量器的容量校准和使用方法
- 一般跨越架搭设施工方案
- 小学体育《网球传统正手击球的原地抛球击球技术》教案
- RPG游戏概要设计文档
- 水泥混凝土路面施工验收规范(完整版)
评论
0/150
提交评论