如何在大的状态机里面加入小的状态机?
本帖最后由 fpgaw 于 2010-11-18 16:16 编辑写一个对硬盘的读写操作,用FPGA来实现,先写一个大的状态机,如依次的读寄存器,写寄存器等一系列状态,但是我还需要在这些大的状态机里写小状态机,应为寄存器的读写又需要一个状态。不知道怎样写。大的状态机用的是case when 语句 赐教了?????<br>
不懂^_^<br>
不过你说的那个无所谓了<br>
直接写就是了<br>
套几层无所谓的 状态机里面直接套就是了阿~~ 你的设计思路有问题吧,不是硬件的思路啊 我觉得,如果你原来有了A,B,C3个状态,又想在A分2个小状态,B分3个小状态,C分4个小状态,<br>
那根本就是A1, A2, B1, B2, B3, C1, C2, C3, C4一共9个状态吗<br>
<br>
所谓的“大状态套小状态”,你把整个状态转换图画出来,就应该是各个小状态转来转去。原帖由 jep 于 2007-1-24 09:02 发表<br>
你的设计思路有问题吧,不是硬件的思路啊 状态机适用于有限状态集合而且对并发性要求不高的应用中,不一定是最好的系统行为描述方法 状态机,可以嵌套的阿<br>
你到某个状态下再生成一个状态机就可以了 太抽象的行为,都不像硬件了——直接像C。<br>
<br>
再负载的状态机,理论上都可以手工求得状态表达式<br>
直接用data flow实现——那就是硬件原帖由 不无道理 于 2007-1-24 11:39 发表<br>
状态机适用于有限状态集合而且对并发性要求不高的应用中,不一定是最好的系统行为描述方法 直接写就可以了 恩,这问题不知道是不是简单了点还是你想问的不是这个。<br>
<br>
假设A,B,C三个状态,A状态下分a1,a2,a3状态。<br>
假设A状态下进入a1状态,轮流到a3状态跳出A状态,到B状态。<br>
<br>
大状态机:<br>
case (state_L1)<br>
A: if (state_L2 == a3)<br>
next_state_L1 = B;<br>
else next_state_L1 = A;<br>
B: next_state_L1 = C;<br>
C: next_state_L1 = A;<br>
default: ... <br>
endcase<br>
<br>
小状态机:<br>
if (state_L1 == A)<br>
case (state_L2)<br>
a1: next_state = a2;<br>
a2: next_state = a3;<br>
a3: next_state = a1;<br>
endcase<br>
<br>
再想加控制就自己加
页:
[1]
2