集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

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

[复制链接]
 楼主| lcytms 发表于 2017-4-17 22:00:11 | 显示全部楼层
1009       
        虽然输入和输出可能是相同的信号,可能会形成迭代,允许形成迭代。
        除了这个之外,我们时钟忽略掉,有一件事是必须要说明的。
        就是state。
        我们在这只写成state,而没有写成CS,current state,这个state是迭代的,这张图上。
        这个state信号既被引用了,也被驱动了。
        被引用就说明它可能会出现在赋值号的右侧,可能会出现在if、case的括弧里面。
        它被驱动了就说明它一定会出现在赋值号的左侧。
        右边这个称之为代码模型。
        而我们的左图是称之为理论模型。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-17 22:02:17 | 显示全部楼层
1010       
        理论模型如何变成代码模型的呢?
        我们来看看之间的关系。
        我们知道,我们在写这个循环行为体的时候,我们循环行为体的内部,我们用行为语句来描述。
        如果是一段CN,描述的是什么,就是什么,它的输出,所有这段的输出,就会用一个寄存器来替代,用寄存器用时钟来驱动它。
        好,我就用这种方法来描述。
        对于这个逻辑而言,我们用一个语句块描述ST。
        在语句块里面描述ST。
        ST写出来,ST有输入,有输出。
        ST的输入是理论模型的CS的输入。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-17 22:03:26 | 显示全部楼层
1011       
        它的输出是NS,在代码里面描述ST的部分,就得到它。
        但是由于我是做闭节点的描述CN,信号敏感表里面会出现一个沿信号,有且有一个未被引用。
        它就会为所有的输出,当然现在是ST,为它生成一个寄存器,用所声明的时钟来驱动。
        时钟我就不绘制了。
        然后输出。
        现在我们看到,如果用寄存器驱动了NS的输出,这个输出就是,在理论模型上,这个输出就是CS。
        形成这个结构。
         

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-17 22:12:05 | 显示全部楼层
1012       
        当你描述ST,是闭节点的描述,就会生成这个寄存器。
        也就是这个寄存器并不是你显式声明的,是用约定的方式在信号敏感表里面描述那个沿,你并没有描述它,但是EDA就会给你生成这个寄存器,verilog综合器就会给你生成它。
        ST描述它,就会得到它。
        这个呢,就形成我们的always的一段结构,always的一段语句块。
        但是ST不够啊,光用ST,ST的部分除了CS的描述,还有现场的输入。
        也就是说这个CS的信号和inputs的信号,我们都会出现在对应的always代码块的引用的部分,或者是赋值号的右侧,或者是if、case的括弧里面。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-17 22:13:45 | 显示全部楼层
1013       
        这段代码综合的电路一定是这种形式。
        CS和inputs一定是进入这个电路的,输入这个电路的。
        现在我们再描述摩尔或者米利。
        举个例子,如果我们描述摩尔,那么在这个代码块里面,摩尔需要什么呢?
        需要CS。
        CS在代码块里面已经有输入信号了,公共的CS的输入信号,从这接过来。
        CS已经有了,直接装配即可。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-17 22:34:48 | 显示全部楼层
1014       
        摩尔的输出,是状态机的输出。
        但是当我们写闭节点的时候,摩尔的输出同样会生成一个寄存器。
        这个时候,EDA无论你怎么写,所有的你写的begin块里面,就是always的begin块里面这些描述,输出的所有的输出都会生成寄存器。
        所以说同样可以生成寄存器。
        这是摩尔。
        从摩尔机我们可以看得到什么呢?
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-17 22:54:04 | 显示全部楼层
1015       
        这种模型,这个代码块,我们称之为FSM_1S的模型。
        它描述的这个电路,跟理论模型的这个电路呢,是有差别的,是不是?
        虽然它把这个理论模型全部都写了,但是它多写了一样东西。
        输出寄存器。
        输出寄存器并不是理论模型必须的,所以说一段式并不是一个必须的模型。
        虽然它是一个必要的模型,但是它不是一个必须的模型。
        理论模型有的它有,但理论模型没有的它也有。
        是这么个关系。
        没有的是什么?
        一个输出寄存器。
        这个输出寄存器起个什么作用呢?
        它的理论模型呢,它的米利、摩尔应该是电平敏感的输出。
        粗犷一点讲,是组合逻辑的输出。组合逻辑的输出,就显然会有毛刺,冒险竞争这些问题。
        重要的是,对一个电路,它的末端应该会有寄存器捕获吧,绝对不会允许毛刺、冒险竞争的存在。
       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-17 23:05:43 | 显示全部楼层
本帖最后由 lcytms 于 2017-4-19 13:56 编辑

1016       
        并且呢,我们在分析的时候也会存在一些困难。
        所以说对这个,用一段式的这种描述,如果它输出的部分本身就是一个同步电路,就已经屏蔽了毛刺,避免了冒险竞争,那么使得电路的处理呢,变得更简单。
        那么这个时候呢,我们写一段式会更容易一些。
        我们在写一段式代码里面,在一段式语句块里面,既写了状态的转移,也写了输出的逻辑,就是状态转移和输出逻辑是在同一个地点写的,同一个always语句块里面写的。
        对于程序员而言,是比较轻松的,所以一段式呢,比较适合初学者,比较适合快速的实现。
        以后我们的代码里面,尽量地用一段。
        但是一段也有它的缺陷,缺陷就是什么呢?
        这个时候,它并不是一个必要的理论结构模型,它多出了一个输出寄存器。       

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-18 10:12:23 | 显示全部楼层
1017       
        这一点很重要,在高速电路里面,很可能它的末端要形成对应的时序延迟关系,尤其构成高速逻辑必须的一些细节,这一点一段式是做不到的,一段式他已经在内部做了。
        我们在后续的时序分析的一些课程里面,一段式的一些高端应用这个过程之中呢,综合器它要仔细地分辨转移逻辑和输出逻辑。
        需要综合器来分辨这一点,那么早期的综合器呢分辨是有差异的,会造成一些面积和速度的损失。
        但是现在,现代的综合器做得越来越聪明,smart。
        据说一段式的处理的方式,跟两段、三段几乎都没有区别。
        所以说我们现在看到的文件里面,特别强调,避免写一段式。
        一段式仍然是可用的,因为现在的编译器、仿真、EDA也足够聪明,能够分辨这两段逻辑。       
 楼主| lcytms 发表于 2017-4-18 10:25:58 | 显示全部楼层
1018       
        我们现在看见,在理论模型和代码模型的关系上面,装配上面,代码模型只有state,而没有next state,这是为什么?
        因为只有CS的端口,NS的端口是内部的。
        描述ST是在这个always语句的内部,门级结构的内部,门级网表上看得到它,所以说RTL这一级是看不到NS的,只有一个CS。
        CS上层是形成闭环的,叫相同的名字。
        所以说这样的话呢,在一段式的代码里面呢,只有一个CS,就不再需要特别强调它是current state,直接写state。
        换了个名字,因为NS是看不到的。
       

本帖子中包含更多资源

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

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

本版积分规则

关闭

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

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

GMT+8, 2024-12-23 23:36 , Processed in 0.063817 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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