集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

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

[复制链接]
 楼主| lcytms 发表于 2017-4-19 22:30:33 | 显示全部楼层
1133
        2005以后,用localparam来代替parameter。
        为什么这么做?
        这个道理是非常简单的。
        因为localparam是常数,parameter是参数,2005之前verilog是没有常数的,常数参数是不分的。
        所以说业界一直对它持批评,因为变量名的分配是不应该被传递出去的。
        我们学过C语言就知道,参数有个传值的概念,这一段是应该被封装住的。
        用户经意或不经意地修改了s0分配的变量,这个系统变得不稳定,不能正确地运行,这是它要封装的理由之一。
 楼主| lcytms 发表于 2017-4-19 22:33:10 | 显示全部楼层
1134
        它不应该被用户修改,被分频器的用户修改。
        要封装起来。
        第二个理由就更重要了,写了复杂的代码以后,有知识产权,如果你没有带封装,很容易被别人窥视,你的核心机密。
        所以说一定要封装出来。
        我们之前的代码是不得已而为之,没有这个功能,没有这个localparam。
        2005以后有了,再这么写你就是西施效颦了。
        人家是不得已而为之,现在你能够写常数你不写。
        接下来,我来写它的状态机,用一个always语句块来写。
        那么如果我们绘制了刚才一段式背下来的代码模型,我们就知道,它是一个闭节点。
        信号敏感表里面必须出现一个沿信号,并且不会被引用。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-19 23:11:03 | 显示全部楼层
1135
        这个clk绝对不会出现在我们的begin end块里面。
        没有被引用,有且有一个未被引用,就会得到闭节点。
        我们也可以给它做一个块名,fsm_1s_cn。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-19 23:12:02 | 显示全部楼层
1136
        编写代码。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-19 23:13:11 | 显示全部楼层
1137
        编写代码。
        我们在不同的状态执行不同的动作,我们用case语句写。
        用轻量级的条件分支是case,重量级的条件分支是if。
        If也可以写,但是它是重量级,它对应的面积结构会更大一些。
        以后我们在CSS的课程我们会讨论,根据谁来做对应的输出呢?
        肯定是状态state。
        这就意味着这个state是出现在了,它是被引用的还是被驱动的,在第24行他被引用了,在第21行它被驱动了。
        我们先写,写完了以后,我们统一来分析。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-19 23:15:06 | 显示全部楼层
1138
        编写代码。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-19 23:16:22 | 显示全部楼层
1139
        编写代码。
        Count<=count+1;这一行我们看见在赋值号的两侧,都有同名信号,所以说呢,在这种情况之下,闭节点是允许迭代的。
        因为它有寄存器来隔离。
        组合电路那就麻烦了。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-19 23:17:58 | 显示全部楼层
1140
        编写代码。
        State<=s0;,写了是安全,不写当然也指向s0,写了以后除了安全还增加可读性。
        这样的话呢,我们就写完了。
        直接写else对应相对的条件。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-19 23:19:38 | 显示全部楼层
1141
        编写代码。
        像简单的逻辑,不要状态转移图我们也能写,更复杂的没有图几乎是寸步难行。
        我们注意到国外有些教材里面,凡是稍微大一点的,就必定会有状态转移图,而且会有更现代的一种方式,就是算法流程图ASMc。
        稍后会向大家介绍,后续的课程。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2017-4-21 16:56:57 | 显示全部楼层
1142
        编写代码。

本帖子中包含更多资源

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

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

本版积分规则

关闭

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

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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