变化的流水灯

本文详细介绍了如何使用状态机设计变化的流水灯,涵盖了状态机的设计步骤、类型以及编码方式。通过三段式状态机实现流水灯的控制,包括Moore和Mealy状态机的区别,以及在流水灯变化中的应用。此外,还展示了系统框图,解释了各模块如PLL锁相环、time_top、water_led和muk的作用,以及流水灯LED0到LED3的变换逻辑。
摘要由CSDN通过智能技术生成

变化的流水灯

变化的流水灯
目录
变化的流水灯 1
第一章 状态机简介 2
1.状态机的设计步骤 2
2.状态机的分类 2
Moore状态机: 2
Mealy状态机: 2
3.状态编码 2
4.状态机的描述 2
4.1 一段式状态机: 2
4.2 三段式状态机: 3
第二章 设计变化的流水灯 4
一、water_led0的变换 4
二、water_led1真值表 9
三、water_led2 13
四、water_led3 14
五、water_led4 15
六、muk模块 16
七、锁相环模块 20
八、time_top模块 23
九、system_top模块 26

第一章 状态机简介
1.状态机的设计步骤
逻辑抽象
状态化简
状态分配
用逻辑描述语言进行行为描述建模
2.状态机的分类
数字系统有两大类有限状态机(Finite State Machine,FSM):Moore状态机和Mealy状态机。
Moore状态机:
  其最大特点是输出只由当前状态确定,与输入无关。Moore状态机的状态图中的每一个状态都包含一个输出信号。
Mealy状态机:
它的输出不仅与当前状态有关系,而且与它的输入也有关系,因而在状态图中每条转移边需要包含输入和输出的信息。
3.状态编码
数字逻辑系统状态机设计中常见的编码方式有:二进制码(Binary码)、格雷码(Gray码)、独热码(One-hot码)。
格雷码的特点:相邻的两个码组之间仅有一位不同。
普通二进制码与格雷码之间可以相互转换。
二进制码转换为格雷码:从最右边一位起,一次与左边一位“异或”,作为对应格雷码该位的值,最左边的一位不变(相当于最左边是0)。
格雷码转换为二进制码:从左边第二位起,将每一位与左边一位解码后的值“异或”,作为该解码后的值(最左边的一位依然不变)。
独热码又分为独热1码和独热0码,是一种特殊的二进制编码方式。当任何一种状态有且仅有一个1时,就是独热1码,相反任何一种状态有且仅有一个0时,就是独热0码。
4.状态机的描述
状态机有2种描述方式:一段式状态机和三段式状态机。下面就用流水灯来看看2种方式是如何实现的。
4.1 一段式状态机:
当把整个状态机写在一个always模块中,并且这个模块既包含状态转移,又含有组合逻辑输入/输出时,称为一段式状态机。不推荐采用这种状态机,因为从代码风格方面来讲,一般都会要求把组合逻辑和时序逻辑分开;从代码维护和升级来说,组合逻辑和时序逻辑混合在一起不利于代码维护和修改,也不利于约束。
4.2 三段式状态机:
三段式状态机通过在组合逻辑后再增加一级寄存器来实现时序逻辑输出。这样做的好处是可以有效地滤去组合逻辑输出的毛刺,同时可以有效地进行时序计算与约束,另外对于总线形式的输出信号来说,容易使总线数据对齐,从而减小总线数据间的偏移,减小接收端数据采样出错的频率。
三段式状态机的基本格式是:第一个always语句实现同步状态跳转;第二个always语句实现组合逻辑;第三个always语句实现同步输出。
第二章 设计变化的流水灯

设计的流水灯框图如图所示,一个system_top模块,输入clk_50m的信号,通过PLL锁相环输出clk_100m的信号,传递给time_top模块,输出使能信号,控制water_led模块,控制最外面小夜灯的变化,muk起到的是一个选择的功能。
一、water_led0的变换
LED0 LED1 LED2 LED3
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
water_led0从左到右进行变换,共阳,故赋值0,小灯亮起。

water_led0内部如图所示,输入的信号进入初始状态IDLE,此时灯全亮(检查硬件),然后迅速执行下一个程序AUTO自启动(因为time_en时钟使能信号收到输入的sel_en信号控制,所以添加自启动模块),设置为10um跳转一次,在执行完LED3之后,需要继续执行下一个模块,直到最后water_led3模块执行完毕,从water_led3再次传回启动信号start_en0之前,我们需要water_led0执行等待状态,在等待状态期间,关闭开关和启动下一个模块的的信号。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值