7.25-7.29学习总结(状态机及PWM原理)

学习目标:

              1.认识状态机并尝试使用状态机编写按键消抖模块。

              2.掌握pwm原理及其方法并使用pwm制作音乐播放器。

一、状态机

        1.状态机概念:

           当外部事件发生后,状态机便会根据状态转移条件发生响应,一般来说状态机的输出是由现态或现态和输入共同决定的,但是有时某一状态或者某一输入改变,输出并不一定会发生变化,带来的仅仅是状态迁移而已。

        2.状态机分类:

           摩尔型状态机:输出仅仅依赖于当前状态,而与输入无关,由于输出来自组合逻辑可能产生毛刺,从而产生不利的影响。(状态机图片来自百度百科)

            

 

 

         米勒型状态机:输出不仅依赖于当前状态,还取决于该状态的输入条件。输出也是组合逻辑,输出时序不佳,限制了系统的工作频率。(红色箭头表示输入信号传入输出部分)

         

          综上,使用状态机时最好是结合使用,且可以使用寄存器类型输出,使其具备更好的时序性能。

         注意:一个良好的状态机应具备初始化状态或默认状态,即芯片上电复位后,状态机能够自动将所有判断条件复位,并进入初始状态。大多数FPGA都有GSR(全局复位置位),当上电后GSR有效,对所有寄存器、RAM等单元进行复位

         3.状态机的编码方法:

                独热码、自然二进制编码、格雷码编码。

独热码编码

自然二进制编码

格雷码编码

优点

状态译码的组合逻辑较少;适用于大型状态机;不容易产生毛刺

需要的触发器个数较少;适用于小型状态机

相邻状态之间只变1bit,编码密度较高;需要的触发器个数较少;适用于小型状态机

缺点

需要的触发器个数较多

状态译码需要较多的组合逻辑;容易产生毛刺

状态译码需要较多的组合逻辑

        4.状态机的描述方法:

             一段式描述方法:使用一个 always 模块,使用时序逻辑同时描述状态转移和状态输出。

             二段式描述方法:第一个 always 模块用时序逻辑描述状态转移。第二个 always 模块用组合逻辑计算次态以及输出。

             三段式描述方法:三个always块一个描述状态转移、一个描述判断条件、一个使用寄存器型描述输出(组合逻辑或时序)。

             总结:推荐使用读热码编码方式和三段式描述方法。

二、PWM原理

            占空比:是指一个周期内高电平时间和总时间的比值。举例:一个完整的信号周期为20ns,高电平持续时间为10ns,即该信号占空比为50%。

            pwm即脉冲宽度调制,即在一个周期内产生不同占空比的电平信号。

           如图,在FPGA实现呼吸灯工程中,通过使用计数器产生不同宽度的脉冲信号从而控制LED的亮灭时间进而实现呼吸灯的效果。

          通过pwm方法可以近乎实现DA转换的功能,即通过数字信号产生连续模拟信号。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值