集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

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

[复制链接]
 楼主| lcytms 发表于 2017-4-18 16:49:56 | 显示全部楼层
1037       
        所以说对于两段式的描述,最正确也最精简的方法,就是CS<=NS;。
        把NS赋给它。
        现在国内有些出版物上,我们不能一概而论地持批判态度,但是这一点是肯定的,理论模型就是这么做的,就是得到这个寄存器。
        如果这个时候大家用复位信号、控制信号,它就不是状态机了,它不是状态机的理论模型了。
        1/2多写一个信号都是画蛇添足,就是CS<=NS;即可。
        然后呢,2/2。
        2/2是ON,是一个开节点,开节点我们怎么描述?
        开节点这个时候描述是谁就是谁,正所谓种瓜得瓜种豆得豆。
        因为这个时候,你描述的是什么,就是什么。
        意味着它的输出没有被加工,没有被加工成一个寄存器。       
 楼主| lcytms 发表于 2017-4-18 17:10:26 | 显示全部楼层
1038       
        那么我们写完,就描述ST。
        ST,需要两个信号,一个是CS的信号,一个是现场的输入信号。
        这两个信号都会出现在ST的赋值号的右侧,或者是if、case的括弧里面。
        然后,ST的输出是什么?
        是NS。
        你描述的是ST,因为它是一个ON,它不会加工输出的信号。
        这个ST,NS出现在赋值号的左侧的这个时候,EDA不会加工NS,不会为NS生成寄存器。
        也就是说,你描述的是什么就是什么,所以说ST就直接输出了。
        赋值号的左侧,就是这一段电路模型的输出。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-18 17:13:35 | 显示全部楼层
1039       
        然后我们还需要在这段代码块里面,描述摩尔和米利。
        刚刚我举例子的时候,我忘了描述米利,一段式的时候,摩尔的时候,我只引用了CS,米利的时候一段式大家自己去想。
        同一个代码块里面还有输入信号,ST的部分有输入信号,直接引用。
        现在我们描述摩尔。
        摩尔要什么?
        摩尔只要CS,CS这有,输入的部分有,CS是它的输入的端口嘛。
        直接引用即可。
        我们看摩尔输出什么?
        状态机的输出,种瓜得瓜种豆得豆,未被加工的输出信号。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-18 17:25:43 | 显示全部楼层
1040       
        这是摩尔。
        如果是米利,这个输入信号正好也有,这个代码模块的输入端口上面也有,直接引用即可。
        这就得到了2/2的模块。
        这是第二个always语句块。
        第一个always语句块是闭节点,第二个always语句块是开节点。
        所以说这个模型,无论是米利还是摩尔,我们看得到它的输出都未被加工。
        它是一个ON的输出。
        两段式的模型,代码模型的关系,理论上是这么说的,是一个充分必要的理论模型。
        就是,两段式的代码模型,是一个充要的一个模型。也就是说,理论模型有的,它有,理论模型没有,它没有。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-18 20:52:08 | 显示全部楼层
本帖最后由 lcytms 于 2017-4-19 13:59 编辑

1041       
        所以说理论模型在两段式的描述里面,一个不多一个不少。
        而这个理论模型呢,它是得到数学证明的。
        很多时候,我们需要用这种两段式的模型,来得到工具的支持。
        所以说早期的EDA的工具,Quartus的优化工具,它只强调一点,你必须写成两段,如果你没有写成两段,它支持不了。
        它识别不到,识别不出这个模型来。
        现在的高端应用也是这么说,就是说如果我们要做一个高速大规模比较复杂的系统,那么一定是非两段莫属。
        一定用两段来写,所以两段是一个最优秀的东西,可以这么说。
        因为它是一个充分必要的理论嘛。
        两段是一个非常优秀的一个模型,但是不排除这一点,它并不是一个很轻松、很容易实现的模型。
        两段式的建模是比较复杂的,因为它的输出是ON,开节点,或者说是电平敏感的输出。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-18 21:01:58 | 显示全部楼层
1042       
        粗犷一点,是组合逻辑的输出。
        对它的处理要特别地关注,要有一些特别的支持和手段。
        所以两段式的模型通常都是用于高速有经验的设计者,高速复杂逻辑。
        在两段式的模型里面,也有一样事情,在现在的编译器里面,是要关注的。
        就是它的1/2部分只写一个转移,只写一个何时转移的部分,就是转移寄存器。
        然后在2/2的部分呢,同时写了转移逻辑和输出逻辑。
        也就是转移逻辑和输出逻辑,是在同一个输出语句块里面写的。
        这一点呢,对于程序员来讲,对于设计者而言,它是轻松的。
        因为转移和输出放在同一处写,我们来非常简单地做它的对比。       
 楼主| lcytms 发表于 2017-4-18 21:22:16 | 显示全部楼层
1043       
        所以说这一点,跟一段式类似。
        一段式也是写在一起。
        但是两段呢,它会更精确一点。
        输出是没有带寄存器的。
        带寄存器,我们应用,简单的应用会方便一点,高端应用的会带一些缺陷。
        所以说这样的话呢,两段式的输出会有一些特别的问题。
        第一,会有一些复杂。有些轻量级的问题,用它解决也就过于复杂了。
        其实呢,它的输出可能会带有毛刺,虽然它的末端可能会寄存器捕获,也就对它的输出的信号的的处理,要有特殊的手段。
        因为它是摩尔和米利。
        以后我们会看到,无论是做节拍、潜伏期分析,还是做时序分析,组合逻辑电平敏感的情况之下,都会变得异常的复杂。
        怎么办呢?
        历史上就有人提出来了三段的方案。       
 楼主| lcytms 发表于 2017-4-18 21:34:36 | 显示全部楼层
1044       
        也就是说在两段的基础上,我单独地把摩尔或者米利提出来,单独地为它写一个闭节点,生成一个寄存器,由此来弥补它的不足。
        现在我们就来讨论三段。
        这张图不需要了,就是转换的关系,理解了即可。
        现在我们来看第四张图,就是三段式的图。
        用三个always语句块来写这个模型,就是在两段的基础上,单独地把输出,米利和摩尔提出来。
        原来的1/2现在变成1/3,就是原来的1/2,是闭节点。
        输入是什么,输出是什么?
        我们刚才看到两段式的模型里面,为什么要写CS和NS,current state和next state?
        它不是看不见的,它明明白白就是两个信号。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-18 21:49:53 | 显示全部楼层
1045       
        所以说一定要出来。
        一段为什么只写一个state呢?
        因为NS是看不到的,RTL这一级是看不到的,所以说只写一个state。
        所以说这边的输入应该是NS,这边的输出仍然是CS,就是原来的1/2。
        2/3就是原来的2/2,是一个ON。
        输入分别是CS和现场。
        输出在三段式的里面,只留下一个NS。
        刚刚2/2里面输出既有NS,还有状态机的输出。
        状态机的输出提出来,不在这输出。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-18 21:52:12 | 显示全部楼层
1046       
        所以说这个always语句块里面一个信号都不会出现在,状态机的输出信号一个信号都不会出现在这个always语句块的赋值号的左侧。
        3/3,是一个闭节点,我们有意把3/3写成一个闭节点,原来2/2的米利摩尔的部分单独拿出来。
        它的输入一模一样,跟原来的2/2,因为它是从2/2提出来的,仍然也是CS和现场,输出状态机的输出。
        这张图是我们今天要说的第四张图,就这四张图。
        这四张图要背下来。
        这个状态机基本上就拿下。
       

本帖子中包含更多资源

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

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

本版积分规则

关闭

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

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

GMT+8, 2024-12-24 03:25 , Processed in 0.062071 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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