第6章状态机设计.ppt

上传人:sccc 文档编号:4966308 上传时间:2023-05-26 格式:PPT 页数:24 大小:1,023.04KB
返回 下载 相关 举报
第6章状态机设计.ppt_第1页
第1页 / 共24页
第6章状态机设计.ppt_第2页
第2页 / 共24页
第6章状态机设计.ppt_第3页
第3页 / 共24页
第6章状态机设计.ppt_第4页
第4页 / 共24页
第6章状态机设计.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《第6章状态机设计.ppt》由会员分享,可在线阅读,更多相关《第6章状态机设计.ppt(24页珍藏版)》请在三一办公上搜索。

1、状态机的设计需要考虑如下几个方面:,(1)完成一个设计需要几个状态;,(2)在每个状态中需要执行的任务;,(3)状态之间如何转换;,第八节 有限状态机设计,状态机的分类:Moore型有限状态机:从输出时序看,属同步输出状态机;输出信号仅与当前状态有关,在输入变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出变化;Mealy型有限状态机:属异步输出状态机,他的输出是在输入变化后立即发生的。,第八节 有限状态机设计,状态机的优势:(1)容易构成良好的同步时序逻辑,对大规模电路设计中的竞争冒险现象无疑是一个最佳的选择;(2)层次分明,结构清晰,易读易懂,在排错、修改和模块移植等方面具有独到的

2、优势;(3)高速运算和控制方面,一个状态机可以由多个进程构成,一个结构体中可以包含多个状态机,一个状态机所能完成的运算和控制方面的工作与一个CPU的功能类似。,计数器设计,根据时钟信号的作用,计数器可以分为同步计数器和异步计数器。根据计数的方向有加1计数和减1计数。同步计数器是指在时钟信号的作用下,构成计数器的各触发器状态同时发生变化的计数器。,四位二进制同步计数器电路图,四位二进制同步计数器真值表,library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-由ste_logic_vector转换成inte

3、ger;entity countA is port(clk,clr,en:in std_logic;QA,QB,QC,QD:out std_logic);end countA;architecture exampleA of countA issignal count_4:std_logic_vector(3 downto 0);begin QA=count_4(0);QB=count_4(1);QC=count_4(2);QD=count_4(3);process(clk,clr)begin if(clr=1)then count_4=0000;elsif(clkevent and clk=

4、1)then if(en=1)then if(count_4=1111)then count_4=0000;else count_4=count_4+1;end if;end if;end if;end process;end exampleA;,用状态机的方法设计十三进制计数器,状态转移图,管脚图,reset,以圆圈表示电路的各个状态,以箭头表示状态转换,的方向。在箭头旁注明了状态转换前的输入量和输出量。,输出变量写作斜线下,输入变量写在斜线上。,library IEEE;use IEEE.std_logic_1164.all;-use IEEE.std_logic_arith.all;-u

5、se IEEE.std_logic_unsigned.all;entity counter13 is port(cp:in std_logic;reset:in std_logic;q:out std_logic_vector(3 downto 0);op:out std_logic);end counter13;architecture rt1 of counter13 istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12);signal presentstate,nextstate:state;signal qn:std_log

6、ic_vector(3 downto 0);begin switchtonextstate:process(cp)begin if reset=1 then q=0;presentstate=s0;elsif cpevent and cp=1 then presentstate=nextstate;end if;end process switchtonextstate;changestatemodel:process(presentstate),begin case presentstate is when s0=nextstatenextstatenextstatenextstatenex

7、tstatenextstatenextstatenextstate=s8;qn=1000;op=0;,when s8=nextstatenextstatenextstatenextstatenextstatenextstate=s0;op=0;end case;end process changestatemodel;q=qn;end rt1;,用状态机对A/D 0809进行采样控制,【状态机例子】书中151页,【状态机例子】书中151页,当输入值由0变到3时,第二个进程启动,因此状态为1。,就运行速度而言,尽管CPU和状态机都是按照时钟节拍以顺序时序方式工作的,但CPU是按照指令周期,以逐条

8、执行指令的方式运行的;每执行一条指令只能完成一个简单的操作,而一个指令周期由多个机器周期构成,一个机器周期又由多个时钟节拍构成,一个含有运算和控制的完整设计须由多个机器周期构成,一个机器周期又由多个时钟节拍构成,一个含有运算和控制的完整设计程序往往需要成百上千条指令,相比之下,状态机变换周期只有一个时钟周期,而且在每一个状态中,状态机可以完成许多并行的运算和控制操作。所以一个完整的控制程序,即使由多个并行的状态机构成,其状态数也是十分有限的。一般由状态机构成的硬件系统比CPU所能完成同样功能的软件系统的工作速度要快35个数量级,因此在一般CPU无法胜任的领域中有广泛的应用,如高速串行或并行A/

9、D、D/A器件的控制,硬件串行通信接口RS232、PS/2、USB的实现、FPGA高速配置电路的设计、自控领域中的高速顺序控制系统、通信领域中的许多功能模块的构成、CPU设计领域中特定功能指令模块的设计等。,设计实例:设计一个存储控制器,具体要求如下:(1)存储控制器能根据微处理器的读周期或写周期,分别对存储器输出写使能信号we和读使能信号oe;(2)存储控制器的输入信号有3个:微处理器的准备就绪信号ready、读写信号read_write和时钟信号clk.,(3)read_write=1时,oe=1;read_write=0时,we=1;,存储控制器的状态转移图,输出逻辑真值表,librar

10、y ieee;use ieee.std_logic_1164.all;entity store_controller4 is port(ready:in std_logic;clk:in std_logic;read_write:in std_logic;we,oe:out std_logic);end store_controller4;architecture state_machine of store_controller4 is type state_type is(idle,decision,read,write);signal present_state,next_state:s

11、tate_type;begin,state_transfer3:process(present_state,ready,read_write)begin case present_state is when idle=wewewewe=1;oe=0;if(ready=1)then next_state=decision;else next_state=write;end if;end case;end process;,state_register:process(clk)begin if(clkevent and clk=1)then present_state=next_state;end

12、 if;end process;end state_machine;,状态机的建立过程为:(1)利用可枚举的状态类型定义信号:TYPE state type is(idle,decision,read,write);SIGNAL present_state,next_state:state type;(2)建立状态机进程,由于次态是现态及输入信号的函数,所以这些均可作为进程的敏感信号。State_comb:PROCESS(present_state,read_write,ready)BEGIN。END PROCESS state_comb;(3)在进程中定义状态的转移。在进程中插入Case_w

13、hen语句,因空闲idle是状态的起点和终点,因此,idle作为when之后的第一项,再列出状态转移到其他状态的条件,即可写出状态转移流程。,用Mealy有限状态机设计二层楼梯电梯控制程序,first,ground,goingground,goingfirst,reqfirst,reqground,reqground,reqfirst,library IEEE;use IEEE.std_logic_1164.all;entity lift isport(clk:in bit;reqfirst,reqground:in boolean;openfirst,openground:out boole

14、an;openlift:out boolean);end lift;architecture func of lift istype states is(first,goingground,ground,goingfirst);signal state:states;beginProcess状态转换 begin wait until clkevent and clk=1;case state is when first=if reqfirst then state state=ground;,when ground=if reqground then state state=first;end

15、 case;end process;process(state,reqfirst,reqground)输出begin if state=first then if reqground and not(reqfirst)then openlift=false;openfirst=false;else openlift=true;openfirst=true;end if;elsif state=ground then if reqfirst and not(reqground)then openlift=false;openground=false;else openlift=true;openground=true;end if;end if;end process;end func;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号