微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 谁能说说状态机怎么用啊?

谁能说说状态机怎么用啊?

时间:10-02 整理:3721RD 点击:
    如题,状态机本身好写,但是具体怎么用,没用过状态机真是感觉很低端。
    比如用状态机产生一个波形,除了输入输出还有很多寄存器用于控制,都写在一起呢,还是把状态机独立出来为一个module,然后再根据这个module来控制电路。
    我是状态机小白,请大家交流交流。

需要状态的时候就用状态机。
状态是自定义的。比如红绿灯,红、绿、黄三种状态。
比如洗衣机的工作状态。

学习中,多谢分享

自己顶,资料查阅中

自己顶,资料查阅中

状态机在需要时序的时候作用巨大
在时序电路中,很多芯片的操作都有一定的时序图,如何才能正确的控制这些芯片。在FPGA设计中,不使用状态机也可以实现,但可读性、可维护性极差。这时你需要想起状态机,状态机可以让你的设计具有更强的可读性、可维护性。
给个简单的例子吧。
操控FLASH,一般情况是:1.发送控制. 2.发送地址. 3.操作数据
这三个动作,如果单纯用逻辑电路写,问题不算太难;
但如果用状态机写,分成3个状态,状态跳转就很容易实现功能。
如果某天换一块芯片,增加了一个状态操作,只要在状态机中添加非常方便。
引申. 如果操作更为复杂的芯片(如SDRAM)。状态会更多,不用状态机,工程师很容易进入一个死胡同。很多没有考虑的因素都可能导致设计的失败。
写那么多,不知道有没有帮助。不懂就当作吹牛吧.

虽然没太懂,但科普很大。能不能再说具体一点,我想说的是,实际中会需要产生很多的信号用于控制,是都作为输入到状态机的module里产生状态,还是可以直接在状态机的module里建寄存器(比如计数器)来作为状态切换的条件。

状态机可以让FPGA程序更加走流程化,比如
STATE_1 -> STATE_2 ->STATE_3 -- STATE_4
这些状态的跳转我们一般可以是输入产生,也可以该模块某些寄存器、组合等等产生。这并不能影响什么,关键是你状态的跳转正确与否而已。
举个例子吧,近段时间再做以太网通信,链路层的产生:
链路层分为几个: 空闲->同步码->目标MAC->源MAC->类型->数据->CRC校验->包间隙
上面个流程可以划分为8个状态,在没有输入使能的情况下,状态在 ,一旦模块输入有使能信号,空闲状态->同步码。 等发送完同步码后(这需要逻辑来控制),同步码->目标MAC,等发送完目标MAC后 .(以此类推)。
所以说,状态跳转并不是只有外部才可以做触发的,多数情况是内部触发,形成一个流程。

有一本书《设计与验证verilogHDL》,这本书里的状态机一节写的非常好,你看看,直接在论坛里搜索.

谢谢,懂了。

状态机说白了就是时序逻辑电路的一种表示或者说设计方法,大部分情况下的时序逻辑电路用状态机来描述较好

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top