第8章Verilog有限状态机设计课件

上传人:29 文档编号:241591286 上传时间:2024-07-07 格式:PPT 页数:61 大小:1.81MB
返回 下载 相关 举报
第8章Verilog有限状态机设计课件_第1页
第1页 / 共61页
第8章Verilog有限状态机设计课件_第2页
第2页 / 共61页
第8章Verilog有限状态机设计课件_第3页
第3页 / 共61页
点击查看更多>>
资源描述
第第8章章 Verilog 有限状态机设计有限状态机设计第八章第八章 Verilog Verilog有限状态机设计有限状态机设计 1第八章 Verilog有限状态机设计 第第8章章 Verilog 有限状态机设计有限状态机设计8.1 Verilog HDL有限状态机的一般形式有限状态机的一般形式8.2 Moore型有限状态机设计型有限状态机设计8.3 Mealy型有限状态机设计型有限状态机设计8.4 System Verilog的枚举类型应用的枚举类型应用8.5 状态机图形编辑设计方法状态机图形编辑设计方法8.6 状态编码状态编码8.7 非法状态处理非法状态处理8.8 硬件数字技术排除毛刺硬件数字技术排除毛刺主要内容主要内容 28.1 Verilog HDL有限状态机的一般形式主要内容 第第8章章 Verilog 有限状态机设计有限状态机设计u 有限状态机是由有限状态机是由有限状态机是由有限状态机是由寄存器组寄存器组寄存器组寄存器组和和和和组合逻辑组合逻辑组合逻辑组合逻辑构成的硬件构成的硬件构成的硬件构成的硬件时序时序时序时序电路电路电路电路;u 其状态(即由寄存器组的其状态(即由寄存器组的其状态(即由寄存器组的其状态(即由寄存器组的1 1 1 1和和和和0 0 0 0的组合状态所构成的有的组合状态所构成的有的组合状态所构成的有的组合状态所构成的有限个状态)只能在同一时钟跳变沿的情况下才能从一个限个状态)只能在同一时钟跳变沿的情况下才能从一个限个状态)只能在同一时钟跳变沿的情况下才能从一个限个状态)只能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态状态转向另一个状态状态转向另一个状态状态转向另一个状态;究竟转向哪一状态究竟转向哪一状态究竟转向哪一状态究竟转向哪一状态不但取决于各不但取决于各不但取决于各不但取决于各个输入值个输入值个输入值个输入值,还取决于,还取决于,还取决于,还取决于当前状态当前状态当前状态当前状态。u状态机可用于产生在时钟跳变沿时刻开关的复杂的控状态机可用于产生在时钟跳变沿时刻开关的复杂的控状态机可用于产生在时钟跳变沿时刻开关的复杂的控状态机可用于产生在时钟跳变沿时刻开关的复杂的控制逻辑,是数字逻辑的控制核心。制逻辑,是数字逻辑的控制核心。制逻辑,是数字逻辑的控制核心。制逻辑,是数字逻辑的控制核心。8.1 Verilog HDL8.1 Verilog HDL有限状态机的一般形式有限状态机的一般形式3 有限状态机是由寄存器组和组合逻辑构成的硬件时序电路;8.1第第8章章 Verilog 有限状态机设计有限状态机设计高效的顺序控制模型:高效的顺序控制模型:状态机克服了纯硬件数字系统顺序方状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。式控制不灵活的缺点。容易利用现成的容易利用现成的EDA优化工具优化工具。性能稳定性能稳定:状态机容易构成性能良好的同步时序逻辑模块。状态机容易构成性能良好的同步时序逻辑模块。设计实现效率高设计实现效率高:状态机的状态机的HDL表述丰富多样、程序层次分表述丰富多样、程序层次分明,易读易懂。明,易读易懂。高速性能:高速性能:在高速运算和控制方面,状态机更有其巨大的优在高速运算和控制方面,状态机更有其巨大的优势。势。高可靠性。高可靠性。8.1.1 为什么要使用状态机为什么要使用状态机4高效的顺序控制模型:状态机克服了纯硬件数字系统顺序方式控制不第第8章章 Verilog 有限状态机设计有限状态机设计8.1.2 有限状态机的结构有限状态机的结构分类:分类:n从状态机的信号输出方式上从状态机的信号输出方式上:Mealy型与型与 Moore型。型。米利机米利机的下一状态和输出取决于当前状态和当前输入;的下一状态和输出取决于当前状态和当前输入;摩尔机摩尔机的下一状态取决于当前状态和当前输入,但其输出仅取决于的下一状态取决于当前状态和当前输入,但其输出仅取决于当前状态。当前状态。n状态机的描述结构上:状态机的描述结构上:单过程状态机与多过程状态机。单过程状态机与多过程状态机。n从状态表达方式:从状态表达方式:符号化状态机和确定状态编码的状态符号化状态机和确定状态编码的状态机。机。n状态编码方式上分状态编码方式上分:顺序编码状态机、一位热码编码状:顺序编码状态机、一位热码编码状态机或其它编码状态机态机或其它编码状态机58.1.2 有限状态机的结构分类:5第第8章章 Verilog 有限状态机设计有限状态机设计状态机的结构状态机的结构1.说明部分说明部分2.状态转换变量的定义和所有可能状态的说明,必要时还要确定状态转换变量的定义和所有可能状态的说明,必要时还要确定每一状态的编码形式。每一状态的编码形式。包括包括4个部分:个部分:说明部分、主控时序过程、主控组合过程、辅助过程说明部分、主控时序过程、主控组合过程、辅助过程说明:说明:用参数用参数parameter来定义各状态的,其中各状态的取值或编码必须写上。来定义各状态的,其中各状态的取值或编码必须写上。typedef是用户自定义语句关键词,是用户自定义语句关键词,enum是定义枚举类型关键词,是定义枚举类型关键词,type_user是是标示符。标示符。2.主控时序过程(主控时序过程(REG进程)进程)负责状态机运行和在时钟驱动下负责状态转换的过程。负责状态机运行和在时钟驱动下负责状态转换的过程。6状态机的结构说明部分包括4个部分:说明部分、主控时序过程、主第第8章章 Verilog 有限状态机设计有限状态机设计3.主控组合进程(主控组合进程(COM进程)进程)主主控控组组合合过过程程也也可可称称为为状状态态译译码码过过程程,其其任任务务是是根根据据外外部部输输入入的的控控制制信信号号(包包括括来来自自状状态态机机外外部部的的信信号号和和来来自自状状态态机机内内部部其其它它非非主主控控的的组组合合或或时时序序过过程程的的信信号号)以以及及当当前前状状态态的的状状态态值值确确定定下下一一状状态态(next_state)的的取取向向,即即next_state的的取取值值内内容容,以以及及确确定定对对外外输输出出或或对对内内部部其其它它组组合合时时序序过过程程输输出出控控制信号的内容制信号的内容。73.主控组合进程(COM进程)7第第8章章 Verilog 有限状态机设计有限状态机设计4.辅助进程辅助进程 配合状态机工作的组合过程或时序过程。配合状态机工作的组合过程或时序过程。时序过程时序过程只负责将当前状态转换为下一状态,不管将要转换的只负责将当前状态转换为下一状态,不管将要转换的是哪一个状态。是哪一个状态。84.辅助进程时序过程只负责将当前状态转换为下一状态,不管将第第8章章 Verilog 有限状态机设计有限状态机设计99第第8章章 Verilog 有限状态机设计有限状态机设计rst是低电平有效,是低电平有效,clk是上升沿有效。是上升沿有效。观察输入信号观察输入信号0到到3的变化,此例是的变化,此例是Moore还是还是Mealy型?型?10rst是低电平有效,clk是上升沿有效。10第第8章章 Verilog 有限状态机设计有限状态机设计8.1.3 状态机设计初始控制与表述状态机设计初始控制与表述(1)打开)打开“状态机萃取状态机萃取”开关。开关。118.1.3 状态机设计初始控制与表述(1)打开“状态机萃第第8章章 Verilog 有限状态机设计有限状态机设计1212第第8章章 Verilog 有限状态机设计有限状态机设计(2)关于参数定义表述)关于参数定义表述 用用parameter进行参数定义虽然十分必要,一旦打来状态机进行参数定义虽然十分必要,一旦打来状态机萃取开关,状态定义可以十分随意。定义什么值都可以。萃取开关,状态定义可以十分随意。定义什么值都可以。(3)状态变量定义表述)状态变量定义表述 13(2)关于参数定义表述 用parameter进行参数定义虽然第第8章章 Verilog 有限状态机设计有限状态机设计8.2 Moore8.2 Moore型有限状态机的设计型有限状态机的设计 Mealy状态机:状态机:输出是当前状态和所有输入信号的函数。不依输出是当前状态和所有输入信号的函数。不依赖时钟同步。赖时钟同步。Moore状态机状态机:输出仅为当前状态的函数,所以在输入发生变:输出仅为当前状态的函数,所以在输入发生变化时还要等待时钟的到来,所以比机要多等待一个时钟周期。化时还要等待时钟的到来,所以比机要多等待一个时钟周期。148.2 Moore型有限状态机的设计 Mealy状态机:输第第8章章 Verilog 有限状态机设计有限状态机设计8.2.1 ADC采样控制设计及多过程结构型状态机采样控制设计及多过程结构型状态机 START:转换启动信号,高电平有效。:转换启动信号,高电平有效。ALE:模拟信号输入选通端口地址锁存信号。上升沿有效。模拟信号输入选通端口地址锁存信号。上升沿有效。EOC:转换结束信号。高电平有效,表示转换结束。:转换结束信号。高电平有效,表示转换结束。是是0809发送给状发送给状态机的信号。态机的信号。OE:输出允许信号,高电平有效,表示转换结束可以把结果输出去了。输出允许信号,高电平有效,表示转换结束可以把结果输出去了。158.2.1 ADC采样控制设计及多过程结构型状态机 STA第第8章章 Verilog 有限状态机设计有限状态机设计1616第第8章章 Verilog 有限状态机设计有限状态机设计EOC:转换结束信号。高电平有效,表示转换结束。:转换结束信号。高电平有效,表示转换结束。是是0809发送给状态机发送给状态机的信号。的信号。17EOC:转换结束信号。高电平有效,表示转换结束。是0809发第第8章章 Verilog 有限状态机设计有限状态机设计1818第第8章章 Verilog 有限状态机设计有限状态机设计接上页接上页19接上页19第第8章章 Verilog 有限状态机设计有限状态机设计过程:过程:复位信号后进入状态复位信号后进入状态s0;第二个第二个clk上升沿后,状态机进入上升沿后,状态机进入s1,由由START、ALE发出启动采样和地址选发出启动采样和地址选通的控制信号,之后通的控制信号,之后EOC进入了低电平,进入了低电平,0809的的8位数据输出端出现高阻态位数据输出端出现高阻态”ZZ”,在状态在状态s2等待了数个等待了数个CLK后,后,EOC变为高电平,表示转换结束。变为高电平,表示转换结束。进入进入s3状态后,状态后,OE变为高电平,此时变为高电平,此时0809的数据输出端的数据输出端D已经输出转换好的已经输出转换好的5EH。在状态在状态s4,LOCK_T发出一个脉冲,其上升沿立即将发出一个脉冲,其上升沿立即将D端数据端数据5E锁入锁入Q和和REGL中。中。20过程:20第第8章章 Verilog 有限状态机设计有限状态机设计把例把例8-2中的组合过程可以分成两个组合过程:中的组合过程可以分成两个组合过程:n一个负责状态译码和状态转换。一个负责状态译码和状态转换。n另一个负责对外控制信号的输出。分开写如下:另一个负责对外控制信号的输出。分开写如下:21把例8-2中的组合过程可以分成两个组合过程:21第第8章章 Verilog 有限状态机设计有限状态机设计8.2.2 序列检测器之状态机设计序列检测器之状态机设计 8位序列数位序列数“11010011”高位在前左移进入检测器后,如次数高位在前左移进入检测器后,如次数与预置的密码数相同,则输出与预置的密码数相同,则输出1,否则输出,否则输出09个参数的定义很随意个参数的定义很随意228.2.2 序列检测器之状态机设计 8位序列数“11010第第8章章 Verilog 有限状态机设计有限状态机设计2323第第8章章 Verilog 有限状态机设计有限状态机设计2424第第8章章 Verilog 有限状态机设计有限状态机设计8.3 Mealy8.3 Mealy型有限状态机的设计型有限状态机的设计 Mealy状态机:状态机:输出是当前状态和所有输入信号的函数。不依赖输出是当前状态和所有输入信号的函数。不依赖时钟同步。与时钟同步。与Moore状态机不同之处在于状态机不同之处在于组合过程组合过程中的输出信号中的输出信号是当前状态和当前输入的函数。是当前状态和当前输入的函数。例例8-5:状态转换方式由状态转换方式由DIN1信号控制,对外控制信号码的输出信号控制,对外控制信号码的输出由由DIN2控制控制258.3 Mealy型有限状态机的设计 Mealy状态机:输第第8章章 Verilog 有限状态机设计有限状态机设计2626第第8章章 Verilog 有限状态机设计有限状态机设计输出信号有毛刺。因为输出信号不随时钟输出信号有毛刺。因为输出信号不随时钟clk同步。同步。改进一下:设计成只有一个改进一下:设计成只有一个always过程的状态机。过程的状态机。27输出信号有毛刺。因为输出信号不随时钟clk同步。27第第8章章 Verilog 有限状态机设计有限状态机设计2828第第8章章 Verilog 有限状态机设计有限状态机设计2929第第8章章 Verilog 有限状态机设计有限状态机设计输出信号没有毛刺了。输出信号没有毛刺了。30输出信号没有毛刺了。30第第8章章 Verilog 有限状态机设计有限状态机设计例例8-7是把例是把例8-4的双过程改为单过程了。把的双过程改为单过程了。把输出与时钟同步输出与时钟同步这是去毛刺的办法。这是去毛刺的办法。31例8-7是把例8-4的双过程改为单过程了。把输出与时钟同步这第第8章章 Verilog 有限状态机设计有限状态机设计8.4 SystemVerilog8.4 SystemVerilog的枚举类型应用的枚举类型应用 把例把例8-4的状态变量改为如下枚举类型:的状态变量改为如下枚举类型:保存类型为保存类型为.sv328.4 SystemVerilog的枚举类型应用 把例8-第第8章章 Verilog 有限状态机设计有限状态机设计8.5 8.5 状态机图形编辑设计方法状态机图形编辑设计方法 338.5 状态机图形编辑设计方法 33第第8章章 Verilog 有限状态机设计有限状态机设计3434第第8章章 Verilog 有限状态机设计有限状态机设计3535第第8章章 Verilog 有限状态机设计有限状态机设计3636第第8章章 Verilog 有限状态机设计有限状态机设计3737第第8章章 Verilog 有限状态机设计有限状态机设计3838第第8章章 Verilog 有限状态机设计有限状态机设计3939第第8章章 Verilog 有限状态机设计有限状态机设计4040第第8章章 Verilog 有限状态机设计有限状态机设计8.6 8.6 状状 态态 编编 码码 给状态编上码。给状态编上码。8.6.1 直接输出型编码直接输出型编码 418.6 状 态 编 码 给状态编上码。8.6.1 直接输第第8章章 Verilog 有限状态机设计有限状态机设计计数器计数器:计数输出就是各状态的状态码。:计数输出就是各状态的状态码。当计数到当计数到m时,采用时,采用异步清异步清0的方式可以的方式可以模模m计数器计数器。当计数到当计数到m时,采用时,采用同步清同步清0的方式可以的方式可以模模m+1计数器计数器。当把状态编码直接输出作为控制信号,即当把状态编码直接输出作为控制信号,即out=state。状态码状态码直接输出型状态机。直接输出型状态机。42计数器:计数输出就是各状态的状态码。当把状态编码直接输出作为第第8章章 Verilog 有限状态机设计有限状态机设计4343第第8章章 Verilog 有限状态机设计有限状态机设计说明:说明:优点:优点:输出速度快,不大可能出现毛刺。输出速度快,不大可能出现毛刺。缺点:缺点:可读性差、用于状态译码的组合逻辑资源比其他形同触可读性差、用于状态译码的组合逻辑资源比其他形同触发器数量构成的状态机多、控制非法状态出现的容错技术高。发器数量构成的状态机多、控制非法状态出现的容错技术高。44说明:44第第8章章 Verilog 有限状态机设计有限状态机设计用宏定义用宏定义define来定义来定义状态元素。放在状态元素。放在模块外面,是全模块外面,是全局变量,可以在局变量,可以在不同模块里通用。不同模块里通用。优点:优点:在波形里在波形里面直接可以看到面直接可以看到这些编码这些编码45用宏定义define来定义状态元素。放在模块外面,是全局变第第8章章 Verilog 有限状态机设计有限状态机设计8.6.2 宏定义命令语句宏定义命令语句 define 用宏定义命令语句用宏定义命令语句 define 定义的标示符,在使用的时候要加上定义的标示符,在使用的时候要加上.宏定义的语句末尾宏定义的语句末尾不需要加分号不需要加分号。468.6.2 宏定义命令语句 define 用宏定义命令语第第8章章 Verilog 有限状态机设计有限状态机设计8.6.3 顺序编码顺序编码 优点:优点:触发器少,剩余的非法状态也少。容错技术简单。触发器少,剩余的非法状态也少。容错技术简单。缺点:缺点:状态译码麻烦,占用组合逻辑电路多,容易出现毛刺。状态译码麻烦,占用组合逻辑电路多,容易出现毛刺。保密性差,不适合军用。保密性差,不适合军用。对对CPLD合适:组合电路多,触发器少。不适合合适:组合电路多,触发器少。不适合FPGA设计。设计。478.6.3 顺序编码 优点:触发器少,剩余的非法状态也少。第第8章章 Verilog 有限状态机设计有限状态机设计8.6.4 一位热码状态编码一位热码状态编码一位热码编码:一位热码编码:n个触发器来实现具有个触发器来实现具有n个状态的状态机。状态机中个状态的状态机。状态机中的每一个状态都由其中一个触发器的状态表示。即当处于该状态时,的每一个状态都由其中一个触发器的状态表示。即当处于该状态时,对用的触发器是对用的触发器是1,其余触发器都是,其余触发器都是0.优点优点:译码速度快,转换速度快,提高了系统稳定性。适合:译码速度快,转换速度快,提高了系统稳定性。适合FPGA设计。设计。Quartus II中是默认的编码方式。中是默认的编码方式。488.6.4 一位热码状态编码一位热码编码:n个触发器来实现第第8章章 Verilog 有限状态机设计有限状态机设计8.6.5 状态编码设置状态编码设置 1.用户自定义方式用户自定义方式 2.用属性定义语句设置用属性定义语句设置 498.6.5 状态编码设置 1.用户自定义方式 2.用属第第8章章 Verilog 有限状态机设计有限状态机设计5050第第8章章 Verilog 有限状态机设计有限状态机设计3.直接设置方法直接设置方法 513.直接设置方法 51第第8章章 Verilog 有限状态机设计有限状态机设计8.7 8.7 非法状态处理非法状态处理 s5,s6,s7是非法状态。是非法状态。528.7 非法状态处理 s5,s6,s7是非法状态。52第第8章章 Verilog 有限状态机设计有限状态机设计8.7.1 程序直接导引法程序直接导引法 说明说明:不要太依赖:不要太依赖default语句。语句。适合顺序编码的状态机适合顺序编码的状态机538.7.1 程序直接导引法 说明:不要太依赖default第第8章章 Verilog 有限状态机设计有限状态机设计8.7.2 状态编码监测法状态编码监测法 一位热键编码方式设计的状态机。一位热键编码方式设计的状态机。把状态的每一位相加看结果如果大于把状态的每一位相加看结果如果大于1,发出一个警告信号,发出一个警告信号alarm,系统根据此决定是否要转向或者复位,系统根据此决定是否要转向或者复位8.7.3 借助借助EDA优化控制工具生成安全状态机优化控制工具生成安全状态机(*syn_encoding=“safe,one-hot”*)548.7.2 状态编码监测法 一位热键编码方式设计的状态机。第第8章章 Verilog 有限状态机设计有限状态机设计8.8 8.8 硬件数字技术排除毛刺硬件数字技术排除毛刺 8.8.1 延时方式去毛刺延时方式去毛刺 现代方式的延时现代方式的延时不采用组合逻辑不采用组合逻辑,而是,而是采用触发器、寄存器等采用触发器、寄存器等时序元件对输入时序元件对输入输出电路通道上的信号进行适当的延时或延时采样。,使处理过的信号在输出输出电路通道上的信号进行适当的延时或延时采样。,使处理过的信号在输出后能避开毛刺。后能避开毛刺。时序电路中最常用。时序电路中最常用。558.8 硬件数字技术排除毛刺 8.8.1 延时方式去毛刺第第8章章 Verilog 有限状态机设计有限状态机设计特点:特点:只能除去数据或者是时钟单边沿的毛刺。只能除去数据或者是时钟单边沿的毛刺。延时时钟周期信号的周期应该与主通道上面的输入数据延时时钟周期信号的周期应该与主通道上面的输入数据时序宽度或时钟的周期有较好的配合。时序宽度或时钟的周期有较好的配合。56特点:56第第8章章 Verilog 有限状态机设计有限状态机设计8.8.2 逻辑方式去毛刺逻辑方式去毛刺 实质就是一个过滤器:,将信号中的毛刺、随机噪声或电子抖动信实质就是一个过滤器:,将信号中的毛刺、随机噪声或电子抖动信号过滤掉,只让真正的信号通过。号过滤掉,只让真正的信号通过。578.8.2 逻辑方式去毛刺 实质就是一个过滤器:,将信号中第第8章章 Verilog 有限状态机设计有限状态机设计特点:特点:输出脉冲宽度变小了。信号有一个延迟。输出脉冲宽度变小了。信号有一个延迟。CLK的频率应该足够高,至少的频率应该足够高,至少4个上升沿被包含在正常信号脉宽里面。个上升沿被包含在正常信号脉宽里面。CLK的频率不能太高,不能太小于干扰信号的频率。的频率不能太高,不能太小于干扰信号的频率。增加增加D触发器的数量,可以提高滤波性能。触发器的数量,可以提高滤波性能。58特点:58第第8章章 Verilog 有限状态机设计有限状态机设计8.8.3 定时方式去毛刺定时方式去毛刺 用两个计数器分别对输入信号的高低电平的持续时间进行计数,只用两个计数器分别对输入信号的高低电平的持续时间进行计数,只有当时间大于某个值时,则判断为遇到正常信号。输出有当时间大于某个值时,则判断为遇到正常信号。输出1或或0598.8.3 定时方式去毛刺 用两个计数器分别对输入信号的高第第8章章 Verilog 有限状态机设计有限状态机设计特点:特点:输出信号的脉宽比逻辑方式输出的信号宽很多。输出信号的脉宽比逻辑方式输出的信号宽很多。KH与与KL的计数位宽可以视具体情况而定。的计数位宽可以视具体情况而定。60特点:60第第8章章 Verilog 有限状态机设计有限状态机设计CPUCPU总是按照一定的时钟节拍与时序工作:总是按照一定的时钟节拍与时序工作:振荡周期振荡周期/时钟周期时钟周期:Tc=Tc=晶振频率晶振频率foscfosc(或外加频率)的倒数(或外加频率)的倒数状态周期状态周期:Ts=2Ts=2个时钟周期个时钟周期(Tc)(Tc)(很少用到此概念)(很少用到此概念)机器周期:机器周期:Tm=6Tm=6个状态周期个状态周期(Ts)=12(Ts)=12个振荡周期个振荡周期(Tc)(Tc)指令周期指令周期:Ti:Ti:执行一条指令所需的机器周期执行一条指令所需的机器周期(Tm)(Tm)数数牢牢记住牢牢记住:振荡周期振荡周期=晶振频率晶振频率foscfosc的倒数;的倒数;1 1个机器周期个机器周期=12=12个振荡周期;个振荡周期;1 1个指令周期个指令周期=1=1、2 2、4 4个机器周期个机器周期61CPU总是按照一定的时钟节拍与时序工作:振荡周期/时钟周期:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!