版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目8——自动饮料售卖机-人机交互系统任务要求与组织逻辑项目八自动饮料售卖机-人机交互系统任务要求设定一种自动饮料售卖机场景:(1)主控制逻辑:饮料售卖机只出售冰红茶,每瓶冰红茶3元,饮料售卖机接收1元硬币。(2)人机交互●按键
:用按键Key_i代替投入1元硬币,按键每“按”1次代表投入一枚硬币,●蜂鸣器:按键按下时伴有约100ms短促的“滴”提示音(既支持有源蜂鸣器,也支持无源蜂鸣器)。●数码管:数码管显示当前累计的投币总数。每投币一次后,数码管更新显示当前的投币总数。●LED灯
:用LED灯代替饮料售卖机的饮料送出机械机构,当有饮料输出时,LED灯亮1秒。(3)其他:易于拓展其他面额及饮料,如5角硬币,脉动4.5元。回忆:项目3~7任务回顾任务要求与组织逻辑回忆:项目3~6任务回顾电路设计角度:以计数器为核心或切入点,此外有ROMIP核数据存储器。用户使用角度:主要是数码管人机交互器件,还有示波器外部设备。特点电路设计角度:以计数器为核心或切入点,以RAM、FIFOIP核作为数据缓存。用户使用角度:LCD显示器人机交互器件。特点任务要求与组织逻辑项目7任务回顾
按键(包含蜂鸣器)和状态机的应用按键(包含蜂鸣器)
任务要求中按键、蜂鸣器、数码管是最常见且实用的人机交互器件。按键是性价比最高的输入控制器件,若伴有“提示音”,会提升人机交互体验。状态机
对于逻辑较为简单的电路,如饮料售卖机,通常直接使用以if语句为主体的VerilogHDL语言进行电路设计,设计实现方法易于理解,综合出的电路图也直观。
但当饮料售卖机的逻辑较为复杂时,引入状态机的概念,可以将设计的逻辑跳转以“状态转换图”的形式进行规划,使用状态机辅助(以if语句为主体的)VerilogHDL语言的书写,可以提升设计的效率与成功率,当电路运转逻辑需求发生变化时,基于状态机的电路更易修改、维护。
一般复杂的逻辑跳转,如串行芯片的通信等,都需状态机辅助设计。注:状态机功能类似于C语言的程序框图,是用于指导代码设计而预先绘制的思维框图。
任务要求与组织逻辑8.1节
按键检测
1)按键逻辑值相对本地时钟是异步信号,
因此须消除亚稳态;
2)机械按键因机械接触瞬间有抖动,
故按键检测软件设计需要消抖。8.1拓展
按键提示音1)蜂鸣器是一种性价比极高且常用的声音提示器件.
因内阻小,故需设计模拟驱动电路2)蜂鸣器主要分为有源蜂鸣器和无源蜂鸣器。8.2节
基于状态机设计的自动饮料售卖机人机交互系统包含:按键、蜂鸣器、数码管、LED灯任务要求与组织逻辑8.2节
基于状态机设计的自动饮料售卖机合理的状态机规划可辅助VerilogHDL代码设计复杂的逻辑跳转。然而,状态机的分类等细节较多,因此,规范的状态机设计流程有助于状态机的选择和设计,从而提升项目设计的效率,以及成功率。人机交互状态机项目8组织逻辑8.2饮料售卖机8.1按键检测1、按键检测电路;2、按键检测(提示音)电路-蜂鸣器2、状态机的选择与设计流程3、饮料售卖机人机交互综合电路设计1、实现自动饮料售卖的6种状态机示例任务要求与组织逻辑本章重点按键消抖;蜂鸣器驱动;状态机设计流程。谢谢大家!任务要求8.1按键检测与提示音-检测部分1)单次模式:按键每“按”1次,产生“一个时钟周期宽度”的单脉冲信号。2)连续模式:按键每“按”1次不松,约每间隔300ms产生“一个时钟周期宽度”的连续脉冲信号。8.1按键检测与提示音-检测部分内容安排1、按键外围模拟电路;2、按键亚稳态现象和抖动(或干扰);3、按键检测电路设计-仅支持单次模式4、按键检测电路设计-支持单次和连续模式(parameter)5、按键检测电路设计操作演示(1)按键物理实体及原理一类是触点式开关按键,如机械式开关,造价低。另一类是无触点式开关按键,如触摸按键等,寿命长。机械式按钮开关的原理是:当按下开关按钮时,机械装置会将金属触点锁定,使电路保持接通状态;当松开开关按钮时,机械装置会脱钩,使电路断开。触摸按键中电阻触摸按键的原理是基于人的组织(皮肤)表面含有大量的盐分和水,使自身带有导电性。1、按键外围模拟电路(2)按键外围模拟电路处理器引脚被配置为输入引脚时,从外部向内看一般可以等效成一个无穷大的电阻Ri。处理器引脚被配置为输出引脚时,从外部向内看1)输出逻辑1:一般可以等效成一个含内阻的的直流电压源。2)输出逻辑0:一般可以等效成内部直接接地。按键/LED灯外围电路设计(常见方法)外部上拉电阻连接按键的方法。输出电阻存在的意义:防止短路。(特别是输入输出引脚混淆)1、按键外围模拟电路(1)按键亚稳态现象及规避亚稳态现象用户的“按”和“松”按键操作决定了送至FPGA输入引脚的逻辑值是0或者1。如果FPGA内部在每个时钟上升沿判决按键的逻辑,因为“按”和“松”动作的随机性导致“FPGA内部时钟和按键逻辑值变化的相位是随机的”,所以按键输入信号对于FPGA内部时钟是异步信号,会有亚稳态问题。亚稳态现象的解决6.1节介绍过亚稳态现象产生的详细原因,并且解释了可以使用两级触发器来有效解决这一问题2、按键亚稳态现象和抖动(或干扰)(2)按键抖动(干扰)-现象及危害1)抖动现象因构成按键结构中金属的氧化和机械触点的弹性等一系列原因,在“按”和“松”操作时均会产生物理抖动从而导致送入FPGA端口的按键信号电压呈现波动,称之按键抖动。以下是示波器截取图及简单的示意图。抖动或干扰危害例如,若以按键下降沿为判断依据,按键“按”一次,抖动部分会造成系统多次动作。2、按键亚稳态现象和抖动(或干扰)2)干扰现象干扰:如电磁干扰、机械震动造成的干扰等(2)按键抖动(干扰)-消除方式2)抖动(或干扰)特点抖动(干扰)阶段,低电平持续时间<20ms。3)消抖思路抖动阶段存在若干个下降沿,但仅有最后1个下降沿之后低电平保持时间>20ms;干扰的低电平<20ms因此判定下降沿后的低电平时间是否>20ms,则可判定是否是“按”操作。4)消抖方法检测到下降沿则计时器置初值(如0);如果此后按键电平为低,则计时器加值,否则计时器停止或置初值(如0)。判断“定时器时间>20ms”&&“当前按键值为0”,则判定为按下。核心:边沿检测、计数器启停、判定2、按键亚稳态现象和抖动(或干扰)1)按键抖动(干扰)消除方式●硬件消抖:使用自带硬件消抖功能的按键替换普通按键,但会提升硬件成本;●软件消抖:更常见的消抖方式是软件消抖,即用FPGA内部电路处理。(1)按键边沿检测3、按键检测电路设计-仅支持单次模式原则:同步系统(将按键信号作为逻辑值,而非时钟)上升沿检测依据:当前时刻(时钟)电平为1&&上一时刻(时钟)电平为0。下降沿检测依据:当前时刻(时钟)电平为0&&上一时刻(时钟)电平为1。计数器cnt_20ms_r(2)按键时间记录计数规则检测到上升沿或下降沿cnt_20ms_r清零,否则计数约20ms计满停止,避免循环计数。时钟clk_in以50MHz为例,计数位宽?20位宽自溢计数器较宜!!!3、按键检测电路设计-仅支持单次模式“按”动作判断(3)脉冲产生PulseCtrl=“计数器值等于某临近顶值”&&“当前电平为低电平”注:某临近顶值意思是计数器停止值(或最大值)前面的某临近某值。3、按键检测电路设计-仅支持单次模式(4)时序规划3、按键检测电路设计-仅支持单次模式cnt_20ms_r计数规则(按优先级)①复位为0;②cnt_20ms_r赋值第1优先级:只要按键边沿发生变化cnt_20ms_r则置为1,以便后续满足④计数;③cnt_20ms_r赋值第2优先级:若cnt_20ms_r==0,则保持。④cnt_20ms_r赋值第3优先级:若cnt_20ms_r≠0,则自动累加直至0停止(0是顶值)。注:也可以是复位最大值,加至最大值停止,那么按键边沿变化则应赋值最大值。“按”动作判断PulseCtrl_o=“计数器值等于某临近顶值(如max或比max小的值)”&&“当前电平为低电平”(5)验证方案按键次数计数器的规则上升沿检测到“Pulse_Crtl_w==1”加1触发器的作用将Pulse_Crtl_w延缓一拍,以便配平和0~255计数器值节拍延时。3、按键检测电路设计-仅支持单次模式设计需求通过修改电路的端口参数,即可让其工作在单次检测模式,或者工作在连续检测模式设计一种单次、连续均支持的模式4、按键检测电路设计-支持单次和连续模式(1)设计分析与思路设计关键点
:300ms是15次20ms,可设计一个计数器Num_20ms_r记录cnt_20ms_r加满的次数。0~15循环计数单次模式特点:抖动结束后,只要计数器能计满20ms,代表“按”;连续模式特点:抖动结束后,每计满一次300ms,就代表一次“按”。Num_20ms_rcnt_20ms_r每计满一次+1cnt_20ms_r加满停止->循环计数。1~15循环计数0、1、2~150、1、2~15......缺点:无法支持单次模式按键边沿变化、复位赋值00、1、2~15
1、2~15......4、按键检测电路设计-支持单次和连续模式脉冲产生1)单次模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“当前电平==0”&&Num_20ms_r==0(首次)2)连续模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“当前电平==0”&&Num_20ms_r==1(1~15任意一个)√(2)电路方案4、按键检测电路设计-支持单次和连续模式脉冲产生1)单次模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“当前电平==0”&&Num_20ms_r==0(首次)2)连续模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“当前电平==0”&&Num_20ms_r==1(1~15任意一个)(3)时序规划4、按键检测电路设计-支持单次和连续模式脉冲产生1)单次模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“当前电平==0”&&Num_20ms_r==0(首次)2)连续模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“当前电平==0”&&Num_20ms_r==1(1~15任意一个)按键检测操作步骤:1、按键检测模块设计、仿真;2、顶层电路设计;3、测试;5、按键检测电路设计操作演示操作演示谢谢大家!8.1按键检测与提示音(提示音部分)任务要求1)每个PulseCtrl产生100ms短促提示音
对于单次模式,按键“按”1次,产生一个单时钟宽度的单脉冲信号,同时伴有约100ms短促提示音。对于连续模式,按键“按”1次,每300ms为间隔产生若干连续单时钟宽度的脉冲信号,每个脉冲伴有约100ms短促提示音。2)支持有源蜂鸣器和无源蜂鸣器,parameter可修改8.1按键检测与提示音(提示音部分)内容安排1、蜂鸣器简介,包含有源、无源蜂鸣器;2、蜂鸣器外围模拟电路3、蜂鸣器FPGA驱动电路,包含有源、无源蜂鸣器(parameter)4、按键提示音设计操作演示蜂鸣器简介有源蜂鸣器的工作发声原理是:输入的直流信号经过蜂鸣器内部的振荡电路、放大电路、放大取样电路后生成频率固定的交流电信号再送入内部的震动装置产生固定频率的声音信号。只有一个固定的音调,音调取决于有源蜂鸣器内部的振荡电路。蜂鸣器由振动装置和谐振装置等部件组成,又分为无源他激型与有源自激型两种,简称无源蜂鸣器和有源蜂鸣器。无源蜂鸣器的工作发声原理是:谐振装置将输入的一定频率的方波等信号,转换为相同频率的声音信号输出。音调取决于送入的电信号频率。1、蜂鸣器简介蜂鸣器外围模拟驱动电路当FPGA输出端口输出逻辑0(即0V)时三极管导通,电流主要由VCC流经Rc、蜂鸣器、三极管的发射极到集电极,最终流向GND。蜂鸣器的内阻常见值有5Ω,8Ω等,工作电流一般为mA级别,FPGA的引脚不能(或不应该,以免烧毁FPGA)为其提供足够的电流,因此常见的解决方案如图所示,将三极管当做开关。当FPGA输出端口输出逻辑1(含内阻Ro的直流稳压源)时,三极管截止,蜂鸣器无电流。2、蜂鸣器外围模拟驱动电路此外,还有类似的各种驱动能力更强的衍生电路。(1)按键提示音-设计思路3、蜂鸣器FPGA驱动电路无源蜂鸣器PulseCtrl_w为1,则需产生100ms的周期脉冲beep_o以驱动外部蜂鸣器,频率不妨取1000Hz。有源蜂鸣器PulseCtrl_w为1,则需产生100ms的高电平有效使能信号beeo_o以驱动外部蜂鸣器。有源、无源蜂鸣器整合1)PulseCtrl_w为1则产生100ms的BeepEn100ms_r高电平2)div_1KHz_r恒产生,实际是一个分频器。3)有源蜂鸣器,则输出BeepEn80ms_r
无源蜂鸣器,则输出BeepEn100ms_r&&div_1KHz_r问题核心(BeepEn100ms_r的产生,应依托于计数器)设计一个约100ms计数器,以50MHz为例,取22位宽,计满约合84ms,记作cnt_80ms_r。计数规则(按优先级)①复位为0;②赋值第1优先级:只要PulseCtrl_w为1,则置为1;③赋值第2优先级:cnt_80ms_r==0则保持。④赋值第3优先级:自动累加直至0停止。BeepEn80ms_r赋值规则:cnt_80ms_r等于0赋值0,否则赋值1。(2)按键提示音-设计方案3、蜂鸣器FPGA驱动电路在上节工程基础修改操作步骤:1、蜂鸣器驱动电路设计;2、仿真;3、测试;4、按键提示音设计操作演示操作演示问题核心——BeepEn80ms_r的产生,应依托于计数器1)若指定按键是单次检测则KEYMODE修改为1,反之置为0。;2)若蜂鸣器是有源,则BEEPMODE修改为1,反之为0。支持单次模式和连续模式按键检测电路代码调用总结谢谢大家!8.2自动售卖机任务要求设定一种自动饮料售卖机场景:(1)主控制逻辑:饮料售卖机只出售冰红茶,每瓶冰红茶3元,饮料售卖机接收1元硬币。(2)人机交互●按键
:用按键Key_i代替投入1元硬币,按键每“按”1次代表投入一枚硬币,●蜂鸣器:按键按下时伴有约100ms短促的“滴”提示音(既支持有源蜂鸣器,也支持无源蜂鸣器)。●数码管:数码管显示当前累计的投币总数。每投币一次后,数码管更新显示当前的投币总数。●LED灯
:用LED灯代替饮料售卖机的饮料送出机械机构,当有饮料输出时,LED灯亮1秒。(3)其他:易于拓展其他面额及饮料,如5角硬币,脉动4.5元。内容安排1、非状态机设计饮料售卖机;2、状态机的引入及概念;3、6种常见状态机设计饮料售卖机;●Mealy型状态机(一、二、三段式)●Moore型状态机(一、二、三段式)4、状态机的选择与设计流程5、饮料售卖机人机交互综合电路设计注:本节重点是状态机阐述,为方便阐述1~4,状态机输出信号仅以Drink_o为例8.2自动售卖机仅使用if语法-以CurMoney_r为引线非状态机设计饮料售卖机特点:初学者易懂,电路是一些加法器和比较选择器的组合,直观、易懂;缺点:●代码不够直观,可读性差;●当售卖逻辑复杂时,难以修改。1、非状态机设计饮料售卖机饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。状态机的发明猜想若将设计任务中的money_i修改为可以支持5角甚至1角等多种面额硬币,上述代码将因if语句的嵌套变得十分复杂。饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转.针对此类问题,工程师们在总结了诸如饮料售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了归纳、总结,并给出了一些“范式”的电路代码描述方法——状态机。将状态机可理解为C语言设计前的流程图,其只是一种指导代码设计而预先绘制的思维导图,状态机亦是。很多学生/开发人员设计简单电路一般不画流程图或画草图,但并不影响其设计代码,但大型电路则不可行。也就是说,面对FPGA设计大型项目时,一般需借助状态机。就VerilogHDL而言,实际设计者在未专门学习状态机前,经常会无意识的设计出非范式的状态机。2、状态机概念饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。状态机的概念状态机简写为FSM(FiniteStateMachine),称同步有限状态机,也简称为状态机。1)“同步”是因为状态机中所有的状态跳转都是在同一时钟的作用下触发;2)“有限”含义是状态的个数有限。状态机的每一个状态代表一个事件,从执行当前事件到执行另一事件的跳转称之为状态的跳转或状态的转移。设计者的任务是执行当前事件然后跳转到一下事件,如此一来包含多个状态的系统就“活”了。状态机通过控制各个状态的跳转来控制流程,使得整个代码看上去更加清晰易懂,在控制复杂流程的时候,状态机优势明显,且易于添加和修改。状态机典型的分类主要包含型Mealy型状态机和Moore型状态机两种,二者都各自有一段式、两段式、三段式写法,接下来通过6个案例来介绍Mealy和Moore型状态机的三种写法(共2×3=6种),然后对其进行总结,最后给出范式写法。2、状态机概念1、Mealy状态机整个系统的输入信号是投币,输出信号是饮料(和当前投币数)整个流程可以抽象为3个状态,1)空闲(用IDLE表示)2)已投入1元(用ONE表示)3)已投入2元(用TWO表示)。根据上述列出3种状态及状态转移逻辑,预先绘制图Mealy型状态转移图。●IDLE:系统复位后的默认状态,代表当前已有金额是0元,无饮料输出;根据是否投币有两种目标状态:投1元硬币跳转至状态ONE且无饮料输出,无投币则保持IDLE状态且无饮料输出;●ONE:此状态下售卖机已有1元硬币;根据是否投币同样有两种目标状态:投1元硬币则跳转状态TWO且无饮料输出,无投币则保持ONE状态且无饮料输出;●TWO:此状态下售卖机里已有2元硬币;接下来的状态有两种情况:投了1元硬币则跳转状态IDLE,且输出可乐(根据和输入相关要求,此时输入1元,加上原来的2元共有3元,满足输出可乐的条件);无投币则保持TWO状态且没有可乐输出;3、6种常见状态机设计饮料售卖机Mealy一、二、三段式状态机操作演示1、设计;2、仿真。3、6种常见状态机设计饮料售卖机操作演示饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:Mealy状态机一段式(1/3)引入虚拟state这一引线,增强了代码的条理性和可读性;代码主要架构为if+case3、6种常见状态机设计饮料售卖机饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:Mealy状态机二段式(2/3)现态cur_state由时序逻辑赋值,以便存储;次态next_state由组合逻辑赋值,更为简便。3、6种常见状态机设计饮料售卖机饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:Mealy状态机二段式(2/3)3、6种常见状态机设计饮料售卖机1)二段式状态机是一段式和三段式的一个过渡,相比与一段式多了一个“次态”。2)典型缺点输出信号Drinks_o因在组合逻辑中赋值,仿真结果显示出现类似竞争冒险现象的尖刺3)本例中两段式状态机相对一段式状态机没有显现出太大的优势饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:Mealy状态机三段式(3/3)1)第2段只负责状态判断,由组合逻辑设计,无时序延时,故而清晰易懂;2)第1段只负责状态转移,由时序逻辑设计,固定模板——次态赋给现态;3)第3段只负责输出信号,由时序逻辑设计,避免了类似组合逻辑的竞争冒险。3、6种常见状态机设计饮料售卖机饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:Mealy状态机三段式(3/3)3、6种常见状态机设计饮料售卖机Mealy三段式状态机代码直观上的感受不如一段式简单、整洁,原因是此案例应用场景过于简单。试想如果售卖机支持1角和5角,整个状态转移变得更为复杂,但三段式只需对第二段always采取复制粘贴的方法进行修改即可,第三段always对应的稍加修改。三段式状态机更易修改,且更适合复杂的状态转移场景,通用性更广。饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:状态机仿真技巧3、6种常见状态机设计饮料售卖机状态机仿真技巧注意1:进行时序仿真时,因编译导致state往往被优化,因此不能观测state_name;注意2:进行功能仿真时,观测state_name时,需将格式调整为“ASCII”格式。2、Moore状态机整个系统的输入信号是投币,输出信号是饮料(和当前投币数)整个流程可以抽象为4个状态:1)空闲(用IDLE表示)2)已投入1元(用ONE表示)3)已投入2元(用TWO表示)4)已投入3元(用THREE表示,抽象出的虚拟状态)●IDLE:首先是系统复位后的默认状态,这个状态下售卖机里无投币且无饮料输出●ONE:这个状态下售卖机里有1元硬币且无饮料输出●TWO:这个状态下售卖机里有2元硬币且无饮料输出;●THREE:这个状态是极为短暂的,售卖机里有3元硬币,但是因为是使用的时序逻辑,所以在这个时钟周期无饮料输出,饮料会在当前状态跳转至下一状态时输出(下一个时钟周期输出);下一状态根据投币情况有两种:投了1元硬币则跳转状态ONE、没有投硬币则跳转状态IDLE状态。3、6种常见状态机设计饮料售卖机MealyMooreMoore一、二、三段式状态机操作演示1、设计;2、仿真。3、6种常见状态机设计饮料售卖机操作演示饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:Moore状态机一段式(1/3)Moore相比Mealy特点:输出Drinks和输入Money_i无关(代码第53行)3、6种常见状态机设计饮料售卖机饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:Moore状态机二段式(2/3)Moore相比Mealy特点:输出Drinks和输入Money_i无关(代码第68、72行)3、6种常见状态机设计饮料售卖机饮料售卖机电路设计是以if(或case)语法为主各种状态的判断与跳转,针对此类问题,工程师们在总结了诸如可乐售卖机等这种转换逻辑较为复杂的电路的特点后,将这些应用场景下的if(或case)语法进行了总结,并给出了一些“范式”的电路描述方法——状态机。总结:Moore状态机三段式(3/3)Moore相比Mealy特点:输出Drinks和输入Money_i无关(代码第77行)3、6种常见状态机设计饮料售卖机总结:Moore状态机3、6种常见状态机设计饮料售卖机1)Moore状态机相对Mealy状态机额外加入THREE这个抽象的状态;2)最大的优点在于输出只和当前状态(THREE)有关,和输入无关(Mealy中的饮料输出不进去决定于当时的状态TWO,也和是否有投币输入有关)3)缺点是这一额外的状态不容易虚构,这需要根据实际情况和经验决定。MealyMoore饮料售卖机IDLE:系统复位后的默认状态,代表当前已有金额是0元,无饮料输出;根据是否投币有两种目标状态:投1元硬币跳转至状态ONE且无饮料输出,无投币则保持IDLE状态且无饮料输出;ONE:此状态下售卖机已有1元硬币;根据是否投币同样有两种目标状态:投1元硬币则跳转状态TWO且无饮料输出,无投币则保持ONE状态且无饮料输出;TWO:此状态下售卖机里已有2元硬币;接下来的状态有两种情况:投了1元硬币则跳转状态IDLE,且输出可乐(根据和输入相关要求,此时输入1元,加上原来的2元共有3元,满足输出可乐的条件);无投币则保持TWO状态且没有可乐输出;总结Mealy和Moore状态机3、6种常见状态机设计饮料售卖机以上6例为说明Mealy和Moore型状态机各三种风格代码的设计方法而刻意将售卖逻辑简化,因此可能未充分体现出各种状态机的优缺点。但可以肯定的是售卖逻辑若支持1角或5角等各种面额硬币,状态机的引入会简化设计、提升代码的阅读性与可维护性等。实际上除了上述6种状态机设计风格,还有很多衍生代码风格,但最常用的还是以上6种,读者在掌握状态机的设计方法后,会根据实际设计任务无意识的写出衍生代码格式。在日常设计中优先选择6种状态机写法的哪一种,状态机的设计流程是什么,还有哪些注意事项?(1)状态机的选择-采用几段式状态机?几段式状态机的选择一段式状态机:将判断、状态、输出等写在一个always里,只涉及时序电路,无组合逻辑的竞争与冒险,同时消耗逻辑比较少,但是如果状态较多且转移逻辑复杂,一段式状态机显得比较臃肿,不利于维护和修改。两段式状态机:因为逻辑清晰、便于阅读、理解和维护,通用写法中一个always模块采用时序(状态转移,将次态赋值next_state给现态cur_state);另一个always模块采用组合时候(包含输出和next_state等其余电路)。但组合逻辑会产生竞争冒险问题,且因组合逻辑竞争冒险问题导致有些情况无法准确描述,比如输出时需要类似计数的累加情况。综合来看,只要应用场景合适,两段式状态机仍然是推荐的状态机设计方法之一。三段式状态机:设计者可以清晰的将状态图转化为VerilogHDL代码,代码可以清晰完整的显示出状态机的结构,代码清晰且降低编写维护复杂度,一般最常用的是三段式状态机,后文及本书后几章均以三段式状态机为例。实际中,各种状态机均有优缺点,应视具体情况而灵活抉择,但首选三段式状态机。4、状态机的选择与设计流程推荐:优先考虑三段式状态机√(1)状态机的选择-Mealy和Moore型选择?从输出信号相关性角度(最典型区别)4、状态机的选择与设计流程从优缺点角度Mealy型输出(如Drinks_o)既和当前状态有关;又和输入(如Money_i)有关Moore型输出(如Drinks_o)仅和当前状态有关。Moore型典型优点:输出信号仅有当前状态决定,和输入信号无关,其三段式输出便于书写。典型缺点:设计前,为保证输出和输入无关,需额外抽象其他虚拟状态。因额外“多抽象出的这一个或几个状态”而多几个时钟周期的延迟,这意味着状态机无法对输入变化立即做出反应。Mealy型典型优点:与Moore相反,状态少,延时小。典型缺点:Mealy型也没有Moore型状态机的“输出只和状态有关”这一特点,其输出和当前状态以及输入有关,导致输出信号所在的always模块书写逻辑稍加繁杂。(1)状态机的选择-Mealy和Moore型选择状态机选择Mealy型状态机和Moore型状态机还有各种衍生格式,此外,还有二者结合的混合型状态机,应视具体设计任务而选择何种状态机。1)对于大多数应用场景,Mealy和Moore型状态机均可以完成相同的功能,初级阶段,更多的是一种习惯。中高级阶段,一般是因具体电路的时序要求等原因被迫选择某种状态机。2)建议读者不要纠结该使用Mealy还是Moore型状态机,在实际上机中,依据设计任务,读者在构造输出信号时,往往会无意识的选定Mealy还是Moore型状态机。3)其他,对于初学者而言,就某一项目需求(实际一般都是成熟设计)往往都是参考网络资源或书籍状态机而进行一定的移植和修改。4)如果熟悉状态机的语法,在能够接受Moore型状态机的输出延时的情况下,优先选择Moore型4、状态机的选择与设计流程(2)状态机的设计流程把实际系统进行逻辑抽象,即实际问题转化为设计要求。首先确定电路输入信号(如Mone
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技公司知识产权保护制度
- 物流行业货物安全追溯制度
- 文娱产业内容审查制度
- 医疗机构服务行为规范制度
- 制造业安全生产监管制度
- 2.4 数据交换技术
- 响水《道具制作师》职业测试卷
- 护理风险沟通机制
- 护理记录单书写常见误区及纠正
- 麻疹风疹防控方案培训考核试题(一)
- 9.2《项脊轩志》课件+2025-2026学年统编版高二语文选择性必修下册
- 连云港市市属国有企业选聘生招录笔试真题2025
- 2026届上海市普陀区高三下学期二模质量调研 历史试卷(含答案)
- 郑州信息科技职业学院2026年单独招生《职业适应性测试》模拟试题
- 中国支气管哮喘基层诊疗与管理指南(2026年)解读课件
- 财税公司处理投诉内部相关制度
- 2023年瑞安中学自主招生综合测试数学试卷
- GB/T 19068.1-2017小型风力发电机组第1部分:技术条件
- GB/T 17359-2012微束分析能谱法定量分析
- 公司付款委托书 模板
- GA/T 1674-2019法庭科学痕迹检验形态特征比对方法确认规范
评论
0/150
提交评论