状态机实现流水灯 FPGA实验

本文详细介绍了如何使用状态机在FPGA上实现流水灯实验,包括状态机的基本要素、摩尔型和米勒型状态机的区别,并提供了实际的一段式、二段式和三段式状态机Verilog代码实现。通过比较,阐述了不同状态机结构的特点。
摘要由CSDN通过智能技术生成

一:什么是状态机?

状态机的基本要素有 3 个,其实我们在第一节的举例中都有涉及,只是没有点明,它们是:状态、输出和输入。
1、状态:也叫状态变量。在逻辑设计中,使用状态划分逻辑顺序和时序规律。比如:设计伪随机码发生器时,可以用移位寄存器序列作为状态;在设计电机控制电路时,可以以电机的不同转速作为状态;在设计通信系统时,可以用信令的状态作为状态变量等。
2、输出:输出指在某一个状态时特定发生的事件。如设计电机控制电路中,如果电机转速过高,则输出为转速过高报警,也可以伴随减速指令或降温措施等。
3、输入:指状态机中进入每个状态的条件,有的状态机没有输入条件,其中的状态转移较为简单,有的状态机有输入条件,当某个输入条件存在时才能转移到相应的状态。
根据状态机的输出是否与输入条件相关,可将状态机分为两大类:摩尔(Moore)型状态机和米勒(Mealy)型状态机。

1.1 状态机的分类:
1、摩尔状态机:摩尔状态机的输出仅仅依赖于当前状态,而与输入条件无关。每个输出仅仅与状态相关,所以它是一个摩尔型状态
机。
2、米勒型状态机:米勒型状态机的输出不仅依赖于当前状态,而且取决于该状态的输入条件。

(老师在上课的时候讲了一个很有趣的例子,一个程序员周一到周五是工作日需要工作,周六周日则休息打游戏,程序员每日的工作状态只是与日期有关,这就是摩尔状态机,如果程序员谈恋爱了,那么他每日的状态还要考虑到对象的问题才能决定自己的状态任务,那这就是米勒型状态机
1.2 状态机的工作原理图

 作业:

跑马灯流水灯verilog实现:

一段式状态机:
      S1  :begin
          if(time1_en)begin
                    led_out<=4'b1001;
              state<=S2;
                end
                else begin
                    led_out<=4'b0110;
              state<=S1;
                end    
      end
      S2  :begin
          if(time2_en)begin
                    led_out<=4'b1111;
              state<=S3;
                end
                else begin
                    led_out<=4'b1001;
              state<=S2;
                end    
      end
      S3  :begin
          if(time2_en)begin
                    led_out<=4'b0111;
              state<=S4;
                end
                else begin
                    led_out<=4'b1111;
              state<=S3;
                end    
      end
      S4  :begin
          if(time1_en)begin
                    led_out<=4'b1011;
              state<=S5;
                end
                else begin
                    led_out<=4'b0111;
              state<=S4;
                end    
      end
      S5  :begin
          if(time1_en)begin
                    led_out<=4'b1101;
              state<=S6;
                end
                else begin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值