欢迎来到天天文库
浏览记录
ID:52039732
大小:1.40 MB
页数:43页
时间:2020-03-30
《主讲人徐向民单 位电子与信息学院.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、主讲人:徐向民单位:电子与信息学院5.2一般状态机的设计一般状态机的实现复习ASM图的硬件实现(多路选择器)有限状态机的VHDL实现上机作业符号化状态机确定状态编码的状态机单进程双进程三进程9/18/20212复习ASM图的硬件实现用多路选择器实现ASM图1、分析ASM图用多路选择器实现ASM图时,是在每级触发器的输入端加一个多路选择器,多路选择器的输出加到触发器的数据输入端,控制触发器产生相应的次态。触发器的现态加到多路选择器的选择端,控制多路选择器选择相应的次态。9/18/20213复习ASM图的硬件实现2、搭建多路选择器实现
2、ASM图的框图该ASM图有4个状态,因此需要2个触发器。每个触发器前加一个多路选择器,选用具有4个数据输入端(0,1,2,3)的多路选择器。下一步要推导多路选择器的输入端方程。9/18/20214复习ASM图的硬件实现3、根据ASM图求次态转换表例如状态0即状态P的次态,对于Q1触发器,由表看出,9/18/20215复习ASM图的硬件实现4、推导多路选择器的数据输入端方程9/18/20216复习ASM图的硬件实现5、控制器的硬件图9/18/20217有限状态机的VHDL实现用VHDL设计的状态机有多种形式:1、从状态机的信号输出方
3、式上分有Mealy型和Moore型2、从结构上分,有单进程和多进程状态机3、从表达方式上分有符号化状态机和确定状态编码的状态机9/18/20218符号化状态机0、说明部分说明部分使用TYPE语句定义的枚举类型,其元素用状态机的状态名来定义。状态变量(如状态机的现态和次态)定义为变量或信号,并将状态变量的数据类型定义为含有既定状态元素的枚举类型。当使用多进程结构时,便于信息的传递,要将状态变量定义为信号。Architecture…isTypeFSM_STis(S0,S1,S2,S3);Signalcurrent_state,next
4、_state:FSM_ST;9/18/20219符号化状态机1、单进程状态机例:交通信号控制器Process(clock,timed,car)typestate_typeis(G,R);variablestate:state_type;Beginstart_timer<=‘0’;if(rising_edge(clock))thencasestateiswhenG=>major_green<=‘1’;minor_green<=‘0’;if(car=‘1’)thenstart_timer<=‘1’;state:=R;endif;9/1
5、8/202110符号化状态机1、单进程状态机例:交通信号控制器whenR=>major_green<=‘0’;minor_green<=‘1’;if(timed=‘1’)thenstate:=G;endif;endcase;endif;Endprocess;9/18/202111符号化状态机1、单进程状态机单进程中状态变量可以定义为变量类型,放在进程的说明部分一般在进程的开头写上时钟有效边沿的检测语句。注意在这里进程敏感参数表中的car和timed可省去。Rising_edge(clock)也可以写成clock’eventandc
6、lock=‘1’;条件涵盖不完整的if语句会产生寄存器。注意本例中,start_timer信号在进程开头赋了一个初始值,这是为了保证锁存器不会被突然产生(注,本例中条件输出start_timer用了一个锁存器)。这是将时序电路和组合电路混合的系统,有时会引入不必要的寄存器。如果将描述时序的部分放在具有边沿检测条件的IF语句或wait语句的进程中,而将描述组合电路的语句放在普通的进程中,这样可以有效控制寄存器的引入。9/18/202112符号化状态机2、双进程状态机描述一个状态机更通用的形式是用两个进程:一个用于产生状态寄存器,另一
7、个用于产生次态和输出逻辑。9/18/202113符号化状态机2、双进程状态机例1:同样以交通灯为例子:Architectureasm2oftrafficistypestate_typeis(G,R);signalpresent_state,next_state:state_type;(单进程只定义一个)Beginseq:process(clock)beginif(rising_edge(clock))thenpresent_state<=next_state;--次态是寄存器的输入endif;--条件涵盖不完整的if语句产生状态寄
8、存器endprocessseq;--产生状态寄存器的进程9/18/202114符号化状态机2、双进程状态机com:process(present_state,car,timed)beginstart_timer<=‘0’;casepressent_
此文档下载收益归作者所有