集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

跟李凡老师学FPGA之D04:有限状态机设计(20160426课堂笔记)

[复制链接]
 楼主| lcytms 发表于 2017-4-9 22:40:30 | 显示全部楼层
0949
        当前的状态呢,我们写成current_state。
        因为稍后呢,我还要绘制很多的图,我把current_state转成了next_state。
        这个ST,我们说到底它是一个电路,当然更抽象一点,它就是一个决策系统,或者是一个数据库。
        它能够解决的问题就是,它能够解决转向何处。
        刚才我们说的,我们要解决两件事,第一转向何处,第二何时转。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-4-9 22:41:44 | 显示全部楼层
0950
        转向何处,你只要知道当前现场的情况是什么,以及当前的状态是什么,那么这个系统它就能知道下一个状态是什么,它就是历史,它就是决策系统。
        所以说,它解决的是,何时转移的问题。
        以后我们经常会说到,current_state和next_state。
        我在绘制的时候为了方便,编码的时候方便,我就直接写成NS、CS,所以说它解决了转向何处的问题。
        何时转呢?
        在电路上面实现,我们同学知道,一点也不难,我们会引入一个D触发器,用D触发器构成一个寄存器。
        寄存器的概念就是这么来的,同步电路里面得到的,把这个数据寄存、保持下来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-4-16 22:26:04 | 显示全部楼层
0951
        然后呢,这个D触发器引入时间,是离散的时间,我在这里打个t’,离散的时间轴。
        也就是说,在这个时候,NS转成。
        何时转呢?
        是ST知道,转向何处。
        何时转由寄存器来决定,这个寄存器是称之为状态寄存器,state register,它输出的是什么呢?
        何时转,是把当前是什么,下一拍是什么,下一拍转向何处,再转过来,当然就是当前状态。
        我不知道这句话说清楚了没有,ST解决转到何处的问题,寄存器解决何时的问题。
        也就是ST,你给出当前的状态,它就能指示出下一个状态是什么,就是刚才我说的状态变迁的序列。
        它仅仅是给出下一个状态转向何处,何时转是由它来决定的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-4-16 22:27:25 | 显示全部楼层
0952       
        它把这个状态变成了现在的状态,所以说这个CS是形成迭代的。
        那么因为它把这个状态转成了现在的状态。
        ST又是根据当前状态来知道下一个状态。
        有输入和时钟就会有CS。
        CS是Current State。
        就是一个状态的序列,状态的变迁的序列。
        在这个状态变迁的序列里面,显然已经解决了转向何处、何时转的问题。
        从离散时间轴上的引入,得到了有限的状态。
        一定是一个有限的状态,如果是无限就麻烦了,就写不完。
       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-4-16 22:28:29 | 显示全部楼层
0953       
        状态机的理论告诉我们,根据有限的状态产生输出,有两种模型。
        第一种模型。
        如果知道了有限的状态,在不同的状态,产生不同的输出,就称之为摩尔机。
        另外一种形式,就是输出不仅与当前的状态有关,而且还和当前的输入值现场有关。
        这个就是米利机。
       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-4-16 22:29:13 | 显示全部楼层
0954       
        也就是说对于摩尔机而言,状态变了,输出才会变。
        对于米利机而言,状态变了,输入也变的情况之下,状态没有变,输入变的情况之下,输出也变。
        再说一下,对于摩尔机而言,状态没有变,输出不会变的。
        只有状态变了,输出才会变。
        而对于米利机而言,如果状态变了,输出会变,状态没有变,输出仍然可能变。
        因为如果状态没有变,而输入变了,输出也会变。
        所以这样看起来,米利机用于实时的控制会更好一点,它会紧跟着输入走。
        所以说状态没有变化的时候,输入变化了,那么摩尔机输出仍然是稳定的,没有变。       
 楼主| lcytms 发表于 2017-4-16 22:30:36 | 显示全部楼层
0955       
        但是米利机则不同,如果状态没有变的时候,如果输入变了,米利机的输出仍然会变化。
        可是以后我们会看到,现代最优秀的结构,也就是说如果我们是就业班,我们在应聘的时候,应聘单位它可能面试的时候,它可能会要你写一个比较优秀的结构。
        通常会要你写一个什么机器,那你写一个摩尔机,优秀。
        这个为什么摩尔机比米利机优秀呢?
        看起来好像米利机跟进得更快一点,马上反应实时特性,这个呢我们以后解释。
        为什是摩尔机?
        现在呢,直接告诉大家结论。
        是摩尔机要优秀得多。
        不是比它好一点,是好得多。
        而且是也更难,设计摩尔机比设计米利机要难,也不是难一点,有的时候要难很多。
       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-4-16 22:31:32 | 显示全部楼层
0956
        米利机的输出是跟输入有关的,而摩尔机的输出是跟输入无关的。
        我把这段PPT打开。
        二者没有可替代性,泾渭分明。
        非常清楚,摩尔机绝对跟输入无关,只跟状态有关。
        看公式,摩尔的公式里面,摩尔机的函数只有一个CS,而米利机它的函数里面除了有CS,还有输入项,所以说这两者的函数关系也不一样。       
 楼主| lcytms 发表于 2017-4-16 22:32:47 | 显示全部楼层
0957       
        如果我们不考量它的速度指标,就是一般而言,我们写一个逻辑而言,你可以选择性地,既可以选择摩尔机,也可以选择写米利机,但是实现的时候,两者的性能是有差异的。
        我们说,摩尔机要更好一些嘛,不是正确与否的关系,而是性能优异与否的关系,摩尔机的性能要更好一点。
        今天我们还是讨论米利机,米利机就是我们一般看到的状态机的模型。
        好,那么现在我们已经有了一个状态变迁的序列,并且有了这么一个理论模型。       
 楼主| lcytms 发表于 2017-4-16 22:33:26 | 显示全部楼层
0958       
        这个模型就是米利机和摩尔机的模型。
        是根据状态的序列来得到的,根据这个模型,这个理论模型,我们来讨论如何来编写我们的代码,如何用verilog来实现这个理论模型?
        verilog来实现这个理论模型,这个基础也非常重要,有些同学也是做了很多年,状态机也是写得牛头不对马嘴,就是没有写成一个状态机的理论体系。
        他是不是做成了呢?
        可能也跑得起来,但是我不是讲,他走到别人的弯路上面去了,它的性能上不来,他得不到工具的支持,得不到理论体系背景下面强大的数学支持。
        那么得不到意味着什么呢?
        你的系统做不大,做不复杂,做不快,缺乏竞争力。
        有些时候,简单的就直接错了,直接停下来了。       
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-23 15:52 , Processed in 0.101437 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表