|
发表于 2005-7-23 14:53:13
|
显示全部楼层
[求助]:大型状态机的分解,哪有相关资料或例子
[这个贴子最后由jingli888ca在 2005/07/23 02:57pm 第 1 次编辑]
但是如何分割,如何通讯?是个很讲究的过程.
首先,需要设计者本人,对状态机所描述的对象有深入了解.
其次,对Timing / Waveform有清楚地定义.
再次,对一个设计要求,要能有几个实现的办法,互相比较,于是,对内部的控制过程很了解.
于是,就看出来,哪一些是比较孤立的,哪一些是联系比较紧密地.孤立的就可以分出来.
接着,考虑状态机之间的通讯.
最简单的当然是,主状态机启动子状态机,子状态机完成返回主状态机.
稍微难一些的是,主启动子,并同时给与一些数据和控制flag,这就要问自己,它们之间的时序是怎样的,同时还是迟一个时钟?迟几个时钟?
再难一些的是,主对子,在某个特定的状态给过去.这要算好,子是不是总能按时拿到?
更难一些的是,主对子,子对主,都是在各自某个特定的状态个对方,那就更要计算清楚,否这就要失同步了.
最麻烦的是,两个状态机之间cycle-by-cycle accurate,一个cycle都不能错.这就要预取和Buffering,更为复杂---如果到这种情况,不分也罢.
总之,一个好的状态机或状态机群,是要动一番脑子的.但是,不管多简单,多复杂,能工作的就是好状态机.
|
|