硬件描述语言及器件 竞争与冒险学习PPT(1).ppt

上传人:仙人指路1688 文档编号:2787778 上传时间:2023-02-24 格式:PPT 页数:41 大小:2.55MB
返回 下载 相关 举报
硬件描述语言及器件 竞争与冒险学习PPT(1).ppt_第1页
第1页 / 共41页
硬件描述语言及器件 竞争与冒险学习PPT(1).ppt_第2页
第2页 / 共41页
硬件描述语言及器件 竞争与冒险学习PPT(1).ppt_第3页
第3页 / 共41页
硬件描述语言及器件 竞争与冒险学习PPT(1).ppt_第4页
第4页 / 共41页
硬件描述语言及器件 竞争与冒险学习PPT(1).ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《硬件描述语言及器件 竞争与冒险学习PPT(1).ppt》由会员分享,可在线阅读,更多相关《硬件描述语言及器件 竞争与冒险学习PPT(1).ppt(41页珍藏版)》请在三一办公上搜索。

1、竞争与冒险,在组合逻辑电路中,输入到同一个门的一组信号,或由于来自于不同的路径,或由于通过门的个数不同,或由于经过不同长度的传输线,或由于各信号输出门的差异等,致使这些信号到达门电路输入端的时间有早有晚,这种现象叫做竞争。由于在门的输入端有竞争而导致在其输出产生了干扰脉冲,则称为冒险。,竞争冒险举例,有竞争不一定会产生冒险,但有冒险必然是由竞争引起的。,冒险的危害,在计数器电路中,如果输入有冒险,就会产生错误的计数,低速电路常用消抖方法,竞争和冒险在组合逻辑电路中普遍存在,竞争现象客观存在无法消除。在输出端对地接一几百PF的小电容C,将输出端的干扰脉冲抑制到门电路的翻转电平门限之外.缺点:仅适

2、用于低速电路。,高速电路外部消抖,在高速系统中,对数字信号的延迟及其边沿的上升、下降时间有严格的限制,如MAX7000和74ACT器件要求输入上升时间和下降时间的典型值为3ns,加入几百PF的电容会使其边沿时间大大超过该值,所以对输出信号滤波是不允许的;但对于74HC系列器件的边沿时间最长可以到500ns,对输出信号用小电容滤波是允许的。,同步电路消除冒险,用触发器及同步脉冲CP对输入输出进行同步可以消除部分竞争与冒险,VHDL程序,architecture a of synand_or issignal qa,qb,y1,y2:std_logic;beginp1:process(cp)beg

3、inif cpevent and cp=1 thenqa=a;qb=b;end if;end process p1;y1=qa and qb;y2=qa or qb;,p2:process(cp)beginif cpevent and cp=1 thenq1=y1;q2=y2;end if;end process p2;end a;,软件消抖举例,process(grst,fosc)variable state_cnt:integer range 0 to 10;variable state_st:integer range 0 to 1;beginif grst=0 thenstate_cn

4、t:=0;state1=1;state_st:=0;elsif foscevent and fosc=1 then,case state_st iswhen 0=if state=0 and state_cnt 5 thenstate_cnt:=state_cnt+1;elsif state=0 and state_cnt=5 thenstate1=0;state_st:=1;elsestate1=1;state_cnt:=0;end if;,when 1=if state=1 and state_cnt 5 thenstate_cnt:=state_cnt+1;elsif state=1 a

5、nd state_cnt=5 thenstate1=1;state_st:=0;elsestate1=0;state_cnt:=0;end if;end case;end if;end process pro4;,状态机的优越性1,有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。状态机的工作方式是根据控制信号按照预先设定的状态进行顺序运行的,状态机是纯硬件数字系统中的顺序控制电路,因此状态机在其运行方式上类似于控制灵活和方便的CPU,而在运行速度和工作可靠性方面都优于CPU。,状态机的优越性2,由于状态机的结构模式相对简单,设计方案相对固定,特别是可以定义符号化枚举类型的状态,这一切都

6、为VHDL 综合器尽可能发挥其强大的优化功能提供了有利条件。而且,性能良好的综合器都具备许多可控或自动的专门用于优化状态机的功能。,状态机的优越性3,状态机容易构成性能良好的同步时序逻辑模块,这对于对付大规模逻辑电路设计中令人深感棘手的竞争冒险现象无疑是一个上佳的选择。为了消除电路中的毛刺现象,在状态机设计中有多种设计方案可供选择。,状态机的优越性4,与VHDL的其他描述方式相比,状态机的VHDL表述丰富多样、程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的特点。,状态机的优越性5,就运行速度而言,尽管CPU和状态机都是按照时钟节拍以顺序时序方式工作的,但CPU是按照指

7、令周期,以逐条执行指令的方式运行的;每执行一条指令,通常只能完成一项简单的操作,而一个指令周期须由多个机器周期构成,一个机器周期又由多个时钟节拍构成;一个含有运算和控制的完整设计程序往往需要成百上千条指令。相比之下,状态机状态变换周期只有一个时钟周期,而且,由于在每一状态中,状态机可以完成许多并行的运算和控制操作,所以,一个完整的控制程序,即使由多个并行的状态机构成,其状态数也是十分有限的。一般由状态机构成的硬件系统比CPU所能完成同样功能的软件系统的工作速度要高出三至四个数量级。,状态机的优越性6,就可靠性而言,状态机的优势也是十分明显的。CPU本身的结构特点与执行软件指令的工作方式决定了任

8、何CPU都不可能获得圆满的容错保障。因此,用于要求高可靠性的特殊环境中的电子系统中,如果以CPU作为主控部件,应是一项错误的决策。然而,状态机系统就不同了,首先它是由纯硬件电路构成,不存在CPU运行软件过程中许多固有的缺陷;其次是由于状态机的设计中能使用各种完整的容错技术;再次是当状态机进入非法状态并从中跳出,进入正常状态所耗的时间十分短暂,通常只有2、3个时钟周期,约数十个ns,尚不足以对系统的运行构成损害;而CPU通过复位方式从非法运行方式中恢复过来,耗时达数十ms,这对于高速高可靠系统显然是无法容忍的。,状态机分类,从状态机的信号输出方式上分有Mealy型和Moore型两种状态机;从结构

9、上分,有单进程状态机和多进程状态机;从状态表达方式上分有符号化状态机和确定状态编码的状态机;从编码方式上分有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。然而最一般和最常用的状态机通常包含说明部分、主控时序进程、主控组合进程、辅助进程几个部分。,某状态机举例,说明部分,说明部分中使用TYPE语句定义新的数据类型,此数据类型为枚举型,其元素通常都用状态机的状态名来定义。状态变量(如现态和次态)应定义为信号,便于信息传递;并将状态变量的数据类型定义为含有既定状态元素的新定义的数据类型。说明部分一般放在结构体的ARCHITECTURE和BEGIN之间,例如:ARCHITECTURE IS

10、TYPE FSM_ST IS(s0,s1,s2,S3);SIGNAL current_state,next_state:FSM_ST;,主控时序进程,所谓主控时序进程是指负责状态机运转和在时钟驱动下负责状态转换的进程。状态机是随外部时钟信号,以同步时序方式工作的。因此,状态机中必须包含一个对工作时钟信号敏感的进程,作为状态机的“驱动泵”。当时钟发生有效跳变时,状态机的状态才发生变化。状态机向下一状态(包括再次进入本状态)转换的实现仅仅取决于时钟信号的到来。一般地,主控时序进程可以不负责下一状态的具体状态取值,如s0、s1、s2、s3中的某一状态值。当时钟的有效跳变到来时,时序进程只是机械地将代

11、表次态的信号nextstate中的内容送入现态的信号current state中,而信号nextstate中的内容完全由其他的进程根据实际情况来决定,当然此进程中也可以放置一些同步或异步清零或置位方面的控制信号。总体来说,主控时序进程的设计比较固定、单一和简单。,主控组合进程,主控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其他非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_ state)的取向,即next_state的取值内容,以及确定对外输出或对内部其他组合或时序进程输出控制信号的内容。,辅助进程,如用于配合状态机工作的组

12、合进程或时序进程,例如为了完成某种算法的进程;或用于配合状态机工作的其他时序进程,例如为了稳定输出设置的数据锁存器等。,实体及说明部分(枚举类型),LIBRARY IEEE;USE IEEESTD_LOGIC_164ALL;ENTITY s_ machine IS PORT(clk,reset:IN STD_LOGIC;state_inputs:IN STD_LOGIC_ VECTOR(0 TO 1);comb_outputs:OUT INTEGER 0 TO 15);END s_ machine;ARCHITECTURE behv OF s_ machine ISTYPE FSM_ST IS

13、(s0,s1,s2,s3);SIGNAL current_state,next_state:FSM_ST;,结构体中主控时序进程,BEGIN REG:PROCESS(reset,clk)BEGINIF reset=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)BEGIN CASE current_State IS WHEN S0=comb_ ou

14、tputs comb_ outputs=8;IF state_ inputs=”00”THEN next State=s1;ELSE next_ state=s2;END IF;,结构体中主控组合进程,WHEN s2=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;,仿真结果,Moore输出只是状态机当前状态的函数,Mealy输出为有限状态机当前值和输入值的函数,某Moore状态机举例,

15、设计要求:设计一个存储控制器状态机。能够根据微处理器的读写周期,分别对存储器输出写使能WE和读使能OE信号。工作过程:存储控制器的输入信号为微处理器的就绪READY及读写read_write信号。当上电复位后,或read有效时,存储控制器开始工作,并在下一个时钟周期判断本次作业任务是读存储器还是写存储器。判断的依据是,当read_write有效时为读操作,否则为写操作。也就是说非读即写。读操作时,OE信号有效,写操作时,WE信号有效。当READY信号有效时,表示读本次作业处理完成,并使控制器恢复到初始状态。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;EN

16、TITY moore ISPORT(clk,ready,read_write:IN Std_Logic;oe,we:OUT Std_Logic);END moore;ARCHITECTURE state_machine OF Moore ISTYPE state_type IS(idle,decision,read,write);SIGNAL present_state,next_state:state_type;,BEGINstate_clocked:PROCESS(clk)BEGINIF(rising_edge(clk)THEN present_state=next_state;END I

17、F;END PROCESS state_clocked;,state_comb:PROCESS(present_state,ready,read_write)BEGIN CASE present_state ISWHEN idle=oe oe=0;we=0;IF(read_write=1)THEN next_state=read;ELSE next_state=write;END IF;,WHEN read=oe oe=0;we=1;IF(ready=1)THEN next_state=idle;ELSE next_state=write;END IF;END CASE;END PROCESS

18、 state_comb;END state_machine;,某Mealy状态机举例,与Moore型状态机相比,Mealy机的输出变化要领先一个周期,即一旦输入信号或状态发生变化,输出信号即刻发生变化。Moore机和Mealy机在设计上基本相同,稍有不同之处是,Mealy机的组合进程中的输出信号是当前状态和当前输入的函数。,某Mealy状态机举例,枚举型数据类型,定义四个状态,library ieee;use ieee.std_logic_1164.all;entity mealy isport(clk,in1,rst:instd_logic;out1:outstd_logic_vector(

19、3 downto 0);end;architecture a of mealy istype state_type is(s0,s1,s2,s3);signal state:state_type;begin,mealy_process:process(clk,rst)beginif rst=1 thenstateif in1=1 thenstateif in1=0 thenstate=s2;end if;,when s2=if in1=1 thenstateif in1=0 thenstate=s0;end if;end case;end if;end process mealy_proces

20、s;,output_process:process(state,in1)begincase state iswhen s0=if in1=1 thenout1if in1=0 thenout1=”1100”;else out1=”1001”;end if;,when s2=if in1=1 thenout1if in1=0 thenout1=”0000”;else out1=”1111”;end if;end case;end process output_process;end a;,仿真结果,t2,t7,t8,t9,t10,t11,t12,t13,t15,t14,t16,t17,t18,t5,t6,t4,t3,t1,t0,

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号