实验-有限状态机2(数字逻辑)
目录
一、实验内容
1.1 介绍
1.2 内容
二、实验步骤
2.1 电路原理图
2.2 步骤
2.3 状态图
4.4 状态转换表和输出表
2.5 具体应用场景
三、调试
四、实验使用环境
五、实验小结与思考
5.1 遇到的问题及解决方法
5.2 实验收获
一、实验内容
1.1 介绍
在解决更复杂的问题时,常常需要使用有限状态机(Finite State M achine或F S M)的设计方法。使用FSM方法设计出来的系统,可以针对外界事件做出不同的响应。比如生活中常见的家用台灯,你可以仅用一个输入按键实现多种输入指令,从而大大增强了系统使用者的体验,并且在某些场景下简化了系统的设计。
1.2 内容
单按钮台灯:长按和短按能够出发不同的语音播报信息;
在这个任务中,你需要根据自己对生活的观察或体验,寻找一个合适的应用场景中的问题,并采用有限状态机的方法加以解决。当你完成设计之后,你还需要在Logisim或其它平台中完成相应的实现和测试。
二、实验步骤
2.1 电路原理图
2.2 步骤
(1)首先我们需要对长按和短按进行检测,所以我们先设计一个long_or_short的器件,如下图所示:
我们运用了移位寄存器,当检测到010时,为短按;当检测到111时为长按。
(2)我们使用一个比较器,在检测到长按的情况下,我们运用一个与门将长按的计时器和蜂鸣器的声音打开,通过ROM和蜂鸣器,进行“小星星”的播报。
(3)由于检测到短按时,我们需要打开短按的计数器和蜂鸣器的声音,此时我们需要一直输入1来确保他们可以一直打开,而不是通过一直按按钮来实现,所以我们设计了一个如下的SR锁存器来实现,以确保当检测到短按时,可以保证计时器和蜂鸣器的声音一直打开。
(4)我们使用一个比较器,在检测到短按的情况下,利用一个复用器来输出1到SR锁存器的set位,此时输出的Q一直为1,这样就可以打开短按的计时器和蜂鸣器的开关,利用ROM和蜂鸣器器件来实现“祝你生日快乐”的语音播报。
2.3 状态图
4.4 状态转换表和输出表
表 1状态转换表
表 2输出表
2.5 具体应用场景
例如在一个小孩子的玩具里,小孩可以进行长按、短按来进行切换歌曲。
三、调试
(1)长按条件下,蜂鸣器开始运行
如下图:
(2)短按条件下,蜂鸣器开始运行
如下图:
四、实验使用环境
本实验采用Logisim电路仿真平台。在本实验中,你可以自由地使用Logisim提供的所有封装模块。
五、实验小结与思考
5.1 遇到的问题及解决方法
(1)长按与短按的准确检测
-
问题:初始设计仅依靠简单计数器,导致短按和长按的区分不够精确,容易误判。
-
解决:改用移位寄存器(检测
010
为短按,111
为长按),提高识别准确性。
(2)短按后信号维持问题
-
问题:短按后蜂鸣器需持续工作,但直接输入信号会导致需要持续按压按钮,不符合实际需求。
-
解决:引入SR锁存器,在检测到短按时锁定输出信号,确保蜂鸣器持续工作而不依赖按钮保持按压。
(3)蜂鸣器与ROM的同步控制
-
问题:蜂鸣器播放音乐时出现断续或延迟,影响体验。
-
解决:优化比较器阈值,调整时钟频率,确保ROM数据稳定输出,使音乐播放流畅。
5.2 实验收获
-
通过状态转换表、状态图和逻辑表达式,深入理解有限状态机在交互系统中的应用,如按键检测、模式切换等。
-
将功能分解为长/短按检测、状态锁存、音乐播放等模块,提高电路可维护性和可扩展性。
-
学会使用Logisim仿真工具进行逻辑验证,发现并解决时序问题,如寄存器位数不足导致的误判。