HDL 发表于 2010-6-26 01:46:22

如何在大的状态机里面加入小的状态机?

本帖最后由 fpgaw 于 2010-11-18 16:16 编辑

写一个对硬盘的读写操作,用FPGA来实现,先写一个大的状态机,如依次的读寄存器,写寄存器等一系列状态,但是我还需要在这些大的状态机里写小状态机,应为寄存器的读写又需要一个状态。不知道怎样写。大的状态机用的是case when 语句

encounter 发表于 2010-6-26 03:19:19

赐教了?????<br>
不懂^_^<br>
不过你说的那个无所谓了<br>
直接写就是了<br>
套几层无所谓的

ICE 发表于 2010-6-26 05:14:09

状态机里面直接套就是了阿~~

AAT 发表于 2010-6-26 05:54:31

你的设计思路有问题吧,不是硬件的思路啊

ICE 发表于 2010-6-26 07:31:23

我觉得,如果你原来有了A,B,C3个状态,又想在A分2个小状态,B分3个小状态,C分4个小状态,<br>
那根本就是A1, A2, B1, B2, B3, C1, C2, C3, C4一共9个状态吗<br>
<br>
所谓的&ldquo;大状态套小状态&rdquo;,你把整个状态转换图画出来,就应该是各个小状态转来转去。原帖由 jep 于 2007-1-24 09:02 发表<br>
你的设计思路有问题吧,不是硬件的思路啊

FFT 发表于 2010-6-26 08:41:58

状态机适用于有限状态集合而且对并发性要求不高的应用中,不一定是最好的系统行为描述方法

longtim 发表于 2010-6-26 09:31:54

状态机,可以嵌套的阿<br>
你到某个状态下再生成一个状态机就可以了

ups 发表于 2010-6-26 11:17:04

太抽象的行为,都不像硬件了&mdash;&mdash;直接像C。<br>
<br>
再负载的状态机,理论上都可以手工求得状态表达式<br>
直接用data flow实现&mdash;&mdash;那就是硬件原帖由 不无道理 于 2007-1-24 11:39 发表<br>
状态机适用于有限状态集合而且对并发性要求不高的应用中,不一定是最好的系统行为描述方法

ICE 发表于 2010-6-26 11:23:06

直接写就可以了

encounter 发表于 2010-6-26 13:02:30

恩,这问题不知道是不是简单了点还是你想问的不是这个。<br>
<br>
假设A,B,C三个状态,A状态下分a1,a2,a3状态。<br>
假设A状态下进入a1状态,轮流到a3状态跳出A状态,到B状态。<br>
<br>
大状态机:<br>
case (state_L1)<br>
&nbsp;&nbsp;A: if (state_L2 == a3)<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;next_state_L1 = B;<br>
&nbsp; &nbsp;&nbsp; &nbsp;else next_state_L1 = A;<br>
&nbsp;&nbsp;B: next_state_L1 = C;<br>
&nbsp;&nbsp;C: next_state_L1 = A;<br>
&nbsp;&nbsp;default: ... <br>
endcase<br>
<br>
小状态机:<br>
if (state_L1 == A)<br>
case (state_L2)<br>
&nbsp;&nbsp;a1: next_state = a2;<br>
&nbsp;&nbsp;a2: next_state = a3;<br>
&nbsp;&nbsp;a3: next_state = a1;<br>
endcase<br>
<br>
再想加控制就自己加
页: [1] 2
查看完整版本: 如何在大的状态机里面加入小的状态机?