集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

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

[复制链接]
 楼主| lcytms 发表于 2017-7-31 20:10:29 | 显示全部楼层
1153
        将原来一段的代码去掉注解,进行修改。
        2/2是ON,是开节点。
        开节点信号敏感表里面,就应该只是信号而没有沿。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-8-3 09:37:21 | 显示全部楼层
1154
        把赋值号左侧的state用next_state替换。
        也就是说,被启动的那个state用next_state替换。
        引用的那个state是什么?
        我们来看看。
        是current_state。
        当前状态被引用的,只有一行,第29行。
        要么出现在赋值号的右侧,要么被引用了,实际上是在if、case的括弧里面。
        就是这样。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-8-3 09:39:04 | 显示全部楼层
1155
        其它的我们不做调整,都一模一样。
        但是输入和输出是禁止迭代的,ON里面。
        Count出现在赋值号的两侧,在组合电路上形成了闭合。
        虽然我们明知它是不对的,但是我们还要做一次。
        把它做成顶层。
        看它会发生什么。
        Ctrl+S、Ctrl+K。
        出错了,把clk改成clk_in。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-8-4 09:32:25 | 显示全部楼层
1156
        两段建模完成,我们同样写它的验证。
        新建verilog文件,另存为divider_fsm2s_mealy_tb.v。
        从divider_fsm1s_mealy_tb.v拷贝粘贴过来。
        修改代码。
        做仿真设置。
        明知它有问题,但是我们还要试一遍。
   

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-8-4 09:50:23 | 显示全部楼层
1157
        查看仿真结果。看一下wave。
        什么都没有。
        并且报错。
        右上角出现红色的倒三角。
        报什么错呢?
        它说迭代受限。
        我们已经理解了,不必做过多的解释,同学都已经知道了。
        就是因为代码里面出现了,赋值号的两侧出现了同名信号,形成了迭代。
   

本帖子中包含更多资源

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

x
小舍YZ 发表于 2017-8-7 16:39:38 | 显示全部楼层
有限状态机称之为Finite State Machine,它是描述各种复杂的时序行为的一种机制,一种方法。
        有限状态机的理论在数字电路的时候,就得到了长足的发展。
        而引入EDA以后呢,更是几乎是做了革命性的变化。
赞,,,,,,,,,,,,谢谢分享。。。。。。。。。。。。。。。
 楼主| lcytms 发表于 2017-8-13 23:17:11 | 显示全部楼层
1158
        因为它是一个ON,形成了迭代。
        这段英文的解释就是迭代受限。
        什么叫迭代受限呢?
        输入发生变化,输出变化。
        输出变化了,会导致输入变化。
        这个仿真器它就忙不迭了。
        它就不停地用堆栈,用它内部的堆栈来处理这件事情。
        这个是一个无限的循环,它的堆栈用完了。
        所以它说迭代受限。得不到确定的结果。
        好,这张图我们就知道它不能用于两段,我们来看看三段能不能用。
        将两段的代码另存为divider_fsm3s_mealy.v。
        我们知道三段的输出是CN。
        它是闭节点的,三段。
        设置为顶层。
        名字换过来。
  

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-8-13 23:20:07 | 显示全部楼层
1159
        现在两段、三段都在。三段的代码呢,先把原来2s2的部分注解掉。
        因为3s2和3s3就是在原来2s2的基础上增加来的。
        原来2s1直接变成了3s1,一模一样。
        复制原来2s2的部分,去掉注解。
        拆分了。
  

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-8-13 23:21:51 | 显示全部楼层
1200
        最后一张图,就是三段式的3s2,是ON。
        信号敏感表里面是*,没有问题。
        我们看一下最后一张图,只有next_state。
        其它的都不应该出现在赋值号的左侧。
        在这段语句块里面,只允许一个信号出现在赋值号的左侧,就是next_state。
        是不是?
        刚才那张图。
        我们把所有的输出删掉,就留下一行。
  

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-8-13 23:23:18 | 显示全部楼层
1201
        只有一行的时候,把begin end删掉。
        把它对齐。
        这就构成了3s2。
        在3s2的代码里面,只有next_state出现在了赋值号的左侧。
        跟我们的代码模型完全吻合了。
        对这张图你就知道,在这段代码里面,只允许有一个信号,出现在左侧。
        这个信号已经标示出来了,就是next_state。
        现在我把剩下的这个部分还注解,改成3s3。
        3s3是一个闭节点,cn。
  

本帖子中包含更多资源

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

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

本版积分规则

关闭

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

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

GMT+8, 2024-11-27 13:44 , Processed in 0.071263 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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