集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 62880|回复: 221

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

[复制链接]
lcytms 发表于 2017-4-9 15:20:40 | 显示全部楼层 |阅读模式
李凡老师学FPGA之D04:有限状态机设计(20160426课堂笔记)

用笨笔头整理课堂笔记,用以备忘,温故而知新。
整理文稿的细节处未能一一体现李凡老师的讲课精髓和独特风采,有待下一步补充完善。
感谢李凡老师博大精深的学识、孜孜不倦的教诲,并敬请李凡老师原谅本人拙劣的课堂笔记。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-9 15:31:51 | 显示全部楼层
0912
        今天我们会结合有限状态机的设计呢,完成我们下板的练习。
        昨天我们做了下板的练习,还差一个,就是键盘去抖。
        今天我们会用状态机来写键盘去抖。
        同样的,今天的课程开始之前,我们将昨天的练习做一个总结,做一个分享。
        昨天很多同学都已经完成了。
        做得都很好,而且还加入了自己的想法,自己的元素。
0913
        还是这样,完成的同学做个电子举手。
        出现有些问题的同学,我会帮你解决。
0914
        (同学练习分享)

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-9 15:35:11 | 显示全部楼层
0915
        (同学练习分享)

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-9 15:36:54 | 显示全部楼层
0916
        (同学练习分享)

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-9 15:37:52 | 显示全部楼层
0917
        (同学练习分享)

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-9 15:39:18 | 显示全部楼层
0918
        (点评同学练习)
0919
        (点评同学练习)
0920
        (点评同学练习)
0921
        我们昨天做了按键驱动,有的时候跳1,有的时候跳3,有的时候跳很多个字。
        有毛刺嘛,我们今天就解决这个毛刺的问题。
        毛刺的问题,显然我们会用状态机来解决。
        现在我们就来开始讨论状态机。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-9 15:40:26 | 显示全部楼层
0922
        我说的这个状态及的理论呢,是一个非常复杂非常庞大,是发展最全面、理论体系发展最充分的,应用也是最广泛的一个方面。
        虽说我们只有一天的时间,我们不指望、也并不要求我们面面俱到,我们同学全部掌握。
        因为是入门嘛,介绍嘛,我当然会介绍得多一些,全面一些。
        那么这么多、这么全面,没有必要一天全部掌握。
        有限状态机称之为Finite State Machine,它是描述各种复杂的时序行为的一种机制,一种方法。
        有限状态机的理论在数字电路的时候,就得到了长足的发展。
        而引入EDA以后呢,更是几乎是做了革命性的变化。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-9 15:45:00 | 显示全部楼层
0923
        昨天我说到了,有康华光、阎石的这个教材,我们国家的这个教材是几十年不变的,但是国外发展得非常快,理论体系。
        当然我们注意到,尤其康华光有它的再版,再版他也不断地更新了它的内容,尽量跟上国际的最前沿的理论的发展的实际。
        我们看到有限状态机,它的基础的背景是有限自动机,延伸出的理论模型,我会向大家介绍,我们后续的课程会介绍。
        今天打算就只是说一个名词,包括它的Sequential Machine序列机,以及它的Linear Sequential Machine线性序列机,算法机,以及由状态机和实际的电路构成的解决电路的模型,称之为FSMD、LSMD、ASMD等等。
        有一种说法就是,以后我们会看到状态机是解决复杂时序控制,时序电路里里面的一个重要的解决方案,或者说唯一的、我们在理论体系里面提供了完整支持的一个方案。
0924
        其它的,如果你脱离了状态机,你来写一个复杂的逻辑,那么你可能就是散打了,就是自由作业了。
        个人有个人的流派不同,但是呢也有可能写的好的,也可能写不好。
        状态机理论体系里面已经提供了充分的支持,按照状态机的理论来写的话,我们现在的工具,EDA的工具,它可以支持,否则不一定支持。
        因为是写一段电路,这段电路,你的独立的一些想法,独特的一些想法,好的方面发展它就是核心技术,就是专利,就是竞争力。
        不好的方面发展,保守一点说,那么你的思想很可能是前人已经走过的弯路。
        我们将不仅是前人走过的路,而且是前人走过的弯路。这种可能性更大。
0925
        为什么呢?
        因为在这个领域里面,前人的工作量已经非常巨大了,能够做出来的,能够看到是正确的,就是那么几条线。
        如果你没有走到那几条线上,那么你走到错误的路线上的可能性,就非常之大。
        因为正确的东西是收敛的。
        一个正确的方向,正确的处理问题、解决问题的理论体系,不同的研究者他往往可以得到相同的结果。
        但是错误却是发散的。
        不同的研究者他的错误是各种各样的错误,不一样的错误。
        所以说我们要注意到这一点,如果我们不引用状态机的理论,来写我们的逻辑,可不可以写呢?
        不是不可以写,是可以写,但是发生错误,是弯路的可能性,是非常之大,这个理由在什么地方?
 楼主| lcytms 发表于 2017-4-9 15:51:19 | 显示全部楼层
本帖最后由 lcytms 于 2017-4-9 15:52 编辑

0926
        就是我刚才说的,正确的东西是收敛的,这条路已经有很多很多人走过了,最后走到有限状态机这条路上,这不是偶然,这是必然。
        现在我们来说一下什么是有限状态机。
0927
        向我们昨天解决的这个bin2bcd,它是不是状态机呢?
        它不是,从严格意义上来说呢,它是一个自动机,FA,它是一个有限自动机,它是自动处理的,它是用硬件逻辑自动地处理输入和输出的关系。
        有限状态机呢,通常而言的话呢,就是一种实际解决问题的一种方案,我们马上就把它展开来。
        可是现在EDA的应用里面强调这一点,就是CPU也是解决问题的方案,嵌入式的CPU的架构。
        那么有限状态机跟CPU的区别在什么地方呢?
        或者说我们建模的时候,我们如何来写有限状态机呢?
        我们是不是把有限状态机写成一个类似CPU那样的结构呢?
0928
        这一点现在的EDA的发展的方向,国内稍微慢一点,也在跟进,基本上口径一致,状态机不是CPU。
        千万不要把状态机写成CPU,虽然状态机可以写成CPU,但是它绝不是CPU,也绝不应该把它写成CPU。
        当然,要说到这种通用的嵌入式的架构,那么CPU仍然是无可比拟的。
        好,我们现在来讨论什么是FSM。
        FSM,Finite State Machine,有限状态机。
        首先看到这个名词,我们有没有什么想法,为什么要用Finite来修饰它,不会是无限的吗?
        我们来说一个故事,有限状态机究竟是谁提出来的?
        是谁发展的?
0929
        大家都知道,我们现在用苹果手机,苹果手机的Logo,咬了一口的一个黑苹果。
        如果大家看过类似的电影,乔布斯的电影,或者是模仿游戏,大家都知道,阿兰图灵。
        对,状态机的首先提出者,是阿兰图灵。
        阿兰图灵在提出他的这个图灵机的思想的时候,他就引入了有限状态机。
        所以有限状态机呢,它跟计算机体系,称之为现代数理逻辑。
        跟计算机的架构,计算机的研发是紧密相关的。
        图灵当时就想到这么一件事情,如果这台机器没有故障,永远不停电,永远运行,那么在这种情况之下呢,它的描述,它的输出跟时间轴的关系。
        我们来看一看,举个例子。
0930
        那些比较深奥的数学模型我们就忽略了。
        我们就引用一个时期的例子,来说明为什么阿兰图灵称之为有限状态机。
        如果我们有一个计数器,计数器我们都已经很熟悉了。
        计数器端口有时钟,有复位,有对应的输出。
        这次呢,我们做成一个2个bit的输出,1:0的输出。
        那么这个输出对应时钟轴的关系是什么?
        如果这是一个函数,用函数的方式来描述它,我们会怎么描述呢?


本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-9 15:54:35 | 显示全部楼层
0931
        这个q的输出,一定是这个函数counter的输出值。
        那么,这个函数,它引入的是谁呢?
        引入我们的,如果是站在逻辑的角度上,时钟和复位是引入的管脚。
        但是如果是站在数学的角度上,阿兰图灵他说,如果这个counter计数器没有故障,我们忽略它的故障,永远有电,那么在时间轴上,纵轴是它的输出值,横轴是时间轴。
        我们知道,在这个计数器置位以后,一定会在时钟作用下面,会反转。

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2024-12-24 00:16 , Processed in 0.064267 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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